Skip to content
mtt edited this page Sep 22, 2026 · 2 revisions

This build represents the first playable milestone of the project.

The goal of the alpha release is to demonstrate that the core game framework, level pipeline, and gameplay systems are functional and can work together as a complete prototype.

Level System

  • Custom level loading system using Panda3D.
  • Blender-authored levels exported and loaded into the game.
  • Level metadata system for storing level-specific configuration.
  • Spawn point detection and player placement.
  • Static collision generation from level collision meshes.
  • Support for placing reusable level instances/assets.

Player System

  • First-person player controller.
  • Camera movement and look controls.
  • Player movement system.
  • Basic collision interaction.
  • Ground detection system.
  • Surface detection framework for environmental interactions.

World Systems

  • Lighting setup.
  • Fog/environment effects.
  • Asset loading system.
  • Instance-based object spawning.
  • Interaction Systems
  • Dialog framework.
  • Dialog trigger system.
  • Basic interaction architecture.

Current Limitations

The following systems are still under development:

  • Player physics and grounding behavior may require further refinement.
  • Collision generation depends on exported Blender collision meshes and may require validation after level changes.
  • Some gameplay systems are placeholders and will continue to be expanded.

Known Issues

Collision Pipeline

Some collision issues may occur after modifying and exporting level geometry from Blender.

Current workaround:

  1. Re-export collision meshes carefully.
  2. Verify collision objects before testing.
  3. Rebuild problematic collision geometry when necessary.
  4. Spawn Point Placement

Spawn points may require adjustment depending on level geometry and collision configuration.

Collision Data Instability After Level Export

Some collision geometry may stop being detected after modifying and re-exporting the level model from Blender.

  • Player spawn position remains correct.
  • Player may fall through the level after spawning.
  • Ground detection reports no collision hits.
  • Collision debug visualization may show collision objects that do not correspond to working collision surfaces.

The issue appears to originate from the Blender → glTF/GLB → Panda3D asset pipeline.

The current collision loader relies on a specific exported hierarchy structure. After adding or modifying collision meshes, the exported GLB may change the internal node structure, causing some collision geometry to no longer be processed correctly.

COL_Object
    |
    GeomNode
        |
        CollisionNode

However, exported files may produce different structures that are not currently handled by the collision loader.

This issue may be resolved by 1) direct CollisionNode detection, 2) collision-only objects 3) different glTF hierarchy layout.


Blender Screenshots:

Level1 Level1_2

Setup

Clone this repository first in your directory. git clone https://github.com/mthtclone/c137.git

Navigate into the project folder. cd c137

This project uses python 3.12 specifically so you may want to setup the virtual environment folder targeting that version in the root folder.

Create the venv folder with this command:

python -m venv venv

Activate the venv folder. The command may differ depending on the shell you are using.

Powershell: venv\Scripts\activate Git Bash: source venv/Scripts/activate

On their Python download page, they may make you download 3.12.8 but those are just security fixes and it should work.

Then make sure to check that you have a correct Python version.

python --version

pip version can be the latest and it is fine.

Then, install the dependencies required for the project:

pip install -r requirements.txt

The model object files are not uploaded together with the repository as it would make the repository bigger.

In the Google drive, download all the .fbx and .gltb files and place them at assets/models/environments. It should look like this in the asset folder.

┗ 📂models
  ┗ 📂environment
    ┣ 📜.gitkeep
    ┣ 📜bush_ye.glb
    ┣ 📜grass_lump.fbx
    ┣ 📜in_tree.glb
    ┣ 📜tree_barrier_group.glb
    ┣ 📜tree_barrier_short.glb
    ┗ 📜tree_oak.glb

Then download the map object file from the levels folder, level_model.gltb and level_metadata.json and place both files at the levels/test-levels.

Run the program by simply typing python main.py from the terminal.

Clone this wiki locally