An easy to use, Open-Source, 3D game engine for iOS/macOS game development.
“A Swift-based 3D game engine designed for simplicity and creativity on macOS and iOS.”
The Untold Engine is an open-source 3D game engine under active development, designed for macOS and iOS platforms. Written in Swift and powered by Metal, its goal is to simplify game creation with a clean, intuitive API. While the engine already supports many core systems like rendering, physics, and animation, there’s still much to build and improve.
The Untold Engine is a work in progress, with ambitious goals to:
The engine is far from complete, but with every iteration, it gets closer to being an amazing tool for developers. By trying it out, contributing, or sharing your feedback, you can help make the Untold Engine better for everyone.
Author: Harold Serrano
The Untold Engine is a game engine designed to be integrated into your game projects. It is distributed as a Swift Package using Swift Package Manager (SPM) for easy integration and maintenance.
There are two primary ways to use the engine:
To begin using the Untold Engine, you’ll need:
If you want to explore, modify, or contribute to the engine, you can run it independently with its built-in demo features. Follow the step-by-step guide in Running the Untold Engine.
To use the Untold Engine in your own game, you must add it as a Swift Package Dependency in your project. Follow the step-by-step guide in Create a Mac OS Game.
I’ve designed three different ways for you to Get Started with the Untold Engine. Whether you just want to explore or are ready to make your own game.
I have uploaded video tutorials to help you get started with the Untold Engine. Enjoy
The Untold Engine offers an intuitive API for game development. Here’s a quick look:
let stadium = createEntity()
setEntityMesh(entityId: stadium, filename: "stadium", withExtension: "usdc")
translateBy(entityId: stadium, position: simd_float3(0.0, 0.0, 0.0))
let player = createEntity()
setEntityMesh(entityId: player, filename: "redplayer", withExtension: "usdc", flip: false)
setEntityAnimations(entityId: player, filename: "running", withExtension: "usdc", name: "running")
changeAnimation(entityId: player, name: "running") // Start animation
setEntityKinetics(entityId: player) // Enable Physics System
The Untold Engine is powered by modular systems that simplify game development. Click on the links to get started.
Registration-ECS System: Handles the creation of entities and components
Rendering System: Render 3D models with support for PBR and custom shaders.
Transform System: Manage entity positions, rotations, and scales.
Animation System: Add life to your models with skeletal animations.
Physics System: Simulate gravity, forces, and movement.
Input System: Capture keyboard and mouse interactions.
Steering System: Implement intelligent behaviors like path-following.
Scenegraph: Enables parent-child relationships between entities
Shaders: Add or modify shaders to fit your game’s stye.
Importing Assets: Importing assets into your game project
Here are some examples of what the Untold Engine can do, showing its progress and current features in action.
See the open issues for a list of proposed features (and known issues).
Reach out to the maintainer at one of the following places:
If you want to say thank you or/and support active development of Untold Engine:
Together, we can make Untold Engine better!
We welcome contributions to the Untold Engine! Here’s how you can help:
See the Contribution Guidelines for details.
This project is licensed under the LGPL v2.1.
For more details, see the full license text here.