How to build a 4x game?

Posted by Marco on Game Development See other posts from Game Development or by Marco
Published on 2011-11-25T12:06:39Z Indexed on 2011/11/25 18:05 UTC
Read the original article Hit count: 321

Filed under:

I'm trying to study how succefully implement a 4x game.

Area of interest:

1) map data: how to store stellars systems (graphs?), how to generate them and so on.. 2) multiplayer: how to organize code in a non graphical server and a client to display it 3) command system: what are patters to catch user and ai decisions and handle them, adding at first "explore" and "colonize" then "combat", "research", "spy" and so on (commands can affect ships, planets, research, etc..) 4) ai system: ai can use commands to expand, upgrade planets and ship

I know is a big questions, so help is appreciated :D

1) Map data

Best choice is have a graph to model a galaxy. A node is a stellar system and every system have a list of planets. Ship cannot travel outside of predefined paths, like in Ascendancy:

http://www.abandonia.com/files/games/221/Ascendancy_2.png

Every connection between two stellar systems have a cost, in turns.

Generate a galaxy is only a matter of: - dimension: number of stellar systems, - variety: randomize number of planets and types (desertic, earth, etc..), - positions of each stellar system on game space - connections: assure that exist a path between every node, so graph is "connected" (not sure if this a matematically correct term)

2) Multiplayer

Game is organized in turns: player 1, player 2, ai1, ai2. Server take care of all data and clients just diplay it and collect data change. Because is a turn game, latency is not a problem :D

3) Command system

I would like to design a hierarchy of commands to take care of this aspect:

abstract Genericcommand (target) ExploreCommand (Ship) extends genericcommand colonizeCommand (Ship) buildcommand(planet, object)

and so on.

In my head all this commands are stored in a queue for every planets, ships or reasearch center or spy, and each turn a command is sent to a server to apply command and change data state

4) ai system

I don't have any idea about this. Is a big topic and what I want is a simple ai. Something like "expand and fight against everyone". I think about a behaviour tree to control ai moves, so I can develop an ai that try to build ships to expand and then colonize planets, upgrade them throught science and combat enemies. Could be done with a finite state machine too ?

any ideas, resources, article are welcome!

© Game Development or respective owner

Related posts about game-design