Releases: OpenLoco/ObjectEditor
Object Editor 5.3.0-alpha1
What's Changed
- Fixed the 'required' and 'packed' objects not showing in the scenario/save viewer. c3c43d9
- Object indices are now stored in the editor settings folder, not in the folders they are indexing. This should mean you don't need to run the editor in admin mode any more. This was previously required if the object folder being indexed also required admin access, for example if you installed Locomotion in Program Files on Windows. 432ca73
Full Changelog: 5.2.0...5.3.0-alpha1
Object Editor 5.2.0
What's Changed
Bug Fixes
All of these were reported by @shusaura85. Thanks!
- Fix airport movement node reading values in the wrong order. f83119b
- Fix airport movement nodes and movement edges not being editable. 6458948
- Fix object header inside objects not being editable. 6458948
- Implement cargo offset reading for road/track station. Note, this is not optimised and WILL take a while to load the object. 4cff67b
- Fix missing DrivingSide in Region object. 57daa1b
Image Names
Many image names have been written down by @shusaura85, and some of these have been added to the editor:
- Cliff edge. 03efe18
- Water. 1ca2fb7
- Tunnel. 393252a
- Wall. f44923d
- Road. 6d89a0d
- Building. ddb494a
- Road Station. 8dafbd4
- Land (incomplete th ough). 57daa1b
Full Changelog: 5.1.5...5.2.0
Object Editor 5.1.5
What's New
A few object sub-types didn't get converted to the new class format in 5.1.0, such as VehicleObject::BodySprite, BuildingObject::BuildingPartAnimation, etc. These have now been converted and should show correctly and be editable in the UI
Full Changelog: 5.1.4...5.1.5
Object Editor 5.1.4
What's New
Fixed an issue with doubled file extension in the filename when importing images without a sprites.json
file in the import folder. Thanks to Discord users Glenjimen and RedTender5 for finding this!
Full Changelog: 5.1.3...5.1.4
Object Editor 5.1.3
What's New
- 5.1.0 -> 5.1.2 inclusive had another issue - the graphics table wasn't being saved to the object! The same issue existed with G1.dat. This is now rectified with this release.
- On the image table, I added a "right-click" -> "crop image" menu option for the images. It works, but I have realised it doesn't update the bounding box border - that'll be fixed in the next release...
Full Changelog: 5.1.2...5.1.3
Object Editor 5.1.2
Summary
5.1.* had major issues, notably about half the object types just didn't save correctly. This was due to not copying values from the UI viewmodel back into non-UI objects before saving them. I've written unit tests that test all conversions between UI and memory objects, and these all pass now. Additionally I was testing against all vanilla Steam objects, but I was not testing against GoG objects. I enabled all unit tests for all GoG objects and thankfully none failed, but this additional protection is now there.
What's Changed
- Viewmodel unit tests by @LeftofZen in #204
Full Changelog: 5.1.1...5.1.2
Object Editor 5.1.1
What's New
Discord user Glenjimen pointed out that the animation preview rendering is still not suitable, and I agree. This is because the positions of the image are based on the top-left of the image, not on the XOffset and YOffset coordinates, which dictate the points about which a vehicle image rotates. This release fixes this by translating all the drawn things (image, bounding box, origin pixel) to the correct locations, making the rotation animations smooth and as they appear in-game:
Screen.Recording.2025-08-26.120040.mp4
Full Changelog: 5.1.0...5.1.1
Object Editor 5.1.0
Introduction
Whilst on the surface there is not much functional change, this version of the editor includes a total rewrite of the DAT object parsing logic, as well as fully decoupling the DAT format from the editor/UI itself. Long story short, I am no longer limited by the DAT format in the UI and I can now make any and all changes to the UI, including to object definitions themselves! This is a massive step towards supporting a new object format; indeed it basically makes it possble now! But before that officially happens, there are still plenty of changes that need to happen in the database and object service to support this.
What's Changed
- Aforementioned huge rewrite of DAT handling logic. If you want to see how much work it involved, just check out the PR. The other neat thing is that this uncovered at least 3 bugs, 2 of which are fixed (and the 3rd is mentioned at the bottom of the page):
- RoadObjectFlags was missing
unk_08
as part of its enum definition - it is there now and you can set it. - BuildingObject had a bug in its save code, where elevator sequences were corrupted because it was writing uint16_t-typed values instead of uint8_t. This affected the two buildings with elevator sequences, which were BLDCTY28 and BLDCTY29.
- Additionally, the hex viewer for objects was removed, since objects in the editors memory are no longer in the same memory format as actual DAT objects, making this feature prohibitively expensive to maintain. If you truly want to view objects in raw hex, you can easily load the object in the editor, click "Export as uncompressed DAT" (which will save the file as a DAT file with no encoding on the bytes) and then put that file into your favourite standalone hex editor. The benefit is less code to maintain on my end, and more features for the user (since a proper hex editing program will have many more features than I can possible add to the editor). If you want semantic info, you can use something like Kaitai Struct to create a parser for the loco hex data.
- By @LeftofZen in #199
- RoadObjectFlags was missing
- Add "open folder" for tree view items. This is just a little UI shortcut to open the folder to the item you have selected. It's useful when your object folder has many nested folders. On Windows, this will even highlight the file in window explorer! If anyone knows how to do this on Linux/Mac, let me know. By @LeftofZen in #190
- Add API support for adding and querying missing objects. No user-usable features yet, but this is essentially backend work to implement a cool feature to mark objects in scenarios/save games as "missing" if the object service doesn't know about the object. This will allow us to start looking for actually-missing objects, recreate them if necessary, and otherwise start keeping statistics for this kind of data. By @LeftofZen in #195
- Audio importing has been improved, with the main feature being you can now import MP3s into the game music files, making custom tracks extremely easy to make now. By @LeftofZen in #197
- Multiple image table viewer improvements, including
- importing images should now work when the image filenames have leading zeroes
- fixing a memory leak and otherwise overall improved performance
- the offset pixel actually updates/moves when you change the offsets
- added buttons to center or zero all image offsets
- the zoom level wont wildly jump around when you animate the image table, and the zoom level is also preserved across images
- the preview pane is separate from the properties pane, which also now has a scroll bar. it's just easier to use now
- by @LeftofZen in #202 and #203
Known bugs
- The 3 industry objects with animated effects (COALPS, FACTORY, OILREFIN) may not save correctly. They fail in a unit test and I cannot see why it fails, however this bug has existed since the start of time so nothing is new here, just that I know about the issue now.
- Given the massive rewrite, it's likely I've missed some properties not saving in the UI - if you find any changes you make are not saving, let me know asap.
Full Changelog: 5.0.1...5.1.0
5.0.1
What's Changed
- Fix image table not correctly importing images from folder, by @LeftofZen in b863702
Full Changelog: 5.0.0...5.0.1
Object Editor 5.0.0
What's Changed
Over the last few months there has been a lot of work going on under the hood and today is the first release of those features. Whilst the editor received a few small features and improvements, the service and database received huge updates that pave the way for the next set of features. These backend improvements won't be immediately seen by users, but editor features will start to flow again soon now that the backend can support them.
Editor
- Scenario viewer can now download any required non-vanilla objects that are missing from your object data directory, hopefully making some scenarios playable now if the objects exist in the object service, by @LeftofZen in 499b6ab
- Scenario viewer doesn't freeze on some tabs (because it tried to load too much data) by @LeftofZen in 499b6ab
- The logs have been moved to a separate window under Settings -> Logs, by @LeftofZen in b9bb4b5
- Fixed a bug where the service client had the wrong route for GetFile, which caused downloads to not work, by @LeftofZen in 6b921a8
- Fixed a bug where it wouldn't show the directory item count in the folder tree view, by @LeftofZen in 44c8e78
- Miscellaneous UI improvements (many not visible to the user), by @LeftofZen in 8dbd13a, 9b35d5c, e2d4c4c
Object Service
- Implement a proper REST API for the object service by @LeftofZen in #167
- Rest DI2 by @LeftofZen in #185
- Re-add object availability by @LeftofZen in #186
- Database object tables by @LeftofZen in #187. This one is of particular note - the database now contains separate tables for each object type and has about half of the raw dat data extracted (basically just all the simple fields like integers). It isn't exposed to users via the service (yet) but that will come very soon, and this process of extracting the dat data out is a major step towards new object format!
- Some objects had descriptions that were cut off; these are now fixed thanks to @glenjimen noticing the problem!
- There is now also a quick API reference for those technical-minded people if you want to play around with consuming data from the service: https://openloco.leftofzen.dev/api/
Full Changelog: 4.4.2...5.0.0