Yet again, we have the great opportunity to share some information about one of the latest notable games created with Ogre3D. This time the guys over at Hammerware were kind enough to give us some technical insights about the development process of their new game called FamilyFarm.
After their previous project – a rail-shooter named Top Gunner developed for a coin-op machine manufacturer from Asia – the studio decided to also use Ogre3D for their next project. That was then tackled with a small team of only 10 members, but the core team only consisting of three people: one producer/programmer, one pure programmer and a 2D/3D artist. So bottom line: Coding, modeling and texturing was done internally, only artistic work like animations, music, sounds and game design were covered by externals.
The project itself is programmed in plain C++ without the use of any scripting language. They used a data-driven approach where logic is provided by XML data and SQLite databases. As the author of the game mechanics is a board game designer, they received an Excel file full of tables representing the game rules ready to implement. This file is parsed within initialization of the game (easy thanks to MS Excel 2003 file being just simple XML) and another source of data is the content database. Related to that, they highly recommend using SQLite for such data models as you can dump the DB to text file and rebuilt it after commit/update, create views to analyze content during game balancing (item prices, unlocking and other attributes). Also it is fast, easy to use, etc. Scenario definitions, animals and other not so orthogonal objects are however loaded from XML.
In terms of GUI solutions, they were not able to find a perfect fitting match. They had bad experiences with Flash speed using Hikari in one of the previous projects, but needed something smooth and cute. So they decided to implement their own GUI layer to be able creating animated widgets.
As sound library, they relied on irrKlang, but since there is no binary for 64bit Linux (anytime soon), they used OpenAL-based cAudio for this configuration.
Other libraries they used: Boost (serialization, threads), TinyXML, OgreMax, ParticleUniverse, cURL and Google’s Breakpad (crash dumps). The application is autoupdated on Windows with wyUpdate.
The game runs on all major PC platforms (Windows, Linux, Mac), although they had some hard times regarding X server related issues under Linux.
Tools that were involved in the cretion process include: Olifant (localizations editor), CMake, Subversion, Trac, automatic building by Bitten module, unSigned’s GraphicalInstaller and lots of own Python scripts.
The game can be bought either directly through their website or via a variety of merchants, all listed on the same page. So head over there and check out the demo and if you like it, support this indie studio by buying the whole game.
That’s it for this time. For more questions, please post in the corresponding forum thread.
We leave you with this short quote from the developers at Hammerware:
And respect to community! Almost no bugs in Ogre were sent to our server. It could not be said about Intel developers and GMA drivers…