Initial documentation for the Untold Engine

Hi guys,

Since releasing the Untold Engine, I've been swamped writing its documentation. Honestly, writing documentation takes a long time, but is those things, that even though we hate to do it, it must be done.

I've broken down the documentation into three sections:

  • Fundamentals
  • Tutorials
  • User's Guide

Fundamentals

In this section, I provide an overview of how the Untold Engine works. I explain every component and provide a lot of illustrations. I also provide labs which should reinforce your understanding of the Untold Engine.

collisiondetection.jpg

Tutorials

In the Tutorial section, I plan to teach you HOW to use the engine so you can create your games. As of today (8/12/18), I have written only one tutorial. It teaches you how to create a character and control it using a joystick.

tut101.gif

User's Guide

The user's guide provides a quick reference to the functionality of the Untold Engine. For example, it gives examples of how to render and translate a character. It also shows how to link an animation, apply external forces and enable collisions.

collisionlab6a.gif

It has only been two weeks since I released the Untold Engine. I'm aware that the amount of documentation currently available is not enough. But trust me, I'm working hard on adding documentation daily.

Click here to review the documentation of the engine.

Don't forget to follow the engine @untoldengine

How easy is it to use the Untold Engine?

I'm the type of person that needs to know how things work at a deeper level. When dissecting a program, code, etc., my normal behavior is to start removing unnecessary code until only the minimum amount of code remains. Most of the time, when this is not possible, I try to build the piece of software from the bottom up. It is my nature as an engineer. I am not only interested in what IT can do, but I also need to know how it works.

This behavior carries over when I have to use tools that hide the API from the developer and forces me to use a Graphical Editor. It irritates me because I want to have full control. I want to control and know what is happening at any point in time. I am not against at Graphical Editors. I do find them very useful, but when I'm learning something, I want "Under-the-hood" access.

Therefore, when I started developing the Untold Engine, I opted for creating an API that is small, simple-to-use, and more importantly gives you the opportunity to know what is happening under-the-hood.

Let me show you the simplicity of the Untold Engine Framework.

Creating a 3D Character

Let's say you want to render the following character:

 
astronautlab1.png
 

The first thing you need to do is to create a Game Object like this:

//Line 1. Create an instance of U4DGameObject type
U4DGameObject *myAstronaut=new U4DGameObject();

Once created, then you need to provide the object with its attributes and textures like this:

//Line 2. Load attribute (rendering information) into the game entity
// name of character: "astronaut"
// name of attributes file: "charactersAttributes.u4d"
if (myAstronaut->loadModel("astronaut","charactersAttributes.u4d")) {

    //Line 3. Load rendering information into the GPU
    myAstronaut->loadRenderingInformation();

}

And finally you add it to the scenegraph:

//Line 4. Add astronaut to the scenegraph
addChild(myAstronaut);

And that is it.

Translating & Rotating a character

Translating a character

To move a character around, all you need to do is call either the translateTo() or translateBy() methods.

The translateTo() method will translate the character to a particular location. While the translateBy() method moves the character by a particular amount.

For example, the snippet below shows how to translate the character to location (-2.0,1.0,2.0).

//Line 5. Translate the game object to location (-2.0, 1.0, 2.0)
myAstronaut->translateTo(-2.0, 1.0, 2.0);
 
translatToExample.png
 

Rotating a character

Rotating a character is equally as simple. The Untold Engine provides two methods: rotateTo() and rotateBy().

The rotateTo() method rotates a character to a fixed orientation. Whereas, the rotateBy() method rotates the character by a certain angle.

For example, to rotate an entity to an orientation of 45 degrees about the y-axis, you use the method: rotateTo(), as shown below:

//Line 5. Rotate the character 45 degress about the y-axis
myAstronaut->rotateTo(0.0, 45.0, 0.0);
 
rotateToExample.png
 

Animating a 3D character

The Untold Engine makes animating a character equally as simple. Let's say you want to render the following walking animation:

walkingAnimationinblender.gif

First, you would create an Animation Object, as shown below:

//Line 3. Create an Animation object and link it to the 3D model
walkAnimation=new U4DAnimation(myAstronaut);

Then, you need to load the animation data into the animation object, as shown below:

//Line 4. Load animation data into the animation object
if(myAstronaut->loadAnimationToModel(walkAnimation, "walking", "walkinganimation.u4d")){

    //If animation data was successfully loaded, you can set other parameters here. For now, we won't do this.

}

Finally, you simply play the animation object.

//Line 7. Check if the animation object exist and play the animation
if (walkAnimation!=nullptr) {

    walkAnimation->play();

}
walkinganimation.gif

That is how easy it is to use the Untold Engine.

Of course, aside from the simple API, I also provide in-depth articles that explain what is happening under-the-hood.

Check out the engine at Untold Engine. It's free.

Thanks for reading.

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.