Improved Cross-Platform Support - and 64-bits!
For the first time in nearly two decades, UOX3 now has feature and stability parity across Windows, Linux and MacOS. The codebase has gone through a small upheaval and revamp to make sure UOX3 both compiles and runs in a stable manner on all these platforms... including 64-bit ones. The future is now! Big kudos to punt, who was the driving force (and programmer) behind both this and the next change:
Proper Support for UOP Maps
Previous versions of UOX3 had some rudimentary support for reading map files wrapped in the very earliest version of the UOP format, but with 0.99.3 UOX3 can finally load the latest version of these files directly, without any kind of conversion to MUL being needed!
Improved Client Support
UOX3 should now work reasonably well with clients all the way up to the most recent one - 126.96.36.199 - while still maintaining backwards compatibility with client versions down to 4.0.0p!
New Feature - Instances
The first iteration of a new feature that allows game objects (and regions/spawn regions) to exist on the same map, at the same coordinates - but in different "dimensions" where they cannot interact with or be affected by each other. Controlled by fifth coordinate - instanceID - which can be set via JS scripts, 'set command, start locations in uox.ini, spawnregion DFNs
The documentation for UOX3 has been completely revamped, and can be viewed in a convenient HTML document available both in UOX3's docs folder as well as right here at uox3.org! The new docs also include a setup guide, crash-course in GMing, details on specific features, brand new UOX3 history section with details and fun facts about UOX3 versions stretching all the way back to the original public release of UOX3. Last, but not least - an updated and up-to-date UOX3 Hall of Fame, that lists over two hundred (200) names and nicknames of the people who have contributed to UOX3 in one way or another over the last two decades!
The complete changelog is available here, while a shorter summary follows below.
Summary of improvements in UOX3 0.99.3:
- UOX3 now compiles and runs on both Windows, Linux and MacOS - in 32-bit and 64-bit!
- UOX3 can now load map files in either UOP or MUL formats on Windows, Linux and MacOS
- Improved and simplified build process for all platforms! Added new Makefile shared between Linux and MacOS, as well as new SpiderMonkey VS solution/project files and alternate CMake UOX3/SpiderMonkey projects for Windows
- Major code cleanup that amongst other things replace old, platform-specific C code dealing with stuff like threading, file I/O and time handling with cross-platform C++11/C++17 variants, and many other improvements!
- Fixed segmentation fault when loading/caching map/multi files on Linux/MacOS
- Fixed segmentation fault during CustomTarget callbacks to JS scripts on Linux/MacOS
- Fixed segmentation fault when parsing dictionaries on Linux/MacOS
- Fixed server crash related to world saves and items not being properly removed from map regions when deleted
- Fixed server crash related to guildstones and townstones
- Cleanup of legacy build files, folders and documentation
- Complete revamp of documentation for UOX3, gathering all the info you need in one place
- Added support for WorldMap tracking of guild members in ClassicUO client via uox.ini setting CLASSICUOMAPTRACKER
- Improved support for client versions up to at least 188.8.131.52
- Added feature negotiation with tools like Razor to help shard admins set some "ground rules" for what kind of assistant features should be allowed on their shard, controlled with uox.ini settings ASSISTANTNEGOTIATION, KICKONASSISTANTSILENCE and a new section titled [disabled assistant features]
- Exposed SpawnRegions to JS Engine! See updated JS documentation or full changelog for details
- Updated JS Gump method AddToolTip to support up to 10 arguments (as needed by tooltip cliloc). Can also send custom tooltip text using cliloc 1114778
- Added new JS Gump method AddPicInPic (client 184.108.40.206 and above only)
- Added new JS Gump method AddPicInPic (client 220.127.116.11 and above only) and AddImageProperty
- Added new JS Event - onUseBandageMacro
- Added support for containers, shields and weapons added in more recent client versions
- Fixed issue with properly saving, loading and restoring (after resurrection) character hairs and beards
- Improved startup time due to reduction in excessive logging while loading spells
- Fixed a Z-movement issue with NPCs falling through upper-story floors of buildings
- Pets now teleport to keep up with their owners if pathfinding fails for any reason
- Fixed issue that prevented persistent NPC shopkeepers from working properly after a server restart
- Misc minor fixes to JS scripts
- Complete changelog