No announcement yet.

SunUO Project

  • Filter
  • Time
  • Show
Clear All
new posts

  • SunUO Project

    This is an old RunUO Fork Project that we have archived in the emulator section of the "tools" menu

    Here is the download link

    SunUO Project


    SunUO is a free Ultima Online server for Linux/Mono and Windows.NET, based on RunUO. Ultima Online is a commercial MMORPG by Origin / Electronic Arts.

    I created this fork of RunUO because I wanted to improve it

    SunUO is designed to be a drop-in replacement for RunUO. No manual changes are required to port an existing RunUO 1.0.0 shard to SunUO.

    2007/12/25 SunUO 0.5.1
    Supports the UO client version and fixes several severe vulnerabilities. download

    2007/08/20 SunUO 0.5.0
    Supports the UO client version 6. download

    2007/06/20 SunUO 0.4.4
    Improved NAT traversal, better startup scripts, 64 bit Windows binary included: download

    2007/01/09 SunUO 0.4.3
    Optimizations, bug fixes, and more: download

    2006/12/20 SunUO 0.4.0
    This release brings a lot of simplifications. The scripts are now part of SunUO, which means that the RunUO binary distribution isn't required anymore. This allowed me to fix a lot of script bugs. download

    2006/08/24 Defiance now powered by SunUO
    Yesterday, a long evaluation period at the Defiance headquarters ended. The biggest european freeshard switched over to SunUO!
    The switch required only one simple change to the shard: run SunUO.exe instead of RunUO's old Server.exe.
    It looks like SunUO manages the same shard with 30% less memory, and world load/save have been accelerated by a few seconds. Plus, SunUO offers portability on both Windows x64 (.NET 2.0) and Unix (Mono).

    2006/02/09 DoS by the RunUO team
    This night, the RunUO team unsuccessfully tried to perform a Denial of Service attack on the SunUO server. The attacks came from, which happens to be How childish. Background information here and here.
    Update: this is an excerpt from my web server's access log. I have asked Mark from the RunUO team (who hangs around in the #sunuo IRC channel) for an official statement on this issue.

    2006/02/08 SunUO 0.3.1
    This is a maintenance release, which fixes a bug in the Mobile.SkillMod handler. The world save has been optimized, it's now back on the old speed, maybe even slightly faster. download

    2006/02/05 SunUO 0.3.0
    Version 0.3.0 gives you: better logging, less memory usage, less CPU usage, lower latency, 64 bit support (.NET 2.0), more configuration options. download

    2005/12/14 SunUO forum
    SunUO finally got a web forum! Thanks to CaptNemo for creating it.

    2005/12/08 Exploit released
    I have published my RunUO 1.0.0 exploit, it's written in C and runs on Linux. Get the source here.

    2005/11/29 SunUO 0.2.0
    The new SunUO version 0.2.0 is released! There are two important reasons for upgrading: first, this release fixes a serious remote vulnerability present in RunUO 1.0.0, though SunUO caught these attacks with its exception handlers (which were insulted by many in the past) - this release brings a "real" fix. Second, version 0.2.0 supports encrypted clients (thanks to Sebastian Hartte).

    2005/09/29 about RunUO forks
    I'd like to respond to news on, but unfortunately, I am perma-banned on their website.
    "The entire rationale of releasing RunUO as an open source project was to allow people to fork the core" - funny, I remember how they attacked me for forking RunUO, how I was insulted by RunUO team members (they censored the forum thread meanwhile)
    "[...] forks of The RunUO project like to attack the RunUO team as if we have done something wrong to them" - in the SunUO case, I wanted to submit patches instead of forking, but I was insulted and kicked from their servers. How is this not wrong?
    "The problem we have is with people who make-believe they are superior to us because they modify a few lines of the core" - wrong, not the people (including me) are superior, but the modified code is - of course, in my opinion, SunUO is superior to RunUO. If I didn't think that, the SunUO project would be pointless. For what reason should I fork an existing project, if not for improving it? Improving naturally leads to a "superior" product. I fail to understand how this is a problem for Ryan.
    Enough with this braindead discussion for today.

    2005/06/30 SunUO 0.1.9 released - download

    2005/06/14 the SunUO homepage is now on the domain The mailing list and the Subversion repository are hosted on Berlios.

    2005/05/10 SunUO 0.1.8 released - download

    Why SunUO?
    SunUO was made to address some of the major design issues with RunUO:

    SunUO is more stable than RunUO (exception handlers); a buggy script does not crash the server
    SunUO requires less memory than RunUO.
    SunUO is faster than RunUO.
    SunUO runs on Mono 1.1 (Linux, FreeBSD, ...) out of the box
    SunUO makes script compilation optional; a fresh install starts in about 3 seconds, including world load
    SunUO supports multiple script libraries; this helps keeping tidiness
    SunUO introduces a configuration file; having to edit source code to configure a shard sucks (ever upgraded to a new RunUO version? Then you know what I mean)
    SunUO is not vulnerable to the directory entry order faction bug, which may break all faction memberships and town ownerships in some cases. The RunUO team refuses to accept this as a bug, stating that .NET automatically sorts directory entries (which is plain wrong).
    Most of RunUO's design flaws are deep within the Scripts directory. The scripts are not free software, therefore I cannot provide corrected versions. I am trying hard to keep compatibility with these flawed scripts, while improving the core.

    RUOSI cooperation
    I have recently joined to RUOSI team (formerly known as RunUO Russian Edition). They are a group of nice Russians who made the first RunUO fork ever, and they integrated Samurai Empire support (and more). All SunUO improvements have been merged to RUOSI.

    The SunUO project will be continued; it will stay for people who prefer a RunUO clone which stays closer to the original code base, for people who who want a stable RunUO replacement, and nothing more. SunUO will stay in sync with future RunUO releases.

    Some stuff from my wishlist which is not implemented yet:

    dynamic recompilation without restarting server
    incremental, consistent backups
    .. more ideas? tell us!
    I removed "multithreading support" from the list because the RunUO code base does not allow that without a massive rewrite plus a huge scripts code review.


    RunUO design flaws

    This page contains an incomplete list of RunUO design flaws. This is my
    personal opinion. It is meant to be constructive criticism. It was the
    reason for me to begin the SunUO project.

    Don't misunderstand me; I think the overall code quality in RunUO is pretty
    good. I would never fork bad code in my free time.

    The SunUO project tries to fix some of these design flaws while staying
    compatible with RunUO.

    Every minor bug in any script crashes the whole server.

    When an exception occurs, there is no diagnostic error message.

    No synchronization. RunUO uses thread-unsafe classes.

    No multithreading support, only one CPU is used on SMP machines.

    There is no workaround for the 2/3 GB memory limitation; RunUO is not

    compatible with 64 bit platforms. This is a big problem on large shards.

    RunUO recompiles all scripts on startup, even if they havn't changed.

    The RunUO API has changed between every release, making old scripts
    incompatible. Let's hope this is not the case for 1.0+ releases. Still,
    there is no definition what belongs to the API and what is an "internal"
    class. That makes a stable API nearly impossible.

    The RunUO core contains several unsafe hacks and pointer arithmetics which
    are not portable. Their Mono workaround is code which was never tested, it simply does not work.

    The server restart function (in the scripts) does not account for .NET
    wrappers like Mono; without BINFMT_MISC (Linux), server restart does not

    The administrator has to edit source code to configure RunUO.

    Upgrades are a lot of work because these source code changes have to be
    merged with the changes of a new RunUO release.

    The scripts are not free software. The 1.0.0 scripts do not have a license.

    The old license said "all your code belongs to us".

    Too much is done with global variables and static methods.

    The directory structure is not well defined. Static files are mixed with
    variable files in the root directory. There should be a well-defined structure to allow read-only mounts and better backups.

    There was a lot of feedback about this page on the RunUO forum. Some people
    told me I am totally wrong, but either gave no reason, or reasons which had
    nothing to do with my argumentation, or even logically flawed reasons.

    Others (including RunUO team members) called that "design decisions, not
    flaws". I think that's more a matter of personal opinion. Remember the old

    Microsoft saying: "It's a feature, not a bug"!
    RunUO - Ultima Online Emulator -

  • #2
    Here is a nice install tutorial for SunUO, it has a lot of nice, detailed information
    RunUO - Ultima Online Emulator -


    • #3
      Here is another SunUO project
      RunUO - Ultima Online Emulator -