- Refactor
- rename ogmi namespace to ogm::interpreter or something
- move
interpreter
tointerpreter/
- 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
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?
.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!