Skip to content

ravilkooo/SunshineEngine

Repository files navigation

Contributors Forks Stargazers Issues


Logo

Sunshine Engine

Game Engine
Explore the docs »

View Demo · Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Getting Started
  3. Usage
  4. Roadmap
  5. Contributing
  6. License
  7. Contact
  8. Acknowledgments

About The Project

2026-01-23_14-35

Sunshine Engine is a 3D game engine built with C++.

Core Features

Graphics

  • Deferred rendering system with multiple render passes
  • Support for meshes, textures
  • Particle system with compute shaders
  • Shadow mapping and lighting
  • Debug visualization (perception radii, emitters, icons)

Physics

  • Jolt Physics integration for collision detection and rigid body dynamics
  • Physics components on game objects

Scripting

  • Lua integration via Sol2 for game logic
  • Component-based scripting system
  • Lua bindings for engine systems (camera, input, perception, physics,...)

Audio

  • FMOD integration for sound playback and management

Game Objects & Components

  • GameObject-Component architecture
  • Built-in components: Transform, Render (hidden), Mesh, Physics, Lua, Perception, Behaviour
  • Player object with camera control and input systems
  • JSON serialization for scenes and objects

AI & Perception

  • Perception component for NPC awareness (sight, hearing)
  • Behavior tree system via Lua
  • Debug visualization of perception radii

Editor

  • SunshineEditor - ImGui-based world editor
  • Scene management and object editing
  • Content browser
  • Properties panel for game objects
  • Camera preview with miniature viewport

Input System

  • Robust input manager with edge detection (pressed/released/held)
  • Support for keyboard and mouse
  • Key-to-Lua-function mapping for player controllers

Architecture

  • SunshineEngine (LIB) - Core engine systems
  • SunshineEditor (EXE) - Editor application
  • Projects folder - Game projects using the engine
  • Modular rendering with render passes and techniques

The engine is designed for indie game development with a focus on scripting-driven gameplay.

(back to top)

Built With

  • C++
  • DirectX

(back to top)

Getting Started

Prerequisites

  • CMake (3.20+)
  • Visual Studio 2022 or JetBrains Rider

Installation

  1. Clone the repo

    git clone https://github.com/ravilkooo/SunshineEngine.git
  2. Configure projects using CMake

    Option 1

    Run configure_solution.bat

    Option 2

    Or open cmd in repo folder and run this commands:

    mkdir build
    cd build
    cmake .. -G "Visual Studio 17 2022" -A x64
  3. Open project Sunshine.sln

  4. Build ALL_BUILD (see in CMakePredefinedTargets)

  5. Copy fmodL.dll file to build: from $RepoFolder$\ThirdParty\FMOD\api\lib\x64 to $RepoFolder$\build\bin\Debug

  6. Copy fmod.dll file to build: from $RepoFolder$\ThirdParty\FMOD\api\lib\x64 to $RepoFolder$\build\bin\Release

  7. 'Set as Startup Project' on SunshineEditor (VS 2022)

  8. Run Editor in Debug or Release configuration

(back to top)

Usage

Make simple games with our Sunshine Engine!

Link to wiki: https://github.com/ravilkooo/SunshineEngine/wiki

Link to videoguide: YouTube

VK

(back to top)

Roadmap

  • Add Graphics module
  • Add Physics and Collision module (Jolt)
  • Add audio module (fmod)
  • Lua integration
  • World Editor
  • PlayerController
  • Perception system
  • Behavior action-pattern system
  • Navigation mesh

See the open issues for a full list of proposed features (and known issues).

(back to top)

Contributing

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

(back to top)

Top contributors:

contrib.rocks image

License

(back to top)

Contact

Ravil - ravilka.zftsh@yandex.ru

Maria20Maria20

Project Link: https://github.com/ravilkooo/SunshineEngine

(back to top)

Acknowledgments

(back to top)

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •