Skip to content

Instantly share code, notes, and snippets.

@Zarkonnen
Last active February 25, 2026 14:12
Show Gist options
  • Select an option

  • Save Zarkonnen/7b898aeb857de4ae58a9d0c13f623374 to your computer and use it in GitHub Desktop.

Select an option

Save Zarkonnen/7b898aeb857de4ae58a9d0c13f623374 to your computer and use it in GitHub Desktop.
Airships Conquer The Skies Dev Notes

Installation

See readme in repo.

Overall Structure

  • 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.

Major game entities: Airships, Modules, etc.

UniScreen

Rendering System, Fonts, and Shaders

GUI System

Networking and Data Integrity

Data Loading and Modding

Expansions

Skeletons in the Closet

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment