Sunday, July 23, 2006

Freeciv3? Part I

There was an interesting discussion over on the Freeciv mailing lists on the goals of the project.

Freeciv developer Per started the conversation by stating what he believes is the main obstacle to Freeciv development at the moment, the clash between single player and multiplayer goals:

We can make a very good single player game... Or we can create a game that is fun in multiplayer... Because once we need to take into account the needs of higher amounts of players and a competitive and possibly hostile environment, the needs of single player must suffer...

...we must decide which is more important, single player or multiplayer.

I have no problem saying single player is more important... [since] multiplayer is inherently broken and unfixable without a redesign making multiplayer the priority.

He goes on to give more justification in the email for his beliefs, which I completely agree with. I do not, however, agree with the conclusion that only one of single player or multiplayer aspects can be effectively achieved.

To start with, there are reasons like this that I think are flawed:

The ban on modal dialogs has improved multiplayer significantly, but along with timeout and the undeclared ban on pausing the game to display information, it rules out many ways of displaying information to the player that can be highly beneficial for single player.

To me, that is a broken implementation. Messaging should be abstracted, thereby giving the option of both modal and non-modal implementations (or varieties on both). It should be a preference that is dependent on the context (in this case, whether the game is single player or multiplayer). It is both simple to design and implement if the codebase is sufficiently organised - that is, if the UI is independent of the game logic. Like this pseudo code:

private void some_game_logic = function() {

  Message.UserDialog("some_action", SIMPLE_MESSAGE);


public abstract class Message {

  public abstract Message GetMessage();

  public void UserDialog(string msg, int type) {

    switch (type) {

      case SIMPLE_MESSAGE:

        // set single close button



      // other cases




Then implement a modal version that blocks until the dialog is closed, and a non-modal version that returns instantly and displays the dialog using a different thread.

The more important obstacles to Freeciv as a game are better identified by 'saywhat':

AIUI "good game design" involves boiling down a lot of game
elements until you're left with only the essentials. Elements which
dilute the fun are thrown out; elements which give the player "fun"
(in the form of interesting choices) are kept in.

He basically goes on to state that Freeciv attempts to handle too much by scaling the gameplay. Lost a city? Build a city. Got space? Build more cities. Bigger is better and once you have Democracy, there's nothing but positives to having an expansive empire. Roads and railroads are, once built, cost free, so build them everywhere.

I think the problem with the Civilisation genre of games as a whole is that they do not take how empires rise and fall as they have done in history. All empires that have tried to grow too much have imploded, then often risen again as smaller but more solid cultures. The Romans? Now the Italians. Persia? Now Iran. The British Empire? Now the UK and Commonwealth (which is losing it's relevance). The USSR? Now a flagging smaller Russia.

Freeciv would be better at looking at ways to make growing too big problematic. It needs to turn what is a race-to-grow game into a more tactical use-others-best game. Focus less on building and more on cooperating. Make growth painful. Quite simply, large cities should be nigh impossible to support without certain technologies. Look at how corrupt Rome was, for instance.

There are suggestions in that discussion at limiting growth by making it more difficult to found cities by making settlers more difficult to come by. I don't like this approach as it is introducing a limitation when the team should be looking at ways to address the flaws that make large civilisations too powerful and too easy to manage.

I think they need to start looking at more radical ways to change Freeciv. In fact, I think they should consider distinctively non-Civ changes to the gameplay, giving Freeciv it's own identity as a game. I say they should draft Freeciv3 as a total departure from standard Civilization and leave Freeciv2 as the Civ-like implementation.

I shall introduce my ideas for Freeciv3 in a follow up article. Please post any ideas you have!