Table of Contents
"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.
- Simple API: Focused on ease of use, even for those new to game development.
- Core Systems: Includes foundational systems for entity registration, rendering, physics, and more.
- Metal Integration: Leverages Apple’s graphics API for efficient rendering.
The Untold Engine is a work in progress, with ambitious goals to:
- Expand physics capabilities with collision detection.
- Enhance PBR rendering for more realistic visuals.
- Add new features to make game development a breeze.
- For Learners: A great way to explore game development with an engine that prioritizes simplicity.
- For Game Developers: An opportunity to contribute to an open-source project and shape its future.
- For Apple Developers: A Swift and Metal-based engine that feels at home on macOS and iOS.
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:
- Running the Engine Standalone – Ideal for contributors and developers who want to explore, modify, or contribute to the engine itself. This mode allows you to test the engine independently using its built-in demo assets and functionalities.
- Integrating the Engine into Your Game Project – Perfect for game developers who want to build a game using the engine. This requires adding the engine as a Swift Package Dependency in a game project.
To begin using the Untold Engine, you’ll need:
- An Apple computer.
- The latest version of Xcode, which you can download from the App Store.
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
- How to Install the Untold Engine: Quick Start Guide
- Getting Started with the Untold Engine: A Simple Beginner's Guide
- Untold Engine Onboarding: The Best Learning Path for Beginners
- Rendering with the Untold Engine - A Beginner’s Guide
- Animating in the Untold Engine - A Beginner’s Guide
- Moving Characters in the Untold Engine: A Beginner's Guide
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).
- Top Feature Requests (Add your votes using the 👍 reaction)
- Top Bugs (Add your votes using the 👍 reaction)
- Newest Bugs
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:
- Add a GitHub Star to the project.
- Tweet about the Untold Engine.
- Write interesting articles about the project on Dev.to, Medium or your personal blog.
Together, we can make Untold Engine better!
We welcome contributions to the Untold Engine! Here’s how you can help:
- Fix Bugs: Review open issues labeled help wanted.
- Improve Features: Enhance existing systems, such as adding collision detection to the physics system.
- Create Tutorials: Write how-to guides or share examples to help other developers.
- Expand the Engine: Suggest and implement new features like AI systems or advanced shaders.
See the Contribution Guidelines for details.
This project is licensed under the LGPL v2.1.
- Developing a Game: You can use the Untold Engine to build your game without needing to open source your game’s code.
- Modifying the Engine: If you make changes to the engine itself, those changes must be open-sourced under the LGPL v2.1.
For more details, see the full license text here.