Each Easter holiday on Escapades i throw together an experience that requires my island friends to be a little creative. In 2011 they decorated little Eggmen, in 2012 they decorated Eggs. This year they were required to decorate little Rabbit Statues which visitors to the island must collect as part of a new game called ‘RabidRabbits’
This game combines many elements of my previous efforts but also includes some new approaches.
Simplicity from complexity.
This game uses the most complicated HUD system I’ve made yet where the complexity comes from trying to make the experience as simple as possible.
I started out by writing what i wanted in the experience. I wanted to tell a story, i wanted to collect things with a visual inventory, i wanted to finally get hurt by the monsters i battled and i wanted all this to happen in the HUD and i cant use experience permissions system because it’s not finished.
To do this i had to break the scripting into parts.
1. Main Inventory Script: This main script kept a record of the HUDS inventory and position in the story. Each time an object was discovered this script checked it against it’s list and if not yet found it would display the object on the HUDS visuals while counting it in the scripts list. The position in the story was determined by the number of objects found. For instance, if there was no objects found the story was at the start, if some objects were found the story was in the middle, if all objects are found then the story is at the end.
2. The storytelling script : This system stored all the commands for displaying the story elements, popping up words and playing sound bites. This also had a separate subsystem for controlling cameras which i used to create cut scene effects during the story telling, focusing the camera on specific props and characters.
3. Health Script: This system kept a count of how many times a monster had hit you and also requested permission to teleport when first attached. Once the health count reached zero the script would teleport you to a respawn point. ‘TeleportAgent‘ was introduced to Second life’s scripting language last year as part of the ‘Advanced Experience Tools’ along with ‘AttachToAvatarTemp’. But it came with some really annoying rules such as only working with objects you own. Also you can only accept permission to TeleportAgent by clicking yes on a dialogue box which can lead to the user not seeing the request before SL’s UI fades it away.
The way i wanted the HUD to work is a totally contained system where everything happens. You carry the whole story with you. The Goblins and monsters dotted about the island only send one word messages that tell the HUD what to activate. This is a change to how i used to do things where if you found a secret door, then that door did all the story telling for everyone who touched it.
For the Story telling of Rabid Rabbits i used the same idea of pop up written displays used in the Cheese Fairy game, but this time instead of the pop ups automatically coming and going i allowed the user to click a button to move on, giving time to read at leisure. I looked into ‘SetCameraParams‘ as an experiment into focusing story elements on props and characters and i was quite pleased how that came out as it gave even more sense of playing a game.
Finding the path.
Back when i made the Cheese fairy game i came across a buggy problem when using faceflip animation technique (also known as ‘Alpha Animation‘ ) combined with Pathfinding character scripting which allows for really dynamic Ai movement of an object.
Using the faceflip technique I created really nice animated hopping bunnies and combined them with pathfinder to achieve Rabbits that ran around stuff to hunt you down and pounced at you when close enough. Unfortunately the strange bugginess still remains meaning that the rabbits would disappear or not rez visible at all. Having monsters that could bite you but not be seen was unacceptable. In the end i chose to dump the faceflip animations in favour of the pathfinding since i could not have both. You do get to see the face flipping animation in the prize you win on completing the game.
Auto Attaching oddity.
Originally it was planned to have the HUD auto attached on acceptance of a request dialogue box. I had done this before with the Cheese Fairy, T H E W E L L and a recent update to the Evil Giant Zombie Worm Chainsaw massacre mini game. This time however something was preventing the HUD appearing when auto attaching. You could see in the inventory that it was attached and you could hear the sound from the story playing, but it just wasn’t appearing. To fix you had to UNattach then Reattach, which negated the point of auto attach. In the end i opted to give the HUD to inventory in a folder while i try and work out why the auto attach does not work with this HUD.
Experience more while doing less
So i gave it a good go and i think i almost have a solid base to start building bigger more complex games and stories, but there are still some annoying problems i simply cant work around. What i aim to do with my experiences is to allow users to experience more while doing less. I would love to tell a story without the user having to use their inventory or chat box. I don’t want people to have to rez objects or attach weapons and HUDs or accept requests in little boxes. I want to do that all for them so they can simply immerse themselves into the experience. I have hope that his final hurdle will be addressed eventually by the Lab once they finish what ever secret project they are working on.
CHECK IT OUT, ITS FREE!!
If you haven’t played the Rabid Rabbits game, please do so and leave feedback on my SL feed or here in comments. Nothing encourages me more than the response of those who play and so far everyone has been really positive which has boosted my confidence for future projects on Escapades, in New Babbage and at the forthcoming SL10B celebrations.
To Play Rabid Rabbits visit SLURL http://maps.secondlife.com/secondlife/Escapades/98/99/72
Also thanks to Matt who helped my brain stay on course with the scripting and Stella & Flo for doing a great job beta testing and uncovering countless bugs :-p