Untold Engine Progress

In 2013, I decided to do something beyond my intellectual abilities. Something that would require determination and commitment, something that would shake me from within. Thus, I decided to develop a Game Engine from scratch.

On July 21, 2016, after three years of hard work, I was able to complete the basic framework of the engine. It took an additional 2 years to develop a working, fully functional 3D game engine that could be used by the public.

Then on July 28, 2018, I released the game engine to the public.

Developing a game engine from scratch has been an amazing experience. Not only did it improve my coding skills, but it taught me the meaning of perseverance and consistency. I'm very proud of what I accomplished and for not giving up.

In version v0.0.10, I added official support for iOS and Mac platform. I also added support for the "Nimbus" game controller.

I share my experiences as a Game Engine Developer on Quora. Don't miss my answers: @haroldserrano


Untold Engine Capabilities

The Untold Engine is a 3D game engine written in C++ and Metal Graphics (API). The game engine is capable of rendering 3D models with textures/normal maps, Shadows, 3D model animations, Skyboxes. It contains a Digital Asset Importer used to import 3D models from Blender. Is capable of detecting collision between any convex models. It emulates physical forces such as gravity, drag, torque. It makes use of quaternions and dual quaternions for all rotations and translations. It supports fonts and sprites.


Untold Engine Documentation

The Untold Engine is an easy to use, open source, 3D game engine for iOS/macOS game development.

Getting Started




Digital Asset Exporter (DAE)

The DAE is a Blender 3D plugin tool used to extract the attributes of a 3D model. It is an open source tool designed to work with the Untold Engine. You can obtain the DAE from our Github repo.


API Documentation

beta v0.0.10


Release Notes

Beta Version v0.0.10

In this version of the engine, I added support for a wireless game controller. Since, the engine uses the Metal API, the engine is thus capable of running a game on several devices such as iOS and Mac. The video shows a small demo running on my Mac. Read More

In version v0.0.10, I added official support for iOS and Mac platform. I also added support for the "Nimbus" game controller.

Beta Version v0.0.9

The engine implements the GJK algorithm to detect collision. The Collision Detection system worked fine between objects of similar size. However, for disproportionate size objects, i.e., terrain and a cube, the collision algorithm would fail 50% of the time. It took me over two months to improve the collision detection between disproportionate objects. It is not perfect, but it works within constraints. Read More

In version v0.0.9, I enhanced the Collision Detection System and the Digital Asset Loader.

Beta Version v0.0.8

Substantial memory leaks were happening all over the engine. The leakage was something I could no longer ignore, so this month I focused on fixing this issue. I used Xcode's Instrument app to help me locate the memory leakage throughout the engine. I'm now happy to say that the engine is leakage free. Read More

In version v0.0.8 of the game engine I fixed some memory leakage issues and improved the rendering-ordering algorithm.

Beta Version v0.0.7

This month I decided to scrap the original Particle System I had written back in v0.0.4 and focused on implementing a real Particle System. As the video shows, the engine is capable of creating smoke, explosions, snow and many other particles using its new Particle System. Read More

Added particle system to the engine. The engine can generate smoke, explosions and other particle types.

Beta Version v0.0.6

These past two weeks I've been working on implementing a Frustum Culling algorithm for the engine.

The logic behind a Frustum Culling algorithm is essentially this:

"If the camera does not see the 3D model, then the engine should not render it".

Implementing this logic, allows you to have 100 models in a game, but only 10 or so many models being rendered at any time. Thus, improving the game experience. Read More

Improved the rendering efficiency of the game engine by implemented Frustum Culling + BVH tree algorithm.

Beta Version v0.0.5

In version v0.0.5, I ported the game engine from OpenGL to Apple's Metal API.

Initially, I planned to keep working on the 3D soccer game using v0.0.4 of the engine. However, I decided to port the engine once I saw an Augmented Reality demo. I realized that Augmented Reality (AR) is the future of gaming and it may be a good idea to have this feature available in the engine. However, the AR framework only works with the Metal API; it does not support OpenGL. Read More

This video shows the game engine using the Metal API for its rendering operations. The game engine no longer uses OpenGL.

Beta Version v0.0.4

In this beta version v0.0.4, I implemented a primitive particle system, thus allowing explosion effects to occur once a missile hits the asteroid. I also enabled multi-touch, this allows the spaceship to turn as it speeds up. I also set up collision filters among object types. For example, object A and object B can collide; object A and object C can collide, but any collision among object B and Object C is ignored. Read More

In this beta version v0.0.4, I implemented a primitive particle system, thus allowing explosion effects to occur once a missile hits the asteroid. I also enabled multi-touch, this allows the spaceship to turn as it speeds up. I also set up collision filters among object types. For example, object A and object B can collide; object A and object C can collide, but any collision among object B and Object C is ignored.

Beta Version v0.0.3

In this beta version v0.0.3 of the engine, animations and collision detection can work simultaneously. The BHV algorithm was improved helping the engine make better decisions when pairing up 3D models for collision detection. The MVC (Model-View-Controller) flow of information was also improved. Read More

In this beta version v0.0.3 of the engine, animations and collision detection can work simultaneously. The BHV algorithm was improved helping the engine make better decisions when pairing up 3D models for collision detection. The MVC (Model-View-Controller) flow of information was also improved.

Beta Version v0.0.2

In Beta version v0.0.2, the game engine is capable of detecting collision between any convex models. Emulates physical forces such as gravity, drag, etc. Renders shadows.

Beta Version v0.0.1

In Beta version v0.0.1, the game engine is capable of rendering 3D models with textures/normal maps, animation, skyboxes, fonts, sprites and contains a digital asset importer.


Game Engine Demo

Second Mini-Game

This is the second mini-game I developed. The purpose was the same. Basically to test the API and see where the engine needs improvement. Read More

First Mini-Game

This is the first mini-game I developed with the Untold Engine Beta v10. I developed this mini-game to experience first-hand the API. I wanted to develop a game from a developer perspective. Read More

Game Engine Demo v10

First demo I developed after the Untold Engine was released to the public.

Game Engine third demo: Soccer Mobile Game

On Jan 2017, I decided to develop a soccer game using my game engine (Beta v0.0.4). The video on the right shows the current progress of the soccer game. Read More.

Game Engine second demo (12/11/16)

This video shows the second demo of the game engine in action. The demo is a simple shooting game between the enemies (tank and airplane) and the good guy (anti-aircraft gun). As the anti-aircraft gun aims to the enemies, the camera follows the light of sight of the anti-aircraft gun. The demo makes use of the collision detection system. As the enemies are hit, the game characters are broken up into its respective children, making the illusion of an explosion. Read more

Game Engine first demo (8/22/16)

The demo is very simple. It starts off with the rocket bouncing up and down colliding with the ground. The camera is set to follow this bouncing movement. As I press the button, the rocket starts flying upwards until it collides with several asteroids. After each collision, the models respond by moving in opposite directions. After several collisions, gravity takes over the rocket and forces it to come down to the ground. The rocket bounces several times with the ground as it collides. Read more


Want to know how everything started?