Skip to content

Latest commit

 

History

History
111 lines (105 loc) · 3.59 KB

TODO.md

File metadata and controls

111 lines (105 loc) · 3.59 KB

Tasks

  • Refactor
    • rename ogmi namespace to ogm::interpreter or something
    • move interpreter to interpreter/
  • Parsing -> AST
  • AST -> bytecode
  • Optimizing bytecode compiler of any sort.
  • Execute bytecode
  • Short-circuit evaluations
  • global variables
    • bytecode compilation
    • execution
    • globalvar
  • Finish collision detection
    • Fix the current bugs
    • Diamond and ellipse collision
    • pixel-perfect collision detection
    • use spatial indexing
    • place_meeting, position_meeting
    • place_free, position_free
  • Drawing
    • origin offsets
    • model transform
    • transparency
    • sprite_draw_general
    • sprite_draw_ext, sprite_draw_part, etc.
    • set sprite_index from object definition
    • modular arithmetic image_index
    • image_angle, width, height, etc.
  • Rooms
    • default instance number (non-reallocable)
    • creation code compilation
    • persistent instances
    • first room
    • background colours
    • tiles
    • backgrounds
  • Tiles
  • built-in instance variables
    • direction
    • gravity
    • image_*
    • friction
    • xstart, ystart
    • xprevious
  • built-in global variables
    • view_*
  • Constants
  • Spelling differences support: colour/color, grey/gray, randomise/randomize
  • Secondary features
    • alarms
    • surfaces
    • fonts
    • async
  • Remaining library functions (src/interpreter/library/fn_todo.h)
    • random_*
    • buffer_*
    • date_*
    • draw_*
    • file_*
    • gamepad_*
    • http_*
    • keyboard_*
    • asset (room_*, sprite_*, etc.)
    • social (achievement_*, facebook_*, xboxlive_*)
  • SparseContiguousMap
    • Switch back to an actual sparse contiguous map, and fix the unit tests for this Data Structures
    • stack
    • queue
    • list
    • map
    • priority queue
    • grid
    • reading/writing/JSON
    • secure reading/writing
  • More error reporting and error cases
  • Debugger
    • breakpoints
    • profiling
    • stack trace on error
  • Speed optimization
    • profile interpreting
  • D&D programming support
  • netsim
  • Audio
  • Particles
  • Physics

Behaviour

These need to be checked to see what the intended behaviour is.

  • after destroying an instance, can it be collided with? place_meeting(x, y, destroyed_instance)? instance_position() at the location of the dead instance?

Iterative builds

  • .manifest.ogmc containing the following:
    • list of all local, global, globalvar variables in order (the namespaces)
    • (*) the list of files which contain globalvar, enum, or macro definitions (needed to check for a change, and also for ease of rebuilding)
  • full rebuild occurs if any identifier (variable, function name, constant) node could be reinterpreted:
    • any changes to enums or macros
    • any changes to globalvars, asset indices, bytecode indices, or room instances (i.e. if any room file changed.)
    • these can be detected by checking (a) if any of the files (*) have been updated, or if while preprocessing any of the new/changed files a global accumulation occurs (macro/enum/globalvar).
  • minor rebuild:
    • expands namespaces from the ones in the manifest
    • updates manifest
    • may assign different variable->id mappings than a clean rebuild, but who cares?
    • what needs to be rebuilt?
      • all files which are modified since last time!