Friday, December 18, 2015

RealRestraint update to v1.28

Hi !

It's been a while ! RL has taken most of my time lately, but I've also been working on the next update for the RealRestraint products !

This update to v1.28 is focused on adding some interesting features to several products, but also overhauling a very old product, the Slave Crate, and of course fix some bugs. What would be an update without bug fixes, right ?

Before we jump to the release notes, let me say that some of the products you'll update will require a replacement, others will not. Some of the changes are merely modifications to single scripts contained into the root prim of the main item (for example, the Leash plugin is in the root prim of the right wrist handcuff), but some changes required me to move prims, or to add scripts to the restraint's inventory. In those cases, a replacement is in order.

For each entry in the following release notes, if it is colored blue, it means that if you want this feature, you will have to have your product replaced, but you can still use the old secondary parts (for example the chest straps of the Highbinder, or the chest ropes in the Shibari, etc) so you don't have to resize them all again, as they haven't changed at all.

If an entry is colored red, then you will need to have this product replaced and you will need to use the new secondary items as well. Only a few products fit that category, so don't worry.

Otherwise, if an entry is just in bold, a simple update will suffice to get that feature. The updater knows which product needs a replace and which one does not. But if your product is not v1.27, it will have to be replaced anyway.

By popular request, here is a table that recapitulates what products need an update and what products need a replacement :



And now, on to the change list...


Deluxe gag

* Materials : The HeadHarnessTex plugin in the Deluxe Gag now provides a way to change materials, just like the Highbinder's HighbindTex plugin. Before this change, the Deluxe gag was only made of leather, now you can choose latex, rubber, PVC, Spandex, Cordura, Jeans etc.


Black Cordura panel gag

* Clear plastic : Among the materials, you have the ability to choose "clear plastic". This doesn't sound like much, but it implies a lot of changes ! For example, the panel has been redesigned to get rid of the invisi-prim (the one that was in charge of hiding the lips), as invisi-prims also hide transparent textures. To set it to clear plastic you have two options. Either you press "clear plastic" in the Presets menu of the HeadHarnessTex plugin, or you select "Clear" as the Pattern and "Latex" as the Material. But you can select other materials as well, such as Rubber or PVC, after all. The "Clear Plastic" preset replaces the "Blue Jeans" one but you still have access to the "Jeans" material in the Materials menu anyway. I cannot add clear plastic for the Highbinder though, as it is tighter than the arms it binds, so it has to hide them (either with an alpha layer or by hiding the arms of the mesh body).

Clear plastic panel gag with ball

* Additional styles : The addition of clear plastic also led to the addition of a wad of cloth (same one as the Mummy gag) and a plastic dildo, made just for this ! Those are included in the Style plugin, depending on the type of gag (you can have the dildo show in "Simple Ball", "Harness ball" and "Panel" locks, while the wad of cloth appears only under the panel).

Clear plastic panel gag with wad

Clear plastic panel gag with dildo

 
As you can see, this really is a dildo !

Don't protest, it's good good training for you.

* Shrinking : Some people were unable to shrink the Deluxe gag much, simply because of a recent improvement in v1.27 : the ring straps (the ones at the corners of the mouth) had been cut in two parts to facilitate adjusting, but as a result, those parts were very small and could not be shrunk much. Meaning the whole object could not be shrunk much either. Now those two straps are still visually small, but their actual size is much bigger and you can shrink your Deluxe gag by half or so.

Thanks to this increased bounding box, those straps can be shrunk must further.

* Chin strap : When the Deluxe gag was set to "Lock", the harness would appear but the chin strap would dangle loose under the chin... Now I have added a script that will automatically resize and re-position the chin strap according to whether your mouth is open or closed. But to get that, you must set both positions, rotations and sizes manually first. To do that, simply move, rotate and resize that prim when your mouth is closed, then do it again when it is open. It doesn't get any simpler than this. Please note that it commits the change only when you resize it though, due to an SL limitation. Kudos to Nicki Petrichor for the idea.

Deluxe gag on "Lock", mouth closed

Deluxe gag on "Lock", mouth open, but it is not the gag that opens the mouth

Resize this prim once while your mouth is closed, then a second time when it is open and voilĂ  !

* Vulnerable : I added a Vulnerable plugin to the Deluxe gag. Not because you are more vulnerable when gagged, but because I realized it is very useful in pony play, when someone wants to grab a pony's reins even without owning her keys. Of course, like all Vulnerable plugins, it must be authorized by the pony first.

* Exclusivity : Made the gag negotiate with other gags to find out which one garbles your speech and which ones remain silent (see below for details).


* Lower garbling : Apparently the Deluxe Gag was garbling too much, making it incomprehensible and not fun. I have lowered the garbling level down to that of the ball gag, ring gag and tape gag. Level 2 garbling for simple ring and ball, level 3 garbling for harness ring, ball and panel.


Deluxe blindfold

* Materials & clear plastic : Like the Deluxe gag, the Deluxe blindfold now provides a way to change materials (the same as the gag), and also has a clear plastic option now. As a result, since a transparent blindfold is not very useful, a pair of eye pads have been added. If you own the Pretty Mummy set, you may recognize them.

Black latex Deluxe blindfold

Now there are eye pads underneath the blindfold

Deluxe Bridle

The Deluxe Bridle being an addon for the Deluxe Gag, replacing (not updating) your gag will also give you a new Bridle as well, with the following changes :

* Materials & clear plastic : Being an addon for the Deluxe gag, the Deluxe bridle will also change materials according to the gag. Please note that to add materials (other than leather) to the gag, blindfold and bridle, I had to replace the leather textures with their plain counterparts. This doesn't change much, except on the blinders HUD, because HUDs cannot render materials (don't ask me why, this is a viewer "feature"). This means that the blinders will now look plain instead of leathery.

* Chin strap : Likewise, the chin strap of the Deluxe bridle also moves according to whether your mouth is open or closed. Set its two positions and sizes the same way you did for the gag, and it will work.

Like the Deluxe gag chin strap, resize this prim once while your mouth is closed, then a second time while it is open.

Body harness

* Materials & clear plastic : Just like the Deluxe gag, blindfold and bridle, the Body harness is now able to change its materials through its HarnessTex plugin. The materials are the same ones as the Highbinder, plus an option for clear plastic ! You may notice that the edges of all the rigged parts (and only them, not the unrigged ones) look like there's only half of the strap curved. I agree it's a bit strange, and there's nothing I could do to change that. It is simply a rendering issue.

Clear plastic Body Harness

* Optional tighter rigged straps : The body harness often looks loose on the belly on the Maitreya mesh body because that mesh body is quite thin at the waist, thinner than the system avatar. Normally, girls have organs, too ! But since it is so popular (and I'm a user as well), I have made an alternate version of the crotch and stomach rigged parts that are closer to the skin. The result, to me, is more than acceptable. It cannot be exactly against the skin because the avatar sometimes bends backwards and I want to avoid clipping, that's why there is a little space between the strap and the body. But at least if you're a Maitreya user, you won't look like you're floating in your harness anymore.

This is the Body Harness with its alternate rigged mesh parts, on the Maitreya body


Highbinder

* Moved the root prim : I have moved the root prim of the Highbinder down to where its D-ring is, so that the Anchor button of its Leash plugin makes a leash coming from another restraint go to that ring, instead of the middle of the restraint. I also moved a couple chain scripts from the D-ring to the root. Doing that allowed to fix the conflict between the Highbinder's own leash and its chain going down to the police legirons, when worn.


All gags

* Exclusivity : Here is a feature I've been wanting to add for a while. Sometimes a captive wears several gags, for example a ball gag and a tape gag over it. And sometimes even a hood over the whole thing. Most often, the more gags the better ! Only... it would create conflicts. Before v1.28, the top had to set all gags to "Total" except one, and suppress all emotes except on that same gag. Short of doing that, each gag would garble the speech its own way and say something on the chat, and emotes would be repeated. The solution was cumbersome, not obvious and not documented. Now, the gags will negotiate among themselves to find out which one must garble your speech, while the others will remain totally silent. Same for the emotes. With this feature it all becomes automatic, you don't have to do anything anymore to choose which gag garbles the speech. The rules are the following, they are tested in order :

1) The most covering gag wins (tape, hood and panel cover more than ball and dildo, which cover more than ring and bit).
2) In case of a draw, the highest lock wins ("total" is higher than "tight", which is higher than "medium", which is higher than "loose").

3) In case of a draw, the gag that was locked first wins.

* Chat-in-emote & emote-in-chat : Another feature I wanted to add was "chat-in-emote" and "emote-in-chat". I got the idea from Danna Pearl's SubListen HUD (Danna is one of my slavegirls and a close friend, I of course asked her first if she didn't mind that I reproduced that feature, credit goes to her for imagining it in the first place). The principle is simple : if you put something between stars in a chat message (for example 'Yes Mistress *smiles*' => 'mmph mmnmph *smiles*'), that part is treated like an emote and won't be garbled (but counts against emote limitations, if any). Likewise, if you write something between double quotes in an emote, it will be treated as chat and garbled as such (for example '/me smiles "Yes Mistress"' => '/me smiles "mmph mmnmph"'). This is a very natural way for a lot of people to roleplay, so hopefully this will help them.


All legs restraints

* Exclusivity : Like the gags, multiple legs restraints tend to step on each others toes (pun totally intended). For example, a captive could wear ankle cuffs on "taut" and legs straps on "hobble". The result would be a hobbling girl, but short of turning "Autoref" off on the ankle cuffs, her movements would be a bit erratic, not to mention her animations. Once again it was cumbersome and the solution was not obvious. "Autoref" did help, as it would turn off the automatic refresh of the animation (necessary in case of a conflict) and the controls on one restraint. Now, just like the gags, the legs restraints will negotiate among themselves to find out which one must control your speed and animate your legs, while the others will totally ignore your controls. There may sometimes be an issue where the wrong animation plays right after locking a stronger restraint, due to a race condition that I can't really control, in this case just move slightly and it will be fixed. Due to the fact that I had to rename some of the Hobble scripts to give them different speeds, to get this feature you must replace your legs restraints, but only in the case of the Legs Straps, the Shibari Legs, the Siren Legs and the Mummy Legs. The other legs restraints will get this feature with a simple update. The rules are the following, they are tested in order :

1) The slowest speed wins.
2) In case of a draw, the highest lock wins.
3) In case of a draw, the restraint that was locked first wins.


Wearing two legs restraints at the same time

Leash

* No limit : Until now we were limited to 15 m... but in some public sims that was not enough, such as Stones N Rubber that required the ponies to have a 20 m leash in order to run laps. Now the "15 m" button has been replaced with a "Custom" button that lets you choose the length you want. It is not limited (well, to 10 km maybe), despite an SL limitation, you can make it as long as you want. The "-1 m" was removed and "70 cm" (the minimum) took its place back, since you can now be as precise as you wish with the "Custom" button. Of course, if you are too far to the leash ring you are chained to, it might not be visible in your viewer (I mean rezzed) so the chain would not appear until you get closer, but that's beside the point.

* Automatic unleashing : Sometimes a captive is left leashed by mistake, her leash being active but with nothing to connect it to. I know, it happened to me many times as well. It can be annoying when it happens, as you can walk around but not teleport, and you had a chain dangling down uselessly from your collar ring. Now, when the target of the leash (either an avatar or a leash ring in-world) is not detected consistently for 15 minutes straight, you are automatically unleashed. The leash holder is notified in IM when it happens, just in case, so no sneaking your way out ! Thank you JiaDragon Allen for the idea.


Duster gag

* No twitch : There was an annoying twitch of the neck at the end of 4 of the animations of the Duster Gag, it is now fixed and should blend smoothly.


Slave Crate

* Overhaul : The Slave Crate has been overhauled (it was needing it badly, this is one of the oldest RR products and one that didn't get much attention over the years) : there are now 4 locks instead of 1 (Standing and laying with the door open, standing and laying with the door closed), it can be locked invisible, it does not hide all the incoming chat anymore (that feature was made before I even started working on the RLV, but now it is rather obsolete), you can control what the captive can hear through its SlaveCrate plugin (which is a renamed Hood plugin, it lets you block incoming chat and IMs), and you can even change the side picture through its SlaveCratePic plugin (before v1.28 you had to do it manually).


Police handcuffs, legirons, elbows and belt

* Lockmeister :
Added a Lockmeister script into each relevant ring, as they didn't seem to link chains to some pieces of furniture. Other restraints already had the Lockmeister scripts, but not the Police set. Thank you Maruja Zelin for the heads-up.


Enhancements

* Autolock : Until now, each macro could run either only while the restraint was unlocked, or all the time. Now there is a third setting letting it run only while the restraint is locked. So now you have "While free", "While locked" and "Continuous". It makes more sense that way.

* Autolock : Until now, when a macro was executed, the key would go to the current keyholder, if any, or to the author of the macro if the key was available. I felt it was a big complicated, and would not allow for some subtle games... So now when a macro is executed, the key goes to its author in all cases, even if the keyholder is someone else at that time (unless of course the macro is programmed to leave the key on, like before).

* Autolock : Allow for 10 seconds delays. They will show as "00:00" but they are really 10 seconds (the timers are expressed in HH:MM format, that's why). Simply remove 1 hour to the delay until it shows "00:00" and you'll know the delay is set to 10 seconds. It is not really 10 seconds, in fact, but "the next time the main script gives Autolock its regular tick", which may happen anywhere within the next 10 seconds.

* Anim : "Autoref" now shows on the menu where "Main..." was. This is made that way so that the captive can toggle Autorefresh from her RR Anim HUD without being able to access the main menu that way, since she could be restricted from touching and from using /77.

* Clicking on the RR HUD : Now when /77 is off, clicking on the RR HUD (the reddish prim that blocks your click when "Block" is active) won't bring up the menu anymore.

* Hidden timer : Now when the timer is hidden, setting it or adding time to it will still show "Timer set" exactly once (the first time we add some duration), just like it shows "Timer reset" when the timer is cleared. The timers will also show on the menu, except the time left which will be marked as "hidden" if the timer is hidden. Makes more sense that way, there was no reason to hide all the timers.

* All gags : When the emotes are suppressed, don't show "emotes suppressed" anymore, show nothing at all in fact. This is in case you are using a v1.28 RR gag along with another gag that is either 1.27 or another brand. That way you can simulate the Exclusivity feature even with other gags.

* All restraints : Make it so the main plugins (RL_Time, RealKey, GiveKeys and Leash) respect the Verbose/Silent setting of the main script. There is still some more work to do on that matter, but this requires inspecting every single script, so it takes time.


Bug fixes

* All restraints : Removed the free memory number on the menu of the main script.

* All restraints : Some struggling animations were interrupted prematurely.

* All restraints : Double chat message when the wearer of the restraint holds its leash.

* All restraints : Bogus "is trying to manipulate this restraint, and may be able to retrieve its key by using a RealKey." message when logging on or rezzing some of the restraints. That message was harmless (nobody was really trying to manipulate your restraint), but annoying nonetheless.

* All restraints : When Examining while struggling, "no clue to get loose" becomes "no idea how to get loose". Me speak English good. Yes yes.

* All restraints : When disabling Autorefresh while sitting, stop the animation immediately.

* All restraints : Clicking on a blank button in the Plugins Browser could confuse some plugins and core scripts. Rare case, but I've seen it happen.

* All restraints : When /77 and touching were off, we couldn't get the menu when the keys were given back on the Armbinder and the Highbinder.

* All restraints : We couldn't choose "Just lock" in the Autolock (more precisely we could, but it didn't do anything) when the restraint had no special lock or pose, for example the Slave Crate and the Body Harness.

* All restraints : The Vulnerable plugin didn't work when just "locked", it had to be locked in a pose.

* Shibari ropes, Siren ropes, Highbinder, Harness, Deluxe Gag & Blindfold : The tint was not always well recognized when entered manually (you can either write it as decimal numbers between 0.0 and 1.0 such as "0.1 0.2 0.3" or as integers between 0 and 255 such as "255 128 0"), the algorithm could fail at telling whether it was a decimal or an integer form. It is fixed now, and on top of it, the SirenTex and ShibariTex now provide a text box like the other texture plugins, instead of asking you to say the tint on the chat (which is not easy when you're gagged !). Thank you Ariel Erlanger for the heads-up. Please note that the Siren ropes are in red for another reason... If you simply update them normally you will lose the ability to change their texture. This is because the Visible scripts are the ones in charge of changing the texture in the secondary item, but for some reason they are not able to handle the messages coming from the new version of the SirenTex plugin. I realized that only too late, sorry.

* All collars : Animations which name begins with a star ("*") were supposed to be ignored. Now they are indeed ignored. Thanks to HomelessUnicorn for the heads-up.

* Elegance and Serious collars : The text did not switch to the wearer's first name after changing owner.

* All gags : Emotes now all have a 20 m range, even those going through a ball gag or a tape gag (those had a 10 m range before).

* All gags : Manually changing the channel didn't seem to work well. Thank you Myggen for the heads-up.

* All gags : When changing the name of the gag to the display name of the wearer, sometimes the characters are too exotic to have them print on the chat window. When that's the case, show the user name instead.

* Deluxe gag : We could speak through "Total Ring", while "Total" is supposed to stand for "no talking at all".



You can find an updater at the following places in-world :

My little shop

The Little Shop of Kink

Roper's Dark Playground

Chorazin's main store

It looks like an orb floating above a pedestal, just click on it and follow the instructions.


Have fun !

Marine

Monday, November 9, 2015

RLV 2.9.15.1

Hi !

Here is a new version of the RLV with a hotfix for some weird bug occurring when changing materials. It shows particularly when changing the sweat or the shine of a catsuit on a Maitreya body, then really weird things happen.

This bug is not one of mine, it is also present in the current SL viewer, and described in detail in this JIRA entry : https://jira.secondlife.com/browse/BUG-10601

Anyway this version of the RLV includes a quick hotfix for this bug, hopefully without side-effects (I didn't detect any when testing). Of course this hotfix will be removed when LL actually fixes that bug on their side.

You can grab the RLV for Windows here :

www.erestraints.com/realrestraint

Direct download :
www.erestraints.com/realrestraint/RestrainedLoveSetup.exe

And the MD5 hash for the executable is :
90a53ab254f017d85f673b33fda4789e

Have fun !
Marine

Tuesday, October 27, 2015

RLV 2.9.15

Heya !

Here is a new version of the RLV with a few bug fixes (including one to a recently introduced bug that was really annoying, making some attachments not rez upon login when lagging a bit), and a feature I took directly from Kokua and Firestorm : the ability to rez an object or several objects to their last position !

- added : "Restore to Last Position" menu item on objects in inventory. Taken from Kokua. Attention, there is no check for the simulator name, rezzing permissions or anything (except the @rez restriction of course). Use with caution, as it could rez your object at a place that might be out of sight and you will believe it is lost !

- fixed : Some attachments could be missing when logging on, or after a TP under laggy conditions, regardless whether they are RLV-locked or not. This bug appeared in 2.9.14 and is probably in the official SL viewer as well.

- fixed : Friendship requests text messages could go through a @sendim restriction (but not through a @recvim one).

- fixed : RenderDeferredShowInvisiPrims debug setting did not work well after a relog (the viewer thought it was TRUE even when set to FALSE, and it had to be set to FALSE manually again). Thank you Aria Warden for the heads-up !

- fixed : Crash when editing a prim inside an object whilke under @shownames. Thank you Angelina Sinclair for the report !

- fixed : We were able to join a new group and be set to that group even under @setgroup. Thank you Vanilla Meili for the heads-up !


You can grab the RLV for Windows here :

www.erestraints.com/realrestraint

Direct download :
www.erestraints.com/realrestraint/RestrainedLoveSetup.exe

And the MD5 hash for the executable is :
aeb2453d62ac7d18cd05f6e14f04e1d0

Have fun !
Marine

Thursday, October 22, 2015

New product : Racing System


Hi there !

After releasing a big update to the existing carts, then releasing the Sulky and the Chariot, then yet another update to the carts, let me introduce you to the very reason I did all that in the first place : the new Racing System from Marine's Goodies !


A racing system for pony carts, to be exact, but technically it works for cars, planes, whatever you can think of. Even for people on foot. Even bound people.

I've always thought that cart races were an activity that was missing in ponyplay in SL. We have steeple courses, dressage, cart driving, polo, slalom and a number of other activities, but not really racing. Well now, here it is !

This racing system is fairly simple to set up and is very versatile, as it can handle all kinds of races you can imagine :

- Pony cart races (with Marine's Goodies carts you can even have them slow down or boost up when driving over special surfaces, see below)
- Standard vehicle races (land, air, water)
- Steeple courses (ponies jumping over hurdles and avoiding bumping against them)
- Simple races on foot, or even flying (it's SL after all)
- Races between bound submissives (it's fun to see them hop or even crawl hogtied, to reward the winner and punish the losers !)

All those races can be either closed (the start and finish lines are the same object) or open (both lines are different objects and you simply race from point A to point B).

More over, you can create your own sub-tracks (that is, telling the Racing System to use only a portion of your track instead of all of it), like they do in real life motorsports, and have obstacles show and hide themselves to indicate the way to go.

The box includes the Racing System itself, as well as 4 sample (but fully functional) tracks to both serve as ready-to-use tracks and as examples to help you build your own. It also contains pieces to build your own tracks, as well as textures and helpers. It's a full system that is designed to be both very easy to set up and use, and very powerful and versatile !

I want to emphasize that the Racing System works even if you do not use any of the provided sample tracks. It just didn't feel right to sell a product with nothing to show and that wouldn't work out of the box (since it would have required you to build your own track after buying the system). At least, with these sample tracks, you can play right away. But you do not have to use them. If you own a parcel or a sim with already existing roads, nothing keeps you from rezzing a Race Controller, some lights and score boards, and start racing on them !



Quick start

Let's not get technical just yet. You have your Racing System and you want to use it, but you don't have a whole afternoon to build your own track so you want one to work out of the box.

That's easy. Rez one of the 4 sample tracks, knowing how much Land Impact you can afford. When you rez one of those tracks, all you see is a black and green cube that takes only 1 prim :


Click on it and choose "Rez". This system works exactly like the trusty old Rez-Faux, so there is no surprise there (this one is called BuildBox and is available for free on the Marketplace). Wait until all the pieces have been set in place, move and rotate the box around if you need to place the track correctly. Once done, click again, choose "Finish". This will remove all the rezzer's slave scripts from the pieces and the track will be ready as if you had rezzed it by hand yourself. You can then delete the box as you won't need it anymore.

Each track has a different Land Impact and serves a different purpose, but all are meant to serve as an inspiration when you feel ready to build your own tracks yourself. They are not just examples though, they are all readily usable and challenging ! Each one is named in a way that you know what to expect in terms of footprint (for example "64x32m", the first number meaning the front size when you look in the same direction as the rezzer, the second one meaning the depth) and of Land Impact (the number of "prims" it takes once rezzed on your parcel, not counting the rezzer itself) :


- Willow Woods is a very small track meant to demonstrate how to make a steeple course with this system, but also how to build a very basic track with 3 checkpoints and a couple turns. It takes 24 prims when rezzed and has a footprint of 64x32m. It contains two sub-tracks, one named "track" (the outer dirt ring) and the other named "hurdles", the middle field with the steeples. Both sub-tracks have a different start line. If you drive an MG cart (for example the Sulky) over the grass, you will notice that it goes slower than on the dirt track. There are also two fault prims (one per sub-track) to add seconds to your time if you dare driving or running through them. The hurdles take 1 prim each and of course you can reuse them for your own tracks. The texture for the numbers is not included but you can find it here, it is very cheap.



- Glenfiddle is a small Go-Kart track with tight corners and short straight lines. It has a footprint of 32x64m and takes 55 prims. It does not have any sub-tracks and is the simplest track of all. It is quite tricky though, as the road is narrow and most of the turns are sharp.




- Chatterley is a bigger Go-Kart track with 3 sub-tracks (short, medium and long). Each sub-track makes some obstacles show or hide themselves, letting you see how to manage obstacles for your own tracks. It takes 89 prims over a footprint of 68x44m.


 


- Farside is the biggest track of all, as well as the most complete one. It even has sponsors ! It is a full-featured race track with special surfaces (curbs, grass and gravel) that will slow an MG cart down, an overpass and obstacles that show and hide themselves according to the chosen sub-track. It even has a straight run with a finish line that is away from the start line. It features 6 sub-tracks (straight, sprint, fast, short, medium and long), each one having obstacles showing and hiding to indicate where to go. And those obstacles are solid, if you rub against them in an MG cart you will slow down significantly. If you want to build your own track, I recommend using Farside as an example. It has a footprint of 128x64m and takes 179 prims.








Getting the Racing System ready

Once you have rezzed the track you want, all you have to do is rez your Race Controller somewhere near the start line :



Click on "Maintenance", then "Channel" then select the number corresponding to the track you've rezzed. Glenfiddle is 1, Chatterley is 2, Farside is 3 and Willow Woods is 4. If everything works fine, you should see the track react and some of the components show themselves for a bit.

That's it ! You can already start racing now.


Some tracks have several available sub-tracks to allow you to race over only portions of them. Willow Woods has two ("hurdles" and "track"), Chatterley has three ("short", "medium" and "long) and Farside has six ("straight", "sprint", "fast", "short", "medium" and "long"). To select a sub-track, simply click on the "Sub-track" button on the Race Controller and select the one you want. You will see all the obstacles and checkpoints flash for a short while to show you what is concerned by this sub-track.



There are two big types of races : on foot and in a vehicle (like a cart).

If you are on foot, you need to register yourself into the Race Controller first, by clicking on "Enter Race", then by entering the name of your team (or your color, or whatever you want, even nothing at all) then pressing "Submit".




Then you click on "Start" and go when the go is given.



If you are in a vehicle, there can be two possibilities :

- If you are the driver in an MG cart (Sulky, Dogcart, Chariot, Phaeton), then you will be registered automatically as soon as you sit in the driver's seat, provided that cart is v1100 at least. And if you stand up or log out, you are removed from the race automatically as well.

- If you are driving another type of vehicle (from another brand for example), then you need to wear the Driver Token (included in the box, it looks like a small wheel icon once worn) and to be an RLV user (*). If you wear the token before sitting in the vehicle, click on its wheel icon after sitting, click again when you stand up later. If you wear it after sitting, no need to click. Likewise, if you forget to click and register yourself, the Race Controller interrogates all the Driver Tokens around to give them a last chance to register when the race starts. The Driver Token is full perms so you can pass it around to the other racers.



In case you wish to emulate the MG carts' behavior in vehicles of other brands that you can modify, the box contains a copy of the "DriverSeat" script that is contained in the driver seat of every MG cart v1100 and above. Simply drop this script in the prim that serves as the driver's seat of your vehicle, and that's it, you won't have to wear and use a Driver Token for this vehicle anymore, nor will you need the RLV for it to work.

(*) This is for technical reasons : when you cross a checkpoint or whatever other component of the Racing System (obstacle, fault), it needs to know who drives the vehicle that was detected, but the vehicle is not designed to respond to such a question from the component, since it is scripted by someone else. So you need to wear an attachment (the Driver Token) that will tell that component that you are the one driving this vehicle, and for this it the token needs the RLV since normal scripting doesn't provide this capability (there is no "llWhatAmISittingOn()" LSL function or whatever it would be called), while the RLV API does have such a command ("@getsitid" if you want to know everything).


A race can be in any one of these three states :

- Ready : The racers are registering themselves, the number of laps is chosen, the sub-track is selected, etc. This is the basic state. Pressing Start will switch to the "Running" state.

- Running : Someone has pressed the Start button and the racers are running and timed. Pressing Stop or finishing the race will switch the state to "Finished".

- Finished : All the racers have completed their final lap or abandoned (they are then marked "DNF", meaning "Did Not Finish"), or the Stop button has been pressed before everyone could finish. Pressing the yellow Reset button (not to be mistaken with the "Reset" button in the Maintenance menu) will switch the race back to the "Ready" state.




Channel

There is a concept you will see a lot with the Racing System : the "channel". What does it mean ?

A Race Controller controls all the components in the sim owned by the same owner (you), but suppose you own several tracks in the same sim, then how to avoid one Race Controller from controlling the components of another one ? Simply by setting it to a different channel.

The channel is simply a positive number that is common to all the components connected to one Race Controller, but different from all the others. Think of it as a radio channel, every radio set to the same channel will be able to communicate with each other, but no other radio transmitter will.



By default the channel is 10 but feel free to change it to another positive number (1 and higher). In fact, you should change to another number when you are done building your track.

When you rez your Race Controller, it resets itself and starts its listener on channel 10 (unless you have changed its Description field to another number before rezzing or resetting it). When you rez other components (Checkpoints for instance, but also start lights, score boards and such), they will also reset themselves and start their listeners on channel 10 (once again, unless their Description field has been changed prior to rezzing or resetting them). This guarantees that they will be connected to the Race Controller right from the start, by clicking on the Maintenance button on the Race Controller, then pressing "Detect compo." :





Most components set to channel 10 (which, I repeat, is the default, and will need to be changed to another number later) will react one way or another.

If you press "Forget compo.", the Race Controller will be made to believe that there is no component on its channel (even though it says "Checkpoints: 1", due to how it counts checkpoints, but pay no attention to that). As a result, score boards will show "Disconnected (Channel XX)", and starting lights will no longer respond until you connect them again by pressing "Detect compo." again.

Then, when you are finished building your track, you will go to the Maintenance menu and click on "Channel" and enter a new channel to change away from the default, so enter anything but 10 in this box :




This ensures that when you build another track, you won't get any cross-talking. Doing this will also make all the components set to channel 10 change to that new channel as well, so you don't have to do everything by hand, they all follow their Race Controller.

If you want to change the channel of one component individually (Checkpoint, Fault, Obstacle, Starting lights, Score board), simply write the new channel in its Description field, close the Edit window and click on that component to make it reset :




Please note that a Score board must be disconnected for that, otherwise clicking on it simply changes its display mode. To disconnect it, click on the "Maintenance" button, then "Forget compo.".

But you might wonder "What if I had two tracks on channel 10 in the first place ? How do I separate them and stop having one Race Controller control the other's components ?", and that would be a very valid concern. In fact, this will most likely happen to you at some point. You will build a track, work on it, forget to switch it to another channel, then build another one and realize that they both use the same channel, of course that won't work well and you will think there is a bug.

The easiest way to fix that is to reduce the range of the Race Controller you wish to switch to another channel. By default, a Race Controller speaks to all the components in the sim, but clicking on the "Range" button in the Maintenance menu lets you change that range to 100 m, 20 m, 10 m or even mute it completely.

For example, let's say your tracks are more than 100 m apart and all the components within a 100 m radius "belong" to the track you want to change the channel of, and none of the other track is within that range. In this case, press "Range" until it becomes 100 m and you are certain that only its components will follow it to the new channel, and none other.

At worst, you may have to change the Description field of a few leftover components by hand and write the new channel there, then click on them to reset them.

On a side note, the Race Controller does not care in what order the Checkpoints are crossed. All it cares about is that they are all crossed at some point. This is why when you press the Change Direction button, the only thing that happens is the starting positions (the painting near the starting line in most sample tracks) will rotate by 180°... and that's it. Nothing else changes. It's just a cosmetic thing.


Options

If you can afford more prims than just the track and the Race Controller, why not rez some starting lights and score boards ? After all, most racing tracks have those, right ?


Starting lights


You have two versions at your disposal, one vertical and one horizontal. Once connected to the Race Controller, clicking on its "Start" button will activate them all at the same time. Very useful if your track is big and the vehicles in the back may not see or hear the front lights. By the way, the sound of the starting lights is preloaded with a little trick that guarantees that it will always play right away, there will not be any loading time even if it is the first time you hear its sound.

Each set of starting lights takes 5 prims.


Score boards


It is always nice to have a clear view of who's leading, how many laps they have run and how much time they took. For this, you have four different sizes of score boards at your disposal :

- 4 lines (land impact 13)
- 6 lines (land impact 18)
- 8 lines (land impact 23)
- 10 lines (land impact 28)

If there are more racers than lines, those in excess won't be displayed. That's okay, it just means they have to go faster !



Each line displays 40 characters : Team, Name, Laps and Total/Best/Last time (you can switch by clicking on the score board). You can rez as many score boards as you like and scatter them around the track if you want, they will all display the same informations. You can set one to display the total time, another the best time and yet another the last lap time.

Whether you use score boards or not, the Race Controller will say its messages directly on the chat as well, whenever the start/finish line is crossed.

When a racer has specified a team (whether the vehicle has a description or a team was entered manually), and if that team name contains the word "latte", "pink", "gold", "white", "brown", "red", "purple", "blue", "green" or "black", then the score boards will color their line accordingly. Those colors were not chosen randomly, they are the same ones the MG carts use. So if you change the color of an MG cart (say, a Sulky), then the score boards will automatically change the color of the driver's line as well.

The lines are ordered by total times, i.e. the fastest racer is always first in the list. Score boards are updated every time a checkpoint is crossed.

As mentioned above, if you touch a score board, two things may happen :

- If it is connected, it will switch its display mode between "Total time", "Best lap time" and "Last lap time".
- If it is disconnected, and the one touching it is its owner, then it will reset (useful when changing the channel manually, see above).



This concludes the actual manual of the Racing System. If you are interested in knowing how to build your own track, read on. If not, just have fun racing with your friends !


You can find the Racing System in any of the Marine's Goodies vendors, one of them being in Pak :
http://maps.secondlife.com/secondlife/Pak/76/61/105

(it's the small vendor to the left of the RealRestraint one)

Another vendor is in Lineside :
http://maps.secondlife.com/secondlife/Lineside/102/146/77

There are of course other vendors at various public places in SL.

The Racing System is Copy/Modify/No-transfer (the Driver Token and the logos are full perms) and costs L$800.














How to build your own tracks

The sample tracks are functional and fun, but sooner or later you will want to build your own tracks with the pieces provided in the box. Or with any other road kit (a good one I recommend, even if its Land Impact is higher than the pieces I've made, can be found here), or even with your own prims. Or even by rezzing a big platform just under the ground and carving a path with the terraforming tools. The MG carts slow down on Linden ground and register collisions even with it, just like with static objects, so that's a perfectly valid way to build your own track as well, and is quite efficient in keeping the Land Impact low.

All these methods are up to you, all the Race Controller cares about is that the racers cross all the Checkpoints anyway, the rest is none of its concern.

Once again, the best way to learn how to build your own track with the mesh parts included in the box is to rez one of the sample tracks (I recommend Farside) and see how it is built.


The mesh parts

There are six families of mesh parts provided in the Racing System box :

- Roads : Straight, narrowings, curved, sloped, curved & sloped. You have 90° turns, but also left and right 45° and 22.5°, all in sharp, medium and wide versions. It is better to have left and right versions of a 45° or 22.5° turn, because it plays nice with the building grid and makes building a track a lot easier. The roads are by default 4 m wide and most take 1 prim (the wider turns and slopes take 2 prims), but feel free to make them bigger or smaller, it won't make much of a difference in Land Impact.



- Borders : They follow the roads. You will see below that you do not need to rez them yourself, a rezzer can do it for you. Most take 1 prim, except the most complex ones (wide turns, slopes) that take 2 or 3 prims, because their physical envelopes are slightly more complex as well. Speaking of which, you cannot expect the vehicles or avatars to walk into the border objects without roads inside, the physical envelopes do not feature the horizontal parts (as their role is to prevent from moving out of the road, not sinking through it.



- Curbs : Like borders, they follow the roads (except there is no 22.5° and 45° curbs, nor are there sloped curbs or narrowing curbs, it's only straight and 90° ones). And like borders, you can have them rez automatically. They are slightly canted like real-life racing curbs to help the vehicle get back in line, at the cost of speed. As they are more complex than roads and borders, they also take more prims : the straight ones take 1 prim but the curved ones take 4 to 5 prims each.



Please note that you will not find the borders and curbs directly in the same box as the roads, as you probably won't need to rez them yourself, and the rezzer will do it for you (see below). If you really want to rez them yourself, they are contained in the object named "*BorderRezzer", they are copy so you can drag copies out of it.


- Obstacles : Roadblocks and barriers. They are not scripted but you can script them yourself with the "Obstacle" script to make them appear and disappear according to the sub-track (see below).



You can also resize the horizontal part of the metal barrier (the foot is one prim, the barrier itself is another prim) to make it as long as you want :



- Special surfaces : Those surfaces are merely prims with textures and the SpecialSurface script in them, and parameters set into their names. There is grass, dirt, ice, mud, gravel and sand, but also oil and water puddles. Feel free to modify the shape of any of these surfaces as needed.




- Paintings : The two paintings are regular prims, one to designate the start/finish line and one to designate the starting positions. The latter is actually cut in two and has the StartPositions script in it, which is in charge of rotating that prim by 180° whenever you press the Change Direction button on the Race Controller. Of course it must be set to the same channel, so all you need to do is change its Description field and click on it to reset it.




All the mesh objects are very optimized to keep their Land Impact low (as in, less than 1 prim per road, for example, 2 for borders, 4 for curbs, average). Of course, according to SL's way of calculating the Land Impact, stretching a mesh object increases its LI. But you'll see that even for a 8 meters wide road, the Land Impact is still very low.

I recommend you set your RenderVolumeLoadFactor debug setting to 4.0 at least, otherwise the LoD (Level of Detail) of the roads will make them look distorted when seen from a distance.

All these parts have materials applied to them, to make them look more realistic. And this is the main reason why the roads are mesh and not prim. The Land Impact also takes materials into account on regular concave prims (don't ask me why), and it can have really nasty side-effects... For example, here is a comparison between a regular tube (a cylinder is not appropriate for the road texture I made as it does not curve it like a tube does) and a 90° medium turn in mesh :


The mesh curve is on the left, the prim tube is on the right. Both are set to have about the same size in all dimensions (but the tube is effectively twice as big, as it is a prim with a Path Cut that leaves only 1/4th of its geometry visible).




As you can see, the mesh curve is a little more defined than the prim tube, but more importantly, it takes one prim while the prim takes 6 ! Why does a simple regular prim take so much Land Impact ? Simply because it is concave and has materials. But you want to see something even weirder ? Let's make the prim tube as thin as possible :


See that Land Impact ? It takes the equivalent of 40 prims now ! It could be a lot worse, I managed to make a curve take more than 600 prims once. As a result, some objects in my parcel got randomly returned, including important ones like my sales server. Believe me, I wasn't amused.

Long story short, you don't want to make concave prims with materials and a "Prim" Physics Shape. You just... don't. Forget it.


The textures

All the textures are also provided in the box, full-perms, including the funny little sponsors that you see in the Farside track.










Although they are full-perms, you are not allowed to sell them or to include them into any commercial project without my prior written authorization. If you wish to create derivative works of these textures, please give credit to me for the original work, and include the following disclaimer.

Disclaimer : The original logos are the property of their respective owners (Shell, MasterCard, Nascar Racing, Sony, Red Bull, Rubbermaid, Good Year and Man Trucks). The logos provided here are not officially authorized by, endorsed by or associated with any of them. More over, these modified logos are not at all intended to defame or criticize the original brands in any way, nor to create confusion as to which is the real brand. Those logos are simply cute parodies of existing real-life brands.

The textures are categorized in "DIF" (diffuse, the standard texture channel), "NOR" (normal, the normal channel, also sometimes called bump channel) and "SPE" (specular, which gives the surface its shine). Be careful when applying materials to a regular prim though, as stated above, make sure it is either convex, or set to "Convex" Physics Shape, or that you have enough prims on your land. I decline all responsibility for any damage caused by an unfortunate Land Impact calculation due to applying my textures as materials to a concave prim.


Linking the mesh parts

It is always a good idea to try and link as many parts as possible once you're done building your track, because most mesh parts take less than 1 prim (but they take exactly 1 prim when not linked, as SL rounds the Land Impact count up for each individual object). This way you can lower the Land Impact of your whole track significantly. For example, the Glenfiddle sample track took 64 prims while not linked, down to 55 prims once linked in two big parts (you can't link over a certain distance).

Be careful not to make any Special Surface the root prim of your link though. Or any prim that contains a script that detects collisions for that matter, as your vehicle would believe it is colliding with it wherever it goes. This is because unscripted prims pass collisions on to the root prim of the same object.

In plain English, do not make a grass special surface the root prim of your object, or else your MG cart will have its speed reduced due to it believing it is driving over grass, even when it is actually on the road. And that would not be a bug in the cart, it would simply be the consequence of how SL handles collision events in unscripted child prims.



Rezzing checkpoint

If the Race Controller is the brain of a track, Checkpoints are its sensors. They are what guarantees that the racers effectively run through the whole track instead of taking shortcuts. After all, building a road is all good and well but what tells you the racers will want to follow them ? They're not there to enjoy the scenery, they're there to reach the finish line as soon as possible !

This is why you need checkpoints in strategic spots, places where you absolutely want the racers to go.

There are checkpoints in the product box : one is named "Line" and the other is named "Checkpoint". They both use the same script but their name defines their role :

- Rez a copy of "Line" upon the start/finish line (you can have two if the start and finish line are different).

- Rez a copy of "Checkpoint" in every place you want your racers to go.

Internally, checkpoints all have a unique number from 0 to 31. Unique to a single track, that is. You do not have to bother with giving them a number yourself, the Race Controller takes care of giving them all a unique number upon its component detection. You can see which checkpoint has been given what number by looking at it closely while it is visible, there is a small number in white appearing above it (it disappears when the checkpoint becomes invisible again). A "Line" object is always number 0, and a "Checkpoint" object is always number 1 to 31.

As stated above, the Race Controller does not care in which order the Checkpoints are crossed, it cares only about the fact that they are all crossed at least once during the lap, so feel free to simply shift-drag a checkpoint over to another place on the track to duplicate it. The Race Controller takes care of the rest anyway.

You could wonder why the order is not important. It could be a good idea to be able to notify a racer that a checkpoint has been missed, right ? Maybe... Problem is, it would make building sub-tracks a lot more difficult and redundant. So it is easier not to care about the numbers but only to make sure that they are unique. When a racer misses a checkpoint, the race is pretty much over for them anyway, so whether they are notified at the next checkpoint or at the starting line (with an "incomplete lap" message) is of little importance, as they are going to go back to the starting line eventually. Not caring about the order simplifies matters a great deal.

A good practice is to have at the very least one Line and two Checkpoints. One placed roughly at the first third of the track, and the second one placed roughly at the second third. If you had only one checkpoint on the track, you wouldn't be able to guarantee that it is rezzed exactly halfway, so the racers could decide to turn around if they realized that the drive they just did from the line to this unique checkpoint is shorter than the one left to do by covering the rest of the track. Yes, that's cheating and no, you don't want that. And the Race Controller would not detect it, so you need at least two Checkpoints.

The rest depends on whether you prefer placing obstacles or special surfaces to keep them from cutting through turns, or placing more checkpoints along the track to ensure they drive to the important spots. The choice is entirely yours.




If you have several "Line" objects in your track, this means that whichever is crossed will possibly make the racer complete a lap. This is useful when you want open tracks (race from point A to point B instead of doing whole laps), but also if you want different sub-tracks to start from different places. This also means that you need at least two Checkpoints or all your racers will have to do is cross the starting line, turn around then cross it again to complete a lap. You don't want that, of course. An example of an open sub-track is the "straight" sub-track of the Farside sample track.



Once you have rezzed your Checkpoint, it should register itself to the Race Controller automatically, triggering a component detection. Still, it is a good idea to click on the Maintenance button of your Race Controller, then to select "Detect compo." when you are done rezzing your Checkpoints, to ensure that they are all registered.

You may notice that some checkpoints in the sample tracks have numbers at the end of their names, like "674", "352" etc. Pay no attention to that, this is due to BuildBox automatically renaming objects with redundant names (instead of letting SL do it by itself once the objects are put into the box). Those numbers are irrelevant to the Race Controller.


The rezzer

You may want to rez borders around your roads, to avoid letting the vehicles cut corners or go off-track, or for whatever other reason. But you don't want to position those borders yourself, as it would mean doing the same work twice... Well you don't have to. There is a rezzer in the box that will do it for you.

The rezzer itself looks like a big white glowing orb stretched up. It is contained in the road kit box and is named "*BorderRezzer". Click on it and choose the kind of border you want to rez. You have concrete and plastic borders and half borders, and concrete curbs. Only full borders (concrete and plastic) are available for all road parts. Half borders are only for straight lines, and curbs are only for straight lines and 90° curves.




Once you have selected which border you want to rez, drop a copy of the "*RezBorderHere" script (contained in the same box) inside a road part and watch what happens.

Let's say I rez 6 parts to make a simple circular track. As they are unlinked, the whole set takes 6 prims :




The rezzer chooses the appropriate border and rezzes it exactly at the right position, rotation and scale for you. But there's more ! What if you don't want to do this for every mesh part ? The answer is simple : link your parts !



Notice that once linked, the whole set takes only 3 prims instead of 6, so linking indeed is a way to save prims.

Now that the roads are linked, drop your "RezBorderHere" script in that object and watch :


Done ! All the roads in the object have a border now. And since the road parts were well placed (by snapping them on the building grid, you avoid any overlap and seam), the borders are well placed too. Please note that the borders themselves are not linked after rezzing them, you'll have to link them yourself. Also note that they are not scripted either, and were not when inside the rezzer.



Special surfaces

These surfaces are useful only if you drive an MG cart, as they are not compatible with any other kind of vehicle. In short, they are meant to modify its handling when it drives over them (usually for the worst). Think grass, sand, pebbles and the like, knowing that those carts are meant to be driven on the road. Of course, not all carts are equal when it comes to off-roading, but the point still stands.




To make a special surface, simply copy one from the box, or create your own and put a SpecialSurface script in it. Then add between 1 and 6 numbers after its name, between parenthesis. Example : "Grass (0.75 0.75 0.8 0.8)".

- The first number is the speed factor, it multiplies the effective speed of the cart.
- The second number is the turn factor, it multiplies how fast the cart turns.
- The third number is the linear friction factor, the higher the less friction so the more time it takes to stop moving.
- The fourth number is the angular friction factor, the higher the less friction so the more time it takes to stop turning.
- The fifth number is the boost factor, multiplying the effective speed of the cart, while NOT reversing to 1 when leaving the surface (unlike the speed factor).
- The sixth number is the boost decay, which is how much to multiply every 0.25 second the boost factor by, until it goes back down to 1. Values higher than 0.999 are treated like 0.999. For example, a boost factor of 2 with a decay of 0.9 would become 1.8, 1.62, 1.458, 1.3122 and so on until it reaches 1 or less (then the boost factor is no longer taken into account).

If you omit some numbers, default values will be chosen instead. You don't need to reset the script after changing the name of the object.

If the fifth and sixth numbers are set to 0, the current boost factor and decay are unchanged, so you can boost and cross mud without losing your boost factor (even though you'd be slowed down by the mud, the boost factor would still be there).

Please note that overlapping several surfaces is not a concern, as the cart knows which surface has modified its factors last, and only that surface can cancel them back to their normal values of 1 each when exiting it.

Linden land (the land that you walk on when at ground level and not on any prim) has its own values : speed factor x0.75, turn factor x0.75, linear friction factor x2, angular friction factor x2, boost factor unchanged.

Good values for common surfaces would be :

- Curb (0.8 0.9 1 0.7)
- Dirt (0.85 0.85 0.75 0.6)
- Grass (0.75 0.75 0.8 0.8)
- Gravel (0.7 0.7 1 1)
- Sand (0.6 0.6 1 1)
- Mud (0.5 0.5 1 1)
- Moisture (1 1 0.75 0.75)
- Wetness (1 1 0.5 0.5)
- Oil (1 1 0.25 0.25)
- Ice (1 1 0.1 0.1)
- Booster (1 1 1 1 4 0.9)

The carts all have an "offroad" value that is between 0.0 and 1.0, the higher the more sensitive to offroad driving. The most sensitive is the Sulky, the least sensitive is the 4-pony Phaeton, which barely notices when it goes off-road.

If you like racing video games like Mario Kart, why not design a weapon that shoots mud or oil at the other racers ? With the "SpecialSurface" script, and some building and scripting skills, you have all that you need to make your own way of fighting your opponents !



Faults

Sometimes you want the racers to simply avoid some areas, without actually rezzing obstacles (if you're short on prims, or you don't want to deface a pretty scenery, for example). Or you want them to simply avoid colliding into stuff, like ponies running through a steeple course (each collision with a hurdle registering a fault, adding time to the lap time).

The easiest way to do this is to rez a Fault prim like you rez a Checkpoint. Name it like this :

Name    (penalty_in_seconds    object_type)

Example : "Fault (10 2)"

Where "Fault" is anything you like (the faults in Willow Woods are named "Don't go there"), the "10" stands for "add 10 seconds to the lap time of anyone who collides with this prim" and "2" stands for "standalone and volume detect".

- The name is anything you want, just don't use brackets or parenthesis please, it would confuse the script.

- Penalty_in_seconds is a number which tells the Race Controller how many seconds to add to the lap time (and therefore total time) of anyone who collides with this prim.

- Object_type can be 0, 1 or 2, depending on what this object is.
  * 0 is for static, solid objects like hurdles. You don't want the racer to go through them, but you want the fault to register when they bump against them.
  * 1 is for solid but invisible objects that the racers can't go through and that will register a fault when bumped into. Think invisible obstacles.
  * 2 is for invisible objects that the racers can go through and that will register a fault when they do. Think detection areas. The ones in Willow Woods and Farside are type 2.
 
When Object_type is 1 or 2, the fault object flashes when the appropriate sub-track is selected, or when "Show chkpts." is pressed on the Maintenance menu of the Race Controller. Type 0 faults do not change any of the properties of the objects they are dropped into, so it can be useful for making already existing obstacles register faults when collided with.

Like Checkpoints, Faults are to be connected to the Race Controller, i.e. be set to its channel. Change its Description field and click on it to reset it.


Sub-tracks

There we go, here is how to create sub-tracks. This is advanced stuff but if you've read this far, you must be willing to make a sophisticated track !

Very often, in real-life racing tracks (Go-Karts, Formula 1 etc), the race can be done on just a portion of the track, simply by moving some barriers, opening some shortcuts and closing others. This usually dramatically changes the shape of the track and allows featuring several tracks in one, saving space and resources.

The same thing is possible here, by selecting the sub-track you want before you race. Once again, it is a good idea to inspire yourself from either the Chatterley or the Farside sample tracks, as they both feature sub-tracks with vanishing obstacles, which is probably what you will want to do as well.

Here are the 3 sub-tracks in Chatterley, with the Checkpoints shown :

Short

Medium

Long


To declare that a component (Checkpoint, Fault, Obstacle) is part of a sub-track, you simply add the name of this sub-track to its own name, between brackets, and separated by commas if it is part of several sub-tracks. For example : "Checkpoint [medium,long]" or "Roadblock dirty [short,medium,long]". Do not add spaces next to the commas inside the brackets. You don't have to reset the component after changing the part between brackets, but you will have to do a "Detect compo." on the Race Controller once you're done.

Once the detection is complete, the list of sub-tracks will be available through the "Sub-track" button of the Race Controller. Its menu is populated with all the sub-tracks you've declared (simply by adding their names to the components names), and the list is sorted alphabetically.

When a sub-track is selected, the following events happen :

- All Checkpoints, Faults and objects with an Obstacle script in them, flash if their names contain the name of the sub-track, while all the others are hidden.

- All the Checkpoints, Faults and objects with an Obstacle script in them, will not do anything when crossed if they do not have the name of the current sub-track in their own names.


Obstacles

The "Obstacle" script provided in the box is meant to be placed into any prim or mesh object that is supposed to hide and show itself according to the sub-track currently in use. By "hide and show", I also mean "be phantom and solid" respectively. In other words, "be an obstacle that matters only in some sub-tracks".


"Obstacle" might not be the best word for it, as some "Obstacles" are in fact not obstacles at all, for example curbs, starting positions and even the starting line can be turned into "Obstacles" with this script, and be hidden and shown according to the selected sub-track. That's exactly what the Farside track does, actually : it hides  its curbs, starting lines and positions when you change its sub-track.

Simply drop this script into any object that is part of some sub-tracks and not others, such as a roadblock that is there to guide the racers (but also to keep them from crossing the shortcuts they block the way to). Of course, once again, the channel of this object must be the same as the Race Controller. Touch the object after changing its Description field if you need to change its channel.




Thank you for reading this manual, and I hope you will enjoy your Racing System and racing with your friends !


Have fun !

Marine