u6edit (Ultima 6 Editor) v0.5 Author: Jim Ursetto --------------------------------- u6edit is a world editor for Ultima 6. It draws on previously available information and my own research, and integrates them into a graphical environment that lets you alter many aspects of the Ultima 6 world. This version is the initial public release. u6edit lets you do the following: - Create, modify, and delete objects - Manipulate containers, via a tree view - Edit terrain in place - View all map and object tiles - View tile and palette animation - View book contents - Save map and object data - Play your new worlds with Ultima 6! In addition, the program's construction is modular; the interface is (mostly) separate from the underlying implementation. So you can hook in to the modules from your own programs, without needing the GUI. There are several small examples of this scattered through the directory tree (obj.pl, book.pl, etc.); please poke around. Unfortunately, it won't run on Win32 without severe hacking, because it uses Gtk-Perl. If people are interested, I can try to port it. Please let me know. u6edit is not complete by any means, but it works pretty well. Map Editor ---------- The map editor is your primary viewport into the world. You start centered on Lord British's castle, at (134, 16c). The map window is small at first, but you can make it any size, subject only to your CPU horsepower. There are several things you can do in the window itself: - Left click on a location. The Stack Editor will appear, showing a tree view of all objects at that location, including items in containers. The Object Editor will pop up if an object is present. - Drag an object with the left button. The topmost object will be picked up and moved to the destination. (No feedback is given until you drop it.) Hold down Control while dragging to duplicate the object rather than moving it. - Drag a maptile (background tile) with the left button. If Options/Edit Terrain is active, the source maptile will be copied to the destination. Maptiles are never moved. - Create a new maptile with the right button. The currently selected maptile from the Tile Viewer is placed at the clicked-upon location. Note that Tile Viewer can select any of the 2,048 tiles, but only the maptiles can be placed using this method. - Destroy the topmost object with the middle button. This is a bit more direct than clicking Remove in the Stack Editor. In addition, the following functions are available from the menu: - File/Save: save objects and map data, overwriting your current game. Ultima 6 should almost always be able to read my saves, but a backup is made to be safe. - File/Quit: quit! - View/Animated Tiles: Animate tiles and rotate the palette. This requires a large amount of CPU time at high resolutions, but looks really nice. (Hybrid tiles are not yet supported.) - View/Objects: Turn on and off the display of objects. Especially useful when editing maptiles. - View/Grid: Visually divide the world into chunks. - Options/Edit Terrain: Enable the copying of maptiles by dragging on the map. - Window/Book Editor: View book contents. - Window/Tile Viewer: View all map and object tiles. - Window/Go to: Center the screen on the specified x and y hex coordinates (range: 0 - 3ff). The z coordinate is currently ignored. At the bottom of the screen you'll see the current coordinates, expressed in chunk notation: superchunk x, chunk x, tile x, and the same in the y direction. Chunks are a basic unit of structure in U6. The map is composed of 8x8 'superchunks', each containing 16x16 'chunks', each containing 8x8 tiles. These coordinates are those of the upper left-hand tile. The title bar shows the current overall x and y coordinates in hex, the same as you would type in using the Alt-214 trick in-game. These are the coordinates of the -center- tile on screen, unlike the chunk coordinates at the bottom. To move or edit any big object, you must click on its lower-right tile. Also, some objects bigger than one tile (pools, pillars) may have some of their tiles appear under other objects. Don't be alarmed; this is a rendering bug, but all is well. Stack Editor ------------ The Stack Editor provides a tree view of the currently selected map location, showing all objects from bottom to top, including items in containers. Each item is described as it would be in the game--"a chest", "30 gold coins". The topmost object is automatically selected for you by default. Selecting an object places it in the Object Editor. You can drag objects from one place to another, including into and out of containers. It's very intuitive. The buttons let you perform the following functions: - Add: creates a default object (a leather helm) at the selection point, ready to be edited in the Object Editor. - Dup: duplicate the selected object. - Remove: remove the selected object, including any objects inside it. Note: eggs contain the object they spawn, but it's probably inadvisable to mess around with eggs at this point. Under no circumstances should you leave an empty egg; the game will crash. Object Editor ------------- The Object Editor lets you modify existing objects. The title bar displays the object's coordinates and its canonical description. Some attributes require that you have some technical knowledge of the game, for best operation. You can edit the following attributes: - Type: select from a list of possible objects, ordered by object number. - x, y, z: Object coordinates, in hex. Changes to these are currently ignored by the game; you have to drag objects to move them. - Status: Status byte, in hex. You have to read the technical documentation to understand this value. For safety reasons, only bit 0 can be changed. This is the 0wned bit -- if it's 0, taking the object is stealing. Just type 0 or 1 in the box and the program will do the rest. - Quality: Controls such things as which door a lever opens, the type of spell, the contents of a book, and so on. - Quantity: In general, controls how many of an object there are, for objects such as gold coins and black pearls. A quantity of zero does not mean zero objects; it means the object is singular, and will not stack / aggregate / whatever you like to call it. - Frame: In general, represents different views of the same object. For example, a chair has one frame for each of its four orientations; a brazier has four frames for its four types; a chest's frames signify that it's open, shut, locked, or magically locked. The object description may vary for different frames of the same object. Use the Apply button to update the map and the Stack Editor. By default, the "Auto" toggle is selected, which means your changes are automatically applied in real-time. This can be a bit slow, so you can turn off auto-apply. Tile Viewer ----------- Displays the 2048 game tiles. Click on a tile, and it will be selected and the tile number and name reported in the title bar. If you select a maptile (having a number between 0 and 255), you can drop it in the map window with the right mouse button. Book Editor ----------- Simple book viewer (not an editor yet). Although I mostly understand the markup the designers used to signify hint words, Gargish, and so on, I haven't implemented the display. This should be hooked up to the Stack Editor; in lieu of that, the contents of books are displayed on the console when you click on the map. Misc ---- There's no way to reorganize the chunks on the map. You can edit individual chunks in place, but you can't move them around. I haven't had time to write an interface yet. Some object blocks may appear corrupt, because I haven't deciphered everything about them. You'll know one when you see one. The game only saves blocks that it changed, so if you don't edit a corrupt-looking one you'll be all right. -- * Copyright 2003 Jim Ursetto . * All trademarks mentioned herein are the property of their respective owners.