Overview

This document introduces the major themes of the project from a developers point of view. This is aimed at those who may wish to build and modify the code or those wishing to gain insight into the construction of a larger piece of code. But as usual to really grok the code you need to compile and successfully change it so… feel free.

Aims

  • To complete a full featured game in a reasonable timeframe.

It will make use of existing libraries and toolsets as much as possible rather than writing from scratch. Game assets will be autogenerated rather than hand-crafted where possible to speed up development.

  • The project is a learning exercise.

It will allow others to build and extend the code base with as little difficulty as possible. So there is a focus on architecture, patterns, documentation and trying to explain design decisions. It would be assumed anyone following this path would be a competent developer in Java.

For myself it is an exercise to gain some experience in tools such as Maven and JMonkeyEngine to apply and test some thoughts about software design. it should also provide a framework for trying some ideas around using AI/expert systems in gameplay.

  • A strategic game for those who may not have played such games.

With this focus on the mechanics of building a game, the gameplay itself is deliberately not terribly innovative so as to reduce risk and complexity. The focus on making the game intuitive and giving the feel of a grand strategic game without the long hours or steep learning curve.

Obtaining

The code can be downloaded from the bitbucket repository

This is a git repository which can be cloned (duplicated) onto your own machine.

Architecture

Diagrams are drawn with Dia Diagram Editor, its free and simple enough for the task. Diagrams are in the src/site/dia folder and used extensively in the technical design document

Game design

Technical design document

Contains how the game design document is actually implemented.

Some terminology

Code comments may use some common (for developers?) shorthands and some sci-fi shorthands:

  • NOP :No-operation, a do-nothing function. Sometimes used as a placeholder for future work.
  • TODO :er… a marker which can be listed by the IDE. Sometimes you just need to get things working and come back to do a ‘better’ or more refined bit of code later.
  • @Inject :A java annotation to mark a item as requiring a dependency injection pattern.
  • FTL :faster than light, referring to a speed of travel.
  • JME :JMonkeyEngine is the code framework used to provide generic game facilities
  • entities :discrete ‘things’ stored in the entity repository, each one has a unique EntityId and components which encapsulate data.
  • POJO : plain old Java object. Nothing fancy, simple with few dependencies.
  • FSM : Finite state machine