Finalize the engine core

Implementation plan: libFramework.la API

Runtime Requirements

  • Need a way to represent the game's objects and their state in a portable way.
    • Need to be able to define assets as simple aggregations of data
    • Need to be able to save the game state and save to disk, and reload it.
  • Need a representation of the game's "World" in terms of pixels, and maybe tiles
  • Need a method of representing the player's 'camera', and only rendering updates of things within that bounds.
  • Objects will need to be able to detect collision with each other, at least at the bounding box level.
    • More accurate collision detection can be added when important objects are definitely overlapping.

Technical Requirements

  • Object components need to be serializable.
  • "Entities" (like the player, enemies, scenery) are made up of components, which are serializable.
    • Entity objects need to be: dynamically created, serializable from templates, and should be able to restore their state after being deserialized)
  • Components and Collision Detectors need to be able to look up each other's positions and speeds, quickly.

Take-Away

There might need to be two different APIs:

  1. A slow, serializaing API
  2. A very fast repository of object references so that objects can read each others' values at runtime.
2023-11-23
96% Completed