The following diagram shows the main components of BeamNG.tech, its supplemental software and the interactions between these components.
The diagram provides a high level overview of the BeamNG architecture, without claiming to be exhaustive. On the left side of the diagram, the internal structure of BeamNG is illustrated, while on the right side, you can see how external tools such as Python, ROS, Simulink, FMUs, or simulator hardware can be interacting with BeamNG.
The color coding in the diagram distinguishes between open-source (blue) and closed-source (yellow) components. Blue components are fully accessible and can be modified or extended by users. Those components are mostly implemented in LUA script, which is an interpreted language and allows rapid changes without compilation. Yellow components consist of compiled C++ code, mainly for performance reasons.
User Interface:
This is the graphical interface for tasks such as menu navigation, vehicle and part selection and configuring settings. It also includes the HUD and in-car displays. These interfaces are open source and can be customized or extended with user-defined elements.
Game Engine:
The game engine consists of a closed-source C++ core responsible for 3D rendering and other essential libraries. However, a substantial portion of the engine is open-source LUA code that handles game modes, missions, scenarios, traffic management, and various editor tools. Its primary update loop runs every graphics frame.
Physics Core:
This is the core of BeamNG’s soft-body physics system. It handles equations for collisions, damage, friction, buoyancy, aerodynamics, and other physical effects.
Vehicle:
Vehicle simulation code is open-source LUA code, allowing users to study existing vehicles, implement custom structures, create new powertrains and controllers and experiment with different configurations. Multiple vehicles can be spawned, each operating within its own LUA virtual machine, ensuring independent operation with full complexity and functionality equivalent to the primary vehicle.
World Editor:
The world editor is part of the game engine and originally focused on modifying environments (terrain modeling, placing objects, creating roads). Over time, it has expanded to include flowgraph editor, mission editing, co-simulation setup, sensor configuration, traffic management, and path planning tools.
Was this article helpful?