Back to Roots Update
I thought I’d give a little update of where I was up to with the Back to Roots project. Having had a lot of work, and having been preparing for a 5 week trip around the world (part work, part vacation), I really did not have a lot of time to do anything. But, during my vacation, I got a chance to start working on the dungeon decoding and rendering for the Ultima 5 port. Once the files were decoded, it really was just a matter of putting the different images in the right place. The difficulties were of course that the system didn’t have the concept of the direction in which the player is facing, but that was relatively easy to handle to get a first rendering in place.
Since the graphics provided by Ultima 5 were already simulating 3-dimension, it was not useful to write up a whole 3-d renderer for dungeons for U5. However, Ultima 4 would probably need one.
Anyhow, after a lot of work and real life elements, I found the time to get back behind the computer yesterday and implement the first version of the dungeon renderer.
Then, it was a question of adding new elements such as ladders and making the player be able to go between levels, adding the rendering of the different elements (such as traps, chests), different wall renderings, handling the rendering of secret walls (though I don’t handle special walls exactly like Ultima 5), etc.
Third, I added functions such as: exiting the dungeon, allowing the user to save in a dungeon. I wanted to attack the rooms that are in the dungeons, but there was almost no data on the data file specification.
In my plane trip back to real life, I actually opened my laptop and hacked away, and I believe I figured out the whole data structure of the dungeon room files. In the original description of the combat files, there are a lot of zeros that are used for padding. These zeros actually do have a meaning and handle: room triggers, what do the triggers do, what monsters are there, etc.
I’ll be adding that information to the wiki and integrating it shortly but there are a couple of internal plumbing and other issues to handle first (as always).
It has translate -and- rotate now, which is awesome. Same basic controls as an FPS but on dual digital/keyboard. Decoding, combining and implementing the dungeon image and map data files -and- getting them to form the right “3D” picture as you move and turn is about as hard as anything I’ve done in a while. Damn good job.
Ultima V was a complex game, especially sporting quadruple-scale maps. Overworld, Town, Dungeon, Gem. Forgot the telescope… 🙂 Combat was nice with manual and precise enemy targeting. If that game can be precisely cloned, the programmer is a master of the craft. I’m a fool who fancies himself a master but is at least always trying.