Jump to content

LUMINSim Documentation: Difference between revisions

From Aurora Robotics
No edit summary
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