A modern 3D game engine and prototype game built with C++ and custom engine architecture, featuring JavaScript scripting support and professional audio integration.
Protogame3D is a comprehensive 3D game development project that demonstrates modern game engine architecture patterns. The project serves as both a functional game prototype and a showcase of custom engine development techniques, including modular design, scripting integration, and professional audio systems.
- Custom 3D Engine: Built-in game engine with modular architecture
- JavaScript Integration: Dynamic scripting system for gameplay logic
- Professional Audio: FMOD audio engine integration for immersive sound
- Modern Rendering: Support for 3D models, shaders, and texture mapping
- Entity System: Flexible entity-component architecture
- Resource Management: Efficient loading and management of game assets
- Cross-Platform: C++ codebase with x64 architecture support
- Visual Studio Integration: Complete solution and project files
- Debug/Release Builds: Optimized build configurations
- Git Submodules: Modular dependency management
- Configurable Settings: XML-based game configuration system
Protogame3D/
├── Code/
│ └── Game/ # Core game logic
│ ├── Game.cpp/hpp # Main game class
│ ├── Player.cpp/hpp # Player system
│ ├── Entity.cpp/hpp # Entity management
│ ├── Prop.cpp/hpp # Game objects/props
│ ├── JavaScriptManager.* # Scripting system
│ ├── Framework/ # Game framework
│ └── Subsystem/ # Engine subsystems
├── Run/
│ ├── Data/ # Game assets
│ │ ├── Audio/ # Sound effects and music
│ │ ├── Fonts/ # Typography resources
│ │ ├── Images/ # Textures and UI graphics
│ │ ├── Models/ # 3D model assets
│ │ ├── Scripts/ # JavaScript game scripts
│ │ ├── Shaders/ # Rendering shaders
│ │ └── GameConfig.xml # Game configuration
│ ├── Protogame3D_Debug_x64.exe # Debug build
│ ├── Protogame3D_Release_x64.exe # Release build
│ └── fmod*.dll # FMOD audio libraries
├── Engine/ # Custom game engine (submodule)
├── Docs/ # Project documentation
└── Protogame3D.sln # Visual Studio solution
- Visual Studio 2019/2022 with C++ development tools
- Git for version control and submodule management
- Windows 10/11 (x64)
-
Clone the repository with submodules:
git clone --recursive https://github.com/yourusername/Protogame3D.git cd Protogame3D -
Update submodules (if needed):
git submodule update --init --recursive
-
Open in Visual Studio:
start Protogame3D.sln
-
Build the solution:
- Select your desired configuration (Debug/Release)
- Build → Build Solution (Ctrl+Shift+B)
-
Run the game:
- Navigate to
Run/directory - Execute
Protogame3D_Debug_x64.exeorProtogame3D_Release_x64.exe
- Navigate to
The game can be customized through Run/Data/GameConfig.xml:
<GameConfig>
<WindowClose>false</WindowClose>
<screenSizeX>1600</screenSizeX>
<screenSizeY>800</screenSizeY>
<screenCenterX>800</screenCenterX>
<screenCenterY>400</screenCenterY>
</GameConfig>- Screen Resolution: Customize window size and positioning
- Window Behavior: Control window close behavior
- Graphics Settings: Adjust rendering parameters
- Audio Settings: Configure sound and music preferences
- Modular Design: Separation between engine and game logic
- Component System: Entity-component architecture for game objects
- Event-Driven: Event system for loose coupling between systems
- Resource Pipeline: Efficient asset loading and management
- Scripting Layer: JavaScript integration for rapid prototyping
- Game Class: Main game loop and state management
- Player System: Character controller and player interactions
- Entity Management: Dynamic object creation and lifecycle
- Prop System: Interactive game objects and environment elements
- JavaScript Manager: Script execution and C++ binding
- Create new classes in
Code/Game/ - Add corresponding headers and implement functionality
- Register with the main game loop in
Game.cpp - Add any required assets to
Run/Data/ - Update configuration files as needed
- FMOD: Professional audio engine for sound and music
- Custom Engine: Proprietary game engine (included as submodule)
- Rendering system with shader support
- Input handling and device management
- Resource loading and caching
- Debug rendering and tools
- Math utilities and transformations
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow existing code style and conventions
- Add appropriate comments and documentation
- Test your changes in both Debug and Release builds
- Update README.md if adding new features or dependencies
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
- Engine Repository: Custom Game Engine
- FMOD Audio: Official Website
- Issue Tracker: Report bugs and request features
- FMOD by Firelight Technologies for professional audio capabilities
- Custom engine development team
- Open source community for inspiration and support
Built with ❤️ using C++ and modern game development practices