UOX
From Wikipedia, the free encyclopedia
Ultima Offline eXperiment | |
Developer: | UOX3 Dev Team |
---|---|
Latest release: | v0.98-3.7 / July 8, 2006 |
OS: | Microsoft Windows (95 and above), Linux |
Use: | Emulator |
License: | GNU General Public License |
Website: | UOX3.org |
UOX, or Ultima Offline eXperiment, is an Ultima Online (UO) server emulator that is written in C++ and released under the GPL. Today, the term UOX almost exclusively refers to the third version, UOX3.
Contents |
[edit] Overview
UOX is a software suite that allows a user to manage a customized Ultima Online server to which they or others may connect. UOX is both free and open-source, released under the GPL, allowing anyone to modify and customize it to his or her will.
[edit] History
UOX has had a long history, and has seen three major version numbers, often marking change in development leadership.
[edit] UOX
Created during the beta testing of Ultima Online in 1996 or 1997, the first version of UOX is commonly regarded as the first Ultima Online emulator. Created by Jaegermeister. This version was closed-source.
[edit] UOX2
The second version was by Marcus Rating (aka Cironian), who rewrote UOX (Alnes 2003). UOX2 was also single-player (Pelel 2005). This version was also closed-source.
[edit] UOX3
UOX has spent the majority of its lifetime in its third version. Originally re-written from UOX2 by Marcus Rating, it has passed through many hands and gone through monumental changes. Some believe that the current rendition of UOX should be dubbed UOX4, as virtually every line of the program has been rewritten. This was the first version to have the source released to the public under the GPL. It was released on October 22nd, 1997.
[edit] Early development
Originally decentralized, early development of UOX3 (circa 1998) was done by many individuals with no version control and little synchronization or quality checks. This led to what is often termed "spaghetti code", stability issues, and bugs. Yet, even so, the original creator, Marcus Rating, was opposed to centralizing development:
- "Anyway, and I should have probably said this earlier: I do not think that centralizing the development of UOX, as it is obviously happening, is a good idea. It was always wonderful to see how a lot of people just added their favorite features to UOX without having to think if someone else was working on the code too. Yes, it does lead to bugs sometimes, but actually UOX is still in a pre-alpha state, where no one should care about stability issues. Also, I do not think a revision control system is really necessary, if people just give a bit of an advance announcement before releasing things and remember to document all changes in the update.txt. (Yes, I have to remember that myself too)" (Rating 1998)
That choice and the resulting code base has often been one of the primary criticisms of the project (see: criticism). These issues have caused some to choose to create branches of the code (see: branches), and still others to create new emulators entirely.
[edit] Recent development
Today, UOX3 would appear as an entirely different program to one who used it at its inception. JavaScript is used to make just about anything in the game world scriptable, and the code is almost entirely object-oriented. Along with this rewrite, UOX3 has seen many enhancements in cleanliness, organization, and better design principles. This new code base, originally created by Matthew Randall (aka EviLDeD), Daniel Stratton (aka Abaddon/Maarc), "Tauriel" (real name unknown), and Bryan Pass (aka Zippy), is now primarily maintained by Scott Thompson (aka giwo/Zane) and Geir Ove Alnes (aka Xuri/Xoduz) on SourceForge.
[edit] Web sites
Originally, UOX3 was hosted as a part of "UO Stratics" at uox.stratics.com. This was during the time when Marcus Rating was the primary developer.
As the project grew, and Rating lost interest, the community and development moved to UOXDev.com, run by Ryan McAdams. The projected called UOXDev its home for many years, until McAdams shut the site down and shifted his focus to RunUO.
As Matthew Randall and Daniel Stratton took over, development moved to a new web site, UOX3Dev.net. This web site remained the focal point of UOX3 development during its prime.
After the UOX3Dev.net site went down indefinitely, UOX3.org, ran by Geir Ove Alnes, became the new official UOX3 web site, and remains the official web site to this day.
[edit] Features
- Open-source C++.
- Customization through JavaScript.
- Commands are scriptable - more than 100 commands are scripted and can be modified by administrators already, and new ones can be added.
- All UOX3 script and configuration files are reloadable during runtime.
- Extensive logging of server errors, packets sent and received, commands used, spells cast, combat messages, and in-game player chat.
- Regional spawning system that allows an administrator to spawn large numbers of non-player characters or items without significantly increased world-save times, due to the fact that objects spawned regionally are not saved and only kept in memory for as long as the server is running. Upon server restart, they are all re-spawned.
- Region-specific control of weather effects, lighting, appearance (Felucca, Trammel, spring, winter) and ore-resources.
- Custom dictionary system allowing for the display of server and script messages in multiple languages (Currently there are only dictionaries for English, and to some extent - French and German, though any language with a country-code supported in the Ultima Online client is possible to use).
- Customizable races, allowing for allies, enemies, monsters opposing or assisting each other, skill-bonuses/penalties, etc.
[edit] Branches
Due to its popularity and the nature of open-source projects, UOX has been branched many times. Some of these offshoots are still around and have grown into projects that are completely different from UOX, and some have also been branched into new projects themselves. All were, at some point, based on the code of UOX3 or derived from an emulator that used UOX3 code. No known offshoots of either UOX1 or UOX2 exist (likely due to them both being closed-source).
Branching took place when an individual or group decided they wanted to make changes to the program not consistent with the current development team's goals. In these scenarios, new projects based on the UOX3 source code were created in order to pursue the particular goals of that group. No other Ultima Online emulator has seen as many branches as UOX.
Below is a short list of known branches, see "The UO Emulator Timeline" for a more complete listing along with information about many other (non-UOX derived) emulators.
- AUOX: Armageddon made his own version of UOX3, named AUOX, and caused the first branching of any UO emulator to occur.
- AUOXCon: SpaceDog continued Armageddon's AUOX through AUOXCon(tinued).
- Wolfpack: created by Ripper based on UOX3.
- NOX-Wizard: created by Xan using Wolfpack as a base on the 25th of June, 2001.
- Revelation Fork of Nox-Wizard, enters scene on the 21st of August, 2002.
- Lonewolf: a derivative of Wolfpack, started in November of 2001.
- Method: started by Melchir in early February of 2002.
- Werewolf: Lonewolf branch started by Zagyg in early December of 2005.
- The Shard
- Sunshine A derivate work of an early Wolfpack version, started by M. Strobl sometime in 2000.
- NOX-Wizard: created by Xan using Wolfpack as a base on the 25th of June, 2001.
- UOX-pi: created by Lord Binary, later merged into Wolfpack.
- Legions of Chaos: the first existence of a faction system in UO, written by Chaos.
- UOX Classic: an offshoot from the UOX3 versions released immediately before the inclusion of the JavaScript engine and the move to object oriented programming.
- UOX:NG: started with big-endian 64-bit machines in mind, by Generic Player.
- UOX3 (Unofficial): started by Punt on the first day of 2003, intending to rewrite the JavaScript-enabled UOX3 version.
[edit] Criticism
UOX (especially UOX3) has had many critics over the years. The most notable topics of criticism were on the buggy nature of the program, and the organization & leadership of the UOX development team.
A more recent criticism is of the movement towards JavaScript as the primary method of customization. Some feel that, given the open-source nature of the program, using a scripting language only complicates the code and is, overall, unnecessary. This view has only been shared by a minority who know C++ well enough to be quite capable of easily customizing the core of the program without the use of higher-level scripting languages. Some have even argued that there is already too stiff of a competition among Ultima Online emulators that have scripting support, and that being purely low-level code could be an advantage, though others have argued that it would still attract more users if it were easier to customize, and so the exportation of functionality to external scripts has continued.
Ultimately, these criticisms have led to the creation of other emulators or branches of UOX3, a few of which are noted above.
[edit] See also
- Ultima Online The game that UOX emulates.
- RunUO Another Ultima Online emulator.
[edit] References
- Alnes, G. (2003), UOX3.org Frequently Asked Questions. Retrieved Dec. 6, 2005.
- Pelel (2005), pelel ยป uox2. Retrieved Dec. 6, 2005.
- Rating, M. (1998), Ultima Offline eXperiment. Retrieved Dec. 6, 2005 from Archive.org.
[edit] External links
- UOX3.org The current official UOX3 development site.
- UOX3 @ Sourceforge The UOX3 Official Sourceforge Project
- OpenUO @ Sourceforge A Sourceforge Project for all things UOX
- UOGateway is an application which allows you to connect your Ultima Online client to an emulated server.
- UOXC: L Is the developement site of UOXC: L.