Saturday, February 14, 2009

World of Champloo

This is the game we presented in EICC (Edinburgh International Conference Centre) for the daretobedigital competition 2008.With only 2 programmers, 3 artists in the team, we managed to complete this game with split screen and networking two versions in less than 2 months.
Game Trailer:

Networking game play:

You can watch series of videos on youtube:
There are old versions downloadable on the showcase of daretobedigital website(year 2008) :

My work include:  framework, graphics, gui, networking.

SDKs been used:
Ogre engine: absolutely the best choice for graphics rendering with the best c++ software design structure I've ever see.
Physx Engine+NxOgrePhysx is a very good physics engine with visual debugger to use.
NxOgre make it much easier to use with Ogre engine.
OpenAL+OgreAL: same as physx+nxogre, but some sound bugs happen for some sound card. don't know why at the end.
CEGUI:wonderful gui library with two main tools: layout editor, image editor(too many bugs for image editor). with this i implemented particle effects on gui panel when special ability is ready.
Raknet:  Easy to use, with this no need to focus on the low level networking technology, but implement a high level message sending system. A nice lobby, with UDP broadcasting functionality to find all the local machines automaticlly, also was implemented. 

Lessons i learned:
Attach/detach billboard animation ball to physics ball and make them moving with invisible bone to implement picking, throwing, special skills of character, this is not so hard and get a very good effect, for example the water race's final skill has a billboard ball scale and go inside her head. 
In single play version,when player pick up a ball, i found the physics ball bouncing towards the invisible physics plane. Because we were in a hurry, i didn't try too much time then changed another way to solve this problem. That is when players pick up a ball, disable the collision of the physics ball and delete its attached animation, create a new billboard animation moving with the invisible bone in picking,holding,shooting action.After shooting action delete this animation and
attach a new billboard to the original physics ball to shoot it out. However when moving to the network version I remember i kept adding messages at the end to fix all the bugs that led by this method.For synchronizing a special ability 5-6 messages have sent to fix all the bugs in different situations.
Recently, i found actually there is some way to move the physics ball with bone and not collide with the floor. If i can spend more time before, lots of problems will not happen in networking version and the application can become much efficient.
Coding in a hurry, trying to use tricks is making troubles for myself in the future.
When a problem happens, a quick trick or idea to fix may not be the best solution. There always has an easy and suitable way to go but hard to find.I 'd rather spend 10 days to find the entry of the simple way than immediately choose a hard way to go.We need best algorithms, however we also need to make things as simple and straight as possible. Never use tricks to avoid problems, find a good method to solve it.


Post a Comment