SkillAgentSearch skills...

Scion2D

Scion2D - 2D Game Engine

Install / Use

/learn @dwjclark11/Scion2D
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

new_logo

🎮 Scion2D – A Simple 2D Game Engine for Learning and Teaching

Scion2D is a lightweight, educational 2D game engine built with the goal of learning by doing 🧠💡. It's part of my journey to understand game development from the ground up — and share everything I learn through my YouTube channel 📺✨.

This engine isn’t meant to compete with big names like Unity or Godot — and that’s okay!
It’s about exploring, building, breaking things, and growing as a developer 🚀.

Whether you're here to learn alongside me, peek at the source, or just curious about making your own engine, welcome! 👋


🛠 Why Scion2D?

  • ✅ Made with ❤️ for education
  • 🎓 Teach what I learn, and learn what I teach
  • 🎮 Build real 2D games from scratch
  • 💬 Collaborate, share ideas, and grow together

📖 Documentation

⚠️ Active Development Notice: This engine and editor are currently under active development. The documentation is still a work in progress and will not be up to date. Scion2D Docs

🚀 Features

  • Cross-Platform: Builds on Windows and Linux. Currently Mac is not supported.
  • Modern C++20: Use of modern c++ standards and functionality.
  • Integrated Tilemap Editor: Ability to create tilemaps, create game objects, and more.

Hub

scionhub


Scion Editor

neweditorpic


Build


Requires CMake 3.26 and vcpkg

Get VCPKG:

git clone https://github.com/microsoft/vcpkg
./vcpkg/bootstrap-vcpkg.bat -disableMetrics

Make sure the following environment variables are set:

VCPKG_ROOT=[path_to_vcpkg]
VCPKG_DEFAULT_TRIPLET=x64-windows
  • Windows

    Add the following line in your Path environnment variable:

    <path_to_vcpkg_installation_folder>
    

    Open a terminal and type the following:

    vcpkg integrate install
    vcpkg integrate powershell
    
  • Linux

    Edit your profile's bashrc file:

    nano ~/.bashrc
    

    Add the following lines at the end:

    export PATH=<path_to_vcpkg_installation_folder>:$PATH
    export VCPKG_ROOT=<path_to_vcpkg_installation_folder>
    export VCPKG_DEFAULT_TRIPLET=x64-linux
    

    Apply changes:

    source ~/.bashrc
    

    Open a terminal and type the following:

    vcpkg integrate install
    vcpkg integrate bash
    

Install dependencies

  • Windows
    vcpkg install fmt glm entt glad soil2 sdl3 sdl3-image lua sol2 stb tinyfiledialogs rapidjson libzippp tinyxml2
    
  • Linux[debian based]
    sudo apt install python-jinja2 autoconf automake libtool pkg-config libibus-1.0-dev
    
    • if[Xorg]
      sudo apt install libx11-dev libxft-dev libxext-dev
      
    • if[Wayland]
      sudo apt install libwayland-dev libxkbcommon-dev libegl1-mesa-dev
      
    • Optional but good practice
      sudo apt install build-essential
      
    vcpkg install fmt glm entt glad soil2 sdl3 sdl3-image lua sol2 stb tinyfiledialogs rapidjson libzippp tinyxml2
    

Clone the repository

git clone https://github.com/dwjclark11/Scion2D.git
cd Scion2D
cmake -S . -B build

Use the built-in OpenGL debugger

Note: this requires a graphics adapter with OpenGL version >= 4.3 capabilities.

In Scion2D/CMakeLists.txt:

  • Set the variable SCION_OPENGL_DEBUG_CALLBACK to ON.
  • Optionnaly, set the variable SCION_OPENGL_DEBUG_FORWARD_COMPATIBILITY to ON in order to enable warnings about deprecated OpenGL functions.

Activate the debugger in your code as soon as you have a valid OpenGL context made current:

  • Scion::Rendering::OpenGLDebugger::init().

  • Optionnaly, you can opt out a list of warning wy doing the following:

    std::vector<unsigned int> ignore{ 1281, 131169, 131185, 131204, 31218 };
    Scion::Rendering::OpenGLDebugger::init( ignore );
    
  • To allow the debugger to break, call Scion::Rendering::OpenGLDebugger::breakOnError( true/false ) and/or Scion::Rendering::OpenGLDebugger::breakOnWarning( true/false ).

  • To ignore a specific warning, call Scion::Rendering::OpenGLDebugger::push( Id ).

  • To reinstate, call Scion::Rendering::OpenGLDebugger::pop( Id ).

  • To set the severity level, call Scion::Rendering::OpenGLDebugger::setSeverityLevel( Scion::Rendering::OpenGLDebuggerSeverity::Disable/Notification/Low/Medium/High ).

Force the discrete GPU on Optimus laptops

In Scion2D/CMakeLists.txt:

  • Set the variable SCION_OPENGL_FORCE_DISCRETE_GPU to ON. Note: Ids can differ between platforms or drivers. Note for linux users: this is currently working only on nVidia GPUs.

🎯 Supported Platforms

| Platform | Compiler | Status | | -------- | ---------- | ------------------ | | Windows | MSVC 2019+ | ✅ Fully Supported | | Windows | MinGW/GCC | 🔧 To be tested | | Linux | GCC 10+ | ✅ Fully Supported | | Linux | Clang 12+ | 🔧 To be tested |

  • Linux GCC build has warnings but builds successfully.

📝 License

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

🙏 Acknowledgments

This project would not be possible without the help of all the contributors, the motivation to keep working forward through the wonderful comments and supporters from my YouTube Channel. Also from all the wonderful open source projects that I have been able to use in the creation of the engine.

Open Source Dependencies

Check out these amazing open source projects that we are using in the engine. Make sure to give them all a star! for all of their amazing work.

  • EnTT - Fast and reliable Entity Component System.
  • SDL3 - a cross-platform library that provides an abstraction layer for computer multimedia hardware components.
  • SDL3_mixer - An audio mixer that supports various file formats for Simple Directmedia Layer.
  • Dear ImGui - Immediate mode GUI for C++.
  • Box2D - 2D physics engine for games.
  • GLM - Mathematics library for graphics software.
  • RapidJSON - Fast JSON parser and generator.
  • sol2 - C++ Lua binding library.
  • stb - Single-file public domain libraries.
  • Lua - Powerful, efficient scripting language.
  • tinyfiledialogs - Cross-Platform Native dialog library for WINDOWS MAC OSX GTK+ QT CONSOLE Official.
  • Libzippp - C++ wrapper around the libzip library.
  • tinyxml2 - TinyXML2 is a simple, small, efficient, C++ XML parser that can be easily integrated into other programs.
  • FMT - A modern formatting library
  • Tracy Profiler - A real time, nanosecond resolution, remote telemetry, hybrid frame and sampling profiler for games and other applications.

Thank you to all the contributors and maintainers of these projects! ❤️

Related Skills

View on GitHub
GitHub Stars171
CategoryDevelopment
Updated3d ago
Forks26

Languages

C++

Security Score

95/100

Audited on Mar 25, 2026

No findings