January’s Progress: Eye Candy

Jon: Long time no see! Despite our silence, we have been working away. Now that we’ve released v0.1, we begin our journey to the next version.

Here’s what we’ve been working on so far:


I’ve been dabbling in shaders this month and managed to get some things working, though all still WIP. Have a look:

  • Eye: The iris is now drawn right on the same object as the eyeball! This allows the specular shines to seamlessly blend from eyeball to iris, unlike before. Previously, the iris was overlaid as a separate object on top of the eyeball.

  • Splatmap: Using Unity’s terrain painting is essentially what this is, but we wanted to customize it so we made our own.

Notice the floor, walls, and ceiling are blending! (This image has been brightened.)

  • Interior Blend (Triplanar?): The idea behind this shader is that it interpolates between 3 textures based upon the vertex normals! This works well for cave or dungeon corridors.

Notice the improved edges where the water meets land.

  • Water: Previously, we overlaid several planes (2 planes scrolling in different directions, and a refractive plane) to achieve the look of the old water. Now with the new shader, it’s all done in with a single plane.
  • Crest: Started a shader for displaying crests/images onto shields and surcoats. I’m not showing you this yet. 🙂

Scene Transitions

Another thing I’ve been working on is improving scene transitions and fancying up the loading screen. I have managed to improve some things:

  • Loading messages will change if loading takes a long time
  • Loading messages will be less likely to repeat in a play session now
  • Fade in/outs are smoother
  • Added a ‘quickload’ option for scene transitions that are quite short such as initial splash to title screen, just fades in and back out, once loaded.

For other Unity users out there, I found that even when using additive asynchronous scene loading there’d be a hitch. This is due to many Awake/Start calls executing at once, which are on the main thread, after the scene load has finished…

For scenes such as the Town, this really increases loading time and I have been working on some solutions. Nothing concrete yet…


Started the basic Fatigue system that we’ve been thinking about for a while. Maybe you noticed the thin yellow bar under stamina that never did anything? Well, now as you consume stamina, you will slowly fatigue, which will temporarily limit your maximum stamina, until it’s recovered by eating or sleeping. Once fully fatigued, you will pass out temporarily.

We don’t want to turn the game into another survival game, but wanted to increase incentive to bringing food on journeys and making sleeping more beneficial.

  • Book UI now only displays one page at a time… It was taking me too long to edit books. At this point, time is of the essence. :/
  • Reworked NPC GOAP Planning, spreads logic out over multiple frames to reduce hitches. WIP.
  • Console can now be opened in any scene, even in the title screen.

Along with updating the current scenes to use the new shaders, Andrew has begun building a castle!

Just a quick reminder, this is progress towards the next version, probably v0.2, so this is not in the active release, yet.

Have a good one!


3-Year Development Anniversary

Jon: Hello! Today marks our 3rd year anniversary of developing The Arcane Relics™! Wow, already 3 years… We certainly underestimated the amount of time needed to get this game to where it is, but we’ve learned a lot and continue to surprise ourselves by what we’re able to accomplish. This past year we’ve managed to release the 1st public demo and are getting closer to the next update.

We’ve made a lot of improvements since last November. Some notables:
(Some of these images may look familiar.)

  • Dalwood has grown in size

  • New Zombie-infested Catacombs

  • Revised magic system

  • Day/night cycle improvements: moon, stars, sky colors, clouds

This slideshow requires JavaScript.

  • Hefting unconscious characters

  • AI Improvements: simple Town Guards, pathing for Villagers, & NPCs capable of opening doors
  • Crossroads (yet to be revealed)
  • Increased movement speeds
  • Control changes: Attack buttons & sprint button change
  • Revised Party setup: characters can be created right in there
  • Crossroads Directional Signs: helps locating areas
  • Loading screen changes: radial loading bar, target scene/location name, spinny sword icon, & more message variations
  • Updated most object cursor common name displays (bottom-right)
  • Sprint FOV zoom
  • Texture improvements/changes (environment, items, UVs)
  • Look sensitivities dropped
  • NPC dialog improvements
  • Scene transitions besides warp portals
  • Additional skill group: Trades
  • More items: Helms/Hats, Weapons, Gems, Magic Catalysts
  • Few more spells & additional spell effects
  • Hit lean animations & hit block animations
  • Left-hand attack improvements: uses directional attacks, offhand does less damage
  • More settings
  • Butt-load of bug fixes 🐖💨👾

In public demo, but not present a year ago:

  • Upper Town
  • Additional plants: Blueberries, Strawberries, Rosemary, Sage, Parsley, Thyme
  • Town buildings:
    • Chicken Keeper’s house
    • Clothier
    • Inn
    • Botanical Shop
  • No NPCs in Town (just an angry mob & bats)
  • No sleep jingle
  • Cursor highlighter system: used to swap materials…

This is not a complete list, either.

Another main focus of mine has been rebuilding and cleaning up old code. Since you can learn a lot in 3 years, I’ve found the need to rewrite or, at least, clean up some systems that I started near the beginning. The tricky bugs seem to crop up in the stuff you haven’t looked at in a while.

Past Week’s Progress

This last week I’ve primarily returned to the party setup, trying to improve the usability of the menus and fixing bugs with creating characters. I also improved the device query (“Waiting for input…”). Joining on a controller should be much more responsive now.

Andrew worked on making the newest buildings into prefabs & made lily pad hats and cattail props.

Unity Tip: I also discovered builtin API in Unity for capturing a screenshot! 

Maybe we won’t have lots of crazy cropped screenshot resolutions in the future…

We’re still working away and are still aiming to release the next version before the end of the year. Hang in there! 😀

Sep. 17-30: Sabaton Sabatoge

Jon: Hello, again. These past 2 weeks I’ve managed to get quite a few bugs. Andrew had to deal with a broken computer, which means this’ll be a short one.


The smell of defeat.

Before his computer pooped out, Andrew made some Sabatons! Along with expanding Dalwood, texture improvements, and some material optimizations.

Misc. Improvements & Bug Fixes
  • Throwing weapons/projectiles now fly farther if performing a ‘power attack.’ (Held attack button)
  • Set the ‘default invert look y’ on a controller to false.
  • Setup incandescing weapon to display timer on cursor (radial bar).
  • Improvements to the Interact-Hold feature.
  • Any cause of ragdolling should now release a held heftable. Previously, only ragdoll by incapacitation would cause this.
  • Developed a system for caching mesh instances generated due to vertex color manipulation.
  • Fixed a bug where certain actions like rolling or attacking could still occur when ragdolled. This would cause your stamina to drain though no action would occur, and the animations would then suddenly play on ragdoll recover.
  • Fixed a bug where players would be stuck incapacitated, if incapacitated in a new scene after leaving the Grand Arena during a match.
  • Fixed horses always facing the same direction on start.
  • Fixed some issues with ragdolls falling into the failsafe trigger outside the map, shouldn’t get decapitated anymore… >:D
  • Unity Tip: After updating to the 2017 cycle of Unity, I noticed that performing a Teleroll would crash the game! After some forum browsing I discovered a hack to make it work again.  It seems a number of people have encountered issues with disabling an animator or deactivating the animator’s gameObject. The solution/hack that worked for me: use a coroutine that yields until the end of the current frame before the animator disable/deactivate.

Fortunately, the computer issue has been resolved and we should be able to get back to a better pace. Most of my tasks are getting down to bug fixes.

See you next month! 😀