Untold Engine Release Notes


Beta Version v0.0.15

  • Improved the Rendering System. An almost complete rewrite of the system was performed.

    • Removed duplication of code

    • Implemented triple buffering

    • Implemented hot-reloading for shaders

    • Implemented a G-Buffer pass

  • Implemented a Debugger class

  • Implemented a Profiler class

  • Fixed issue with the camera's first person perspective

  • Fixed an error that shows up if the Metal API Validation is enabled

  • The Flock behavior now uses the Blending method

  • Added several UI elements, although they need a lot more work.

  • Added but later removed ImGUI

  • Fixed the start condition of the Collision Detection system


Beta Version v0.0.14

  • Improved the collision-detection between different size objects.
  • Changed the name of the loader class.
  • Engine imports particle's data by reading binary files instead of xml files.
  • Improved the Frames-Per-Second rate. Got rid of micro-stuttering.
  • Implemented Group AI Steering Behaviors such as Separation, Alignment, Cohesion and Flocking.
  • Implemented a Scene Manager.
  • Implemented a Layer Manager.
  • Implemented a Shader Entity. Use for HUD Shading effects.
  • Fixed issues with the Normal Map rendering.
  • Fixed an issue with the children of 3D objects not being detected.
  • Improved the Controller Class.

Beta Version v0.0.13

  • Fixed the relative motion of the mouse.
  • A custom-binary file format was implement. The engine now imports 3D model attributes by reading binary files instead of xml files.
  • Data to GPU transmission was also improved.
  • Helper fuctions were added to the shaders.
  • The Convex Hull computation was removed. This is now computed offline in the Digital Asset Converter utility.
  • Fixed the scale backing factor for iOS devices.
  • Added support for retinas and non-retines displays on Macs
  • Fixed the Navigation Paths computed by the engine.
  • Improved the raycast class to provide access to collision parameters
  • Added global time as a uniform for the metal shaders
  • Added mouse and keyboard support
  • Implemented a Mesh Data Manager. Mainly used to support Octrees data structures in the engine

Beta Version v0.0.12

In this version, an Artificial Intelligence System was implemented in the Untold Engine. It contains several Steering Behaviors such as Seek, Arrive, Pursuit, Collision Avoidance, and Wonder. A Navigation System using the A* Pathfinder algorithm was also implemented.

3D characters are also capable of going up and down slopes.

Beta Version v0.0.11

The engine now implements a Camera System which allows the camera to behave as a First Person Camera, Third Person Camera and as a Basic Follow Camera. The Camera Culling was also improved. It now allows the developer set the desired Culling interval. Finally, the Particle System was improved to produce 3D particles.

Beta v0.0.11 Updates & Fixes

Beta v0.0.11.2

Improved

  • Improved the GJK Algorithm
    • Improved the GJK algorithm. There were several issues with the order used to test the termination condions, normal collision vector computation and closest points.
  • Collision system was having floating-point precision issues
  • Improved the Support-points affine transformation
    • The support points used for GJK were not computing the correct support points during rotation due to the implementation of an incorrect equation.

Fixed

  • Sprite-loader message was wrong
    • When loading a spritesheet, the sprite loader success message showed up as: "Font Asset ... loaded successfully". It should say "Sprite Sheet Asset... loaded successfully".
  • 3D objects of type "MODELNOSHADOWS" were not rendered
    • 3D objects designated as MODELNOSHADOWS were not rendered due to the Visibility Manager only checking if the 3D object is of type MODEL
  • The Pad Button action method was throwing an error
    • Changed the initial state of the pad button to idle. Previously, it was set to released.

Beta v0.0.11.1

Fixed:

  • The Shadows were lagging during rendering. The lagging was occuring during the Camera Frustum Culling.

Beta Version v0.0.10

In beta v0.0.10 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.

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

Beta v0.0.10 Updates & Fixes

Beta v0.0.10.3

Fixed:
  • The Third Person and First Person camera now follows the target 3D model properly.
    • The camera failed to properly follow the target 3D model whenever the model was translated vertically.

Beta v0.0.10.2

Improvements:
  • Implemented a method which allows the user to modify the Visibility Time interval.
    • This Time Interval determines how often the BVH tree is computed to determine which 3D models are within the camera Frustum. The smaller the time interval, the faster the frustum computation, which minimizes the visual lag.

Beta v0.0.10.1

Fixed:
  • Updated the gitignore file to exclude pch files.
    • It was forcing the user to create a pch file after downloading the engine.
  • Engine would hang if models were not within the camera view frustum.
    • The issue was mainly related to the rendering during the shadow process.
Improvements
  • Modified the viewInDirection method for the Light entity.
    • Improved the implementation for maintainance purposes. The flow process is clearer.
  • Modify the viewInDirection method for 3D Model entities.
    • Realized the initial implementation failed for corner cases.
  • Clean methods in U4DJoyStick which were no longer used. Clean up the class.
New:
  • Implemented a Camera System- First person camera, Third person camera, and basic follow camera

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.