Ghostly Apparitions – March Update


With the final deadline being the 5/5/17, and April likely to taken up by out of development tasks, I am using this month to get all the games current features and assets into a playable build, with a proper beginning and end. After getting the prop interactions implemented last month I am now adapting the action line AI made for the first milestone and fitting it into the demo scene, mostly be making new animations and setting up the individual scene events(e.g. Open door, get out of bed and so on).


My aim for the deadline is to have the AI move through the demo, while being able to be distracted by player actions while moving down one of the intended narrative paths planned for the final level, which can branch to at least two ending variations due to player actions.

As per usual I will continue to post the day to day updates on this on the Birdmask Studio twitter page, that I have been getting used to this past month.

Ghostly Apparitions – March Update

Ghostly Apparitions Development Video 02 – AI GOAP and Action Line Syste

A update video going over the development of the AI systems which were the main focus for “Ghostly Apparitions” over the Christmas break,

Ghostly Apparitions Development Video 02 – AI GOAP and Action Line Syste

Ghostly Apparitions – Initial Prototype Day 4 Dev Update

About the video 1. not centered 2. I will try to look into some audio tricks to reduce the wind noise in the future, anyway onto the content.

“Ghostly Apparitions” is the working title for a HTC Vive game concept I will probably be working on for the end of year UNI show next April.

The above video is a quick proof of concept for the Vive interface I have thrown together over these last few days to show my lecturers before I start the final march on the dissertation, which will be keeping me preoccupied for the next two weeks, after which I will get back to developing this.

Ghostly Apparitions – Initial Prototype Day 4 Dev Update

Toasty Camera Rail System – Spline Groups

The spline and bezier curve scripts I am using are a modded version of the one shown in the “Curves And Splines” Catlike coding tutorial(Link here). As I refine this system I am making a specific variation of the bezier curve scripts to use for my camera rig, with my first major addition, shown here, the ability to split the spline into smaller segments.


To do this I have added an additional array, a int array, that corresponds with each control point. This array is then used to identify which group that point is a part of when the script is implementing through the spline. Then if the next point’s group does not match up with the current points, the script knows it is at the end of a group.

Additional features on Spline Script

For the groups to be editable I needed to go through the existing bezier spline script and add in these additional functions, firstly to recognize and identify my new spline groups system, and secondary to implement them to the existing features of the current editor script before adding my own. Some of these were simple cases of directly recycling already existing equivalent functions and adapting them for group detection. The two substantial additions where the “GetGroupRange” and “GetPointWithinGroup” functions.

New Spline Walker


With the above additions to the spline script I could now make a new player tracker. This script recycles the same concepts as the older set up with some refinements. It functions by:

  • Getting the closest raw spline point to the script object’s current position.
  • Getting that points group, and then that group’s overall beginning and ending points.
  • It then loops through and calculates a set number of positions along the entire group’s curves and checks for the one nearest the script objects position.
  • Finally it returns a position and the progress along the groups spline that position is at as a float between 0 and 1.

With these values the camera rig and it’s look target can now place themselves on the appropriate point on their own splines.
As it is this set up seems to work without to much overhead, at some point I would like to try experiment with some alternative methods of find relative points on a spline to global positions, but for now, so long as it’s doesn’t hit performance I will be continuing with the current method.



Above is a screenshot of a path made with just this addition to the camera rig. With it I have been able to make distinct directing choices, slow and fast transition(basic ease in and out effects) along the camera rail relative to the player’s position, and jump cuts all using the same splines and without the need of additional set ups.

Toasty Camera Rail System – Spline Groups

Toasty Camera Rail System – Version 2 Plan

toasty_prototype001_5_splashThe toasty alpha has now gotten to a stage where I am doing a second run of the initial features, the player movements, AI, noise and stealth elements and now I am starting the updates to the 3rd person camera rig(That was show earlier here Link).


Fundamentally version 2’s camera rig will works the same as version 1, three to two splines paths are inputted to it and then are used to:

  • First compare the player’s position along the first “PlayerRail” Path.
  • Then it applies the relative progress on the “PlayerRail” to the camera’s target point along the “CameraTrack” path.
  • Finally the cameras look target is place along it’s appropriate spot on the “LookPath”(which in most cases is just the “PlayerRail” again).

The main changes are going to be editor side, on the splines editing tools and then on ways to use these addition to allow for more control of the camera rigs overall path.


New Features:

Version 2’s focus is to add more range for bigger environments, with multiple paths and more subtle directional control. To that end these features are what I hope to add:

  • Track groups, the ability to split the splines into smaller segments.
  • Modifiers, that allow for different transitions, based on the current path the player is on
  • Different kinds of rigs, for different room set ups.
  • Transition from one set of spline paths to another.

And some refinements such as:

  • The ability to add new points on a already existing spline, and the ability to remove existing points.
  • The ability to snap spline points to each other.
  • The ability to copy coordinate details across multiple points
  • The ability to select multiple points at once.
  • A playback feature in editor to see what the camera sees at any point on the rail.

Further down the line I would also like to make more options, such as a specific edit mode for the camera rigs in the scene view, but that will be left to a later stage when the other editing systems are equally refined enough to plan for.

Toasty Camera Rail System – Version 2 Plan

Stealth AI – Patrol Paths

Any AI unit I make will need to follow a patrol path so I decided to focus on making a wayPoint editor before anything else.


Above is a screenshot of the script in action. The base script, AIpath, is simply a storage of vector3 points. To edit it a editor script generates a handle for each of these points in the scene, and a path connecting each line in a loop. When a point is selected you will be given the options seen to the right and the line leading to your selected point will be highlighted. If you add a new point it will do so in the middle of this selected line, if you remove a point it will simply take away the selected point.

This is a relatively simple system, and will need to be expanded on in the final game, but for now, combined with unity’s navagents offers a quick and easy way to establish patrol paths, without needing to use multiple objects as a reference point.

Stealth AI – Patrol Paths

Mecanim – Working With Root Motion


Mecanim/Root Motion based movement certainly has a lot of pros for a animator, overall sequences of movements and flourishes can easily be done animation side. However simply recreating the responsive feedback of a consistent program and number based movement system is hard to intuitively emulate.


Working with my first attempt at animating for root motion movements, I(as shown above) made a number of paths to move my characters along in blender for reference, changing the root movements direction at each step distance. I then exported these animations to unity and tested how they felt to move, their responsiveness, speed and so on before editing and trying again.


With these initial test I wanted Toasty to feel weighty, clunky to serve as a good contrast to the planned smoother shadow movement later. This may change down the line if this proves to unsuitable for the stealth game mechanics, player feel is one of the key elements I am trying to refine here, but that will have to wait until I can see how this version of the player avatar fits in with the rest of the planned features.

Mecanim – Working With Root Motion