For the past weeks, I've been working on creating How-To videos to help you develop games with the Untold Engine. These are essential videos that should get you started. They range from adequately setting up the Untold Engine, how to render a 3D character to how to link an animation to a 3D character.

All of these videos are in my new youtube channel, and I'm also linking them in this post.

BTW, I've been doing game dev streams on Twitch. My main focus on Twitch is to develop games to track bugs and get feature ideas for the Untold Engine. Join me since I talk about how game engines work.

One of the weaknesses of the Untold Engine is the Collision Detection System. At times it fails to detect collisions and produces the incorrect collision response. Developing a stable Collision Detection System is tough. And I have realized that it can’t be taken lightly. Thus, my primary goal for 2019 is to focus solely on improving the Collision Detection System of the engine.

As you are aware, the GJK algorithm is in charge of detecting collision among convex objects. The current GJK implementation has helped several ill-Conditioned Error Bounds which I have yet to improve. For example, the engine fails to detect collisions between objects of disproportionate sizes. As another example, rotation causes the algorithm to miss detections.

Moreover, the BVH algorithm, which is in charge of parsing the space between objects, is inefficient. It is currently implemented as a “Recursive” algorithm, instead of as an “Iterative” algorithm. And The algorithm slows down after a few dozen objects.

Finally, the Sutherland-Hodgman algorithm also has flaws. Most of the time, it produces the correct Collision-Manifolds, but at times it provides the incorrect manifolds, thus affecting the collision response of the engine.

Getting Collision Detection to work is extremely complicated, especially for 3D convex objects, but I’m looking forward to improving the Collision Detection System and have a better engine by the end of 2019.

One of the reasons I'm developing mini-games is to test the Untold Engine and its user experience. This is the second mini-game I develop with the perspective of a user and have already found several issues with the API documentation, lack of explanation, and confusion. I'm glad these issues are coming out since my goal is to create an easy to use game engine.

This week I decided to develop a some-what platformer game. As the video below shows, the main character jumps from one roof to another, collecting powerups and avoiding the enemy bullets.

Let me share with you the development progression of the game.

Preparing the Scene

As usual, the first thing I did was to prepare the scene in Blender 3D. Most of the scene consists of houses and city artifacts. The main character and enemies are located on the roof of the houses. Floating on each roof are beer mugs representing powerups. I also added walking animations to the main character. Here is a screenshot of the initial game scene:

I exported the scene using the Digital Asset Exporter (DAE). The DAE extracts 3D rendering information and provides it to the Untold Engine for rendering, as shown below:

Adding Collision Behavior

The next step is to make the main character jump on top of each roof. For that to occur, I enabled collision detection between the main character and the roof of each house. This is shown below:

Enemies shooting

Next, I wanted each enemy to start shooting the main character, whenever the character is nearby them. Thus, when the character jumps from roof to roof, he is presented with bullets approaching him. At this point, the bullets do not affect the main character.

Adding Powerup effects

Powerups were then added to the game. As mentioned earlier, beer mugs represent the powerups. As the main character collects them, the Untold Engine particle system is employed, thus creating the effects shown below. Moreover, after a fixed amount of bullet hits the main character, an "I'm dead" animation is played.

Adding Health Bar

Finally, I added sprites which represent the health bar of the main character. To do so, I used an app called Texture Packer which the Untold Engine interfaces to get spritesheet data.

I also added a text object which keeps track of the number of powerups collected by the main character.

I'm going to keep developing several mini-games until the end of the year. The purpose is to improve the API User-Interface of the Untold Engine.

I wanted to write a post describing how easy it is to develop a game with the Untold Engine, the 3D game engine I developed. I wanted to create a simple mini-game that encompasses the features available in the Untold Engine.

For the first game, I decided to develop a game with one character, power-ups, and obstacles. The game design is as follows: the main character must collect all the power-ups. If the character collides with the Obstacles, the game is over. The game is shown below:

Let's go over the steps required to develop such a simple game.

Create the models and scene

I did not create the 3D models myself, (I don't have an artistic eye). Instead, I bought several 3D models from cgtrade. I then assembled the scene in Blender 3D as shown in the image below.

Once I was happy with the game scene, I proceeded to export the 3D models and scene using the Digital Asset Exporter (DAE). The Digital Asset Exporter extracts rendering information from a 3D object and provides the data to the Untold Engine.

The video below shows the 3D models in Blender 3D and the DAE being executed. Once the information is available to the Untold Engine, it is rendered on your iPhone or Mac.

Adding Walking Animation and Motion

I also created a walking animation for the character in Blender 3D. The animation is shown below:

The DAE, aside from exporting rendering information, can also import animation data. So, once the animation was ready, I used the DAE to export animation keyframes into the Untold Engine.

I also enable a controller, such as a gamepad, game controller, mouse, and keyboard, to control the movement of the main character.

As the video shows, I also added motion to the "tree trunks" that serve as obstacles in the game.

Enabling Collision Detection and Particle System

I wanted to create a visual effect whenever the main character eats a power-up. By enabling Collision Detection between the character and the powerup, I can determine whenever a collision between the two objects have occurred. Whenever such collision happens, particle systems are created. Thus, serving as visual cues.

Adding Knock-out Animation

I decided that it would be a good idea to create an additional animation that would execute whenever the Tree-Trunk hits the character. Like with the Walking animation, the Knock-out animation was created in Blender 3D. The animation is shown below.

The animation was exported with the DAE, and it runs whenever the character collides with the tree-trunk, as shown in the video below.

Adding Text

As I was playing around with the game, I realized that it would be a good idea to keep track of the powerups collected by the character.

To add text to the game, I used an app called Glyph Designer. The Untold Engine process the output from the Glyph Designer (.xml and .png files) and renders a text using the font type.

Glyph Designer

I decided to add a Text Object which displays the current number of powerups eaten.

Aside from that, the game will show a "Game Over" text whenever a tree-trunk hits the game character.

Adding a Skybox

Finally, I was not happy with the black background, so I decided to add a skybox. As you can see in the video, the skybox improves the visuals of the game.

I developed this game in parts throughout several days. However, overall it took less than three hours to develop. The hardest part was finding the right 3D models for the game. However, once I had the models, the Untold Engine made the development of the game easy.

If you are interested in developing a game using the Untold Engine, please visit our website: Untold Engine.