A downloadable tool

A first-person shooter built on Ursina with a bitmask collision registry, object-pooled bullets, a shared swept-raycast system, and an in-engine level editor.

Getting started

Requirements: Python 3.10+, Ursina

pip install ursina python main.py

Controls: WASD move · Space jump · LMB shoot · R reset · Esc pause · F fullscreen · C toggle collider debugEngine status

SystemStatus
Swept player collision Stable
Bullet pool (PlayerBullet / EnemyBullet) Stable
Bitmask layer registry Stable
AliveEntity lifecycle Stable
CollisionManager spatial grid Stable
Enemy base class Stable
World-space health bar Stable
Level editor Usable — schema expanding
Scene lifecycle Stable
Game state machine Planned

Roadmap

Near-term

  •  Game state-machine class replacing module-level globals in main.py
  •  _clear_gameplay_entities() as the canonical scene teardown path
  •  Expand level editor JSON schema: enemy type, HP, rotation, block colour

Engine features

  •  Collision bitmask system — Layers registry + can_hit() replaces isinstance checks
  •  Object pooling for bullets — BulletPool eliminates per-shot allocation
  •  Pluggable enemy behaviour trees — patrol / attack / flee state composition
  •  Trigger/zone system — volume entry/exit callbacks for doors, checkpoints, kill planes
  •  Weapon inventory API — multi-weapon, ammo pickup, switch animations
  •  Asset hot-reload in the level editor

Long-term

  •  Packaged runtime via PyInstaller / Nuitka
  •  Networked multiplayer substrate — authoritative server, client-side prediction
  •  Procedural level generator outputting the existing JSON schema
  •  Full gamepad / controller input layer

For more info and the latest updates go to:

https://github.com/ivandebugr/Ivan_Debugs_Python_3D_Engine/

This page contains stable version that's approved by Ivan "Debug" Rybak

Download

Download
Ivan_Debugs_Python_3D_Engine-main.zip 46 kB

Development log