Difference between revisions of "UO:98"

From UODemo Wiki
Jump to: navigation, search
(Administrating UO:98: Added imfo on commands and other handy stuff)
(Update URL's to point to UO98.org)
 
(23 intermediate revisions by the same user not shown)
Line 3: Line 3:
 
[[File:UO98_Startup.png|400px|thumb|right|Starting UO:98]]
 
[[File:UO98_Startup.png|400px|thumb|right|Starting UO:98]]
 
[[File:UO98 Ingame.png|400px|thumb|right|In Game]]
 
[[File:UO98 Ingame.png|400px|thumb|right|In Game]]
 +
[[File:UO98 God Client.JPG|400px|thumb|right|God Client support]]
 +
 +
Please see also the [http://forums.uo98.org/viewforum.php?f=34 UO:98 forums] at JoinUO
 +
 +
= Installer =
 +
Download from UO98: [http://download.uo98.org/Emulators/UO98/UO98_Setup.msi HTTP] (9.20 MB)
  
 
= Installation prerequisites =
 
= Installation prerequisites =
Line 14: Line 20:
 
You must have the UO Client installed to your PC first. Note that under Windows 7 and Vista it is not recommended to install the UO Client in "Program Files" or on the root of the C drive (C:\) due to security issues with these folders.
 
You must have the UO Client installed to your PC first. Note that under Windows 7 and Vista it is not recommended to install the UO Client in "Program Files" or on the root of the C drive (C:\) due to security issues with these folders.
 
The installer will offer to direct you to the Download page for the Microsoft .Net 4.0 framework. If it is not installed at the time of installation you will need to re-run the installer after the completion of the Framework install.
 
The installer will offer to direct you to the Download page for the Microsoft .Net 4.0 framework. If it is not installed at the time of installation you will need to re-run the installer after the completion of the Framework install.
It's best practice to place the Ultima Online : The Second Age CD in your CD Rom drive before beginning the installation so that the installer can find your copy of the required UoDemoInstall.exe file on that disk. Installation should be relatively straightforward. If you have trouble, please visit the [http://www.joinuo.com/forums/viewforum.php?f=34 UO:98 forums] for help
+
It's best practice to place the Ultima Online : The Second Age CD in your CD Rom drive before beginning the installation so that the installer can find your copy of the required UoDemoInstall.exe file on that disk. Installation should be relatively straightforward. If you have trouble, please visit the [http://forums.uo98.org/viewforum.php?f=34 UO:98 forums] for help
  
 
= Using UO:98 =
 
= Using UO:98 =
 
As of the intial public release, UO:98 is started from the UO98 folder by running StartUO98.cmd. You may be prompted the first time the program is run to allow UODemo+.exe through your firewall. If you intend to allow connections to UO:98 from outside your local network, you should check the "public" in addition to "private" box in that dialog.
 
As of the intial public release, UO:98 is started from the UO98 folder by running StartUO98.cmd. You may be prompted the first time the program is run to allow UODemo+.exe through your firewall. If you intend to allow connections to UO:98 from outside your local network, you should check the "public" in addition to "private" box in that dialog.
  
UO:98 supports the client version on the UO:T2A (1.25.35) through 5.x. You may use Razor to connect to UO:98, or modify the login.cfg file in your UO Client folder and use a decrypted version of the client. See [https://www.google.com/search?q=uorice UORice] for more info on decrypting the client.
+
UO:98 supports the client version on the UO:T2A (1.25.35) through 5.x '''Unencrypted'''. You may use Razor to connect to UO:98, or modify the login.cfg file in your UO Client folder and use a decrypted version of the client. See [https://www.google.com/search?q=uorice UORice] for more info on decrypting the client.
  
 
* Server: '''<YOUR LAN ADDRESS>''' (not localhost or 127.0.0.1)
 
* Server: '''<YOUR LAN ADDRESS>''' (not localhost or 127.0.0.1)
Line 30: Line 36:
  
 
The server as distributed has one administrator account:
 
The server as distributed has one administrator account:
* Username: '''Administrator'''
+
* Username: '''Admin'''
 
* Password: '''password'''
 
* Password: '''password'''
  
 
Additional accounts can be auto created by simply attempting login on a non-existent account.
 
Additional accounts can be auto created by simply attempting login on a non-existent account.
 +
 +
The server auto saves hourly, writing to UO98/[[.rundir|rundir]]/UO98. There is a copy of the distribution world files at http://svn.uo98.org/svn/public/UO98/Data/distro/ should you need to restore them. Typically only accounts.xml, [[Dynamic0.mul|dynamic0.mul.q]], and [[Dynidx0.mul|dynidx.mul.q]] will need to be restored. These three files should be treated as a unit, and always be backed up and restored together.
 +
 
= Administrating UO:98 =
 
= Administrating UO:98 =
 
More administration tools are planned.  
 
More administration tools are planned.  
  
Currently the world is most easily modified with the "God Client" which you may be able to find out there somewhere on the web.
+
Currently the world is most easily modified with the "[[God Client]]" which you may be able to find out there somewhere on the web.
  
 
== Accounts ==
 
== Accounts ==
  
User accounts are stored in UO98/rundir/UO98/accounts.xml
+
User accounts are stored in UO98/[[.rundir|rundir]]/UO98/accounts.xml
  
 
To modify a user account level, you can modify the ''accessflags'' element of their account. You should do this when the server is shut down, as this file is overwritten on saves.
 
To modify a user account level, you can modify the ''accessflags'' element of their account. You should do this when the server is shut down, as this file is overwritten on saves.
Line 47: Line 56:
 
Standard values for accessflags are:
 
Standard values for accessflags are:
 
* Player - No special Access
 
* Player - No special Access
* Editor - God Client Features (i.e., GM)
+
* Editor - [[God Client]] Features (i.e., GM). See also: [[IsEditing]]
 
* Admin - Editor, plus access to '']save'' and '']shutdown'' commands
 
* Admin - Editor, plus access to '']save'' and '']shutdown'' commands
  
Line 53: Line 62:
 
=== GM"cheat" Commands ===
 
=== GM"cheat" Commands ===
 
These commands are implemented in the gmcheat.uosl script.
 
These commands are implemented in the gmcheat.uosl script.
* [spawn <templateid>
+
; [spawn <templateid>
** Creates a templated entity. Templates are defined in rundir/bank/templatestable.dat.q
+
: Creates a templated entity. Templates are defined in UO98/[[.rundir|rundir]]/bank/[[Templatestable.dat|templatestable.dat.q]]
* [spawnitem <itemid>
+
; [spawnitem <itemid>
** Creates an item of itemid at the targeted location. Scripts are only added if the numberic item script exists (like 244.uosl.m.q)
+
: Creates an item of itemid at the targeted location. Scripts are only added if the numeric item script exists (like 244.uosl.m.q)
* [tele <X> <Y> [Z]
+
; [tele <X> <Y> [Z]
** Teleports your to the specified map location. Z is optional.
+
: Teleports your to the specified map location. Z is optional.
* [setskill <#> <val>
+
; [setskill <#> <val>
** Sets your skill of # to the specified value (integer 0-100)
+
: Sets your skill of # to the specified value (integer 0-100)
* [setskill all <val>
+
; [setskill all <val>
** Sets all your skills to the specified value (integer 0-100)
+
: Sets all your skills to the specified value (integer 0-100)
* [addscript <name>
+
; [listskills
** Adds a names script to the targeted object. Scripts are not specified with file extensions. Example: [addscript heavy
+
: Lists all the numeric skill id's (for use in the setskill command)
* [where
+
; [addscript <name>
** Prints our your location.
+
: Adds a names script to the targeted object. Scripts are not specified with file extensions. Example: [addscript heavy
 +
; [where
 +
: Prints our your location.
 +
; [setname <new name>
 +
: Sets the name (RealName) of the target
 +
; [getserial
 +
: Reports the global serial of the targeted object. See also: [[Objtoint]]
 +
; [gethue
 +
: Reports the hue of the targeted object
 +
; [getheight
 +
: Reports the height of the targeted object
 +
; [getelevation
 +
: Reports the Z location of the targeted object
  
 
=== SCommands ===
 
=== SCommands ===
 
These commands are built into UODemoDLL and are not scripted (note the ])  
 
These commands are built into UODemoDLL and are not scripted (note the ])  
* ]save
+
; ]save
* Saves the world to dynamic0.mul
+
: Saves the world to dynamic0.mul
* ]coun [me|<serial> [type]]
+
; ]coun [me|<serial> [type]]
** Makes the target (or yourself if "me") a counselor.
+
: Makes the target (or yourself if "me") a counselor.
* ]ucoun [me|<serial>]
+
; ]ucoun [me|<serial>]
** Unmakes the target a counselor
+
: Unmakes the target a counselor
* ]shutdown
+
; ]shutdown
** Shots down the server, without save.
+
: Shuts down the server, without save.
* ]test
+
; ]test
** This simply verifies that the "SCommands" are working.
+
: This simply verifies that the "SCommands" are working.
  
 
== Handy Templates ==
 
== Handy Templates ==
* 3501: loaded spellbook
+
; 3501
* 3506: reagent bag
+
: Loaded spellbook
* 1504: 100 gold
+
; 3506
* 1900-1920 Houses
+
: Reagent bag
* 1800-1805 Boats
+
; 1504
* for more: /rundir/bank/templatestable.dat
+
: 100 gold
 +
; 1900-1920
 +
: House deeds
 +
; 1800-1805
 +
: Boat deeds
 +
For more templates, look in UO98/[[.rundir|rundir]]/bank/[[Templatestable.dat|templatestable.dat.q]]
  
 
== Handy Scripts==
 
== Handy Scripts==
 
These are implementors for the god client Utility window commands, but may be used in the regular client by using [addscript ...
 
These are implementors for the god client Utility window commands, but may be used in the regular client by using [addscript ...
* gmcheat :GM Commands
+
; gmcheat
* commandDelete: items
+
: Give the targeted player access to [[#GM.22cheat.22_Commands|GM Commands]]
* commandZap: Mobiles
+
; commandDelete
* commandInvulnerable
+
: Delete targeted item
* commandSlay
+
; commandZap
* commandResurrect
+
: Delete Targeted NPC (Don't Zap players!)
* commandFreeze
+
; commandInvulnerable
 +
: Makes the targeted Mobile invulnerable. Inverse is commandVulnerable
 +
; commandSlay
 +
: Kills the targeted mobile
 +
; commandResurrect
 +
: Ressurrects the targeted mobile (player)
 +
; commandFreeze
 +
: Freezes the targeted Mobile. Inverse is commandUnFreeze
 +
; commandSquelch
 +
: Squelches the targeted Mobile. Inverse is commandUnSquelch
 +
; Heavy
 +
: Sets the weight of an item to 255, making it immovable.
 +
 
 +
The commands that are prefixed with ''command'' are custom and the equivalent of the Utility window commands in the [[God Client]]. A complete list is in the Wombat Scripts project, filtered under Staff Tools/Custom Admin/CommandImplementors
 +
 
 +
= How does it work =
 +
UO:98 is an attempt to bring the [[Main_Page|UO Demo]] mainstream by patching the Demo into a fully functional and administrable server.
 +
 
 +
The majority of the necessary basework via [[UoDemo+]] has been available for some time. The [[UoDemoDLL]] project took [[UoDemo+]] well beyond the chains imposed by having to make direct hacks to the [[UODemo.EXE]], patches can now be applied or even un-applied during run-time; and new code can be added outside the executable and hooked to existing functions.
 +
 
 +
A new project called Sidekick was developed in Visual-C++ to be loaded by [[Main_Page|UoDemo]] using the [[Uodemo%2B#Publish_15|UODEMODLL]] env variable. This Dll loads both Batlin's [[UoDemoDLL]] (In addition to some great patches, the Wombat API for in-memory patching), and also loads a C# managed DLL called Sharpkick. Sidekick acts as a Marshall between the unmanaged Borland C [[UoDemoDLL]], and Sharpkick a Managed C#.Net DLL
 +
 
 +
Currently all packets can be intercepted and replaced or handled directly within C#. This gives the ability to handle the login sequence very elegantly within C#, and with access to all of the .Net framework for XML handling and file IO for account name translation to account numbers, which are accepted for login by [[UoDemo+]].
 +
 
 +
= Development =
 +
 
 +
[[File:Checkout.JPG|200px|thumb|right|Checkout UO:98 to the same folder that you installed the application to.]]
 +
[[File:Confirm.JPG|200px|thumb|right|Confirm that you really want to checkout to an existing folder.]]
 +
[[File:UO98folder.JPG|200px|thumb|right|UO98 folder should look like this.]]
 +
UO:98 development requires at a minimum Visual Studio 2010 with C# and C++, and the .Net 4.0 Framework. See the [[#UODemoDLL | UODemoDLL]] section for additional optional requirements.
 +
 
 +
The UO:98 project is Copyright &copy; 2011 JoinUO, and is Licensed under the [http://www.opensource.org/licenses/OSL-3.0 Open Software License version 3.0]
 +
 
 +
== Getting the Source ==
 +
The UO:98 source code is available on our [http://svn.uo98.org/svn/public/ public SVN].
 +
 
 +
You can checkout the public source directly to the folder which you installed UO:98 to. The SVN is not comprehensive, you need to install UO:98 using the [[#installer | Installer]] first.
 +
 
 +
The UO:98 SVN URL is: http://svn.uo98.org/svn/public/UO98
 +
 
 +
If not familiar with Subversion (SVN), in windows [http://tortoisesvn.net TortoiseSVN] (as in the example on the right) is a easy to use tool for working with svn repositories. You can get the latest version here: http://tortoisesvn.net/downloads.html
 +
 
 +
To use TortoiseSVN to check out the solution:
 +
* Install Tortoise SVN, and reboot your PC.
 +
* Open Windows Explorer to the parent folder to which you installed UO98 (C:\ if you installed in c:\UO98)
 +
* Right click in an empty area of the folder choose "SVN Checkout..."
 +
* URL of repository: http://svn.uo98.org/svn/public/UO98
 +
* Checkout Directory: C:\UO98 (if that's where UO 98 is installed)
 +
* Click OK.
 +
* You will get a warning about checking out to an existing directory, click OK.
 +
** If you're not comfortable with SVN checkouts, you might want to make a backup copy of your UO98 folder before checking out. (this is probably good advice even if you are comfortable with SubVersion)
 +
* The files will be fetched to the UO98 folder. You will see a new folder in UO98 called DEV, and some of the existing folders and files will now have green checkmarks on them. This indicates their contents match the SVN versions.
 +
 
 +
If you make changes to files they will appear with a red X on them. This lets you know they were modified from the originals.
 +
 
 +
Any files and folders with a blue ? on them are items that are not present in the repository. The rundir has this mark, as it is not included in the distribution.
 +
 
 +
== The Solution File ==
 +
[[File:Uo98solution.JPG|150px|thumb]]
 +
The UO:98 solution file, located un UO98\Dev\UO98.sln is made up of 5 projects. Only three of these projects are actually .Net projects, Scripts and UODemoDLL are in this solution for editing only.
 +
 
 +
Sharpkick is the primary project in the UO:98 solution. The Sidekick and UODemoDLL projects are used to transition from managed to unmanaged code, and interface with the running UODemo+.exe.
 +
 
 +
Sharpkick_Offline_Tests is a standard [http://en.wikipedia.org/wiki/Unit_testing Unit Test] project that uses the built in [http://msdn.microsoft.com/en-us/library/ms243147(v=vs.80).aspx Microsoft Testing Framework]. It's intended to test Everything within the Sharpkick project by using a [http://en.wikipedia.org/wiki/Mock_object mock] of the Server Core. Coverage is currently substancially less than "everything".
 +
 
 +
There is an additional test framework that is built into Sidekick and UODemoDLL for running tests against the running UODemo. These tests can be executed by running UO98_TestMode.cmd. This will compile UODemoDLL, launch UODemo+, and execute the tests in UO98\Dev\UODemoDLL\src\Tests.c . Please see the [[#UODemoDLL | UODemoDLL section]] of this guide regarding the requirements for compiling [[UODemoDLL]].
 +
 
 +
== UODemoDLL ==
 +
To develop or compile the UODemoDLL you will need Borland C++ Compiler 5.5 and Turbo Assembler 5.0 (TASM). The build commands are configured so that these applications are expected to be installed in c:\borland\BCC55 and c:\borland\TASM
 +
 
 +
If your borland install folders differ from this, you may need to modify BCCPATH and TASMPATH in UO98/Dev/BUILDDLL.dll
 +
 
 +
There is a UODemoDLL project in the VS10 solution, this is for editing only. This is not VC++ code, and VS2010 cannot compile it.
 +
 
 +
To start UO98 with a recompile of the UoDemoDLL, run UO98.cmd in the UO98 folder. Running StartUO98.cmd will start UO:98 without compiling the UODemoDLL.
 +
 
 +
== Community ==
 +
In addition to this [[Main_Page|UODemo wiki]], The [http://forums.uo98.org/viewforum.php?f=32 UO Demo forum] on JoinUO has a lot of information on the UODemo internals.
 +
 
 +
We are anxious to meet other developers interested in the project. If you are excited about this project, please drop into the [http://forums.uo98.org/viewforum.php?f=34 UO:98 forum] and [http://forums.uo98.org/viewforum.php?f=32 UODemo forum] and say hello.
  
 
= Credits =
 
= Credits =
 
UO:98 is an joint effort of the JoinUO team. It was primarily developed by Batlin and Derrick and is based on the UODemoDLL project. Thanks much as well to Garrett, Rougan, and Kaivan for their efforts on the UODemo, God Client, and this project.
 
UO:98 is an joint effort of the JoinUO team. It was primarily developed by Batlin and Derrick and is based on the UODemoDLL project. Thanks much as well to Garrett, Rougan, and Kaivan for their efforts on the UODemo, God Client, and this project.

Latest revision as of 18:47, 21 July 2016

UO:98 is an extension to the UO Demo released by Origin Systems in 1998 on the Ultima Online:Second Age CD. The UO Demo (demo) is an offline tutorial for Ultima Online. The Demo featured only the town of Ocllo, and a quest that a player could complete while learning about the Game and Client. UO:98 unlocks many of the features that exist in the UO Demo such as the ability for others to connect with a regular UO Client, the ability to use the built in staff tools, and the expansion of the playing world to the entire map, and world saving. UO:98 also adds new features such as an accounting system, full world decoration, and support for later UO Client versions.

Starting UO:98
In Game
God Client support

Please see also the UO:98 forums at JoinUO

Installer

Download from UO98: HTTP (9.20 MB)

Installation prerequisites

In addition to requiring the Ultima Online:The Second Age CD, the UO:98 distribution also requires (at a minimum), the following software installed or available on the target platform.

  • Microsoft Windows XP, Vista or 7
  • Microsoft .Net 4.0 Client Profile.
  • Ultima Online Client version 1.25.35 through 5.x
    • (6.x packet protocols not yet implemented)

Installing UO:98

You must have the UO Client installed to your PC first. Note that under Windows 7 and Vista it is not recommended to install the UO Client in "Program Files" or on the root of the C drive (C:\) due to security issues with these folders. The installer will offer to direct you to the Download page for the Microsoft .Net 4.0 framework. If it is not installed at the time of installation you will need to re-run the installer after the completion of the Framework install. It's best practice to place the Ultima Online : The Second Age CD in your CD Rom drive before beginning the installation so that the installer can find your copy of the required UoDemoInstall.exe file on that disk. Installation should be relatively straightforward. If you have trouble, please visit the UO:98 forums for help

Using UO:98

As of the intial public release, UO:98 is started from the UO98 folder by running StartUO98.cmd. You may be prompted the first time the program is run to allow UODemo+.exe through your firewall. If you intend to allow connections to UO:98 from outside your local network, you should check the "public" in addition to "private" box in that dialog.

UO:98 supports the client version on the UO:T2A (1.25.35) through 5.x Unencrypted. You may use Razor to connect to UO:98, or modify the login.cfg file in your UO Client folder and use a decrypted version of the client. See UORice for more info on decrypting the client.

  • Server: <YOUR LAN ADDRESS> (not localhost or 127.0.0.1)
  • Port: 2593

The server will not accept connections using localhost or 127.0.0.1. Use your lan address. In windows you can determine your LAN address by typing ipconfig at the command prompt.

The default port for UO:98 is 2593'. This may be modified within the file UO98\rundir\UO98\server.txt.q It's not recommended at this time to modify fields other than <port XXX> in the server.txt.q file.

The server as distributed has one administrator account:

  • Username: Admin
  • Password: password

Additional accounts can be auto created by simply attempting login on a non-existent account.

The server auto saves hourly, writing to UO98/rundir/UO98. There is a copy of the distribution world files at http://svn.uo98.org/svn/public/UO98/Data/distro/ should you need to restore them. Typically only accounts.xml, dynamic0.mul.q, and dynidx.mul.q will need to be restored. These three files should be treated as a unit, and always be backed up and restored together.

Administrating UO:98

More administration tools are planned.

Currently the world is most easily modified with the "God Client" which you may be able to find out there somewhere on the web.

Accounts

User accounts are stored in UO98/rundir/UO98/accounts.xml

To modify a user account level, you can modify the accessflags element of their account. You should do this when the server is shut down, as this file is overwritten on saves.

Standard values for accessflags are:

  • Player - No special Access
  • Editor - God Client Features (i.e., GM). See also: IsEditing
  • Admin - Editor, plus access to ]save and ]shutdown commands

In Game Commands

GM"cheat" Commands

These commands are implemented in the gmcheat.uosl script.

[spawn <templateid>
Creates a templated entity. Templates are defined in UO98/rundir/bank/templatestable.dat.q
[spawnitem <itemid>
Creates an item of itemid at the targeted location. Scripts are only added if the numeric item script exists (like 244.uosl.m.q)
[tele <X> <Y> [Z]
Teleports your to the specified map location. Z is optional.
[setskill <#> <val>
Sets your skill of # to the specified value (integer 0-100)
[setskill all <val>
Sets all your skills to the specified value (integer 0-100)
[listskills
Lists all the numeric skill id's (for use in the setskill command)
[addscript <name>
Adds a names script to the targeted object. Scripts are not specified with file extensions. Example: [addscript heavy
[where
Prints our your location.
[setname <new name>
Sets the name (RealName) of the target
[getserial
Reports the global serial of the targeted object. See also: Objtoint
[gethue
Reports the hue of the targeted object
[getheight
Reports the height of the targeted object
[getelevation
Reports the Z location of the targeted object

SCommands

These commands are built into UODemoDLL and are not scripted (note the ])

]save
Saves the world to dynamic0.mul
]coun [me|<serial> [type]]
Makes the target (or yourself if "me") a counselor.
]ucoun [me|<serial>]
Unmakes the target a counselor
]shutdown
Shuts down the server, without save.
]test
This simply verifies that the "SCommands" are working.

Handy Templates

3501
Loaded spellbook
3506
Reagent bag
1504
100 gold
1900-1920
House deeds
1800-1805
Boat deeds

For more templates, look in UO98/rundir/bank/templatestable.dat.q

Handy Scripts

These are implementors for the god client Utility window commands, but may be used in the regular client by using [addscript ...

gmcheat
Give the targeted player access to GM Commands
commandDelete
Delete targeted item
commandZap
Delete Targeted NPC (Don't Zap players!)
commandInvulnerable
Makes the targeted Mobile invulnerable. Inverse is commandVulnerable
commandSlay
Kills the targeted mobile
commandResurrect
Ressurrects the targeted mobile (player)
commandFreeze
Freezes the targeted Mobile. Inverse is commandUnFreeze
commandSquelch
Squelches the targeted Mobile. Inverse is commandUnSquelch
Heavy
Sets the weight of an item to 255, making it immovable.

The commands that are prefixed with command are custom and the equivalent of the Utility window commands in the God Client. A complete list is in the Wombat Scripts project, filtered under Staff Tools/Custom Admin/CommandImplementors

How does it work

UO:98 is an attempt to bring the UO Demo mainstream by patching the Demo into a fully functional and administrable server.

The majority of the necessary basework via UoDemo+ has been available for some time. The UoDemoDLL project took UoDemo+ well beyond the chains imposed by having to make direct hacks to the UODemo.EXE, patches can now be applied or even un-applied during run-time; and new code can be added outside the executable and hooked to existing functions.

A new project called Sidekick was developed in Visual-C++ to be loaded by UoDemo using the UODEMODLL env variable. This Dll loads both Batlin's UoDemoDLL (In addition to some great patches, the Wombat API for in-memory patching), and also loads a C# managed DLL called Sharpkick. Sidekick acts as a Marshall between the unmanaged Borland C UoDemoDLL, and Sharpkick a Managed C#.Net DLL

Currently all packets can be intercepted and replaced or handled directly within C#. This gives the ability to handle the login sequence very elegantly within C#, and with access to all of the .Net framework for XML handling and file IO for account name translation to account numbers, which are accepted for login by UoDemo+.

Development

Checkout UO:98 to the same folder that you installed the application to.
Confirm that you really want to checkout to an existing folder.
UO98 folder should look like this.

UO:98 development requires at a minimum Visual Studio 2010 with C# and C++, and the .Net 4.0 Framework. See the UODemoDLL section for additional optional requirements.

The UO:98 project is Copyright © 2011 JoinUO, and is Licensed under the Open Software License version 3.0

Getting the Source

The UO:98 source code is available on our public SVN.

You can checkout the public source directly to the folder which you installed UO:98 to. The SVN is not comprehensive, you need to install UO:98 using the Installer first.

The UO:98 SVN URL is: http://svn.uo98.org/svn/public/UO98

If not familiar with Subversion (SVN), in windows TortoiseSVN (as in the example on the right) is a easy to use tool for working with svn repositories. You can get the latest version here: http://tortoisesvn.net/downloads.html

To use TortoiseSVN to check out the solution:

  • Install Tortoise SVN, and reboot your PC.
  • Open Windows Explorer to the parent folder to which you installed UO98 (C:\ if you installed in c:\UO98)
  • Right click in an empty area of the folder choose "SVN Checkout..."
  • URL of repository: http://svn.uo98.org/svn/public/UO98
  • Checkout Directory: C:\UO98 (if that's where UO 98 is installed)
  • Click OK.
  • You will get a warning about checking out to an existing directory, click OK.
    • If you're not comfortable with SVN checkouts, you might want to make a backup copy of your UO98 folder before checking out. (this is probably good advice even if you are comfortable with SubVersion)
  • The files will be fetched to the UO98 folder. You will see a new folder in UO98 called DEV, and some of the existing folders and files will now have green checkmarks on them. This indicates their contents match the SVN versions.

If you make changes to files they will appear with a red X on them. This lets you know they were modified from the originals.

Any files and folders with a blue ? on them are items that are not present in the repository. The rundir has this mark, as it is not included in the distribution.

The Solution File

Uo98solution.JPG

The UO:98 solution file, located un UO98\Dev\UO98.sln is made up of 5 projects. Only three of these projects are actually .Net projects, Scripts and UODemoDLL are in this solution for editing only.

Sharpkick is the primary project in the UO:98 solution. The Sidekick and UODemoDLL projects are used to transition from managed to unmanaged code, and interface with the running UODemo+.exe.

Sharpkick_Offline_Tests is a standard Unit Test project that uses the built in Microsoft Testing Framework. It's intended to test Everything within the Sharpkick project by using a mock of the Server Core. Coverage is currently substancially less than "everything".

There is an additional test framework that is built into Sidekick and UODemoDLL for running tests against the running UODemo. These tests can be executed by running UO98_TestMode.cmd. This will compile UODemoDLL, launch UODemo+, and execute the tests in UO98\Dev\UODemoDLL\src\Tests.c . Please see the UODemoDLL section of this guide regarding the requirements for compiling UODemoDLL.

UODemoDLL

To develop or compile the UODemoDLL you will need Borland C++ Compiler 5.5 and Turbo Assembler 5.0 (TASM). The build commands are configured so that these applications are expected to be installed in c:\borland\BCC55 and c:\borland\TASM

If your borland install folders differ from this, you may need to modify BCCPATH and TASMPATH in UO98/Dev/BUILDDLL.dll

There is a UODemoDLL project in the VS10 solution, this is for editing only. This is not VC++ code, and VS2010 cannot compile it.

To start UO98 with a recompile of the UoDemoDLL, run UO98.cmd in the UO98 folder. Running StartUO98.cmd will start UO:98 without compiling the UODemoDLL.

Community

In addition to this UODemo wiki, The UO Demo forum on JoinUO has a lot of information on the UODemo internals.

We are anxious to meet other developers interested in the project. If you are excited about this project, please drop into the UO:98 forum and UODemo forum and say hello.

Credits

UO:98 is an joint effort of the JoinUO team. It was primarily developed by Batlin and Derrick and is based on the UODemoDLL project. Thanks much as well to Garrett, Rougan, and Kaivan for their efforts on the UODemo, God Client, and this project.