Skip to content
Mahbod Ghadiri Sani edited this page Apr 24, 2024 · 10 revisions

General Idea

The project is currently made up of two main modules. The aa.android module and the aa.engine module.

The reason behind this approach is that we aim to develop a multi-platform game that can run on all main stream operating systems (eg. windows, ios, android, macOS etc.)

aa.engine is supposed to be platform independent and contain all the required logic and event handling that the game requires to function. All platform dependent code and UI features are deferred to their own specific module. Every other module correspond the an operating system and are named as aa.<<platform-name>>.

aa.engine

Engine is the heart of this project. It should remain platform independent and be simple yet powerful so that it satisfies the need of all platforms without increasing complexity of the project.

This module itself is made up of several sub-modules and classes that will be explored further.

aa.engine.Engine

This is the main class of this module. Each instance of game should initialize this class. Each instance requires an aa.elements.MainCircle to be constructed. Each instance of Engine creates its own dedicated aa.helpers.ExecutionContext, aa.job.JobManager, aa.levels.LevelManger and also a java.util.Timer

Engine is made up of three main functions.

  1. play(): creates scheduled timer that runs jobs at fixed time intervals.
  2. stop(): stops the timer and clears the level.
  3. getContext(): returns current context of the engine.

aa.engine.config.Config

Static object that stores shared state of the entire game, with their corresponding setters and getters.

aa.android

Clone this wiki locally