Summary

This game engine was developed for creating adventure games in hybrid 2D and 3D system. This system is using static cameras and makes possible to use static rendered pictures as a background and polygonal characters and objects. When the character is walking in the scene, cameras are switching, so there is always best view to the main character. This system is for example used in games like Grim Fandango, Monkey Island 4 or Alone in the Dark series. Whole system is based on 3D studio MAX®, so all objects and characters (using character studio bipeds) are imported from 3D studio MAX®. The engine has its editor for 3D scenes and small development environment for compiling its script language. The game POLDA 4 is based on this engine.

Some screen shots from Polda 4





You can download playable demo of Polda 4 here (66 MB .exe)


Editor of 3D scenes


The scene is made from 8 different objects described below.

Camera object
You can import a camera object right from 3D studio MAX®. So, if you make a scene in 3D studio MAX and you render it, you do not need to set camera for characters and 3D object again, but all you need to do is to import the camera object from 3D studio MAX®. Every camera object has his transformation matrix and background picture.

Light object
Every 3D object and character in the scene needs to be lighted. Light has its position, range, colors (ambient, diffuse and specular) and attenuation.

Light track object
Very nice effect is light track. You can animate the color, attenuation and position of the light in time. This is useful for example, when the character is near the burning fire and light is blinking on the character. This is very nice and cheap effect.

2D objects
These are just the rendered pictures in the scenes. It can be static pictures in the BMP format and TGA format (alpha channels are supported, so you can use transparent pictures). Besides this you can use 2D rendered animation. Supported formats are FLC (256 colors animation) and my own animation format FLA. There is a little utility for creating FLA animations from BMP, TGA files sequence (BMP2FLA, TGA2FLA). Every 2D object has its position, depth (every edge may have its own), and transparency.

2D tracks object
You can make animations with 2D objects using 2D tracks. You can rotate it, translate is and scale it. With this feature you can make some jiggling ship for example. This is very simple and effective way to make 2D animations.

2D color tracks object
You can make animations with 2D objects using 2D tracks. You can change the main color of 2D object. This is useful when there is some dynamically changing light object (near the fire for example). You can simulate much more interesting effect whit this feature.

3D object
You can import here any 3D object using 3D studio MAX®. You can group more 3D object in one object.

3D animation set object
You can import here any 3D animation using 3D studio MAX®. You can use biped animations (biped must be defined in character section, see below) or 3D object (3D object must be defined in 3D object section, see above). Animations are then interpolated in engine, so they are very smooth.

Character
You can import here any biped object using 3D studio MAX®. Every character has its body object, face object (that's because the character can talk, when it's for example doing some action, so the definitions must be separate) and shadow object (it's a simple transparent circle under character). Every object has much type of animations like walk, boring, picking, talking, body talking (like gestures), which are used in the game.

Walk, polygon, steps objects
These three objects are defined with simple method, user is painting to a screen like in any normal painting program and he's defining areas. In walk it is an areas where it is allow to walk for characters, polygons are for active mouse areas in the game and steps are the areas of sounds which are played when some character steps into this area.


Compiler


This is a little utility for creating game script. I have developed my own script language for processing the game. There are about 50 commands defined in this script language like CharacterGo, PlayAnim, CharSay and so on. It is a message-based system. There are also many features in compiler environment, like macros, utility for creating national version of the game, debug and retail version of the script and so on.


3D studio MAX® importer


I have improved the ASE file importer from 3D studio MAX®. It can import biped objects and its animations, it is faster and the imported result file is much shorter, so the reading of this file is also very fast. You need this importer, when you want to use my engine.


Possible improvements


Particle systems (like fire, rain, snow and so on), fogs, free movements of characters on Z-axis (going up and down), free camera (the camera can follow the character), better shadows (real shadows based on characters computing), level of detail (this would only be useful in big scenes with free camera), binding of characters animation (this would be very useful in more action games like Alone in the dark), gravity computing, inverse kinematics computing, objects visibility computing. With all this features it would be already very complex engine, which could be used for a game such as Tomb raider or Max Payne.