Skip to content

FrosterLenin/Frostform-Engine

Repository files navigation

Frostform Engine

A simple 2D game engine built with C++ and Raylib, featuring sample games including Pong and Space Invaders.

Features

  • Core Engine Components:

    • GameObject base class for game entities
    • Collider system for collision detection
    • Background rendering
    • Circle shape utilities
    • Vector2 math utilities
  • Sample Games:

    • Pong: Classic paddle ball game with scoring
    • Space Invaders: Retro space shooter with invaders and bullets

Future Plans

In the future, I plan to integrate pure OpenGL, DirectX, and Vulkan rendering backends for enhanced graphics capabilities, cross-platform support, and add 3D rendering features.

Prerequisites

Required Tools

  • CMake (version 3.16 or higher)

  • C++ Compiler

  • Raylib Library (automatically downloaded and built via CMake FetchContent)

    • No manual installation required - handled by the build process

Building

  1. Clone or download the project

Option 1a: Manual Build

  1. Navigate to the project root directory
  2. Create a build directory:
    mkdir build  # create build directory
    cd build     # enter build directory
    
  3. Generate build files with CMake:
    cmake ..     # execute into the ./build directory
    
  4. Build the project:
    cmake --build . --config Release   # execute into the ./build directory - builds the code into the .exe into release folder
    

Option 1b: Manual Build

  1. Open the project
  2. Generate build files with CMake::
    cmake -S . -B build    # CMAKE initial build
    
  3. Build the project:
    cmake --build build    # builds the code into the .exe
    

Option 2: Using Build Script (Windows)

  1. Run the PowerShell build script from the project root:
.\scripts\build.ps1 -BuildType Release
  1. To clean and rebuild:
.\scripts\build.ps1 -Clean -BuildType Release

Running

After building, the executable will be located in build/bin/Release/. Run the game engine to start with the default game, or modify the code to select different games.

Project Structure

  • include/ - Header files for engine components and games
  • src/ - Source files for implementation
  • build/ - Build artifacts (generated by CMake)
  • scripts/ - Build and utility scripts
  • CMakeLists.txt - CMake build configuration
  • README.md - Project documentation
  • CHANGELOG.md - Version history and changes
  • CONTRIBUTING.md - Guidelines for contributors
  • LICENSE - MIT license file
  • .clang-format - Code formatting configuration
  • .editorconfig - Editor configuration
  • VERSION - Current version number

Contributing

Feel free to contribute by adding new games, improving the engine, or fixing bugs. Please ensure code follows C++ best practices and includes appropriate documentation.

Greetings

I would like to express my sincere gratitude to the following:

  • Raylib – for providing a simple and powerful library for videogame programming, and to its community and developers for their continuous work and support.

  • AIV (Accademia Italiana Videogiochi) – and its teachers for their guidance, support, and for helping me build the knowledge and foundation to implement this code.

License

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

About

No description, website, or topics provided.

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors