ENIGMA:Todo

From ENIGMA

Jump to: navigation, search

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

  1. Parenting events


Key Systems

ENIGMA is still missing a few other key systems and other function sets offered by Game Maker

  1. Pixel perfect collisions
  2. Parenting (child instances inheriting events)
  3. Particles


GM Compatibility

This is a list of things needed for GM compatibility

  1. Redeclared variables in var statements (e.g var a, b, r, g, b, c, p, xx, yy;) The b var is declared twice.
  2. globalvar
  3. exit statement
  4. argument[i]
  5. negatives treated as false in statements
  6. Game settings (constants, escape exits the game etc.)
  7. Parenting events
  8. Game start event
  9. Functions and Variables (as well as functions a lot of common variables are also not implemented)
  10. Compatibility resolver in LGM for rest of the incompatibilities
  11. Load files default from game directory
  12. Resolving ENIGMA's bugs


Odds and Ends

This is a list of bits and pieces that need to be done or aren't working

  1. d3d shapes need normals adding to them
  2. need to decide and method for d3d_model_save
  3. get enigma.exe to download windows patch and maintained mingw package
  4. 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

  1. Implement an attribute in compiler.ey files for defining additional binaries (for resource linker at very least)
  2. Implement tiles using GL lists
  3. Implement DirectSound and DirectX, somehow (This is hard because MinGW doesn't get along with Microsoft's exceptionally propriety headers)
  4. Complete the Extension system
  5. Improve the instance system; add a second set of double links to iterators to allow for smooth updating of destroyed instances
  6. Redo the expression resolver, as seen below
  7. Implement the DEBUG_MODE variable
  8. Improve the event system
  9. Fix ENIGMA's data structures
  10. Implement instance deactivation system
  11. Implement the particle system
  12. Implement vbo system


Parsers/Managers

ENIGMA's compilation sequence is also in need of a few amendments

  1. The extension system needs spread to each system
  2. 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.
  3. The extension system should provide a way of "hooking" the load system to add support for more resource formats.
  4. The C++ parser needs major rewriting to keep track of template parameters and function param types.
  5. 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

  1. Additional statements: when, step and draw -polygone suggestion
  2. Member functions
  3. Pause system

Major System Suggestions

This is a list of external pages which have suggestions for major systems in ENIGMA

  1. ENIGMA:Suggestions (for general ENIGMA suggestions)
  2. Function:Suggestions
  3. Script:Suggestions
  4. Event:Suggestions
Personal tools