Releasing the Untold Engine

After five years and thousands of development hours, I’m finally releasing the Untold Engine.

What is the Untold Engine?

The Untold Engine is a 3D game engine written in C++ and Metal Graphics (API). Its small API makes it ideal for new developers to focus on learning the fundamentals of game development.

I’ve been working on this game engine for the past five years, and the beta version is finally ready.

untoldenginesquarespace.png

Untold Engine Features

The Untold Engine is still in its infancy, and it lacks many features you would find in other mature, commercial game engines.

However, my goal is not to develop the engine with the most features, but the most robust, easy-to-use game engine ideal for you to learn how video games work.

Therefore, the Untold Engine provides the following features:

  • Detailed documentation ideal for novice developers.
  • Labs to put into practice what you have learned.
  • Easy to use API.
  • 3D models ready to use (no need to look elsewhere).
  • A game template to get you developing right away.
  • Develop games for iOS devices and Macs.
  • It's free.

I hope the materials provided, gives you the opportunity to explore, learn and create your games.

What types of games can you develop with the engine?

Here are some small games created with the Untold Engine:

Game Demo 1
 
 
Game Demo 2
 
 
Game Demo 3
 
 

Check out the Untold Engine

Thanks for reading

The plans for the Game Engine

My plans for the game engine have evolved. At first, I decided to develop a game engine with the sole purpose to learn Game Engine Development.

Once the engine became stable, I started pondering whether to release the engine as an open-source project. I read a lot of books on open-source management, and I finally made a decision.

I have decided to release the engine not as a commercial tool, nor as an open-source project, but as an educational tool for you to use and learn.

However, I will not only release the game engine but also provide you with the educational resources to help you become a game developer. That is, I plan to release game development courses and hands-on projects, which I hope will be helpful to you.

We plan to release the Untold Engine and the first game development course by July 2018. The first course will introduce you to essential concepts in game development.

Throughout the year, I plan to develop two more game development courses and keep improving the engine.

Why am I releasing the engine as an educational tool?

The Untold Engine is ideal for novice developers. It is easy to use. It has a small API to remember. There is no graphical user interface to learn, and you can start rendering game characters with few lines of code. In essence, it helps you focus on learning game development concepts without the complexity found in other engines.

I want to provide you with a complete learning ecosystem; game engine, courses, game assets, all in one place.

Many game tutorials are not written with "novice developers" in mind. Some tutorials don't take the time to clarify the reasoning behind every code implementation. They don't explain the WHY behind every HOW.

I want to give novice developers a different experience. I want to provide them with everything they need in one single place. I want to create game courses, especially for them. I want to provide them with an easy-to-use game engine and give them access to game assets.

If you feel this ecosystem will benefit you, sign up below to get notified once the game engine and the game development courses are released.

The Game Engine's name

For a couple of years, I've kept the name of the engine a secret. However, I think is time for you to know its name. The name of the 3D game engine I've been developing is Untold Engine.

I came up with this name after watching the preview of a movie. I don't recall the film, but I do remember it starting by saying "The Untold Story...." At that instant, I knew that I should name my game engine Untold Engine.

The Untold Engine Logo

The Untold Engine Logo

New team member

As you can imagine, starting this new project is not going to be easy. And I'm going to need all the help possible. I will need help with accounting, finance, marketing and day to day operations.

My brother, Erick, will be joining the Untold Engine team. And will be in charge of the accounting, finance and day to day operations.

In contrast, I will be in charge of creating educational content, providing technical support and improving the Untold Engine.

Don't miss out

Visit the Untold Engine website to get notified once the Untold Engine and the game development courses are released.

Thanks for reading.

Progress Update: Game Engine Beta v0.0.10

Back in Sept 2017, I decided to port the engine from using OpenGL to Metal (Apple's Graphics Library). In all seriousness, it took me several months to finally make a decision. Part of it is that I still felt like I knew little about Game Engine Development and I didn't want to expand the scope of my project.

I was aware that Metal allows you to code once and run the same code on different devices, such as iOS, Macs, and Apple TV. But I was still on the fence. However, when I saw several games using Metal+AR (Augmented Reality) features, I was convinced that I had to port the engine to Metal.

Well, today I want to share with you the tenth beta-version of the engine, but running on a Mac:

 
 

One of the things I've always dreamed about was to be able to play a game on my Mac, with the engine I developed with a controller. I know, it may sound weird, but I've wanted to do so for a while.

The video shown below does not have the best lighting, but it shows me moving the character around using the Steelseries Nimbus controller, which I also added support in the engine:

 
 

Here is a picture of the controller if you are interested in knowing which one I used:

IMG_3264.JPG

So what's the deal with AR support? That is on my To-Do list, but I will not address it anytime soon. There are other issues I want to fix and implement. One of them is the camera.

Well, thanks for reading.

What tools do I need to develop a game engine?

In a previous post, I gave you a comprehensive list of books required to develop a game engine. I figure that you may also be interested in the tools I use to build a game engine. So I wrote this post to share with you the tools I use.

Xcode

From the start, I decided to develop a game engine compatible with Apple devices. Thus, the IDE (Integrated Development Environment) I use is Xcode.

 
Screen Shot 2018-02-04 at 10.34.49 AM.png
 

I love Xcode. I've never had any complaints about it. I've heard several people who hate this tool, but I can't relate.

Git (Terminal and GUI)

A project as complex as a game engine requires a Version Control system. My tool of choice is Git. It is simple to use, yet powerful.

I'm embarrassed to share this story, but it is true. When I started development of the game engine, back in 2013, I used Dropbox as my Version Control System. Yep, you read that right. Moreover, when I started using Git, I made the mistake of committing all changes directly into the Master branch. I never made use of Git's branching feature.

But that is the past. I learned from my mistakes. I evolved as a developer :).

 
Screen Shot 2018-02-04 at 10.32.07 AM.png
 

You can interact with Git through the terminal or the GUI. I tend to use both methods. Although using the Git GUI is a lot easier, I do recommend to learn to use Git through the terminal; It will force you to understand Git better.

Should you use the Git terminal or GUI?

BeeApp

I enjoy a minimalist lifestyle. And the BeeApp suits me perfectly. BeeApp keeps track of your Git issues. It allows you to add an Issue to Git, change its tags and add comments right from the GUI. The app sorts your Issues and assigns them to a particular list depending on their labels.

Here is a screenshot of my issues sorted in Bee.

 
Screen Shot 2018-02-04 at 10.42.57 AM.png
 

I don't have to log into my Github account every time I want to update the progress of an issue or lose track of which item to work on next. I love this app. It combines the beauty of Todoist and Git Issues.

Sublime Text

Oh, Sublime Text, what a beauty you are.

To export 3D models into a game engine requires the development of a Digital Asset Loader (DAL). The DAL's primary duty is to read the attributes of the 3D model (vertices, Normal vectors, UVs, etc.) and export it into a file. The game engine then reads this file and renders the 3D model.

 
Screen Shot 2018-02-04 at 10.30.00 AM.png
 

A Blender-Python script is used to read and export the model's attribute. And Sublime Text's beautiful aesthetics makes writing the DAL a pleasure.

Before Sublime Text, I used Eclipse, PyCharm and Blender's script editor, but none compare to Sublime Text.

Blender

Believe it or not, game engine development does not mean you spend 100% of your time coding; there is some artwork involved. 75% of my time is spent coding in C++. The other 25% is spent modeling 3D characters and writing Blender-Python scripts in Blender. If you are curious about this fact, read the following article.

The tool I use to model 3D characters is Blender 3D. Blender 3D is a modeling software used by game artists.

1456325938285.png

There are other modeling 3D tools on the market. However, Blender is free, open-sourced, and there is a massive community around it. Moreover, there are plenty of youtube tutorials; which is very helpful when you are starting out.

Hope this helps

Progress Update: Game Engine Beta v0.0.9

The last update I gave on the game engine was back in Nov 2017. A lot of improvement has occurred since then. I fixed over 15 bugs and enhanced the Collision Detection System and the Digital Asset Loader. Below is a video showing beta-version v0.0.9 of the game engine.

 
 

Improving the GJK

I have mentioned before that the collision detection system is the most complicated aspect of a game engine. Interestingly, the algorithm is quite simple. However, the complication arises from the several boundary conditions that you need to account.

The Collision Detection system worked fine between objects of similar size. For disproportionate size objects, i.e., terrain and a cube, the collision algorithm would fail 50% of the time.

There were instances where detection happened way too early or too late. Other cases were even weirder. For example, merely changing the location of the cube would cause the detection to fail. I recall an instance where changing the orientation of the cube would cause a failure.

I recall spending most of my Thanksgiving and Christmas holiday working on the issue stated above. It took me over two months to improve the collision detection between disproportionate objects. It is not perfect, but it works within constraints.

What I learned from these two months working on improving the engine, is that the GJK algorithm has several boundary conditions that your code needs to account. In the previous version of the engine, I was not considering these boundary conditions; thus the reason for the early or late detections.

If you find yourself in this situation, I recommed to take a look at these books:

Improving the Digital Asset Loader

I also improved the Digital Asset Loader (DAL). If you don't know what a DAL is, it is merely a script that loads 3D models into the engine. Previously, the script would output rendering data directly to a terminal. I would copy and paste this data into an engine file.

I improved the script to write directly to the engine file. Not only that, but you can now choose what you want to import. i.e., just 3D models, 3D animations, light, or a combination of 3D models with animations.