YYC Boost

Inject custom C++ code into GameMaker Studio 2 YYC builds!
License

WARNING: This tool is currently in an early stage of development and it is not guaranteed to work in all projects/cases! Use at your own risk! Currently only the Windows YYC target is supported!

Table of Contents

Features

Multithreading

Run functions in a separate thread!

yyc_run_in_thread(function () {
    while (true)
    {
        show_debug_message("This does not block the main thread!");
    }
});

Task system

Utilize multithreading for parallel tasks! Includes fallback for VM.

var _sleepTask = function (_arg) {
    var _ms = _arg[0];
    var _message = _arg[1];
    var _t = current_time;
    while (current_time - _t < _ms) {}
    show_debug_message(_message);
};

// Create standalone tasks:
new YYC_Task(_sleepTask, [1000, "Standalone task done!"]).Run();

// Or groups of tasks:
new YYC_GroupTask([
    new YYC_Task(_sleepTask, [1000, "Task 1 done!"]),
    new YYC_Task(_sleepTask, [2000, "Task 2 done!"]),
    new YYC_Task(_sleepTask, [3000, "Task 3 done!"]),
], _sleepTask, [1000, "Group 1 done!"]).Run();

C++ types of local variables

Define C++ type of a var to save memory and increase performance!

#macro COUNT 10000
var _t;

_t = get_timer();
for (var i = 0; i < COUNT; ++i) {}
show_debug_message(get_timer() - _t);

// This loop runs faster compared to when a regular var is used
_t = get_timer();
for (var j/*:int*/= 0; j < COUNT; ++j) {}
show_debug_message(get_timer() - _t);

C++ code injection

Replace function with a custom C++ code!

/// @desc Returns 1 when YYC Boost is used, otherwise 0.
function is_cpp()
{
    /*cpp
    _result = 1;
    return _result;
    */
    return 0;
}

Documentation

Online documentation for the latest release of YYC Boost is available here.

Building from source code

Requires Python 3!

git clone https://github.com/kraifpatrik/YYCBoost
cd .\YYCBoost\YYCBoost_CLI\
python.exe -m venv env
.\env\Scripts\activate
pip.exe install -r requirements.txt
python.exe setup.py

This will create a directory YYCBoost\YYCBoost_CLI\dist with yycboost.exe.

Support the project

If you like YYC Boost and you would like to support its further development, you can donate to paypal.me/kraifpatrik or purchase the asset from the Marketplace.

Links

GitHub - kraifpatrik/YYCBoost at pythonawesome.com
Inject custom C++ code into GameMaker Studio 2 YYC builds - GitHub - kraifpatrik/YYCBoost at pythonawesome.com