“Ultima 5 Redux”: Combat and Polish Complete

Brad Hannah hasn’t posted an update to the Ultima 5 Redux development blog in a while, but this does not mean he hasn’t been hard at work on the project itself…as evidenced by the newly-posted August 2022 update:

Well it’s been a hot minute since I have updated the blog and released an update video. Saying life has been busy would be an understatement but I have spent considerable time in pockets focusing on this particular milestone.

This was an update of bug fixes, polishing and (re)creation of a number of internal systems that weren’t optimal. For those in the gamedev space, there is a rule – make a bunch of small games to completion – don’t chose an RPG as your first project. I naturally ignored that advice and here we are over three years later

The good Mr. Hannah goes into some detail about each of the areas that have seen improvement in the latest release of Ultima 5 Redux, and it’s well worth reading the entire news post to get all of his thoughts about each system that has notable changes. The abbreviated change notes are as follows:

Sound

– Added music system and 5 songs (midi->mp3) based on location
– Added ambient sound effects system – for example, as you approach a lighthouse the seagulls get increasingly louder
– Added standard sound effects such as walking on crunchy grass or click-clack on brick
– The MIDI files are converted to MP3 and downloaded from http://exodus.voyd.net/downloads/

Improvements

– Use/Inventory dialogs
– Enemies can now drop chests (which you can search and open) and blood spatters as well. Included a new feature called “Item Stacks” which allows us to stack loot (or anything!) on top of each other.
– Special items such as Crown, Sceptre, Amulet and Sandalwood box are now gettable in overworld, and disappear when you already have them in your inventory.
– Monsters in the overworld now wander and chase you. If they catch you, they will initiate combat.
– Projectile throwing overworld monsters such as sea serpents or pirate ships will fire at you if you get too close.
– You can ‘f’ire the frigates cannons and kill overworld enemies.
– Major effort in normalizing all buttons, sliders etc to use the common look and feel (using prefabs). Also added standard ‘X’ in top right of every dialog.
– Small maps now have proper “outer edges” and even change depending on the map. For example Sin Vrall’s hut has desert tiles on the outside edges instead of grass.
– Fixed major bugs that made the dungeon combat rooms… just plain wrong. There were some ‘off by one’ errors creating havic.
– Multiple graphic and texture tweaks for a more common experience – such as lowering res on time of day semi-circles and new reagent graphics.
– Cleaned up start up UI to make it easier to “get started” from scratch when booting the game. Options that “shouldn’t be clicked” are no longer clickable.
– You can now extinguish a torch by clicking the torch icon in the bottom right.
– Visible Karma tracking in bottom right (will eventually be optional).
– New “escape” menu when hitting escape in the main game out of combat. This will allow you to save, load, quit and configure (kind of).
– Unlimited save/load slots with easy access to save data on disk.
– All potions are (should!?) be drinkable and have real effects.

New Systems

– Created new “Tile” system that has each tile responsible for figuring out what it should be displaying and when – GREATLY simplified keeping track of what should be drawn and when
– “Turn Result” queuing – this enables me to send an ordered list of events for processing. This allows for the classic feel of “one thing at a time” to be maintained. For example – it’s important that a projectile actually be seen hitting an enemy before the enemy dies!
– Brand new animation system for tiles. Each tile now has an independent and semi random animation cycle. This creates a “liveness” feeling, but also erases a requirement on an obscure version of Voxel editing software I required to edit before.
– Created a common UI framework to ensure all dialog boxes use same base code, ensuring continuity between them, but also saving me a ton of time developing and debugging.
– Spell casting, potion drinking, scroll reading system during combat implemented. Only a few spells are implemented, but having the system in place will make the spell implementation much less difficult.
– Numerous tweaks to make debugging faster including streamlines menus and saving previous values.
– Converted from HDRP to URP rendering engines. There were massive performance issues related to using a very heavy engine (HDRP). Switching to Universal Render Pipeline resulted in huge improvements across to the board.

You can find a pre-alpha build of Ultima 5 Redux with most of these changes included on Brad Hannah’s Github project page, or linked at the project entry here at the Codex.