CodeRedModding / CodeRed-Generator

A modern C++20 internal SDK generator for Unreal Engine 3 games.
MIT License
47 stars 20 forks source link

CodeRed Generator 3 (v1.1.5)

This is a C++20 Unreal Engine 3 SDK generator that was originally based off the source of TheFeckless's UE3 SDK Generator. It has since grown into its own project which utilizes C++20, strings, filesystem paths, and modern file streams; along with converting legacy UE3 features to more modern and user friendly ones while still being compatible with UE3.

Features

Requirements

Getting Started

Included in this project is a template folder located in Engine/Template, to get started copy and paste this folder and rename it to the game you would like to use. To generate from your newly created engine folder don't forget to change the includes in the Engine.hpp file.

In the Configuration.hpp file there are two defines, one is NO_LOGGING which disables writing to a log file, and another define called UTF16. If your game is using wide characters you will need to uncomment this define out, if not UTF8 will be used by default.

Any further configuration MUST BE DONE IN THE Configuration.cpp ONLY! This file contains everything from class alignment, process event settings, global patterns and offsets, your games name and version, and most importantly the directory used for SDK generation.

Generation

Once you have your custom engine folder setup, all that's left is to fill out your class and struct fields for your game. This generator uses a unique REGISTER_MEMBER macro to define class/struct members. This is very important for your final generated SDK as it's used to calculate offsets and unknown data all automatically, without needing to modify your PiecesOfCode.cpp unlike in Feckless's generator.

Any class/struct member outside of whats in the EMemberTypes does NOT need to be registered with the REGISTER_MEMBER macro, so feel free to place padding or buffers in between.

Once all your classes are filled out and you've made the necessary changes in Configuration.cpp, double check you didn't forget to set an out path in Configuration.cpp and have the right files included in Engine.hpp. After that just compile as a DLL and manually inject into your game, generation will start automatically and will prompt you when it is completed.

Changelog

v1.1.5

v1.1.4

v1.1.3

v1.1.2

v1.1.1

v1.1.0

v1.0.9

v1.0.8

v1.0.7

v1.0.6

v1.0.5

v1.0.4

v1.0.3

v1.0.2

v1.0.1