The Sophia Game Engine is a 2.5D game engine written in C++17 and OpenGL 4.1.
Development is happening in branches.
First and foremost, this is meant to be a learning project, so while I'm striving towards the below goals, learning new things trumps being useful for the time being. Therefore, it is unlikely that Sophia will be useful as a production engine for making real games for now.
Sophia takes ideas and influences from many things and places:
- Godot's scene tree
- Unity's new Entity Component System
- Octopath Traveller's graphics style
- Artificial Intelligence for Games, GameAI Pro and Left4Dead's AI Director
Sophia aims to combine concepts and ideas from the above influences into a coherent, flexible, yet performant whole. To this end, Sophia aims to combine a high-performance and flexible Entity Component System (based on EnTT) with the convenience of a tree hierarchy of game objects, with all of the supporting logic and systems for powerful AI (not just for controlling NPC's, but also for controlling game flow and narrative), physics and editing tools (most game data is described in YAML files, making it easy to both edit by hand and read/write by tooling). The renderer is designed to be relatively modern (either deferred rendering or forward+ or a hybrid, we will see), using modern OpenGL (4.1), hand-crafted for an Octopath Traveller-inspired 2.5D fixed-camera-3D environment with 2D billboarded sprite characters and objects.
On the tooling front, Sophia aims to have a straightforward and consistent workflow, with a good, consistent user experience. UX is very important and shouldn't be an afterthought.
The goal is to support Windows, Linux and Mac (possibly iOS in the future, although this would require either an OpenGL ES or Metal renderer).
All with an open source license that doesn't restrict what you can do.
Engine Dependencies:
- OpenGL 4.1
- EnTT - Entity Component System (MIT License)
- SDL2 - Windowing & Input (ZLIB License)
- GLEW - OpenGL extension library (Modified BSD & MIT Licenses)
- moodycamel::ConcurrentQueue - lock-free queue (Simplified BSD License)
- YAML-cpp - YAML parser (MIT License)
- GLM - OpenGL Mathematics library (The Happy Bunny/Modified MIT License)
- spdlog - Fast logging library (MIT License)
- LuaJIT - Lua bindings and JIT runtime (MIT License)
- Bullet - Physics engine (zlib License)
- FastNoiseSIMD - Library of various SIMD-optimised noise functions (MIT License, note: Simplex noise is patent-encumbered when used for texture generation)
- PhysicsFS - Library for filesystem abstraction (zlib License)
- PhysFS++ - C++ wrapper for PhysicsFS (zlib License + notes)
- EASTL - Alternative to C++ Standard Library, optimised for games (Modified BSD License (3-Clause BSD license)) - Optional dependency
Editor Dependencies:
Ever since working with Max/MSP many years ago, I've felt that visual programming is an amazing way of writing some types of programs, but (at least at the time), Max was too limited to be of general purpose use. Other game engines have demonstrated the usefulness and ease-of-use of visual scripting, but their programming models were never satisfactory to me. The goal with Sophia's visual scripting is to take the best bits of Max, sprinkle in my own pixie dust and make it a first-class citizen and viable means of developing Sophia-based games. The goal is that the visual language will be interpreted during development, but translated to C (and compiled into a shared object) during export, providing both ease of development and good runtime integration & performance.
Lua is also planned to be supported, for those that prefer textual programming but do not wish to use C++.
As with the design goals above, there is obviously still a loooong way to go before these goals are realised.
The Sophia game engine and all of its tools are released under the terms of the MIT License.