It has been a long time since my last post, lot of things had happened 🙂 I do not really know why I do not write more often in my Blog, it is just because I am lazy or… who knows 😉
I have already defined my final project, although it is pending of the formal acceptance. I have also decided to work with Alexander, who is starting a new company called Novuz. So I have been able to convice my teachers to do a final project related to the work I am doing in Novuz. It is a part time job (20 hours a week) and I can work from my room, so I do not have to go to any office. And what I am doing in my job? We are working in a demo of a possible massively multiplayer online game (MMOG), it is necessary to develop a demo in order to get investors for doing the final game.
So my job/final project is really cool, I am in charge of the server side of the game so I have to look for Artificial Intelligence, Networking and those things… everything for a UNIX like system (GNU/Linux :P). I am really motivated with this, I have been reading a lot of things about making MMORPG or MMOG.
A game is normally composed by different parts:
- 3D Engine: It is in charge of the 3D graphics, and it gives more facilities than working directly with OpenGL. It allows you to load 3D models done with extern programmes like 3D Studio, Blender or Wings3D.
- Artificial Intelligence: Usually it is used a script language integrated in the code in order to have more flexibility for AI. So, everytime you want to change the AI it is not necessary to recompile all the project, the scripts are loaded dinamically.
- Networking library: It is important to use libraries for minimizing latency and needed bandwidth. There are libraries that use UDP as base protocol and add and extra layer that guarantees realibility and correct order.
- Physics: There are libraries for detecting collisions.
- Sound: It is possible to use several libraries for playing sounds.
For each category we have differents options:
- 3D Engines:
- AI Scripting, all of them work with C++ but if we are using Java/C# it is possible to use dinamic loading of classes/assemblies using Reflection:
- Networking:
- Physics:
- Sound:
All the libraries are multiplatform (MS Windows and GNU/Linux) except Axiom3D that does not work with Mono yet.
Interesting links about game developing:
I have also tried NeL, the libraries used in the game The Saga of Ryzom. It is a framework specially designed for MMORPG but it lacks from a reliable versioning system, you always have to use the CVS version so you never know if the version that you are downloading is a good one or not. So I think that it is not a good option.
I am also reading some papers about researches done in the game and MMOG areas, making that kind of game is not an easy task and I have to learn a lot of things 😉
Now I have to do a formal proposal for my teachers 😀