LUMINSim Documentation: Difference between revisions
Acmattson3 (talk | contribs) No edit summary |
Acmattson3 (talk | contribs) AI template (to be updated) |
||
| Line 1: | Line 1: | ||
== LUMINSim Documentation == | == LUMINSim Documentation == | ||
This is an ongoing page as I document [[LUMINSim]]'s current systems. | This is an ongoing page as I document [[LUMINSim]]'s current systems. Feel free to add to it! | ||
== Getting Started == | |||
To learn how to get started with development yourself, [https://github.com/AuroraRoboticsLab/GodotRobot/blob/main/README.md visit the repository's README] and follow the steps there. | |||
== Repository Structure == | |||
* '''<code>src/</code>''' – C++ GDExtension code for terrain and registration | |||
* '''<code>demo/</code>''' – Godot project containing levels, assets, and GDScript systems | |||
== Terrain System (C++) == | |||
=== Static Terrain === | |||
<code>TerrainStatic256</code> loads heightmaps, creates render and collision geometry | |||
=== Dynamic Terrain === | |||
<code>TerrainSim</code> simulates excavation, landslides, and merging dirtballs back into the heightmap | |||
== Terrain Tools == | |||
Scripts such as <code>dirt_spawner.gd</code> and <code>dirtball.gd</code> spawn and merge mobile particles with the dynamic terrain | |||
== Robot Systems == | |||
=== Astra Rover === | |||
<code>astra_3d.gd</code> handles driving, energy usage, and tool attachments for the primary rover | |||
=== Arm and Hopper === | |||
Separate nodes for the arm and hopper implement joint movement and excavation logic | |||
=== Astronaut Character === | |||
<code>astronaut_character_3d.gd</code> provides walking and camera control for a player avatar | |||
=== Excavation Tools === | |||
Attachments such as the bucket, forks, and saw blade extend <code>ToolAttachment</code> for various tasks | |||
== Static Objects == | |||
Charge stations, solar panels, tool spawners, and other environment pieces provide energy or spawn tools | |||
== Networking and Multiplayer == | |||
<code>GameManager.gd</code> manages synchronized player/object data and signals for network updates | |||
<code>multiplayer_menu.gd</code> lets players host or join games, start sessions, and handle disconnects | |||
== Cameras and Controls == | |||
<code>movable_camera_3d.gd</code> and <code>freecam.gd</code> implement user-controlled cameras, both first- and third‑person | |||
The user interface (<code>ui.gd</code>, <code>joystick.gd</code>, <code>keybinds_menu.gd</code>) provides HUD elements, customizable input bindings, and optional on-screen controls for mobile users | |||
== Example Levels == | |||
Scenes in <code>demo/levels/</code> (e.g., <code>main3D.tscn</code> with script <code>main3D.gd</code>) instantiate players, objects, and the terrain simulator, driving the overall game loop | |||
== Additional Utilities == | |||
Miscellaneous scripts such as <code>fps_counter.gd</code> and <code>multiplayer_menu.gd</code> assist with debugging and session management | |||
== Building the Extension == | |||
The <code>SConstruct</code> file compiles all <code>.cpp</code> sources into a shared library used by the Godot projec | |||
Revision as of 14:05, 4 July 2025
LUMINSim Documentation
This is an ongoing page as I document LUMINSim's current systems. Feel free to add to it!
Getting Started
To learn how to get started with development yourself, visit the repository's README and follow the steps there.
Repository Structure
src/– C++ GDExtension code for terrain and registration
demo/– Godot project containing levels, assets, and GDScript systems
Terrain System (C++)
Static Terrain
TerrainStatic256 loads heightmaps, creates render and collision geometry
Dynamic Terrain
TerrainSim simulates excavation, landslides, and merging dirtballs back into the heightmap
Terrain Tools
Scripts such as dirt_spawner.gd and dirtball.gd spawn and merge mobile particles with the dynamic terrain
Robot Systems
Astra Rover
astra_3d.gd handles driving, energy usage, and tool attachments for the primary rover
Arm and Hopper
Separate nodes for the arm and hopper implement joint movement and excavation logic
Astronaut Character
astronaut_character_3d.gd provides walking and camera control for a player avatar
Excavation Tools
Attachments such as the bucket, forks, and saw blade extend ToolAttachment for various tasks
Static Objects
Charge stations, solar panels, tool spawners, and other environment pieces provide energy or spawn tools
Networking and Multiplayer
GameManager.gd manages synchronized player/object data and signals for network updates
multiplayer_menu.gd lets players host or join games, start sessions, and handle disconnects
Cameras and Controls
movable_camera_3d.gd and freecam.gd implement user-controlled cameras, both first- and third‑person
The user interface (ui.gd, joystick.gd, keybinds_menu.gd) provides HUD elements, customizable input bindings, and optional on-screen controls for mobile users
Example Levels
Scenes in demo/levels/ (e.g., main3D.tscn with script main3D.gd) instantiate players, objects, and the terrain simulator, driving the overall game loop
Additional Utilities
Miscellaneous scripts such as fps_counter.gd and multiplayer_menu.gd assist with debugging and session management
Building the Extension
The SConstruct file compiles all .cpp sources into a shared library used by the Godot projec