Game Development Community

dev|Pro Game Development Curriculum

Postmortem for Snellman - the Game

by LudoCraft · 02/27/2007 (7:00 am) · 11 comments

ludocraft.oulu.fi/snellman/images/snellmanpeli_01_ggsnapshot.jpg
Here's a postmortem for Snellman - the Game which was developed in 2006 by LudoCraft in cooperation with the City of Oulu (City Government and Educational Department) and the J.V. Snellman 200 Years Celebration Committee. The game is a serious educational game and uses a modified version of Torque Game Engine 1.5. Snellman game is a learning environment containing many interesting historical details. Learning occurs throughout the game while the player is investigating, doing different tasks and solving problems. After playing the game the player has a clear picture of J.V. Snellman and his career. This PC-based game is available for free and is aimed for the Finnish school children between the ages of 7 and 15.

In case you are wondering just who is this J.V. Snellman?
en.wikipedia.org/wiki/Johan_Vilhelm_Snellman

The game's official site:
ludocraft.oulu.fi/snellman/

Direct download link (Windows only):
ludocraft.oulu.fi/snellman/download/SnellmanPeli_Asennus.exe

All the texts in the installer and the game are in Finnish, so here's a short Finnish lesson for you in case you need one:
In the installer "Hyvaksy"="Accept" and "Asenna"="Install"
In the game's main menu click the "Aloita peli"="Start game"


Background
LudoCraft has 7 years of experience working with Unreal technology, mainly developing mods for research purposes and some might have heard of our mod named AirBuccaneers which did quite well in the Make Something Unreal -contest a couple of years ago. This year we made it into the IGF 2007 mod competition finals by winning the Best Other Mod category with our mod Spawns of Deflebub. We are also going to the GDC and hanging around in the IGF Pavilion from Wednesday March 7th to Friday, March 9th so stop by and say hello if you are going there, too.

The development time for Snellman was 5 months. We started developing with TGE 1.4, then added Synapse Lighting Kit to it and moved everything to TGE 1.5 when that was released. There weren't any bigger problems with the transitions from one version to the other.

We realised during the pre-production that the engine needs a couple of new features so that we can actually implement our designs into the game. In the end the game uses a modified TGE 1.5 and the following list describes the most important changes we added to the engine:
- DDS texture support. This is one of the most important features our engine programmer added. The game supports DXT1, DXT3 and DXT5 DDS textures, making it possible to use large textures with high quality and good compression. The biggest textures that are used are sized 2048x2048.

- Easy-to-use skins for dts models. In stock TGE it isn't easy to change the skins for dts models. This is something we normally use very much in our maps so this feature was added. Now our level designers can assign any textures they want to the tsstatics in the map using the level editor.

- Rendering filters. There are a couple of cool effects which give the game a nice touch, especially changing from black&white to colored rendering on the fly. There's also a very subtle bloom filter used, making the image more lively.

- Other added features include for example experimental 4-view level editor, cull distance for objects and improvements to the particle system. Also some work was done to improve the rendering speed, for example you get a noticeable framerate boost by disabling the terrain occlusion check for a flat terrain which doesn't occlude anything anyways.


What went right
* Subversion + TortoiseSVN = Solid version control
The development time was about 5 months and we only a couple of small problems with version control, like somebody deleting files manually or moving them without using the svn. This was the first project we used Subversion as our version control tool and we will be definitely using it again in our next project.

* Having source code is nice
Having the source code for the engine meant that if something is missing, you can just implement it to the game. This will take time depending on the experience of the programmers and the feature itself. But you have the option to

* Cool TGE features
Localization was a must feature for us and it worked well without any problems. The game is now just in Finnish but we used the localization system so it's pretty easy to localize the game in other languages as well if there appears a need for it. Other positive thing we noticed was that the game run well with low spec machines like Pentium 1.4 Ghz with 512 Mb Ram and Geforce 4 MX. Also the HFL files proved to be a pleasant surprise, especially when considering how much text content we ended up adding to the game.

* Iterative development process
The iterative development process we use in all our projects worked great. We were able to test the game with the end users (school kids) many times during the development time and refine the game based on the findings from those test sessions.

* "I guess you are using the Unreal engine in this game as well?"
This was a real comment from one of our outside testers after playing the game a bit. As you can probably guess, we were smiling happily for quite a while after his comment. So in the end TGE holds its ground and it's up to the artists to make the game look good.


What went wrong
* Documentation could be better + TGE newbies = time lost searching for info
Since we were new to TGE and there were deadlines to meet, we relied a lot on documentation to find out how things worked instead of more time consuming ways like testing or going through the code. In the end we can say that there is documentation for TGE but some of it is old or missing important information. When compared to the Unreal engine documentation at UDN, you can see the difference. The hardest thing was to add characters with LODs and animations to the game, but finally a third party document was found after a couple of weeks which had the necessary instructions.

* The age of the engine shows in some places...
- If you are doing a basic FPS shooter with weapons and inventory items, then you are set. But if you are planning to do anything else, you have to make almost all of the functionality yourself. There is a base object to start with, but comparing that to the Actor base class in Unreal, you start to notice just how much basic functionality you have to implement just to have for example different kinds of physics available for the same object (falling / flying).
- Rendering is a bit slow. Our main town map is pushing the limit by having over 400 static meshes in single map on the same outside area. And because the map is based on historical information, it isn't possible to make changes to it by removing buildings for example.
- Torquescript's datablocks vs. objects and string-based system used for everything (vectors & rotations) was something that took a bit of time to get used to. Also it was a bit surprising that you need to write multiplayer code, replicate variables, in order to make things work even for a true singleplayer game.


Conclusion
In the end we're happy with the way Snellman game turned out. We're also happy that we chose TGE 1.5 as the game engine for this project. The development time was short especially for a 3D game but the team did a professional job, of which one sign is that there wasn't a need to do crunch time in the end. As a nice closure, the game was handed to Paavo Lipponen (the Speaker of the Finnish Parliament) in December 2006 in the final meeting of the Snellman 200 years celebration committee. Just like we planned it.


Snellman - the Game
ludocraft.oulu.fi/snellman/

Number of full-time developers: 5
Number of other developers: 5
Length of Development: 5 months
Platform: PC

The game by numbers:
- 274 dds files, 192 png files, 160 jpg files
- 155 dts files, 9 dif files
- 200 cs files
- 95 hfl files
- 343,316 lines of c++ code in the engine (comments included)

ludocraft.oulu.fi/snellman/images/snellmanpeli_screen01t.jpgHigh-res version

ludocraft.oulu.fi/snellman/images/snellmanpeli_screen04t.jpgHigh-res version

ludocraft.oulu.fi/snellman/images/snellman_editort.jpgHigh-res version
The 4-view editor is highly experimental and had some glitches so level designers preferred to use the normal TGE editor view during the development.

- LudoCraft team
ludocraft.oulu.fi

About the author

Recent Blogs


#1
02/27/2007 (7:02 am)
Nice writeup! Thanks.
#2
02/27/2007 (7:09 am)
That's a really good writeup! Thanks for taking the time to do that.
#3
02/27/2007 (8:48 am)
Very cool!
#4
02/27/2007 (9:56 am)
Very cool stuff! Great write-up!
#5
02/27/2007 (11:57 am)
Awesome stuff! I would be interested in hearing more on the areas that you found the documentation lacking or problematic so that we can continue to work to improve them. Feel free to email me. Thanks!
#6
02/27/2007 (1:19 pm)
I'm interested to know how you mapped the very specific ground textured down in pic 2 please.
#7
02/27/2007 (2:25 pm)
Excellent work.
#8
02/27/2007 (3:49 pm)
Awesome stuff, some of your engine changes sound great. The 4 window editor looks fantastic, and i especially love the dds support.

Congrats on the release.
#9
02/28/2007 (3:03 am)
@Andy: The ground in front of the red house is made with a simple .dif block and a large texture on it (2048x2048). The roads are separate .dif blocks with big textures as well. The terrain shows at some places but it's use is very minimal.
#10
02/28/2007 (4:40 am)
Congrats on finishing this. I really like the atmosphere. If you have time, I would be interested in finding out which third party document you found regarding character LODs and animations. Thanks!

Nick
#11
02/28/2007 (1:09 pm)
Thanks, very interesting write up and cool stuff about the Unreal engine. ;)