XMoonPie

Background
We created this small demostration during the 2nd year of the programming course at the Accademia Italiana Videogiochi. The aim of the last year was to create a playable game. This is the result.

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.

Technical Data
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) Windows Linux (through Wine)
Releases: 1.0
License: GPLv2
(see below for the assets)
The Game
It's pretty simple: you have to reach the exit. Simple. But there is a gate that prevent you to pass.
"You shall not pass!"

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.
The scary altart that fear the cubes

To overcome the problem you must go to the right and avoid the wall of flames to reach the Black Hole power-up.
Flames! Flames everywhere.
The Black Hole power-up platform.

Once you do it, you just have to use it on the altar and pass the gate.
Come, little cubes... come to me.

And freedom, finally!
You can continue to the next level!
Freedom, finally
(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).

Skills
In this struggle for survival the Sphere learned a few skills to use against the nasty cubes. All the skill consume mana (the blue bar twisting the left dragon, on the left) and when you reach 0 mana you cannot cast them anymore.
When a cube dies its energy refill your mana.
All the skills have a cooldown of a few seconds.
Name Cooldown and Cost Description Screenshot
Repulsion ShockwaveAn invisible energy of concussion force 3 secs
10 Mana
The Repulsion skills will push away any enemy cubes away from you. Use it well and the cubes will fall off the platforms. A shockwave skill in action.
Burning Light (Laser)A burning cone of light 5 secs
30 Mana
After a few delay a cone of light will burn everything that it encounter. This skill can kill the cubes (but they will respawn later anyway). The cone of light will illuminate your way... and burn theirs.
Leap of The Tiger (Dash)Dash fast as a tiger 3 secs
3 Mana
The dash skill allow you to quickly move forward and pass any obstacle.
This is not a teleport, your speed is greatly increased for a brief moment.
n/a (play the game or watch the video)
The Black HoleThe deepest black 12 secs
20 Mana
This skill leave a pulsing bomb that create a Black Hole after 6 seconds. The Black Hole vortex will attract anything into his core, though in this version it deals no damage.
This skill can capture the Sphere. The player must obtain it and use it to complete the level.
A Black vortex that attract anything
Development
As I wrote this was a didactic project. The goal was to learn many technologies, handle the software architecture and the common techniques for videogame development.
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.

Sources
The game is available here (Self Extracting archive). It require DirectX 9.0c (from Jun 2010), Microsoft VC++ Redistributable and Nvidia Physx
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:

Asset License
Some of the assets are created by us (mostly by Fabrizio) but some are gathered from Internet. We lost the original source where we downloaded but we used only commercial free assets or material released with Creative Commons.
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

Comment Text

  • Allowed HTML tags: <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.
To prevent automated spam submissions leave this field empty.
CAPTCHA
Answer the question and don't bother me with spam.