Good computer games should come in three parts. I don’t mean in terms of gameplay, I mean in terms of architecture. Well designed business client-server applications have three main parts, database, business rules and front end client, but many games are driven mainly by the graphical front end, and munge up the other two parts any old way.Â This is a bad thing, and one which computer game designers need to fix. For many years now, designers of business applications have known how important it is to separate three distinct parts of the application. One is the backend database, which holds information about clients or widgets or whatever. This can live in any SQL compliant database.Â The other end is the front end, the client.Â The bit in the middle is harder; the business rules which apply transformations to the data. People argue about where this lives – does it happen in the database, with triggers and transform queries, or in on the client. A lot depends on the specific applicationÂ – the nature of the processing and the speed of the network. However, I have always favoured keeping it completely separate, as a distinct rules engine in the middle. That business rules engine might live on the server beside the database, or on the desktop client beside the graphical user front end, but it needs to be a distinct piece of programming.
This separation is important because it allows you to change one part without touching the others. Very often, it was possible to revamp and improve an application by replacing an old character based front end with a newer windows interface, without having to messÂ with the database or business rules. A s work became more mobile, desktop clients could be replaced or supplemented by smaller clients on mobile devices. Somewhere in the world, I’m willing to bet there are people using clients on smartphones to talk to backend databases that were designed 20 years ago. Equally, if the processing of the business logic was kept separate from the front end, changing the business logic did not always mean major rewrites of the front end or the database.Â Neat, tidy, easy to update individual parts without having to junk the whole thing and start from scratch.
And then there are games, especially flash based games. A great deal of game design is driven by graphics. Games live and die on how well they use the best current graphics cards to the max. Some game series – Command and Conquer, Civ, Simcity and the like, actually survive because they were a good concept, with rules that worked, and they successfully climbed the ladder of increasingly sophisticated graphics. In many games, however, the rules and the database to track game assets are fairly minimal, designed to keep treack of the big explosions.Â This is fine, insofar as it goes, until you want to update the game to a new platform.Â Then you find yourself with the same problem the US military had with some of its early computer based wargames – you couldn’t migrate the data and rules to a new game without recoding the whole thing, because the user interface, the processing logic and the data were all hardcoded together.
Many computer games – PC, Console and mobile – suffer from the same problem. Back in the day, when graphics didn’t really exist, gameplay had to be compelling. Now, the quality of the graphics seems to be the key driver. I can’t see someone managing to sell Elite to a major game company now, unless it had full 3D explody graphics. If the graphics are the key point, then the game needs to be optimized for the latest graphics environment.
But separating graphics, rules and game ‘pieces’ is actually now even more important. If you have a successful game on one platform – XBox, PS3, PC, Mobile, Flashweb – you need to be able to get the game to work on others without rewriting the whole game. If your game is written so that the rules and game assets provide the best visual impact on one platform, you are stuck. My main interest is in edugaming, and for that I want a database that holds information about the things I want to model, rules that model the processes and interactions I’m interested in, and the option of plugging that into as many different graphics front ends as possible so I can make the game available to as many students as possible. I’m happy if someone wants to produce a console version of a game, but I need my students to be able to explore the simulation on whatever platform is convenient for them. I want one game which runs effectively on many platforms, with reasonable graphics. I want it designed for easy reuse and customisation – I want to be able to change rules without having to get a graphics programmer to redo the front end.Â Ideally, for my grad students, I want them to be able to rewrite large sections of the game rules without having to worry about the front end.
As a wargamer and historian, I know there are a limited number number of things I need to keep in the game database. If I have a watermill, I do not need it’s output locked in the database so it can have one and only one output rate, nor do I need that output rate fixed into the graphics. Output, or rate of fire, or tax yield are all processes which I want modelled in the rules, and which I want to change without having to rip the whole simulation apart. There are very few open source game tools out there, and many start at the front end, with the creation of graphics to which you then attach behaviours. There are some open source games or game engines which you can theoretically customise completely, but since they were coded as one big unit, it isn’t easy to edit the rules to the unit database – if there is a unit database.Â Some of these are wargames like Xconq or Wesnoth; some are designed to handle turn based PBEM games which evolved from the old PBM games.Â Many were one or two man operations which died when people lost interest. Some were coded in tools like Visual Basic, which wasn’t really programming at all, and which produced thousands of applications which had no design at all apart from that which was put into laying out fields on the forms. Maybe I’m missing something out there, but it seems to be that edugaming is back at the stage that computational linguistics was in the 1980’s where any project required 1 historian and 4 programmers to make it work, and really needs some easy tools for some sort of universal civ/simcity type engine.
Am I talking complete BS? I don’t know – maybe I am but I have actively looked for what I need, and I can’t find it, so maybe I’m right. Now all I need is some other crazy people, a few coders who will do my will and a funding body I can apply to be build my monster.