Harmony Engine

An entirely hand written, free and open source 2D game engine and editor.

Download Latest Read Documentation

Harmony Engine comprises of two projects

HyEditor

Editor

Powerful WYSIWYG Editor

A single visual editor tool to manage assets, create prefabs, and assemble entities. Entities can be animated on a dope sheet timeline and export as code-ready C++ classes.

Automated Build Process

Automated C++ build process

Manages CMake project generation under the hood. Easily manage source files, dependencies, and multi-platform builds. Fully automate the Emscripten pipeline when deploying to web.

Tile Editor

Powerful Tile Editor

Create orthogonal, isometric, and hexagonal TileSets with infinite-spanding multi-layered TileMaps. Tiles can hold info like auto-tiling and collision to quickly create ready-to-go levels and worlds.

Asset Pipeline

Asset Pipeline

All asset management tasks from importing, iteration, replacing, to in-engine. Very efficient atlas packing and utilization, bitmap fonts, audio banks, tilesets, and Spine support.

HyEngine

Cross-Platform Support

Cross-Platform Support

Written in platform independent C/C++. Highly compatible OpenGL/WebGL rendering with multiple window support. Easily build for PC or the web browser.

Code Icon

Programmer-First API Design

A clean intuitive C++ API shared across all nodes and entities. "Animation Floats" expose easy tween/easing and callbacks on transformations and properties.

Deterministic Game Loop

Deterministic Game Loop

Optionally throttle game update frequency independently to the render framerate. Optimal networking conditions, replay-systems, and reproducible debugging.

Scene Management & World Streaming

Scene Management & World Streaming

Programmatically assemble instances of prefabs into entities that can represent game states, menus, and level design. Assets automatically stream in/out based on controlled prefab usage.

🛠 Technologies Used

Engine OpenGL & WebGL Box2D OpenGL Mathematics (GLM) nothings/stb miniaudio GLFW (Graphics Library Framework) S nlohmann JSON Rapid JSON
Editor Qt6 FreeType rougier/freetype-gl xiph libogg xiph libvorbis
Build System CMake Emscripten MSVC (Visual Studio) Clang GCC (GNU Compiler Collection)
Optional
Extensions
Import Spine 2D skeletons into HyEditor, configure animation states, and blend/mix at runtime. Use ICU (International Components for Unicode) to assist in localization formatting.

Harmony Engine is fully self-authored with handcrafted code from over a decade. I kept the following principles throughout its development:
I hope Harmony has benefited and enriched your game endeavours! Your support enables me to spend more time enhancing and maintaining this project.
Support Development