See readme in repo.
- Old-fashioned Java program using Java 7
- Uses counter-based for loops in performance critical places because "for (x : y" style loops allocate garbage on the heap.
- Relatively few dependencies, simple compilation
- Gotcha Some of the tool python scripts for deployment have hardcoded paths that expect a specific file system structure, but you shouldn't need to deploy anything.
- Data format is JSON.
- In some places (game saves) a binary version of JSON is used instead, see JSONObject:1658.
- Main method is in Main.java which just sets some stuff up. (The other classes with main methods are mostly for testing things or outputting debug data.)
- The top level methods for the game loop are in Airship.java: input, which processes input and advances game state, and render, which draws the game.
- These methods are not guaranteed to run in alternation, if the game is running slow, calls to render may be skipped.
- The frame rate target is 60 FPS but again there is no guarantee calls to input actually happen at this exact frequency.
- The AirshipGame instance has a Screen. Screens are where the actual work of the game happens, so they also have an input and a render method. For example MainMenu for the main menu, or StrategicScreen for the main conquest map.