2204 companion flashcards · AI-assisted study content · Open the deck →
This deck introduces the foundational concepts of modding Assetto Corsa, the popular sim-racing platform. The cards walk you through the core building blocks of any mod, including the 3D model and texture formats Assetto Corsa relies on, the directory structure where cars, tracks, and liveries live, and the essential configuration files that define how a vehicle looks and behaves. You'll also get acquainted with the key tools in the modder's workflow, from the official editor used to export models into the game to Content Manager and common external 3D modeling software.
It's well suited for beginners who are just starting to explore how mods are put together, as well as more experienced creators who want a quick reference for file names, folder locations, and the purpose of each configuration file. If you've ever wondered which file controls engine power curves, suspension geometry, or aerodynamic properties, or you've been confused about where to drop a new car or track, these cards will help you build a clear mental map of the modding ecosystem.
Because the deck covers a mix of file names, folder paths, and tool purposes, consistent spaced review will help the details stick. Try working through a small batch of cards each session rather than cramming, and revisit the ones you miss right before you actually open the game's folders or launch the editor so the knowledge connects to hands-on practice. Pairing the cards with a real modding project on the side is the fastest way to turn these facts into lasting skill.
Assetto Corsa modding revolves around a small set of standardized file formats, each serving a distinct purpose. The proprietary .kn5 format is the custom container Assetto Corsa uses to package 3D meshes, materials, and texture references into a single file the engine can load efficiently. Textures themselves use .dds (DirectDraw Surface), which allows GPU-friendly compression and mipmapping; .ini files handle nearly all text-based configuration across the game; and the encrypted data.acd archive bundles a car's physics and configuration data into a single tamper-resistant file. Modders generally unpack data.acd files using the ACD tool or Content Manager's unpack feature so that the contents can be edited.
The directory structure follows a predictable convention. Car mods live under content/cars/[car_folder_name], while track mods live under content/tracks/[track_folder_name]. Inside a car folder you will typically find a skins subfolder containing one subdirectory per livery, a ui folder for metadata and preview images, and the unpacked data folder containing all the configuration and model files. Tracks share a similar layout but add an ai subfolder containing fast_lane.ai and pit_lane.ai spline files, plus a map.png and map.ini pair for the in-game mini-map. Naming helper objects inside 3D models with prefixes such as AC_PIT_, AC_START_, and AC_TIME_ allows the engine to recognize pit spawns, grid positions, and timing lines automatically.
The core modding toolchain consists of ksEditor for converting FBX models into .kn5 files and assigning shaders, Blender or 3ds Max as the upstream 3D modeling package, and FMOD Studio for sound bank creation. ksEditor is the official utility that ingests an FBX, lets the modder assign materials and shaders such as ksPerPixelMultiMap for paint, and exports the result as a kn5 ready for the game. FMOD Studio version 1.08.12 is the traditional target for compatibility, with a guid.txt file in the sfx folder used to map FMOD event GUIDs to the text names Assetto Corsa expects. Content Manager, a community-built alternative launcher, wraps all of this together by offering mod management, validation, server hosting, and advanced settings that the vanilla launcher does not expose.
Every car mod contains a data folder full of .ini files, each of which controls one aspect of the vehicle's behavior. The top-level car.ini defines global properties: TOTALMASS (the chassis mass without fuel and driver), INERTIA as a three-component vector for resistance around the pitch, yaw, and roll axes, CG_LOCATION for the center of gravity in three coordinates, MIN_RPM and MAX_RPM for the engine's operating range, GRAPHICS_OFFSET for aligning the visual model with the physics center, ffb_mult for tuning force feedback strength, and SLIPSTREAM_DRAFT and SLIPSTREAM_DISTANCE for the draft effect. The engine behavior lives in engine.ini, which references a power.lut lookup table defining how torque varies with RPM (the HEADER_CURVE) and includes parameters such as LIMITER (the redline), IDLE_RPM, INERTIA (the crankshaft's rotational inertia, which affects throttle response), FUEL_CONSUMPTION, MAX_BOOST for turbocharged cars, coast_torque for engine braking, and DAMAGE_GAIN for over-rev or overheat penalties. Supplementary files such as ctrl_turbo.ini, ctrl_ers.ini, kers.ini, and fuel_cons.ini handle boost controllers, hybrid energy recovery systems, KERS batteries, and fuel usage curves respectively.
The tyres.ini file governs the thermal and grip model for each tire compound, with parameters such as RADIUS, RIM_RADIUS, FZ0 (the reference vertical load), OPTIMAL_TEMP (the core temperature where grip peaks), PRESSURE_STATIC (the cold starting pressure), PRESSURE_GAIN and TEMPERATURE_GAIN for how pressure and temperature respond to use, DAMPING for vertical compliance, WEAR_CURVE (a LUT defining how grip falls off with wear), and GRAIN_GAMMA and BLISTER_GAMMA for the rates at which surface graining and blistering develop. The suspensions.ini file defines geometry and stiffness for each wheel, including TYPE values such as DW (double wishbone) and STRUT (MacPherson strut), RIDE_HEIGHT, SPRING_RATE, DAMPER_BUMP and DAMPER_REBOUND for compression and extension damping, ARB_ANTIROLL for anti-roll bar stiffness, CAMBER (negative for top-tilted-inward), CASTER for steering axis tilt, ACKERMANN for steering geometry, TOE_OUT for static toe alignment, and CAMBER_GAIN for how camber changes through the suspension travel.
Drivetrain, braking, electronics, and aero behavior are spread across several other files. drivetrain.ini contains GEAR_RATIO entries per gear, FINAL_RATIO, GEAR_EFFICIENCY for transmission losses, the [DIFFERENTIAL] section's POWER and COAST values for accel and decel locking percentages, and an AWD indicator for all-wheel-drive cars. brakes.ini defines MAX_TORQUE, BRAKE_BIAS (0.0 = full rear, 1.0 = full front), and COOLING_RATE. electronics.ini houses ABS, TC, ESP, and AUTO_SHIFTER settings. aero.ini describes CL (coefficient of lift, negative for downforce), CD (coefficient of drag), AREA (reference frontal area), and gain terms CL_GAIN and CD_GAIN that describe how adjustable wings affect lift and drag as a function of WING_ANGLE. For active aerodynamics, wing_animations.ini drives mesh-based movement with triggers like speed or brake input, while wing_controller.ini automates wing angle from inputs such as speed, brake pressure, or steering angle via a CURVE lookup table. Additional files such as damage.ini, setup.ini (the pit-menu setup options), colliders.ini, flames.ini, lights.ini, mirrors.ini, driver3d.ini, analog_instruments.ini, digital_instruments.ini, ambient_shadows.ini, blurred_objects.ini, lods.ini, models.ini, extra_animations.ini, pitcrew.ini, and neck.ini round out the rest of the car's editable behavior, covering everything from visible deformation to analog gauge needle rotations and driver head movement under G-forces.
Creating a car or track asset for Assetto Corsa begins in a 3D modeling package such as Blender or 3ds Max, where the artist models the geometry, unwraps UVs, and exports the result as an FBX. That FBX is then opened in ksEditor, where the modder assigns materials and shaders before exporting the final .kn5 file the engine consumes. A kn5 is essentially a custom container that bundles together the meshes, their material assignments, and references to the texture files in dds format. Blender users commonly rely on the AC Tools add-on or custom Python scripts to streamline this pipeline, while 3ds Max users have historically relied on the AC_EXPORT script. Inside the 3D scene, Empty objects (called Nulls in 3ds Max or Dummies in older documentation) mark important coordinates such as spawn points, light positions, camera anchors, or driver seats without contributing any renderable geometry themselves.
Textures are stored as .dds files using DirectDraw Surface compression. DXT1 is appropriate for textures with no alpha or only a 1-bit alpha, while DXT5 (BC3) or the higher-quality BC7 is used when a full alpha channel is required for complex transparency. A common naming convention reserves the _NM suffix for normal maps and the _MAP suffix for the reflection, specularity, and roughness map; metal_detail.dds is a separate small noise texture used to add microscopic flake detail to car paint. Ambient Occlusion (AO) is typically baked directly into the diffuse texture to add soft shadowing in crevices and corners, giving the impression of depth without requiring a real-time AO pass. For high-quality car liveries, the standard resolution is 2048x2048 or 4096x4096.
Assetto Corsa ships with a curated set of shaders that determine how surfaces interact with light. ksPerPixelMultiMap is the most common shader for car body paint; its txMaps slot combines three channels into one texture where Red controls reflectivity, Green controls specularity, and Blue controls roughness or gloss. The simpler ksPerPixelNM shader uses just a diffuse and normal map, while ksDiffuse is a basic diffuse-only shader affected by light without normal or specular contributions, and ksAmbient is a flat ambient-lit shader often used for internal parts. ksAlphaRef adds an alpha-test cutoff threshold for cutout transparency. For tracks, ksMultilayer blends four detail textures together using a mask image whose Red, Green, Blue, and Alpha channels each select a different surface (such as grass, dirt, sand, and tarmac), and ksGrass is used with procedural grass generation to render 3D foliage on marked surfaces. Specialized shaders include ksWindscreen for glass with internal reflections and rain effects, ksPerPixelReflection or ksMirror for mirrors, ksSkinnedMesh for bones-based meshes such as the driver model, and ksTree for foliage. Fresnel properties such as fresnelC (center reflectivity) and fresnelEXP (falloff rate) let shaders simulate the way reflectivity increases at glancing angles.
Performance is managed through Level of Detail (LOD) models and swap meshes. The lods.ini file specifies at what camera distance each lower-detail .kn5 should replace the previous one, with file suffixes such as _B and _C denoting lower LODs (for example, car_B.kn5 and car_C.kn5). The models.ini file lists the main kn5 and references separate files for colliders and LODs. For wheels, blurred_objects.ini defines a static rim mesh that is visible at low speeds and a blurred rim mesh that swaps in at a configurable SPEED_THRESHOLD (or MIN_SPEED) so that fast-spinning wheels do not produce jagged strobing. The transparency setting in ksEditor determines whether a material is opaque, alpha-tested (cutout), or alpha-blended (glass), and MIP levels plus DXT compression control how aggressively textures are downsampled at distance.
Track mods in Assetto Corsa combine 3D geometry, surface definitions, AI path data, timing logic, and presentation metadata into a coherent racing environment. The surfaces.ini file is the heart of a track's physical behavior: each surface is defined by its FRICTION (the slipperiness coefficient, with higher values meaning grippier), DAMPING (how the surface affects suspension response), WAVINESS (the bumpiness of the surface), SURFACE_SOUND (the FMOD event triggered when tires roll across it), SURFACE_COLOR (a tint for visual feedback), IS_VALID_TRACK (whether AI considers this surface drivable), IS_PITLANE (which enables speed-limiter logic when set to 1), and DIRT_ADDITIVE (which controls how much dirt builds up on tires running across it). The ksMultilayer shader is the workhorse for track terrain, blending multiple textures based on a mask image so that, for example, grass, dirt, sand, and tarmac can all coexist on a single mesh with smooth transitions.
AI behavior is driven by spline files stored in the ai subfolder. fast_lane.ai defines the ideal racing line that AI cars attempt to follow, while pit_lane.ai defines the path AI cars take when entering, traversing, and exiting the pits. A separate ideal_line.ai file, when present, can be shown to the player as a visual racing line helper in some configurations. The groove.ini file controls the visual rubbering-in effect, defining where skid marks accumulate along the racing line, how INTENSITY they build up, and FADE_TIME for how quickly they wear away after sessions end. Pit crews are positioned using AC_CREW_ prefixed empties (AC_CREW_0, AC_CREW_1, and so on) placed inside the track model, while AC_PHYSICAL_ prefixed meshes provide high-resolution invisible collision geometry that is more detailed than the visual meshes.
Timing, camera, and rule systems complete the track experience. sections.ini defines timing splits by placing SPLIT points at specific POSITION coordinates and giving each a NAME such as "Sector 1" or "Sector 2," enabling sector times on the UI. cameras.ini configures replay camera positions with POSITION, TARGET (the point the camera looks at), FOV, and NEAR/FAR clipping planes. rules.ini establishes track-specific behavior such as CUT_PENALTY for how cutting corners is punished, PIT_SPEED_LIMIT for the maximum allowed speed in the pit lane, TRACK_LIMITS for how strictly boundaries are enforced, and YELLOW_FLAG logic. The map.png image provides the 2D minimap displayed in the UI, while map.ini aligns it with the actual world by specifying X and Z for the top-left corner, ROTATION, SCALE (the pixels-to-meters factor), OFFSET, plus WIDTH and HEIGHT in meters for the area covered. The ui_track.json file supplies metadata such as the track's name, country, length, pitboxes count, description, and additional specs that Content Manager uses in selection menus and search filters.
The Custom Shaders Patch is a community extension that dramatically expands what Assetto Corsa can do. It adds dynamic emissive lighting, advanced weather, physics extensions, performance optimizations, and an entirely new scripting layer. Mods opt into CSP by placing an ext_config.ini file inside an extension folder (sometimes called extension/) within the car or track directory, and CSP then reads sections from that file to override or extend base-game behavior. The [MATERIAL_ADJUSTMENT] section is commonly used to tweak roughness, reflection, or other shader properties on existing meshes without having to rebuild their materials. [INCLUDE] and [INCLUDE_EXTENDED] directives allow a complex mod to split its configuration across multiple files; INCLUDE replaces sections, while INCLUDE_EXTENDED merges them.
CSP introduces many feature modules that modders can enable. [LIGHT_...] sections define realistic emissive lights with falloff and color behavior, used for headlights, taillights, brake lights, turn signals, and underglow. [ANIMATION_...] sections drive mesh animations tied to game state or player input, allowing doors, hoods, and windows to open or close. [WIPERS] (or [WINDSCREEN_WIPER]) sections, combined with RainFX, give cars working windshield wipers that respond to driver input and rainfall. [BRAKEDISC_FX] creates glowing brake discs that brighten with temperature, [TYRES_FX] adds visual deformation, dirt accumulation, and improved smoke to tires, and [SHAKING_EXHAUST_PIPE] applies vibration to the exhaust based on engine RPM. [MESH_ADJUSTMENT_...] sections hide, show, or swap meshes conditionally so that, for example, different body kits or wing configurations can appear based on setup choices. [PARTICLE_FX] creates sparks, debris, and exhaust smoke, while [SMOKE_FX] provides enhanced tire smoke with more realistic physics. [AUDIO_...] sections let mods inject custom sound triggers or modify existing FMOD events, [DAMAGE_...] extends visual damage beyond the base game's damage.ini capabilities, and [DYNAMIC_OBJ_...] creates physics-enabled objects that respond to collisions.
CSP's higher-level feature modules include LightingFX for realistic emissive lights, Reflections FX for interior windshield reflections and improved environmental reflections, GrassFX for procedurally generated 3D grass on surfaces marked as grass in surfaces.ini, RainFX for rain physics, wet surfaces, and wiper support, and WeatherFX which serves as the bridge that allows Sol and Pure (advanced third-party weather and lighting engines) to operate on top of CSP. PBR (Physically Based Rendering) is enabled via CSP for realistic materials, and Refraction is a CSP shader effect used for glass and lenses that distorts light passing through them. For logic that goes beyond simple INI configurations, CSP Lua Scripting allows modders to write complex dynamic behaviors such as sophisticated turn signal controllers or animated active displays that respond to vehicle state in real time. Older versions of Assetto Corsa used a content/weather folder for cloud and weather modding, but modern setups almost universally route through Sol or Pure working on top of CSP.
The ui folder of a car mod holds the metadata and preview imagery shown in the game's selection menu. ui_car.json is a structured file describing the car's name, brand, class (such as GT3 or F1), search tags, price, power, torque, mass, topSpeed, acceleration, braking and handling ratings, a freeform description, and additional specs. A logo.png displaying the manufacturer's badge often sits alongside it. For tracks, ui_track.json provides the equivalent name, country, length, pitboxes count, description, and spec data. Each livery lives in its own subfolder under the skins directory, containing that skin's textures, a preview.jpg so the livery shows up in the selection menu, a ui_skin.json with skin-specific metadata (driver name, team, country, number, sponsors), and a skin.ini that defines DRIVER_NAME, TEAM_NAME, SUIT, HELMET, GLOVES, NUMBER, and FLAG for the in-cockpit driver model.
Sound modding centers on FMOD Studio, with car sounds stored as compiled .bank files inside the sfx folder. The guid.txt file in that same folder maps FMOD event GUIDs back to the friendly text names Assetto Corsa expects, so renaming or remixing sounds is a matter of editing GUIDs rather than code. Common FMOD events include Engine (the main engine sound that varies with RPM and load), Skid (tire skidding when wheels lose traction), plus extras such as transmission, aero, and limiter sounds. FMOD Parameters are variables like RPM, Load, and Speed that drive sound behavior; Pitch (often RPM-linked) changes playback speed, Volume sets loudness, and Reverb simulates environmental echo. Cars can have different mixes for Interior cockpit views versus Exterior external cameras, and a music.bank stores the menu and replay music. For digital dashboards, a fonts folder inside the car mod can hold custom font files used by digital_instruments.ini.
Python scripting in Assetto Corsa powers in-game apps, widgets, and background scripts. Apps are installed under apps/python/[app_name] in the AC directory and follow a simple lifecycle: acMain(ac_version) runs once when the app starts to perform initialization, and acUpdate(delta_t) is called every frame with the time elapsed since the previous frame so the app can update its display. Helpers such as ac.initApp() return an app ID, ac.addLabel() and ac.addButton() create UI elements, ac.log() writes debug messages, and a large family of ac.getCar*() functions pulls live telemetry including speed, RPM, gear, fuel, throttle, brake, steer angle, slip, slip angle, slip ratio, grip, friction, temperature, pressure, damage, position, velocity, and much more for each individual wheel. ac.getSessionState() retrieves lap time and position, while ac.getCarTyreSlip*() functions expose detailed slip data per wheel position (front, rear, left, right, or any combination such as front-left or rear-right) for advanced telemetry apps. Content Manager's App Manager provides a graphical way to install, configure, and toggle these apps without manually editing files.
Drill this topic
2204 flashcards on Assetto Corsa Modding Cards — free, no signup needed to start.
Study Assetto Corsa Modding Cards flashcardsLearnWiki pages are generated with AI assistance from LearnCoachAssist's reviewed study catalog and may contain errors — verify anything critical against your course materials.