Home Page, Index (EN) - Archie-osu/ProjectDELTA GitHub Wiki

Project DELTA v3 Wiki

Welcome to the Project DELTA wiki! Feel free to edit and contribute!

A special thank you for everyone that helped during development, mainly the folks from Underminers and elite_pleb.

This wiki shall be updated with every major release (if I get around to it, or someone makes a PR).

Keep in mind this is very WIP, so the majority of articles are unfinished.

Index


C++ Documentation

File structure

We begin in the "PD" folder, as the dependencies aren't really that hard to grasp, and you probably won't even touch them.

  • Hooks - Every function that Project DELTA taps into is here, so you can view the game's inner workings

    • DoCallScript - This function is used by the game when a script is called - scripts are usually prefixed with gml_Script in tools like UndertaleModTool.
    • EndScene - This function is not used by the game directly, instead it's used for rendering in older titles like Undertale (or other games utilizing DirectX 9).
    • ExecuteIt - This function is used by the game when it wants to call events on an object (usually stuff like drawing, advancing timers, etc.).
    • Present - This function is not used by the game directly, instead it's used for rendering in newer titles like Deltarune (or other games utilizing DirectX 11).
    • Window Procedure - This function is used by Windows, and handles window messages (resizing, keystrokes, mouse clicks).
      • Project DELTA uses this for cancelling input while the menu is open (and the option is enabled under settings, of course).
      • The game (doesn't matter which one) uses this for registering key presses and mouse clicks inside the game window.
  • SDK - Every module that Project DELTA employs to aid with modding GameMaker games is located here.

    • Callback Manager - Want to call your function on a specific game event (for example rendering a frame)? Using this is your best bet.
    • Hook System - Used to intercept game functions and run your own code whenever those functions are called by the game.
    • Invoker - Used to call game functions to gather information about the game's state.
    • Lua Engine - Several modules strapped together, allowing for extensible modding of games using the Lua API.
      • Engine Base - Handles execution of scripts, also gives you the error message when you mess something up :grinning:
      • Lua Callback Manager - Pretty much the same thing as the C++ callback manager, but more limited.
        • Used in the add_callback and remove_callback functions respectively.
      • Lua Script Hook System - An extension of the Lua Callback Manager, allowing for running code before scripts.
    • Memory Manager - Everything regarding memory is here, for example pattern scanning, or if a pointer is valid.
    • Structs - Everything exclusive to GameMaker resides here, including all data structures.
  • UI - Everything related to the front-end of Project DELTA (the stuff you can actually see) is here.

Creating custom UI presets

TODO

Lua API Documentation

Lua Functions