Table of Contents
Sunshine Engine is a 3D game engine built with C++.
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
- 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.
- C++
- DirectX
- CMake (3.20+)
- Visual Studio 2022 or JetBrains Rider
-
Clone the repo
git clone https://github.com/ravilkooo/SunshineEngine.git
-
Configure projects using CMake
Option 1
Run
configure_solution.batOption 2
Or open cmd in repo folder and run this commands:
mkdir build cd build cmake .. -G "Visual Studio 17 2022" -A x64
-
Open project
Sunshine.sln -
Build
ALL_BUILD(see in CMakePredefinedTargets) -
Copy fmodL.dll file to build: from
$RepoFolder$\ThirdParty\FMOD\api\lib\x64to$RepoFolder$\build\bin\Debug -
Copy fmod.dll file to build: from
$RepoFolder$\ThirdParty\FMOD\api\lib\x64to$RepoFolder$\build\bin\Release -
'Set as Startup Project' on
SunshineEditor(VS 2022) -
Run Editor in Debug or Release configuration
Make simple games with our Sunshine Engine!
Link to wiki: https://github.com/ravilkooo/SunshineEngine/wiki
Link to videoguide: YouTube
VK
- 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).
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!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Ravil - ravilka.zftsh@yandex.ru
Project Link: https://github.com/ravilkooo/SunshineEngine
