ENIGMA:Todo
From ENIGMA
This is a list of all the current things needed in ENIGMA. Developers can use this as a guide for things they could consider doing. General users can use this to know what things aren't functional yet in ENIGMA.
Contents |
Unimplemented Functions
Many Game Maker functions still need implementing; a list of them can be found at Unimplemented GM Functions. Currently function submissions should be made either on the ENIGMA forum in the Peer Review Board or more preferably if you know how make a fork on TGMG's github, you can follow the guide found at Peer review.
Game Maker Examples
This is a list of things needed for all Game Maker examples to work
- Parenting events
Key Systems
ENIGMA is still missing a few other key systems and other function sets offered by Game Maker
- Pixel perfect collisions
- Parenting (child instances inheriting events)
- Particles
GM Compatibility
This is a list of things needed for GM compatibility
- Redeclared variables in var statements (e.g var a, b, r, g, b, c, p, xx, yy;) The b var is declared twice.
- globalvar
- exit statement
- argument[i]
- negatives treated as false in statements
- Game settings (constants, escape exits the game etc.)
- Parenting events
- Game start event
- Functions and Variables (as well as functions a lot of common variables are also not implemented)
- Compatibility resolver in LGM for rest of the incompatibilities
- Load files default from game directory
- Resolving ENIGMA's bugs
Odds and Ends
This is a list of bits and pieces that need to be done or aren't working
- d3d shapes need normals adding to them
- need to decide and method for d3d_model_save
- get enigma.exe to download windows patch and maintained mingw package
- windows widgets need fixing
Little Things
These are a list of little things that need done. They have been categorised by difficulty, so those at different experience levels with C++ or ENIGMA can see what they may be capable of helping with.
Working Brain
If your brain functions, you're probably qualified to do these.
- Branch the draw_SHAPE functions into sets of outline_SHAPE and fill_SHAPE functions to eliminate* `bool outline` (concerning SHELL/Graphics_Systems/OpenGL/GSstdraw.h). Alternative: draw_SHAPE_outline/draw_SHAPE_fill. (* Not really eliminate, just replace the need for. The outline argument would become optional)
- Change the tabs in the Makefiles to spaces that actually line up properly. The beginnings of lines require tabs, but the commands themselves should use spaces to align actual characters - otherwise, it looks weird depending on the terminal that you're using.
Some Understanding of C++
If you can poke your way around a typical C++ project, you can probably do these.
- Lay out a super class for ds_ structures. It should implement only essentials (which may be none) to store and iterate through all created data structures. The ds_ functions should blindly cast from ds_parent to its children (ie, ds_list) except in debug mode. (#ifdef DEBUG_MODE)
- Go over the other resource-access-related functions adding anti-segfault checks in #ifdef DEBUG_MODE directives.
Reasonable familiarity with compiler's process
If you have a general feel for what happens when you press compile, you might be able to do these.
- Allow forcing 32-bit or 64-bit building of the game. There may be issues with Rebuilding that need to be corrected in order for all object files to be built in the correct architecture.
Understanding of compile process and LGM-ENIGMA communications
If you're Josh or Ism, or think you can fill their shoes for five fucking minutes, maybe you can do one of these. Maybe.
- <empty>
Shit Josh has to do because no one else seems to be volunteering
- Implement an attribute in compiler.ey files for defining additional binaries (for resource linker at very least)
- Implement tiles using GL lists
- Implement DirectSound and DirectX, somehow (This is hard because MinGW doesn't get along with Microsoft's exceptionally propriety headers)
- Complete the Extension system
- Improve the instance system; add a second set of double links to iterators to allow for smooth updating of destroyed instances
- Redo the expression resolver, as seen below
- Implement the DEBUG_MODE variable
- Improve the event system
- Fix ENIGMA's data structures
- Implement instance deactivation system
- Implement the particle system
- Implement vbo system
Parsers/Managers
ENIGMA's compilation sequence is also in need of a few amendments
- The extension system needs spread to each system
- The extension system needs minor recoding to use correct vtable information on locals--no one has noticed yet, but it won't work when paths hit.
- The extension system should provide a way of "hooking" the load system to add support for more resource formats.
- The C++ parser needs major rewriting to keep track of template parameters and function param types.
- The type coercer needs to stem from the recoded C++ parser.
Proposed Systems
This is a list of all the systems that have been proposed to use in ENIGMA
- Additional statements: when, step and draw -polygone suggestion
- Member functions
- Pause system
Major System Suggestions
This is a list of external pages which have suggestions for major systems in ENIGMA
- ENIGMA:Suggestions (for general ENIGMA suggestions)
- Function:Suggestions
- Script:Suggestions
- Event:Suggestions