Table Of Contents
- Getting Started With Sphere server
This tutorial is directed to those that have no experience whatsoever with the Sphere Server. The objective is to just get started with a fully functional shard which, later on, can be tweaked and customised as needed.
The first obvious step is to download the Sphere server.
Go to the SphereX Download page and download the latest nightly version for your platform.
Extract the zip or tgz into a new folder.
In order for the server to work correctly, you'll need to install mariadb client. Different distros name this library in a different way so, have a quick check online to understand how to install it on your distro. For instance, if you're using an Ubuntu-based system, you can install it by running
sudo apt install mariadb-client
Once you've extracted your archive, you'll need to move the server's executable
into the root directory of the server. The file is contained into the
build-xx
folder.
For instance, for a 64 bits linux installation, your root folder's structure should go from this:
- accounts/
- build-64/
- bin-x86_64
- SphereSvrX64_nightly
- logs/
- save/
- scripts
- sphere.ini
- sphereCrypt.ini
To this
- accounts/
- logs/
- save/
- scripts
- sphere.ini
- sphereCrypt.ini
- SphereSvrX64_nightly // executable in root
Now it's time to pick a client. Take the original installation of your Ultima
Online client and install it. If you don't have it... Google is your friend ;).
For this tutorial we're going to use Ultima Online Classic 7.0.2.0
client.
SphereX is compatible with any client, so feel free to pick any version but, be careful: in order to have the same experience across every participant, make sure that user is running exactly the same client!
Now it's time make some tweaks to the default server configuration to accomodate our needs.
The whole server configuration is contained in the file named sphere.ini
.
You can open this file with any text editor - notepad should do the job. The
structure of the file is very simple: let's analyse a snippet to explain how
it's organised line by line.
[SPHERE]
// Name of your Sphere shard
ServName=MyShard
[SPHERE]
: this is a section of the configuration. It is used to group
properties together.
// Name of your Sphere shard
: this is a comment. It gets ignored by the
server. This is used to add additional infos to humans :)
ServName=MyShard
: this is a property. This is used to configure specific
behaviours for the server. For instance, this is used to set the name of the
shard.
Before you can start fiddling with different things, you'll need to agree of using a nightly build. A nightly build gets created automatically every night based on the latest changes made by the developers. This means it might contain potential bugs. With this settings you agree to take full responsibility of all the implications of this choice.
So, let's open the sphere.ini
file and add a new line to the SPHERE
section with the text AGREE=1
. After the changes your file should look like
this.
...
[SPHERE]
// Add this line
AGREE=1
// Name of your Sphere shard
ServName=MyShard
...
Remember to save the file before you start the server, otherwise the changes will not be picked up by the server.
The next step is to allow people to easily join your server upon creating a new account upon a login attempt.
Moving down into the configuration file, you'll find a property called AccApp
.
Set this value to 2
, to allow everyone to login and create a new account.
//Code for servers account application process
// 0=Closed, // Closed. Not accepting more.
// 2=Free, // Anyone can just log in and create a full account.
// 3=GuestAuto, // You get to be a guest and are automatically sent email with u're new password.
// 4=GuestTrial, // You get to be a guest til u're accepted for full by an Admin.
// 6=Unspecified, // Not specified.
// To enable auto account you must set this to 2
AccApp=2
You can change this value later on as per comments above this property. As usual, remember to save the file before moving on.
MUL files are called like this because their extensions is .mul
. These files
are vital for the correct execution of the client and the server because they
contain all the assets of the game. This includes (but not limited to):
- maps;
- animations;
- armors;
- vests;
- decorations;
- ...
These files are contained into the Ultima Online client's installation.
WARNING: If there a discrepancy between server's muls and client's muls players will experience serious bugs or crashes.
For this reason we need to make sure that the server is picking up the mul files from the Ultima Online client's installation. There are different ways to achieve this.
If you're using Windows and you've got just one Ultima Online Client installed through the official EA installer, you can just skip this step and move on with the next step of this guide.
Open your sphere.ini
file and find the MulFile
property. Uncomment it
(remove the leading //
) and change its value to the location of you're
client's installation folder. For instance:
// UO INSTALLATION - Note that if it's not set ( or commented ), sphere will scan windows registry to auto-detect it.
// If windows can't find the dir, then it must point to install's directory.
//
// For Old installations (client less than 7.0.20) this need: map0.mul, statics0.mul,
// staidx0.mul, multi.mul, multi.idx, hues.mul, tiledata.mul.
// Optional files: verdata.mul, mapX.mul/staticsX.mul/staidxX.mul for higher
// maps support (Malas, etc).
//
// For newer installs this need the same files in .uop format
//
// A full install folder is recommended as required files may change over time.
MulFiles=C:/Program Files/EA Games/Ultima Online/
Create a new folder into the server's root folder. For instance you can call it
mul
.
For simplicity, copy all the contents of your Ultima Online client's folder into the folder you've just created.
Now open your sphere.ini
file and locate the MulFile
property. Uncomment it
(remove the leading //
) and change its value to the name of the folder where
you've just created. For instance:
// UO INSTALLATION - Note that if it's not set ( or commented ), sphere will scan windows registry to auto-detect it.
// If windows can't find the dir, then it must point to install's directory.
//
// For Old installations (client less than 7.0.20) this need: map0.mul, statics0.mul,
// staidx0.mul, multi.mul, multi.idx, hues.mul, tiledata.mul.
// Optional files: verdata.mul, mapX.mul/staticsX.mul/staidxX.mul for higher
// maps support (Malas, etc).
//
// For newer installs this need the same files in .uop format
//
// A full install folder is recommended as required files may change over time.
MulFiles=mul/
NOTE: You don't need all the files contained into the Ultima Online client's
installation. You just need all the .mul
and .idx
files.
NOTE 2: On linux the name of the files is case sensitive so, make sure all the file names are lowercase!
New that we've imported all the maps we need to set each the map's boundaries: this way the server will know what is the actual playable area. For the purpose of this guide, we'll just use the maps of Falucca and Trammel.
As usual, open your sphere.ini
file and locate all the MapX
properties.
Leave Map0
(Felucca) and Map1
(Trammel) as they are and add a leading //
to Map2
, Map3
, Map4
and Map5
.
This is how it should look like.
// Map of Felucca
//Map0=6144,4096,-1,0,0 //Old size
Map0=7168,4096,-1,0,0 //ML size
// Map of Trammel
//Map1=6144,4096,-1,1,1 //Old size
Map1=7168,4096,-1,1,1 //ML size
// Map of Ilshenar
//Map2=2304,1600,-1,2,2
// Map of Malas
//Map3=2560,2048,-1,3,3
// Map of Tokuno Islands
//Map4=1448,1448,-1,4,4
// Map of Ter Mur
//Map5=1280,4096,-1,5,5
We've got a nice server. But it is completely brainless: it doesn't know what is a vendor, an npc and what are their behaviours. In order to give it a brain we should add some scripts. If we were to write all of them, it would take ages. For this reason Sphere comes with a pre-made set of scripts to get you started in no time.
Head out to the
SphereX Github page click on Code
and hit Download ZIP
.
Unzip the content of the package into the server's scripts
folder.
Now we need to tweak few settings according to our sphere.ini
configuration.
Go ahead and open with your text editor the file scripts/spheretables.scp
.
Let's comment out all the configurations related to all non Felucca and
Trammel maps, respectively map0
and map1
.
Here is the before:
// maps
maps/map0/map0_starts.scp
maps/map0/map0_moongates.scp
maps/map0/map0_areas.scp
maps/map0/map0_areas_ml.scp
maps/map0/map0_areas_sa.scp
maps/map0/map0_areas_hs.scp
maps/map0/map0_rooms.scp
maps/map0/map0_teleports.scp
maps/map0/map0_teleports_ml.scp
maps/map0/map0_teleports_hs.scp
maps/map0/map0_teleports_tol.scp
maps/map1/map1_moongates.scp
maps/map1/map1_areas.scp
//maps/map1/map1_areas_aos_old_haven.scp
maps/map1/map1_areas_ml_new_haven.scp
maps/map1/map1_areas_ml.scp
maps/map1/map1_areas_sa.scp
maps/map1/map1_areas_hs.scp
maps/map1/map1_rooms.scp
maps/map1/map1_teleports.scp
maps/map1/map1_teleports_ml.scp
maps/map1/map1_teleports_ml_new_haven.scp
maps/map1/map1_teleports_hs.scp
maps/map1/map1_teleports_tol.scp
maps/map2/map2_areas.scp
maps/map2/map2_areas_ml.scp
maps/map2/map2_teleports.scp
maps/map2/map2_teleports_ml.scp
maps/map2/map2_moongates.scp
maps/map3/map3_areas.scp
maps/map3/map3_areas_ml.scp
maps/map3/map3_areas_se.scp
maps/map3/map3_teleports.scp
maps/map3/map3_teleports_ml.scp
maps/map3/map3_teleports_se.scp
maps/map3/map3_moongates.scp
maps/map4/map4_areas.scp
maps/map4/map4_teleports.scp
maps/map4/map4_moongates.scp
maps/map5/map5_areas.scp
maps/map5/map5_areas_tol.scp
maps/map5/map5_teleports.scp
maps/map5/map5_teleports_tol.scp
maps/map5/map5_moongates.scp
maps/map5/map5_moongates_tol.scp
and this is how the file should look like after our amendments:
// maps
maps/map0/map0_starts.scp
maps/map0/map0_moongates.scp
maps/map0/map0_areas.scp
maps/map0/map0_areas_ml.scp
maps/map0/map0_areas_sa.scp
maps/map0/map0_areas_hs.scp
maps/map0/map0_rooms.scp
maps/map0/map0_teleports.scp
maps/map0/map0_teleports_ml.scp
maps/map0/map0_teleports_hs.scp
maps/map0/map0_teleports_tol.scp
maps/map1/map1_moongates.scp
maps/map1/map1_areas.scp
//maps/map1/map1_areas_aos_old_haven.scp
maps/map1/map1_areas_ml_new_haven.scp
maps/map1/map1_areas_ml.scp
maps/map1/map1_areas_sa.scp
maps/map1/map1_areas_hs.scp
maps/map1/map1_rooms.scp
maps/map1/map1_teleports.scp
maps/map1/map1_teleports_ml.scp
maps/map1/map1_teleports_ml_new_haven.scp
maps/map1/map1_teleports_hs.scp
maps/map1/map1_teleports_tol.scp
//maps/map2/map2_areas.scp
//maps/map2/map2_areas_ml.scp
//maps/map2/map2_teleports.scp
//maps/map2/map2_teleports_ml.scp
//maps/map2/map2_moongates.scp
//maps/map3/map3_areas.scp
//maps/map3/map3_areas_ml.scp
//maps/map3/map3_areas_se.scp
//maps/map3/map3_teleports.scp
//maps/map3/map3_teleports_ml.scp
//maps/map3/map3_teleports_se.scp
//maps/map3/map3_moongates.scp
//maps/map4/map4_areas.scp
//maps/map4/map4_teleports.scp
//maps/map4/map4_moongates.scp
//maps/map5/map5_areas.scp
//maps/map5/map5_areas_tol.scp
//maps/map5/map5_teleports.scp
//maps/map5/map5_teleports_tol.scp
//maps/map5/map5_moongates.scp
//maps/map5/map5_moongates_tol.scp
Now you can save the file and close your editor.
It's now time to start the server by running SphereSvrX64_nightly.exe
.
If everything's fine, should see on the console this confirmation message:
Startup complete (items=0, chars=0, Accounts = 0)
Use '?' to view available console commands
Now that you've configured the server, you're finally ready to start playing!
By default the Ultima Online Client will connect to the official game servers. However, what we want to do is to connect to our server. There are multiple tools you can use like Razor - just Google a bit ;).
For the purpose of this guide we're going to use ClassicUO. So head out to
their website and download the client for your
platform. Extract it into a new folder on your desktop and open the
ClassicUOLauncher
.
Create a new profile and fill the fields as follows:
- Profile name: pick a name of your choice
- Server IP:
127.0.0.1
- provided you're running client and server on the same machine - Port:
2593
- Use Encryption: enabled
- UO Path: the installation folder of your Ultima Online client (e.g.
C:/Program Files/EA Games/Ultima Online/
)
Now save your profile and hit back. On the main screen make sure that the profile you've just created is selected and hit Play. If you've done everything correctly, the Ultima Online login screen should pop up. As per previous configuration you can now try to login with any username and password: this operation will automatically create a new user for you.
So, pick a username and password and try to login. Create a new character et voila': you're the first player of your own personal Ultima Online Shard!
Well, since this is your server, I guess it's only fair to set yourself as an admin of the server. This will allow you to do some special operations that noone else can do like populating the world with new creatures, items, ban players, broadcast messages, ...
Go ahead and open you server's window. If you're on Windows, you'll se that at the bottom there a grey stripe on which you can type stuff. To promote yourself as an admin you can just type
ACCOUNT <your_account_username> PLEVEL 7
And hit enter.
So, for instance, if your account name (not player name!) is admin
, you
should just type
ACCOUNT admin PLEVEL 7
and hit enter.
To check whether it works, go back to your game and type in chat
.gm
This command is to transform yourself into a GM (Game Master). If you'll see
a message GM ON
everything has worked out!
I guess you've already noticed that Britain has never been so empty, right?
We've already got a solution for you to get started straight away!!!
Go into your game and type in the game's chat
.add i_world_decorator
And hit enter.
The cursor will tranform into a target. Place the item on the floor right next to you and double-click it. A new window (aka "gump") will appear.
Under Basic Items
hit:
- Generate Doors;
- Generate Signs;
- Generate Moongates;
- Generate Book;
Under Decoration hit:
- Felucca
- Trammel
remember? We have disabled all the other maps, so it's useless to try and generate decorations for those maps.
Now that you're done, you can remove world decorator object. Just type on your chat
.remove
The cursor will transform into a target. Choose the world decorator so make it disappear from the game.
Once you've completed this step, go back to your server window and type
##
And hit enter. This will save both, the new account you've just created and all the objects that have been placed in the game. It will take a few seconds, so, be patient.
Last but not least, the world is sad without vendors, mobs, animals, mounts, ... As usual: there is a solution for this as well.
Head out to your game window and type in the chat
.add i_world_spawner
Place the item right close to you and double-click it.
As before, hit Felucca and, in the submenu, click all the spawn items once.
Do the same thing for Trammel.
Same steps as before:
.remove
and click on the world spawner object.
Finally save all your changes by going back to the server window and issue the
##
command.
Congratulations: you've just created your fully functional shard from scratch!
However, this is just the beginning of your journey: if you want to know more about Sphere server, access the wiki page
If you need further help, get into the Sphere discord server.
Have fun!