XMoonPie
In this program we put every skills and subject we learned: from software architecture to shaders, from rendering to physics and so on. The goal of the project was not to create a engine from scratch because an entire year would not suffice, instead we used many existing tools. Learn how to integrate different tools and libraries is a important lesson, make them work is a valuable goal.
Creating a game is damn hard, most of all because it's practically impossible have a real original idea. No matter what you are going to copy some ideas from somewhere.
The game design process stumbled in a few problems: we have no asset nor asset creation skills. The course is divided into two classes: programming and 3d art. But the 3D art class was busy with their project so we had to work on our own. For this reason we used primitives as NPC. The level was made by Fabrizio which learned a bit of 3D Studio and created the platforms, columns and so on.
Since we used primitives, at the beginning the game was called "Spheres vs Cubes" and the original idea had a dramatic story of a Cube who fallen in love of a Sphere but their respective families are in war from generations and wont allow them to marry. So they start a journey for the fight for love. Some devilish plot twist and they end to suicide themselves for their love... original, isn't it?
Not at all.
Anyway the game-play was more like an arena game, something inspired from Spectraball. We also though of creating different NPCs: the poisonous hexagons, the heavy octagons and many more. We also had a working model of a illusionist Tesseract which was meant to be the last boss.
For a whole year this program was used to experiment various techniques: every time we had an idea we materialized it in the game. For this reasons it changes too many times and we lost a lot of time working on it.
In the last 4 weeks we decided to attend the Eurogamer Exposition to show the demo at the Games Career Fair in London on September 2011. Time was not enough so a lot of material has been cut off, unfortunately, and the game, basically, has been created in those 4 weeks.
Name: | XMoonPie |
Developers: | Marco Agricola, Fabrizio Marocchino, Enrico Moretti, Ruggero Riccobene |
Languages/Technologies used: | C++, Ogre3D, Nvidia Physx, CEGUI, OIS, IrrKlang, Boost, Bazaar, Doxygen, Visual Studio, Eclipse, MinGW |
Platform(s) | ![]() ![]() |
Releases: | 1.0 |
License: | GPLv2 (see below for the assets) |

To pass the gate you must activate the altar. When you or one of some of the cubes pass through it the altar activate and the gate shut off. But the cubes are smart (a bit square-head) and they avoid the platform.
To overcome the problem you must go to the right and avoid the wall of flames to reach the Black Hole power-up.
Once you do it, you just have to use it on the altar and pass the gate.
And freedom, finally!
You can continue to the next level!
(There isn't any next level, but don't tell the Sphere...)
During the game the cubes try to hit you and you lose life points (the green bar twisting the right dragon, on the left). Since this is a demonstration you cannot die when you reach 0 life points but you can die if you fall down the level, when this happen the level is reset: you lose the Black Hole ability if you got it, your life points and mana points are restored and you respawn at the center of the level.
When a cube is hit by your Laser skill or fall down the level it die, giving you part of his energy as Mana and it is enqueued for respawn (all the respawn have a delay of a few seconds).
When a cube dies its energy refill your mana.
All the skills have a cooldown of a few seconds.
The development cycle took about a year. We had no leader and we get all the decision all together but, forgive the lack of modesty, I take care of most of the nasty things.
This project has been wrote by four people so the first thing was to set up a proper Versioining Control System. Since I was the only with a minimum experience in this area I chose and setup a server with Bazaar. I like Bazaar.
My colleagues cried like babies for it's complexity but in the end they realized how powerful Bazaar is. The project had many evolutions, as I wrote in the Background section above, and I tried to keep the code tidy and clean as much as possible.
The other problem was Visual Studio. I didn't follow it's evolution but while for C# Visual Studio is the only real option, for C++ language this program is just a toy. I setup the project to work with both Eclipse (from Ganymede) and Visual Studio. Eclipse is years ahead of Visual Studio, there is no competition.
But Eclipse cannot work with Visual Studio's debugger and compiler (I've seen some attempt to work with the compiler but I had not time to follow this road) because Microsoft compiler have it's own ways to handle things. For this reason the project is setup to work with MinGW. I was able to compile PhysX and Ogre3D with MinGW I had problems with some standard libraries due to some strange interaction between Ogre3D and MinGW.
In the end I used both Eclipse and Visual Studio: Eclipse for coding and Visual Studio just as compiler and debugger. Some people may think it's too much work but it's my opinion coding and design with Eclipse is too fast compared with Visual Studio.
My friends used only Visual Studio as far as I know.
I used the wonderful Doxygen to generate a proper documentation of the code comments and I forced my friends to proper comment the code, in the end we had a code quite clean.
We used many other tools, some specific for a library. Our great problem were the shaders: learning shader is not simple, use them is a nightmare and Ogre complicate everything with it's own system for the shaders. Now I can see it's a good practice, it's not too far from what Unity3D does for it's shader system.
Another problem was the GUI: CEGUI is a wonderful library, one of the best I've used so far but it lacks any working tools. I had to use two editors, one of which was in development and anyway I had to manually edit and check the resulting XML.
We were busy enough.
The sources are available in the full package comprehensive of all the libraries needed here (7zip archive).
A move with some gamplay is available on Youtube here:
If you are owner of some asset and we were wrong about the license please contact me, I will remove them from the website.
Add new comment