Knee Deep in Combat and No End In Sight!?

Life has been keeping me busy which has slowed some of my efforts, but I still try to devote as much of my spare time as I can to this project. My primary focus has been and continues to be on implementing the incredibly rich Ultima V combat system.

The process started out with a number of simple implementations including basic map loading, player character loading and enemy loading. It then got deeper and only made my respect for the original developers all the more grand as I realized how much had been packed into a few double density disks!

What was Implemented so far?

There are certain elements of this classic turn based combat model that have been implemented and I think MUST be present in the reworked system. I have implemented the following classic features so far:

  • Loading player characters, enemy and appropriate map based on overworld enemies
  • Keyboard based player character movement, enemy selection and player attacks
  • Selection of active player character if you wish to focus on a single player
  • Initiative based combat ensuring the most agile go first, and sometimes multiple times in a single round
  • Ability to attack enemies in overworld/underworld
  • Quick escape (ESC) when all enemies are dead
  • Highlighting active player or active enemy

Quality of Life Improvements

It is important that the game translates well to a more modern audience as well, so I have opted to add some improved quality of life settings as well that will still maintain the charm while speeding up the grind of some battles.

Highlighting of enemies that are in range

It is now immediately noted which enemies are in range once you enter your attack mode, making it easier to pick your next victim!

The Avatar is equipped a magic axe, which can reach anyone on the map, including his own party members!
The Avatar equipped with a melee only weapon can only attack enemies within one square, so only one wizard is highlighted.

The Initiative Bar

Who’s next? Should I cast my healing spell yet, or should I go in for the kill? The initiative bar is meant to help give the player a glimpse in to the 5 subsequent attackers to help with those strategies. There is likely going to be an option to disable this for the purists out there!

The initiative bar highlights the current attacker and the next 5 attackers as well!

Cycle Enemy/Quick Attack

Although it can be a topic that breeds many different opinions – it is my personal belief that the existing combat can take too long when you are grinding out your high levels. Think about it – you are level 7 party, all equipped with Magic Axes and are now facing yet another horde of slimes! Two new features have been added to speed up combat to make these encounters more bearable:

  1. <TAB> key will cycle through all available enemies one at a time. This will work in all targeting modes including when casting spells (once it’s implemented!)
  2. The ` (~, left of the 1 key) will automatically attack the previous enemy attacked by the player, or if none have been selected then it will automatically attack the closest enemy.

The combination of these two features can significantly speed up play without spoiling it for those who like to play the ole’ fashion way.

The Battle Report

Another quality of life improvement is the inclusion of a Battle Report. This will help you better understand the contribution of your team members in battle, as well as giving you a glimpse into how their experience was affected. This will show at the end of every battle regardless if you escaped.

Debug Menus for Quick Combat Testing

As in past work – a special debug menu was created to speed up testing.

The following Debug menu provides quick teleportation, time changes and previsions hacking on the fly.

Quick teleport access to anywhere in Britannia, time changes and provisions hacking on the fly!

The debug menu allows quick access to all combat maps and all player combinations.

Line Of Sight

I attempted, and believe I succeeded in duplicating the original flood fill technique when producing line of sight and hiding tiles the Avatar shouldn’t be able to see!

Blue Borders

As you may have noticed from the November release, the classic style blue borders now encapsulate all the UI elements, helping give them an old school feel and helping give each section it’s own purpose.

Other Additions

Although not all changes are as exciting as the combat (which is still in the works!), there have been some minor features implemented or completed since November as well:

  • Ships can travel fast with sails and get damaged when they hit land
  • eXit a frigate? How about a Skiff!
  • Take damage on a skiff in deep water, and prevent a frigate from entering shallow water
  • Able to use a magic carpet that is in your inventory
  • Added +/- to speed or slower keyboard input
  • Zoom in and out with mousewheel
  • Created all enemy voxel models with basic animations
  • Attacking people in stocks or bed will murder them!
  • Ctrl+K for Karma
  • Introduced outlining effect when characters are obstructed behind walls in combat
  • Carpets and horses now go in all four directions, unlike the original game which was only left to right
Some exciting for me techy changes:
  • Converted to the new Unity Input System, resulting in smoother and smarter input timing
  • Decoupled importing of classic save state from new save states
  • Considerable refactoring, removing all Find and GetComponent calls in place of strongly bound variables
Known Issues
  • Initiative calculations do not appear to be quiet correct yet
  • Dungeon maps seem to adhere to different rules when encountering baddies, they are not immediately clear

What’s Next?

The fact of the matter is, the combat maps and basic mechanics took quite a while. Moving from top down to an isometric view does and continues to have quite a few visibility challenges. The next update hopes to complete the combat aspect which will include:

  • Monster AI including movement, attack and special abilities (such as ghosts disappearing)
  • Monsters should spawn and seek you out in the overworlds
  • Player characters should be able to cast combat spells (IOW, I need to implement spells!)
  • Spell and attack animations
  • Hidden wall triggers
  • People should be scared of a murderer, and guards will want to arrest them!
  • When you die, you need to be resurrected and brought back home

I hope to get through the whole combat by the next update which should be around 3-4 months from now.

Published by Brad Hannah

Cloud Engineer by day, pretend game developer by night!

10 thoughts on “Knee Deep in Combat and No End In Sight!?

    1. Never let me tell anyone not to voice their opinion – but not very polite. May I refer you to the eight virtues.

      The good news is GOG.com is always happy to sell you the original if you don’t like my version.

      Be sure to report thy feat to Lord British!

      Like

  1. Just a quick comment. Looking amazing as always! My first glimpse/pass on all the new stuff is very positive, even the non-canon/new things. Very cool.

    Regarding the negative comment above. Come on man. I love the old school as much or more than most people, but that doesn’t mean I can’t support/be interested in/contribute positive/constructive comments towards this project! U5Redux is awesome and Brad’s efforts are legendary, as is his vision.

    Keep up the amazing work Brad!

    Liked by 1 person

    1. Thanks as always Cambragol! Hopefully I am not rocking the boat too much with some of these additions 😉 Thanks so much for the kind words too, we Dragon’s gotta stick together!

      Like

  2. Went through your post in more detail. Things look pretty good all around. Not so big on quality of life stuff, as sometimes that just means removing the fun/challenging parts of a game. But stuff that makes things more fun can be good, and it looks like you have that happening with the initiative bar. That battle report looks fun too, if you are into stats and stuff. Toggle-able options for those will be good for the purists out there, though neither of those new features is messing with the OG game much.

    I’m interested in your implementation of LOS, as I am currently doing similar work on my own project, in particular trying to mimic the LOS with light sources as you find it in the basement levels of U5. Do you have that working, or is it just flood filling in above ground levels?

    Like

    1. I hear you on the toggleability of the QOL options. I suspect nearly all of them will be considering how easy it would be to do so.

      I always hear how Ultima V has the best story in a lot of folks opinions – my hope is with some of QOL it may shave some game time off, allowing people to connect better with the story. I dunno, just my thinking. It’s how I like to play games.

      As for the LOS, it really is just a flood fill. Just like the original game. I have watched the behavior very closely and it appears to completely emulate the original behavior.

      I notice that Skaald is doing some amazing LOS work with “cellular something or other” – but I just wanted it to work like the original for now!

      Like

  3. How about the lower levels though? Because there the LOS is a flood fill with light sources, and constrained view, that varies with the use of a torch/light spell. And the light sources don’t shine through walls, which I am finding a bit of a trick to get working.

    One thing I remember about Ultima V was the combat. Torturous. The ability to select opponents seemed cool, but added so much time to even the easiest battles that I remember tears of frustration after getting attacked by mongbats for the 389th time during one of multiple trips into the Underworld. Maybe some auto-targetting QOL options?

    Ultima V’s story was great, a step up, and a step down from Ultima IV, so a good balance.

    I’ll have to check out Skald’s LOS. I really have no idea about it, but it seems there are lots of ‘algorithms’ out there. I was the same as you, and just spent a lot of time and energy trying to get it to work like the original.

    Like

    1. Well let’s try to break this down a bit. My flood fill basically removes non visible tiles from the map – so any torches that are outside of the viewable area will not be visible. My light sources uses Unity’s lighting, so it is separate from my flood fills altogether.

      I will try to get some pics up as an example.

      As for the auto-targetting, you may have missed that in the write-up. I have added a back-tick (`) key that automatically finds the closest enemy based on the player characters attack range and attacks them. It’s not quite autopilot, but it’s a one button attack for each character which should handle the extremely tedious low level battles.

      Here is an example of Skalds LOS, which is not typical for old school RPGs but is pretty amazing.https://twitter.com/SkaldRpg/status/1360585065844072452

      Like

  4. Ah, that clears it up a little. I did love to see some screenies. It is just a hot topic with me now, and we’re trying to implement the same thing, so, I’m curious.

    I think I did miss the details on the ‘quick cycle’. I assumed it was just presenting them, not giving options for selecting targets. Awesome feature! That right there was the single aspect of the game that drove me to tears, especially when the low level attackers were swarming in from all directions, forcing you to play through zero-challenge, but extended and lengthy/laborious combat sequences. NICE!

    I checked out Skald’s LOS. Neato. The delay on the lighting effects is weird, but neat. Certainly has character. Seems like you might have some room give your LOS some similar, or similarly neat effects too, considering the engine. The obvious point would be nighttime, where some color element could be added to mitigate the stark blackness of the original. Your lighting effects already have a lot of color!

    Like

    1. Re: quick attack – I have also decided to have it automatically select the closest enemy (using pathfinding) and move the character in the event that the character is not in attack range of another. You could finish an entire fight doing that! Maybe even go a step further that allows you put them on autopilot, rapidly playing out the match unless a character can’t attack or move… options!!

      I agree the Skald lighting is distinctly different, but I think that’s what I like about it – they are trying something new!

      I suspect I will dump a lot more time into my lighting/nighttime effects as time passes – I don’t feel like I have the right mix of classic LOS/light and the modern lighting engine quite yet. But that stuff evolves over time, so I’m not sweating it.

      Presently, I am working on making sure the basic mechanics of all dungeon rooms behave as expected. There are 112 to worry about, and some seem to have special coding for them and only them – but I am not 100% sure yet. To make it easier I am working on a binary template to quickly hack save games so I can compare the original with new version very quickly.

      Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

Create your website with WordPress.com
Get started
%d bloggers like this: