← Back to projects

ACORN

In Progress

An offline racing enhancement platform for Assetto Corsa: improved AI driving, pit strategy, new UI, etc.

ACORN

More Than an AI Mod

ACORN started as an attempt to make Assetto Corsa’s offline racing feel less robotic. It grew into a full enhancement platform: a DLL plugin loaded through Assetto Corsa’s official — but long-abandoned — plugin API.

DLL plugins for AC have a small C interface. At load, the game builds its own ACPlugin wrapper for the DLL (keeping the Sim* and module handle), then binds six optional exports via GetProcAddress — a missing export only logs an error:

bool acpGetName(wchar_t* name);                  // plugin writes its UTF-16 display name
bool acpInit(IACPPluginHost* host);              // one-time setup; host is the game's
                                                 // ACPlugin object — the bridge into the sim
bool acpUpdate(ACCarState* state, float dt);     // per-tick car state
bool acpOnGui(ACPluginContext* ctx);             // GUI callback
bool acpGetControls(ICarControlsProvider** out); // return true to replace the car's
                                                 // controls provider (official input takeover)
bool acpShutdown();                              // teardown

The quiet superpower is acpGetControls: when it returns true, the game installs the plugin’s controls provider on the car via CarAvatar::setControlsProvider — a sanctioned path to taking over driving inputs. ACORN uses this contract as its load mechanism, then detours AIDriver::acquireControls to observe and improve the offline AI where the API stops.

Assetto Corsa logo © Kunos Simulazioni, used under CC BY-SA 4.0.

Features

AI Driving

Multiple enhancements to offline AI capabilities, they are faster, smarter and more dynamic

UI

A host of UI improvements like a new modern main menu, new pause menu, new replay controls, and in-game MFD losely based on the ACC MFD

Tech Stack

DMinHookSQLiteNanoVGD3D11