Important License & Major Version Update: The license for MiniPyEngine has officially been changed to Apache License 2.0 under Ege Önder. Due to complete architectural refactoring and massive performance improvements, the version number has jumped directly from v1.0.2 / v1.0.3-B to v2.0.0-S.
MiniPyEngine is a modular, lightweight 3D game engine and real-time rendering framework implemented in Python using Pygame and PyOpenGL. Version 2.0.0-S introduces a completely rewritten core pipeline, introducing global VRAM texture caching, optimized OBJ model batch rendering, multi-language localized menu system, and an interactive developer console with real-time variable tweaking.
The codebase of MiniPyEngine has been COMPLETELY rewritten from scratch by Ege Önder. The engine now features a modular 3D pipeline, optimized texture caching, unified vector math (Vector3, Transform), and multi-language GUI support.
| Feature / Aspect | Old Version (v1.0.2-S) | New Version (v2.0.0-S) |
|---|---|---|
| Code Architecture | Legacy structure | Completely rewritten from scratch by Ege Önder |
| License | MIT License | Apache License 2.0 |
| Rendering Modes | Fixed function only | Dual mode: fixed_function & opengl_shader |
| OBJ Model Loading | Per-polygon state changes | Batched GL_TRIANGLES compilation & display lists |
| Texture Management | Reloaded per instance | Global VRAM texture caching (TEXTURE_CACHE) |
| GUI & Localization | Basic single-language GUI | Multi-language menu (English, Turkish, German, Chinese) |
| Configuration | Static setup | Dynamic INI/CFG parser with runtime key rebinding |
| HUD & Font System | Uncached redraws | High-performance OpenGL texture font caching |
- Complete Codebase Re-architecture: Clean, modular structure (
Engine.py,MapLoader.py,Main.py). - Dual Rendering Pipeline: Support for both legacy fixed-function rendering and programmable OpenGL shaders via configuration.
- Optimized OBJ / MTL Importer: Triangulated batch rendering using OpenGL display lists (
GL_TRIANGLES) to eliminate frame bottlenecks. - Global Texture Caching: Efficient VRAM memory management via
TEXTURE_CACHEavoiding duplicate GPU uploads. - Native Multi-Language Support: Built-in launcher UI localizations for English (EN), Turkish (TR), German (DT), and Chinese (CN).
- Interactive Settings & Keybindings: Dynamic resolution switcher (up to Ultra-HD presets), VSync toggle, target FPS limits, sensitivity slider, and customizable key binding configuration.
- Built-in Console & Cheats: Integrated developer console supporting
god,noclip,nojump, andnocrouchcommands with smooth animation overlays. -
-
- Auto-assigned AABB collision and gravity system for every object.
-
- Designed for FPS (first-person shooter) games.
- Uses
.objand.mtlfiles for models and textures.
(Note:.glbformat is not supported.) - Supports a wide range of resolutions:
- HD (1280×720)
- Full HD (1920×1080)
- 2K / QHD (2560×1440)
- 4K / UHD (3840×2160)
- 8K (7680×4320)
- 16K (15360×8640)
MiniPyEngine/
│ About
│ Config.cfg
│ Engine.py
│ GameMaker.py
│ Main.py
│ MapLoader.py
│
├───Maps
│ default.mpf
│
├───Maths
│ Collision.py
│ Light.py
│ Physics.py
│
├───Objects
│ ├───Ammo
│ │ │ Ammo.jpg
│ │ │ Ammo.mtl
│ │ │ Ammo.obj
│ │ │ Ammo.py
│ │ │
│ │ └───__pycache__
│ │ Ammo.cpython-311.pyc
│ │
│ ├───Crate
│ │ │ Crate.mtl
│ │ │ Crate.obj
│ │ │ Crate.png
│ │ │ Crate.py
│ │ │ crate1.png
│ │ │
│ │ └───__pycache__
│ │ Crate.cpython-311.pyc
│ │
│ ├───Cube
│ │ │ cube.py
│ │ │
│ │ └───__pycache__
│ │ cube.cpython-311.pyc
│ │
│ ├───Default
│ │ │ Player.py
│ │ │
│ │ └───Bullet
│ │ │ Bullet.jpg
│ │ │ Bullet.mtl
│ │ │ Bullet.obj
│ │ │ Bullet.py
│ │ │
│ │ └───__pycache__
│ │ Bullet.cpython-311.pyc
│ │
│ ├───Floor
│ │ │ Floor.png
│ │ │ Floor.py
│ │ │
│ │ └───__pycache__
│ │ Floor.cpython-311.pyc
│ │
│ ├───Gun
│ │ │ Gun.mtl
│ │ │ Gun.obj
│ │ │ Gun.png
│ │ │ Gun.py
│ │ │
│ │ └───__pycache__
│ │ Gun.cpython-311.pyc
│ │
│ ├───TexturedCube
│ │ │ TexturedCube.py
│ │ │
│ │ └───__pycache__
│ │ TexturedCube.cpython-311.pyc
│ │
│ └───Walls
│ │ longwall.png
│ │ longwall2.png
│ │ Walls.py
│ │
│ └───__pycache__
│ Walls.cpython-311.pyc
│
├───Shaders
├───Sounds
│ Damage.mp3
│ Dead.mp3
│ Menu.mp3
│ Shot.mp3
│
└───Textures
└───Main
Main.png
- OS: Windows 10 / Linux (Ubuntu 18.04+)
- Python: 3.8+
- CPU: Dual-core 2.0 GHz
- RAM: 80 MB (in-game usage)
- GPU: Integrated GPU with OpenGL 3.3 support
- Storage: 50 MB free
- Dependencies:
pygame,PyOpenGL,numpy
- Clone or download the repository:
git clone https://github.com/EgeOnderX/MiniPyEngine.git
cd MiniPyEngine
- Run the launcher:
python Main.py
MiniPyEngine uses .mpf (MiniPyEngine Map File) to construct level geometry dynamically at runtime.
- ObjectType: Name registered in
MapLoader.py(TexturedCube,Crate,Ammo,Gun,Floor,Walls,Cube). - Position: X, Y, Z coordinates in world space.
- Rotation: Rotation angles in degrees along X, Y, Z axes.
- Scale: Scale multipliers along X, Y, Z axes.
- Texture Path (Optional): Path to custom image texture.
# === MiniPyEngine Map Example ===
object: Floor, 0,0,0, 0,0,0, 100,1,100
object: Walls, 0,5,-50, 0,0,0, 100,10,1
object: Walls, 0,5,50, 0,0,0, 100,10,1
object: Walls, -50,5,0, 0,0,0, 1,10,100
object: Walls, 50,5,0, 0,0,0, 1,10,100
object: Crate, 0,0.4,0, 0,45,0, 0.8,0.8,0.8
object: Crate, 3,0.4,2, 0,20,0, 0.8,0.8,0.8
object: Crate, -4,0.4,-2, 0,90,0, 0.8,0.8,0.8
object: Ammo, 2,0.1,3, 0,0,0, 0.2,0.2,0.2
object: Ammo, 2.5,0.1,3.2, 0,15,0, 0.2,0.2,0.2
object: Gun, 5,0.5,0, 0,0,0, 1,1,1
| Action | Key / Input |
|---|---|
| Move Forward / Backward | W / S |
| Strafe Left / Right | A / D |
| Run | Hold Left Shift |
| Jump | Space |
| Crouch | Left Control |
| Shoot | Left Mouse Button |
| Weapon Selection | Numbers 1–4 / Mouse Wheel |
| Open Console | F3 |
| Pause Menu | Esc |
Press F3 in-game to toggle the console:
god: Toggle God Mode (invincibility).noclip: Pass through physical collisions.nojump: Disable jump mechanics.nocrouch: Disable crouching mechanics.clear: Clear console history buffer.help: Display list of available console commands.
- @OwnderDuck
Distributed under the Apache License 2.0. See LICENSE for more information.
Copyright 2025 Ege Önder.
- Better performance and optimizations
- Enhanced graphics/rendering pipeline
- Additional platform support
- NPC system
- Expanded documentation and tutorials
If you downloaded or used this project, thank you for trying out MiniPyEngine!