Skip to content

EngineDaemon/Protogame3D

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

91 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Protogame3D

A modern 3D game engine and prototype game built with C++ and custom engine architecture, featuring JavaScript scripting support and professional audio integration.

๐ŸŽฎ Overview

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.

โœจ Features

Core Engine Features

  • 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

Development Features

  • 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

๐Ÿ—๏ธ Project Structure

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

๐Ÿš€ Getting Started

Prerequisites

  • Visual Studio 2019/2022 with C++ development tools
  • Git for version control and submodule management
  • Windows 10/11 (x64)

Building the Project

  1. Clone the repository with submodules:

    git clone --recursive https://github.com/yourusername/Protogame3D.git
    cd Protogame3D
  2. Update submodules (if needed):

    git submodule update --init --recursive
  3. Open in Visual Studio:

    start Protogame3D.sln
  4. Build the solution:

    • Select your desired configuration (Debug/Release)
    • Build โ†’ Build Solution (Ctrl+Shift+B)
  5. Run the game:

    • Navigate to Run/ directory
    • Execute Protogame3D_Debug_x64.exe or Protogame3D_Release_x64.exe

๐ŸŽฏ Game Configuration

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>

Configurable Options

  • 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

๐Ÿ› ๏ธ Development

Architecture Overview

  • 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

Key Components

  • 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

Adding New Features

  1. Create new classes in Code/Game/
  2. Add corresponding headers and implement functionality
  3. Register with the main game loop in Game.cpp
  4. Add any required assets to Run/Data/
  5. Update configuration files as needed

๐Ÿ“ฆ Dependencies

External Libraries

  • FMOD: Professional audio engine for sound and music
  • Custom Engine: Proprietary game engine (included as submodule)

Engine Features

  • Rendering system with shader support
  • Input handling and device management
  • Resource loading and caching
  • Debug rendering and tools
  • Math utilities and transformations

๐Ÿค Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Development Guidelines

  • 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

๐Ÿ“„ License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.

๐Ÿ”— Links

๐Ÿ™ Acknowledgments

  • 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

About

Protogame3D is a modern 3D game engine and prototype game built with C++ and custom engine architecture

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors