2013-01-29 Editor and Stuff
Hail friends,
For this update, I have some good news and some bad news. Let us just get the bad out of the way first. There is going to be a delay in the release of the next commentary entry. Why the delay? Well, I wish to give Ultima IX another playthrough before progressing. I may be fairly familiar with the game, but there are bound to be aspects I may have forgotten that are worth commenting on.
There is also going to be a delay in my start of this playthrough. The reason is part of the good news: bug fixing. There are number of bugs here and there that I wish to fix before I start the game up again. Part of the reason is I really want to play a debugged version of U9 as much as many of you. The other part is that I want to use this next playthrough as a test of my bug fixes.
Now for more good news. I am finally putting our tools to good effect. The advancements in our primary editor along with a rapidly expanding library of trigger command definitions have allowed me to crack the scripting around a number of bugs and figure what went wrong or what is missing. As a result, I have fixed in less than a week 5 different bugs. Yes you read that right 5 bugs. Some small and some more involved.
For those who have attempted to re-enter Deceit, they will find the the door is locked. I have corrected this issue and simultaneously fixed any potential problem where a player finds themselves stuck between the wall and the offending door being already locked before it even closes all the way. In addition, I have worked around a bug that even the world builders were stumped by. If you click on the globes in the Shop of the Two Moons (Moonglow’s magic shop), an elevator will appear that takes you to the catacombs. If you click on one of the globes again, however, the elevator doesn’t disappear. The scripting commands for this event are there, but they must have run into an issue with their conceal/reveal functions. Specifically, the elevator and the display case either shrink out of existence or enlarge into existence. Or at least they are supposed to. Upon reimplementing their script, the elevator shrinks out of the scene. The display case does appear, but it fails to enlarge leaving behind a tiny, little display case with a scale property of 1. It would be cute if it wasn’t so frustrating. My best guess is that the enlarging reveal and shrinking conceal functions have code to stop the activity if a potential collision is detected. Honestly, it is amazing that what they did even worked once. Anyway, I changed the reveal and conceal command parameters so that the objects fade in and out, which looks great and works repeatedly. You can switch from the display case to the elevator and back all day without any bugs. I also fixed a bug with the crates in the catacombs not disappearing when they are supposed if you smash them.
I also fixed two related issues with the subplot of the Moonglow section: the Sage’s journal miniquest. (The Sage is the mage whose son cried bandit.) In the game, you will find the offending brigand with the Sage’s journal before the brigands have had a chance to ransack the Sage’s house. In addition, the Sage’s house remains ransacked. The Sage’s house was actually meant to be cleaned up at a later point, but there is nothing that activates the script to do the work. I have fixed both issues and really makes this whole sequence feel complete.
And I owe much assistance to the work Hawkwind has completed on our Editor as the tool was critical to my bug fixing. And after replacing the placeholder icons, I can now formally introduce the Forgotten World Editor, which has been in development for the past half-decade or more. I have posted several screenshots in our Editor gallery such as this one, which should look somewhat familiar. You can see quite far with the editor as you can tell with this overhead screenshot. These next two images showcase some of the capability of the editor such object movement and property editing. Moving and rotating objects is accomplished by clicking and dragging along or around one of the axes, which is much easier than editing the coordinate or rotation data fields alone – though that is an option as well. Oh did I mention that our definitions for the object properties have advanced quite far especially for scripting objects. This editor has really shown itself to be quite capable of making a number of changes to objects including changing an object’s type (which define the usecode, name, weight, etc.) as well as editing, deleting, and adding properties. About the only thing that this editor can’t do for nonfixed objects is add them or change their model, and both of these are much more involved additions due to the highly visual nature of the editor. I will mention that at present doesn’t implement the properties affects, so things like color tint aren’t displayed…yet.
As I can’t add objects at present, I resorted to older methodics for object placement, which works great for small maps that aren’t very script heavy…. like Mariah’s basement. The steps for old methodics are not too difficult, but they do take time. (skip to the next paragraph ahead if you aren’t interested in a description) First, I have to edit the gamestate.ini to give the Avatar the various objects I want, which means going to our list of objects to look up the Type ID. And if the object is one that the inventory doesn’t like, then I need to do a hex search for it in the types.dat database file and edit its weight value (yes objects in the game have weight). Then I load up the game and am taken to the map and coordinates designated in the gamestate.ini file. I set all of the objects down and step on a teleporter or leave the map through some other method in-game. At which point, I can then save and quit. The game has already extracted the nonfixed map files for that savegame in the savegame folder, so I simply replace the original nonfixed file in runtime with the savegame version that has the added objects. I can then repeat until I have all of the objects I want on the map. Next up is loading up the editor so that I can easily move, rotate, and edit all of new objects. And of course, I make backups as I go just in-game something gets screwed up.
On the last couple of playthroughs, I have actually been making sure that my Avatar eats sufficiently each day and Moonglow has very little food, so I decided to add some. I’ll clean that up later, but also to show you how effective I can be. So why so much food? Well it certainly gives those barrels a purpose. Also, Mariah is definitely a wealthy woman considering the size of her house. She actually has a basement with plenty of storage space. Oh and there is one thing that always bugged me about Moonglow. It is a mage town yet there are no alchemy tables…. well there is now. While, I don’t plan on doing much worldbuilding for the game patches, I felt that Mariah’s house could do with something extra… in fact, I’ll probably give Iolo’s place a little makeover and who knows what might happen for Jaana.
I had originally planned to present more here, but I think this has already become quite a massive update. So stay tuned for something special next week.
– Iceblade