La commune
Game done as a school project with 3 other persons. The game was intended to work on Xbox 360 and PC using the XNA Framework. It was supposed to be some kind of small RPG game that could be played up to 4 players on the same computer / Xbox 360 but also on the network up to 32 players. The players on a same computer would be on the same team but even players on different machine could team up. Thus the game was Team VS Team VS Environment.
It was presented at the Microsoft competition in 2007. However they were not able to get the game to run and thus we were disqualified. And since we never were able to get Microsoft to tell us on which configuration they actually tested the game, we never were able to solve the problem. Then due to graduation and mose of the team leaving for different parts of the world the project pretty much stopped and is still in the state it was in 2007.
However Iwas able to learn a great deal of information regarding:
- Network systems (especially how to transmit movement between clients)
- A bit regarding Artificial Intelligence (it ain’t as easy as I thought it would be even with a small number of possible actions)
- Debugging using profilers and such
- Threading
- C#, OOP, Serialization and Deserialization
As for the game, it had the following features:
- Allow 4 players to play on a PC / Xbox 360
- Allow up to 32 players to play through network (PC)
- Avatars could get up to level 50
- 3 classes (1 tank, 1 healer, 1 dps), 2 sub class for each class (tank, berserker, healer, nuker, hunter, rogue)
- 3 talent trees per class unlocking ultimate spells
- Over 60 spells (around 20 per class) that would also grow with player levels. Spells of the following type (HoT, DoT, Heal (instant / channeled / moving), Damage (instant / channeled / moving), Stun, Lock, Cleanse, and ultimates such as reverse time!!!)
- Interceptable spells (a spell in the game is considered as its own entity and can thus collide with other players)
- Boss encounters
- Quests (Quest procedural generator with objectives)
- Trading between avatar
- NPC Ennemies that could take lots of decisions (Flee, Attack, Defend, Call for help, Move around target)
- NPC Friendlies (including spell trainer, merchant, etc…)
- Maps that could grow up to have 2000 rooms
- Item generator (over 65k items generated)
And the list of problems encountered while doing the game (at least for my side of things)
- Project: Never rethink a core system late in the project phase (spell system in this case) thus, better planning and stick to major decisions
- AI: ain’t easy to make an AI not switch decision all the time blocking it
- Network: Problems due to the fact that most ISP in France provides modem that serves as routers. Thus problem opening the necessary ports on PC and on Xbox the network framework was not available at the time.
- Network: Client – Client/Server relationships
- Network: Distributed computing, a client was able to be responsible of a specific zone of the map thus splitting the processor loads on different clients especially when 2 teams are far appart
- Network: Synchronization of representation of the world among the network
- Network: Having only one software but still be able to switch between client / server mode if necessary.
- Map generator: Due to the way the maps were done, we had some troubles including a third dimension in. But it is possible I am sure of it! (just need a slight modification in the generator)
- Spells: having a spell “interface” prouved troublesome for some spells. Typically the reverse time spell… hell to code and still a (little) bugged.
- Debug version that was running better than the optimized version
- Going from a 5 FPS game on the Xbox 360 to 50 FPS before the presentation to the competition
- The difference in the way you can set the affinity of threads on an XBox and not on a PC and the Xbox limitation that only allowed the developper to use 4 cores out of the 6 availables.
- Threading and locks (Had to implement a specific lock in the end that could timeout if necessary so as not to hang the game)
- Representing the map in the memory and also graphically (though I did nothing regarding the graphics)
Some documents regarding the whole project:
- A presentation of the game: Presentation
- The game as is today: Game File
- The list of spells and talent trees: Spells (in french)
- A document regarding an application of the A* algorithm and pathfinding: Pathfinding
- A document regarding the user interface : User Interface