Saturday, 13 March 2010

Greetings! Stay a while and listen!

Greetings, Here i shamefully come insanely late to put my first post on the development blog of our game project. I am the self styled tools programmer among other things and my name is Yorrick Mendes and i've left my last job to work exclusively on this project for now. I worked with hank at our last company for quite a while and thats where this idea of creating a game started. 3 concepts later we are here with a concept that has had a good amount of positive feedback from people whos opinions i respect a lot. As of now since hank has been showing off the awesome engine he has developed i think i will show off my work on the editor and some of its features.

The editor is closely linked to the engine, it does not use its own rendering, instead relying on hanks own engine code. Due to this as far as rendering is concerned the editor is a WYSIWYG type. Also due to this, any fixes and changes to the rendering system are updated and for efficiency purposes the editor can use the SPTs to improve rendering time.

Heres a screenshot of the main editor:


What you see here is is the main window. The panel on the right is currently on the 'properties' tab which displays the properties of the currently selected entity. It also has some legacy controls for the position and orientation, though these are now controlled by handles, they can still be used. Below that is the custom entity properties tab. For each new entity type it is possible to change what properties are showin in the box. These properties are also exported as customizations to the level file. Hence while this property shows model and material for a dotX entity, for a light it would show things like light colour and range among other things.


Here is another view of the main editor. There is a different entity here, the movemetn handles for the pyramid entity are visible. The other entity is an animated entity. On the right a creation tab is open, allowing you to place new entities onto the level. The entity list is also available, allow you to select and hide whatever entities you do not wish to work with and delete them.
Navigation around the editor is achieved in a similar way as in 3d max. Dragging with the middle click pans the camera horizontally and vertically, dragging with the right click rotates the camera about 2 axes (the 3rd is not meant to be rotated about) and scrolling moves the camera forward and backward. Hotkeys are active as of now, you can switch to move, rotate and scale mode as well as bring up the entity list and switch between tabs using hotkeys. As you can see lighting is not active but that is merely a helper inorder to work with a level that has not had any lights put in yet. Loading and saving is done and its saved to xml files.

So much for the main editor. Now inorder to use collisions with engine hank has created a bounding box system consisting of progressively more detailed bounding boxes having a parent child relationship i.e. a parent always contains all its children. The bb's had to be entered manually so an editor was required for that. This is the BB editor:


All these editors use the same base class and hence inherit the navigation as well as handles from the main editor (mercifully). Here the rotation handles are visible, colour coded according to which axis they belong to. The tree structure is created on the right, bounding boxes are added as children to the currently selected bounding box. BB's can be rotated and hidden and also scaled (also using handles). The bb's are saved to xml file and loaded up by the engine (or editor).

Finally we come to the Material editor.


A comparatively simple editor, it is used to edit the material settings of any given model, allowing you to create different 'skins' for the same model. For example since the model in the screenshot has no texture, it is possible to change the colour of each individual mesh using the little coloured boxes on the right. You can also switch between meshes, change the transparency, and the diffuse, normal and specular texture here along with some other things only hank knows :P. Also it is possible to share skins between models to save work, assuming both models are compatable with eachother. Thus near identical models with the same number of materials can share the same material. And when placing a new entity in the editor, a list of options shows all compatible materials to choose from, not selecting one results in the default (from exporting) materials. These are also saved to xml files.

So a bit of work going in here. I've got one major component to build i.e. the particle editor. Seeing as i've build a particle editor before it seems i've saved the best for last. It should also be a lot better considering i've learnt a lot more winforms and graphics and i've got a pro graphics artist on call :D

You have found this post informative,