So What’s New?

I have already posted about NPC AI/Pathfinding, debug console and the Pre-Alpha Build, so I will stick to the newer items.

Full day/night cycles

Full moon cycles with onscreen widget

Moongates and Moonstones Moongate travel by moon cycle Cool “up/down” animation of moongate Cool fade in/fade out when teleporting Ambient glow of Moongates Search and ‘G’et the moonstone Bury the moonstone

‘P’ush mechanic Did you know chairs change direction when you push them? Now I do!

Complete Z-Stat descriptions Highlighting of Reagents and Spell names for easier and quicker reference Thank you to Ultima Codex who is attributed to many entries that were not in the original Book Of Lore Look out for some great entries from the Book or Brad

Small enhancements include: Fall down grates (even multiple grates like in Blackthorne’s castle) Begun using light emitting materials in Unity to make things glow Magic doors Lava Crystal balls



Some Details and Challenges

This was an interesting update because it seemed every time I wanted to implement some small component of the feature list then I would end up having to create some new system I had never considered.

Picking up a moonstone

So you want to ‘G’et a moonstone? Well first you ‘S’earch for it of course. But when you search in game for things that aren’t moonstones you could have stacks. The stacks do not translate well into the 3D game since they stack. So I had to create a queuing system that essentially puts them in a first in first out (FIFO) structure where the next item would appear as you ‘G’et the “exposed” item.

Next, typical inventory items are stored in a consistent way in the saved.gam file which makes it super easy to keep track – except moonstones are different. Moonstones are either “buried” or “not buried” and if they are not buried then I must assume they are in the Avatar’s inventory. This does not quite fit with the original games logic, and I still have to solve for it (but as I write this, I think I figured it out 🙂 )

Moonphases

Frankly, I have gotten away with being fairly ignorant of exactly how the moonphases work, progress and why the hell there are two moons! Needless to say, there is some very dirty (yet functional!) code that abstracts those complexities. I even wrote (borrowed) some calculus to move the moons and Sun in a circle. May God have mercy on my soul if I need to update this code again!

3D Tiles in a 2D World

This is not a new problem to me – the original game only showed a single tile at a time, so if an item such as a moonstone was exposed, then it simply hid the tile underneath. Also, things like signs did not technically have a tile underneath.

I had implemented a guessing algorithm in the past to try and take a best guess at the tile underneath but it was often wrong (no-one’s perfect), so to combat that I implemented an unfortunate, but requisite tile override system that allows me override any tile on any map. Note: This could be used in the future for customization or to makes quality of life tweaks to the game (I’m look at you @Cambragol!).

The Core Library versus the Unity Game Code

As many are aware, this is technically two projects – the core game code called Ultima5Redux (soon to be UltimaVRedux) and Ultima5Redux3D. Because I am using a paid/proprietary module in Ultima5Redux3D, I am unable to share it publicly on GitHub. To make sure the community get’s as much value as possible, I have continued to move game logic to the core library – if done correctly, the Ultima5Redux3D will only be reacting core game libraries logic decisions, allowing anyone in the future to build ontop of the core library if they opted to (MIT license).

Thanks

Just wanted to say thank you to all those who actively participate in the project such as the great feedback and ideas from @Cambragol, the publicity from Dino and WTF Dragon and all the other dragons who give me encouragement on Twitter and Reddit. It is always appreciated!

Also thank you to the Ultima Codex wiki contributors! When filling out the Z-Stats descriptions I used the wiki exclusively for quick descriptions from the Book of Lore, and when they weren’t available then I quoted (and attributed) portions of an article directly.