ART IMITATING LIFE?
I remember watching a documentry on how they created the XRay wall in TOTAL RECALL…one of the best sci fi films ever made. That little bit of wizardry has become a reality nowadays, with XRay scanners set to be common place in airports around the world.
When Maracheck enters the decontamination area, he is obviously not very clean, and possibly contains quite a few items that could be regarded as weapons by the automated security systems. Naturally (with his amazing luck and all…) he hits a dead end, with a quarantine lock down taking place. You didn’t think that it was possible to just walk into a military installation unimpeded did you?
In thinking of a way to make the lockdown quite interesting, I of course went to my main source of inspiration…movies! With a bit of tweaking, I eventually got the XRay scaner working in the game.
This is not the last time you will encounter scanners like this-and they will be useful for quite a bit more than ‘look…skeletons!’.
Luckily for me, my brother has a programmers mind, making us the perfect development team and exposing me to the ‘behind the scenes’ aspect of game development for quite a few years.
But thanksfully, over the years there have been quite a few companies who have seen this gap in the market, and have made either their tools available for developing game content, or actually created software for making any sort of game with pretty simple scripting languages.
Now Im not going to go into the game engines, and editing software out there-but I do wanna point out some of the engines available out there for creating an Adventure Game. These are the 3 engines I seriously considered when first designing STASIS.
ADVENTURE GAME STUDIO: http://www.adventuregamestudio.co.uk/
Adventure Game Studio allows you to create your own point-and-click adventure games, similar to the early 90’s Sierra and Lucasarts adventures. It consists of an easy-to-use editor to create your games, and a run-time engine to play them.
The game interface is fully customizable, with classic Sierra and Verb Coin templates provided by default. AGS manages most of the game so that you don’t have to – it does all the donkey work like load/save game functions, pathfinding and scrolling rooms so that you can concentrate on the parts of your game that make it unique.
Set up your rooms, characters and sprites visually in the editor, then add some script to handle game events and you’re done! You can even create a standalone EXE file containing your entire game, which you can then distribute to your adoring fans worldwide.
I really liked AGS. It was really simple to use, and the games instantly had that retro feel to them. Some of my favorite adventure games are created directly in them, such as Yahtzees ‘Chzo Myhtos series’ (5 Days a Stranger, 7 Days a Skeptic, Trilby’s Notes and 6 Days a Sacrifice.). My biggest problem with AGS was that is IS very limited to creating older, retro looking games. I wanted to create a very rich, atmospheric world, FILLED with highly detailed areas to explore. So I left AGS as a ‘last resort’, and figured I could always adjust my vision for the game if necessary.
Wintermute Engine Development Kit is a set of tools for creating and running graphical “point&click” adventure games, both traditional 2D ones and modern 2.5D games (3D characters on 2D backgrounds). The kit includes the runtime interpreter (Wintermute Engine, or WME) and GUI editors for managing and creating the game content (WME tools) as well as the documentation, demonstrational data and prefabricated templates.
I enjoyed playing around with the Wintermute engine, and its supprt for 3D characters was really a selling point. I actually began planning STASIS useing the Wintermute engine, until I game across…
Visionaire is a tool that makes the creation of graphical adventure games very simple. The only thing you need is some creativity and imagination, and after a bit of playing around with the program you will soon see your first results! The main purpose of Visionaire is to empower fans of adventure games to create their own games, without requiring extensive programming skills. Therefore Visionaire provides a huge set of existing “Actions” that can be combined in all imaginable ways. This allows people to develop there own games without writing a line of code.
Just a few hours of playing around with Visionaire, and I was hooked. The ability to quickly change graphics on the fly, support of PNG’s, the ability to create the game in much higher resolutions (I’ve tested up to full HD, with no problems), and a very active development team, Visionaire just had everything I was looking for. After a day of use, I already had a working level.
Now I’m definitely not saying that the other engines out there aren’t as good as Visionaire, or lack any features that it has-but just from a workflow perspective, Visionaire suited me perfectly.
It is limited, in that you can ONLY create 2D Adventure Games. No RPG’s, FPS’s, or plat formers. But I didn’t want that…I wanted to create a ‘classic’ 2D Adventure Game, with high end graphics-and that is EXACTLY what Visionaire has allowed me to do.
So there you go! Just 3 options here, but there are a TON of other adventure game engines out there-any many game engines that will allow you to create any game you can think of.
Now that I have a decent base to work off of, I can start animating it. If we go back to the description we know that this scene is going to have at least 3 separate lighting passes. One different set of lighting for each time he moves forward in the level. Because this is a 2D game, each of those different lighting passes has to be rendered completely separately. Now, to make things even more difficult, I want to have those signage boards flickering as tho there are slight power surges, and the globes are kinda entering the last days of their lives! So each lighting setup needs to have a separate pass for the signs flickering, aswell as a pass for the signs in a ‘normal’ state. Memory wise, that is going to be to big to practically get into the scene, so we are going to be doing a bit of cutting up. Also, by cutting out each sign separately, we can make sure that each sign gets it own random flicker. Adding that kind of randomness will really help sell the scene.
Lets start by rendering the 3 first light passes. We are going to call them:
Then we set the inside of the posters to be slightly lighter. Not to much tho, but enough to cast some interesting light on the injects infront of them.
Once we have those files, we open up Paintshop Pro, and create a quick script to crop those down to JUST the areas we need, like this:
Once the graphics are done, putting them into the engine, and making them work only takes a few seconds. Visionaire has this really cool ‘random’ option, which will randomly pick from a set number of frames. So if we place in the ‘non flicker’ and the ‘flicker’ frames, it will get a semi strobing effect-exactly what we are looking for. And because its ‘mathematically random’, no two flickers will be alike.
Setting up the code to get the 3 sets of lights working, with the 3 filckering lights is a little more involved. I wont go through step by step, but Ill explain the concept behind it. The level is divided into three zones, with each of those zones needing display its own background. I drew 3 ACTION AREAS, and set a command that would execute every time the character entered that specific zone. So, when he entered ZONE 1, GL_InnerAirlock_LightPass_1.png becomes the background, while GL_InnerAirlock_LightPass_2.png and GL_InnerAirlock_LightPass_3.png are hidden. The same set of commands is given when ZONE 2 is entered, except Lightpass 1, and 3 are hidden, and 2 becomes visible.
Now the flickering is linked to a value, that is activated when the different zones are activated. So when ZONE 1 is the active zone, the FLICKER 1 animation is made visible. When ZONE 2 is active, FLICKER 1 and 3 become invisible, with FLICKER 2 becoming visible.
There are some sounds linked in there aswell, to really sell the ‘clunk’ of large lights turning on and off, which really adds to the visual aspects.
The airlock opening is done in the same way. A zone is created, and when the character enters the zone, the specific animation is played.
Once its all put together, the level can be played instantly. Heres a short video I did of the level being played. The character looks a little ‘glidey’ and some changes are a bit sluggish, but thats from the recording program running in the background.
Before you take a look at the completed level, lets go back to the original description:
The airlock clicks open with a hiss. A silhouetted figure walks into a dark room. The massive rotating door behind him rolls back into place, and seals shut.The airlock clicks open with a hiss. A silhouetted figure walks into a dark room. The massive rotating door behind him rolls back into place, and seals shut.Darkness. Nothing. Maracheck walks forwards. As he does so, a light directly above him turns on. Motion controlled. A computer voice sounds out “Welcome to The Groomlake Research Facility. We know you will enjoy your stay.” Computer screens flicker on showing various PR photos of families on board, scientists working happily, children playing.As Maracheck moves forward the lights continue to turn on infront of him. More computer voices:“Please be aware that we are operating on emergency power.”He continues down the corridor. Comfortable seating on either side of him suggests an airport lobby of some kind. This must be where the important people came in…a company would waste money like this on an entrance for grunts.As he advances, more lights turn on, highlighting security turrets. Shut down. The security systems must not be operating. Good thing too…those turrets would have shredded him. As if reading his mind, the computer voice sounds out an eerie warning.“To ensure that your stay with us is a pleasant one, please remember to follow all protocol. Your safety is our priority.”The lights go off for a second…the sound of an electric generator spinning up again.“Please make your way to decontamination.”“Thank you for your cooperation.”
With a few changes, I think that the level plays out pretty faithfully to that original idea. What do you think?http://vimeo.com/18178146 _________________________ Chris
In part 1 I went through the planning stages for a scene. Its important to note that this scene contains no inventory interaction. It is purely a ‘fluff’ scene, to set up the next few rooms. The planing gets more involved when puzzles are present. I will go through how I plan out puzzles in a later blog post.
A NOTE ON BLOCKS.
I dont want to waste the players time with him thinking he has to return to the room, so I am going to place in a block once he leaves. It could be anything, from a malfunctioning door, to something falling and blocking the entrance.
I like to think of Adventure games as novels, or films, where you are a participant, but not the driving force in the story. The characters are. The environment is. The story is. Its not quite as passive as I’m making it out to be, but I would rather have the player feel the need to move forward IN THE STORY than constantly have to trek backwards. In a film, you very rarely visit the same set piece more than once-and if you do there is always a very specific reason for it, or the set piece has changed.For example, visiting a building AFTER an earthquake, or a detectives office DURING the case, where its covered in boards and notes.
At various points in the game, there will be blocks that are set up. This does prove to be an issue, design wise, as you have to ensure that any inventory item that is needed, is picked up BEFORE the block-else the game will break. This just takes a little bit of planning, and this is where the flowchart really makes a difference!
COMPONENTS AND CONSTRUCTS.
Now that I have my prop list, I have to create the individual elements that go into the game. In order to speed this process up, I have two building blocks that I use. Components, and Constructs. Components are individually modeled ‘things’. They dont nessesarily have a set shape or purpose for being that shape. They are random elements and objects that I have either modeled, or ripped off of other models. The components can easily be modified into anything, and using them I create the Constructs. These are fully modeled items, such as computer consoles, doors, chairs, tables, entire cockpits, gun turrets, satelites..essentially the items that make up the scenes.
Breaking things down like this means that I can easily and quickly populate a scene with a lot of detail. If I have a nice computer console that I really like, I save it as a Construct for later use. Essentially its like using many different model kits, and ‘kit bashing’ a scene together.
Here are some components….
And a quick look at my full components library. As I work on the game, I will continue to add to this library, to get even more interesting Constructs.
Here are some Constructs I have made already. These are more general, but custom ones can be made ‘per scene’ very quickly, by either JUST using the components, or combining Components with Constructs. This way, creating a scene becomes and almost ‘drag and drop’ exercise, and gives me the freedom to make changes very quickly. If something isn’t working, its never a waste because I can save out that elements for use later.
Using these elements, I can quickly build up the basic level layout. For some rooms Ill have this planned on paper first, and for others I just kinda play around. This one is firmly in the ‘play around’ category. I have a very good mental image of exactly what I want the room layout to be, and what I want the room to look like.
After some hacking and slashing away in MAX, I come up with this:
Note that the only thing that has been ‘custom modeled’ are the screens, and the waiting chairs. Those will get saved into my Constructs folder, and the next time I need cool propaganda screens, and waiting chairs, I can get the scene out even faster.
Time for some texturing! I have quite a large database of textures, mostly taken from CGTextures.com-an incredible resource!
Its coming along quite nicely, but still needs a fair amount of detail. Some bloody hand prints…a few loose items of debris…something to tell a story of this space. Even if that small story is never explained, the fact thats its there, even on a subconscious level, fleshes out the world even more. I also quite like the juxtaposition of the happy posters, with the warnings of ‘do not cross’, and may try to add in a few extra details like that. Anything to make the world feel ‘lived in’.
One last pass, and the basic background of the scene is complete. I think its coming off as a little to ‘dirty’. The hard metal surfaces are overpowering the softer areas. I’m also going to kill out the colour on the chairs, to really punch out the red of the blood on the carpet.
And there we have it! Next blog post, i’ll go through the process of animating the verious areas, and bringing those into the engine. I have a few ideas about adding some random flickering to the advertising panels…I really think that will give it some life!
Im interested to find out from you, what story do you get from this image? Does that blood stain on the floor say anything? Or does it just come off as random ‘gore’? Do you agree with me about removing the metal grunge? Did that add to the image, or detract from it?
Any questions you guys (and girls) have, feel free to leave a comment below and ill respond as best I can!
Ive been thinking of putting up a developers blog for a while-but honestly the game is still in its infancy so I though it was a little premature. But after the amount of amazing feedback I’ve been getting from people about what has been done so far-I thought a nice central database for all my ramblings about the game was a good idea!
Ive got quite a few posts planned and lined up, going through everything from the story aspects of STASIS, to how the levels area created and rendered, as well as some in sight into how the game has been planned. If you have any specific questions you want answered, or just wanna say hi, leave a comment. 😉
Till then, enjoy whats up already, and make sure to check back often!