Ultima VII is a great game, I still remember around 1998 when my aunt bought a Pentium PC with “multimedia”, CD-ROM and a Sound Blaster card. It even had dialup Internet!
In a time where all you could find around were CDs with Shareware demos, I found a treasure among the driver CDs: Ultima VII, Ultima Underworld, Savage Empire and some other awesome games were included as some sort of samples of the power of Creative Labs’ Sound Blaster card. They even came with a small thick book bundling the manuals for all of them.
Funny enough, getting these games to run was actually quite complex… most of them required tweaking things around, but it was worth it… I played the heck out of all of them (Except Wing Commander Academy, which for some reason I never liked too much, and the Mahjong one because… well, it was Mahjong.). These games were a defining part of my life… I learned English reading these manuals and playing these games made my interest in game development grow even more…
Back on track, Ultima VII is a great game… I still remember once I finally managed to make it run how a world came alive in my aunt’s computer screen. It felt so massive… the graphics looked so vivid, the music was so great, the world was alive with everyone living their own life… I think I didn’t actually get to play thru the game back then, but it left a great impression on me.
That being said, there are two things that have always bothered me about Ultima 7:
- The weird overhead perspective: Although I have been pointed out that it’s actually pretty effective for gameplay over other projections, since less space is hidden by walls.
- The combat.
Combat is an important part on cRPGs. In some cases it’s the only type of conflict, and you need conflict to control the pace of the game.
Now, imagine you are playing Chrono Trigger (another cool game, a bit more widely known). Imagine you meet a group of enemies but instead of going into battle mode all your party members just pop up and run toward the enemies, while the party of enemies rushes to your characters and starts breaking through them. You don’t have a chance to think thru and use spells or items, everything happens so quickly that after 2 seconds your party is dead.
That’s basically what combat in U7 felt like. You were never in control. What a wasted opportunity, specially since previous games had contributed a great share to how tactical battles were handled in computer RPGs!
I must note that the game provided you with the opportunity to set up a combat mode for each of your party members, you could set them to attack the strongest or weakest opponent, among many other options. However, this didn’t really help much to engage with the game once combat started.
Exult is one of the oldest and more popular Ultima fan projects; it allows you to run all the games using the Ultima 7 engine in modern platforms. It’s not a remake… it takes the data files from the original games and uses them to run a custom made engine, adding a lot of options for improved user experience in addition to making it dead simple to run in about any modern computer.
But, there’s another thing that Exult allows doing, it gives us a chance to fix things we don’t like about the original game. And that’s what I intend to do!
I want combat in Ultima 7 to be more interesting, more relevant, more tactical. I want to try and make it turn based.
The idea is pretty simple:
- Exult already supports pausing in combat
- We must detect when the party engages in combat and auto pause.
- From here the player can either:
- Move around a limited number of steps
- This one may probably be the most complex thing to detect
- Attack a monster (either melee or ranged)
- Cast a spell
- Use an item
- Pass the turn
- Requires adding a button to the UI
- Move around a limited number of steps
- Once the player does any of these, the game resumes for about half a second, and pauses again if still on battle and the player is still alive.
So far I have checked-out Exult’s source code and set up my dev environment with help from dominus. I started looking around a bit and found out pausing and resuming the game can be accomplished using
I’m planning to meet with dominus next week to discuss my idea with him and maybe get some pointers 🙂