Jump to content

LUMINSim Documentation: Difference between revisions

From Aurora Robotics
AI template (to be updated)
No edit summary
Line 7: Line 7:
== Repository Structure ==
== Repository Structure ==


* '''<code>src/</code>''' – C++ GDExtension code for terrain and registration
* '''<code>src/</code>''' – C++ GDExtension code for terrain and registration. Likely to be deprecated. See [[LUMINSim Documentation#Terrain System (C++)|Terrain System (C++)]].


* '''<code>demo/</code>''' – Godot project containing levels, assets, and GDScript systems
* '''<code>demo/</code>''' – Godot project containing levels, assets, and GDScript systems.
** '''<code>export_presets.cfg</code>''' – Information for Godot on how to export the project into platform-native forms. Created automatically by the Godot export menu.
** '''<code>game_manager.gd</code>''' – Handles the majority of the multiplayer logic, especially the sending of data between the clients and the server. See [[LUMINSim Documentation#Networking and Multiplayer|Networking and Multiplayer]].
** '''<code>demo/astra</code>''' – Files pertaining to the drivable [[LAMP v1|Astra]] robot. See [[LUMINSim Documentation#Astra Robot|Astra Robot]].
** '''<code>demo/astronaut</code>''' – Files pertaining to the in-game, procedurally-animated astronaut character. See [[LUMINSim Documentation#Astronaut Character|Astronaut Character]].
** '''<code>demo/bin</code>''' – Files pertaining to the compiled GDExtension binaries. Likely to be deprecated. See [[LUMINSim Documentation#Terrain System (C++)|Terrain System (C++)]].
** '''<code>demo/components</code>''' – Contains components or component-like scenes and related files. See Components.
** '''<code>demo/environment</code>''' – Files for the skybox (i.e., the stars in the sky).
** '''<code>demo/excahauler</code>''' – Files pertaining to the drivable [[Excahauler]] robot. See [[LUMINSim Documentation#Excahauler Robot|Excahauler Robot]].
** '''<code>demo/graphics</code>''' – Contains many images for icons and textures, especially for the user interface. See [[LUMINSim Documentation#User Interface|User Interface]].
** '''<code>demo/landers</code>''' – Contains directories for different (currently, static models of) lunar landers.
** '''<code>demo/excahauler</code>''' – Files pertaining to the drivable [[Excahauler]] robot. See [[LUMINSim Documentation#Excahauler Robot|Excahauler Robot]].
** '''<code>demo/levels</code>''' – Contains the main playable (i.e., non-UI) scenes and related files. See [[LUMINSim Documentation#Levels|Levels]].
** '''<code>demo/objects</code>''' – Contains non-static (i.e., movable RigidBody3D) objects. See [[LUMINSim Documentation#Objects|Objects]].
** '''<code>demo/static_objects</code>''' – Contains static (i.e., unmovable StaticBody3D) objects and their related code. See [[LUMINSim Documentation#Static Objects|Static Objects]].
** '''<code>demo/terrain</code>''' – Scenes and files pertaining to the ''dynamic'' (i.e., mineable) terrain. See [[LUMINSim Documentation#Terrain System (C++)|Terrain System (C++)]].
** '''<code>demo/terrain_fixed</code>''' –  Scenes and files pertaining to the ''static'' (i.e., unchanging) terrain. See [[LUMINSim Documentation#Terrain System (C++)|Terrain System (C++)]].
** '''<code>demo/util</code>''' –  Scenes and files pertaining to UI. See [[LUMINSim Documentation#User Interface|User Interface]].


== Terrain System (C++) ==
== Terrain System (C++) ==
C++ based GDExtensions are likely to be replaced with a more developer-friendly system, likely one that downloads terrain from a separate server that handles all terrain logic.


=== Static Terrain ===
=== Static Terrain ===
Line 24: Line 42:
== Robot Systems ==
== Robot Systems ==


=== Astra Rover ===
=== Astra Robot ===
<code>astra_3d.gd</code> handles driving, energy usage, and tool attachments for the primary rover
<code>astra_3d.gd</code> handles driving, energy usage, and tool attachments for the primary rover


Line 35: Line 53:
=== Excavation Tools ===
=== Excavation Tools ===
Attachments such as the bucket, forks, and saw blade extend <code>ToolAttachment</code> for various tasks
Attachments such as the bucket, forks, and saw blade extend <code>ToolAttachment</code> for various tasks
=== Excahauler Robot ===
WIP
== Objects ==
WIP


== Static Objects ==
== Static Objects ==
Line 43: Line 67:


<code>multiplayer_menu.gd</code> lets players host or join games, start sessions, and handle disconnects
<code>multiplayer_menu.gd</code> lets players host or join games, start sessions, and handle disconnects
== User Interface ==
WIP


== Cameras and Controls ==
== Cameras and Controls ==
Line 49: Line 76:
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
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 ==
== 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
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



Revision as of 14:34, 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. Likely to be deprecated. See Terrain System (C++).
  • demo/ – Godot project containing levels, assets, and GDScript systems.
    • export_presets.cfg – Information for Godot on how to export the project into platform-native forms. Created automatically by the Godot export menu.
    • game_manager.gd – Handles the majority of the multiplayer logic, especially the sending of data between the clients and the server. See Networking and Multiplayer.
    • demo/astra – Files pertaining to the drivable Astra robot. See Astra Robot.
    • demo/astronaut – Files pertaining to the in-game, procedurally-animated astronaut character. See Astronaut Character.
    • demo/bin – Files pertaining to the compiled GDExtension binaries. Likely to be deprecated. See Terrain System (C++).
    • demo/components – Contains components or component-like scenes and related files. See Components.
    • demo/environment – Files for the skybox (i.e., the stars in the sky).
    • demo/excahauler – Files pertaining to the drivable Excahauler robot. See Excahauler Robot.
    • demo/graphics – Contains many images for icons and textures, especially for the user interface. See User Interface.
    • demo/landers – Contains directories for different (currently, static models of) lunar landers.
    • demo/excahauler – Files pertaining to the drivable Excahauler robot. See Excahauler Robot.
    • demo/levels – Contains the main playable (i.e., non-UI) scenes and related files. See Levels.
    • demo/objects – Contains non-static (i.e., movable RigidBody3D) objects. See Objects.
    • demo/static_objects – Contains static (i.e., unmovable StaticBody3D) objects and their related code. See Static Objects.
    • demo/terrain – Scenes and files pertaining to the dynamic (i.e., mineable) terrain. See Terrain System (C++).
    • demo/terrain_fixed – Scenes and files pertaining to the static (i.e., unchanging) terrain. See Terrain System (C++).
    • demo/util – Scenes and files pertaining to UI. See User Interface.

Terrain System (C++)

C++ based GDExtensions are likely to be replaced with a more developer-friendly system, likely one that downloads terrain from a separate server that handles all terrain logic.

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 Robot

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

Excahauler Robot

WIP

Objects

WIP

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

User Interface

WIP

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

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