StendhalLocalhostServerOnLinux: Difference between revisions

Content deleted Content added
imported>Neoneurone
No edit summary
imported>Immibis
MAJOR CHANGES AND BROUGHT UP-TO-DATE
Line 1:
This guide applies to:
*Marauroa 2.1
*Stendhal 0.64
*Stendhal server 0.64
 
= Setting up a localhost server =
This guide will teach you how to set up a server on your UbuntuLinux machine. The server will be a local one, so people from around the world cannot get to your server. Only those who are directly connected to you via a LAN can connect to this server. The required packages are:
*Marauroa version 2.1
*<strike>A compiled version of Marauroa</strike> ''The marauroa jar is included in the stendhal server package now.''
*A compiled version of the Stendhal Server, version 0.64
*MySQL
*GNU/Linux (This may be others, the directions should apply almost exactly to any *nix system)
*A text editor (doesn't matter)
*Command-line access
<!-- This is heavlyheavily based on the Visual Guide to Setting up a Localhost Server on Windows XP (c) -->
== Getting the materials ==
Download a current version of Stendhal. If you want to use the current release of the stendhalStendhal server, go to http://arianne.sourceforge.net/?arianne_url=games/game_stendhal#downloadsection and download the stendhal-server-X.XX.zip from that page.
 
If you want to compile it yourself from CVS or the source code provided at the downloads link, then see [[HowToBuildStendhal|How to build Stendhal]] for more info. If you run a Linux System, then you have the necessary tools to get everything else. I recommend ViM for those command-line lovers, and GEdit/Kate for those GUI people. Command line access shouldn't be a problem, ask your system administrator if you do and how to get to it.
 
= Setting up MySQL =
After you've installed MySQL, make sure you have a database ready for it:.
At a command line, type
<pre>
mysql -u NAME -p -e "create database DB_NAME;"
if you need a password for your server (by default, you don't).
</pre>
If you don't need a password, omit the "-u NAME -p" part.
Where "NAME" is the name of the user to create the database (usaully root is fine), and "DB_NAME" is the name of the database. Remember this name!
At the prompt that appears, type
<pre>
create database marauroa;
mysql -u NAME -p -e " grant all on DB_NAMEmarauroa.* to 'FOO'@'localhost' identified by 'BAR';"
</pre>
ThisFOO willand createBAR (orare justthe addusername and password to) abe userused calledby 'FOO'Marauroa, with a password of 'BAR'respectively. Replace thosethem with whatever you want. If the user doesn't exist, it'll will be created. Again, rememberRemember these values (FOO and BAR)!
 
= Makin' the cake =
Line 28 ⟶ 33:
#Create a server directory, to hold everything in a nice, organized way
#Unzip your Stendhal Server zip in this server directory
#Run the MarauroaStendhal generateiniGenerateINI script, to get a configuration file
#Create a marauroa loading script (in BASH)
#Have fun
Now, the first and last shouldn't be to hard. Let's create that directory!
Line 35 ⟶ 39:
== Creating the server directory ==
I'm an organized person when it comes to my computer. Now, sometimes that means I have to go about 3-4 levels deeper into the folder hierarchy to get where I want, but at least I know where my files are for whatever project directory I'm in. Now, you don't have to do this, but I like to keep my computer not so cluttered up with files that I don't know where they belong. Let's create it in your home directory. NOTE: The commands given are for use in the command-line, but you can take the GUI route as well. For some commands, you must run them from the command-line, and I will tell you
cd
<pre>
mkdir stendhal_server
cd $HOME
mkdir stendhal_server
</pre>
This will create a directory called "stendhal_server" in your home directory. See how easy that was? And how easy to tell what will be in that directory? That's the beauty of organization.
 
Line 45 ⟶ 47:
*marauroa.jar
*log4j.properties
*stendhal-server-#0.##64.jar
*stendhal-xmlconf-#0.##64.jar
*stendhal-maps-#0.##64.jar
*log4j.jar
*groovy.jar
Line 58 ⟶ 60:
== MySQL & Marauroa: Let the 2 be one ==
Time to configure Marauroa to point to the database you made earlier. In the command-line (not in GUI!), run:
java -cp marauroa.jar:stendhal-server-0.6364.jar games.stendhal.server.GenerateINI
<pre>
java -cp marauroa.jar marauroa.server.generateini
</pre>
When it asks you for...
*database name, enteruse the name you used when making itdefault (DB_NAMEmarauroa)
*host, using 'localhost' is fine
*user, use the username you used in giving permissions (FOO)
*password, use the password you used giving permissions (BAR)
*port, anything above 1024. 32160 is the deafult for stendhal, but it can be anything above 1024
*game, type "stendhal" (or a number for that, if a muliplemultiple-choice menu appears)
*turn time, or how long the server takes to process each event, choose anything above 200, but below 1000. This is in milliseconds
*log and stats generation logs, use the default ("./") - it's in the same directory as everything else
*RSA key size, choose anything smaller than 1024 bits, but greater than 512 (or equal to). This is to make sure that the login information is vaildvalid and secure. Like the prompt says, anything greater than 1024 can take a LONG time. But, if you have ~30 minsminutes to spare (more or less, depending on your comp), you could use the extra security
Well, thats everything! When it's finished, you'll have a new file, "marauroaserver.ini". Don't lose it, as it contains the information to get your server up & running, as well as the key to do that. If marauroaMarauroa won't start, and nor will your server, check to see if that iniINI file is there (at the same directory! NOWHERE ELSE!) and if it is, try running the genereateiniGenerateINI command again; the file could have change with updating the RSA keys
 
== Bash it up! Starting marauroaMarauroa ==
'''Please note that for the current CVS Head which is Stendhal 0.63''' and marauroa 2.0 there are slightly different class path dependencies. And the generate ini class is case sensitive! So you will need this instead:
To start Marauroa, simply open the marauroad file in the directory with Marauroa - you may need to make it executable first.
<pre>
To make it executable, in a command prompt type
java -cp marauroa.jar:stendhal-server-0.63.jar games.stendhal.server.GenerateINI
chmod +x /path/to/marauroad
</pre>
To start it from a command prompt, type
 
cd /path/to/
== Bash it up! Starting marauroa ==
./marauroad
Well, BASH is pretty much standard in the linux world. If you don't have it, or use a different shell, modify this to your needs:
where /path/to/ is the path to the directory in which Marauroa is installed.
<pre>
#!/bin/bash
 
export LOCALCLASSPATH=.:stendhal-server.jar:marauroa.jar:jython.jar:mysql-connector.jar:log4j.jar:simple.jar:groovy.jar
 
java -cp "${LOCALCLASSPATH}" marauroa.server.marauroad -c marauroa.ini -l
</pre>
Save it as "blah.sh", replacing blah with whatever you want. Make sure it's executeable!
''Warning! in the line with "LOCALCLASSPATH", is has 'stendhal-server.jar', this is my file, and may not be yours. Do not change the name of the .jar file, just modify that line to include the version after 'server' so it's now 'stendhal-server-0.55.jar' (this is an example, your version may be different!) Ensure that this is the same thing as your .jar file!
''In the command-line, go to the server directory and type:
<pre>
./blah.sh
</pre>
Remember to change "blah" to whatever you typed in when saving the file. This will start the server, and produce A LOT of output!
 
== Have fun ==
Well, that's it! Just follow the lastprevious steps ofunder ''BashStarting it up!Marauroa'' to start the server. Pretty easy, huh? Check out the troubleshooting and extras sections for more things to do.
 
= Extras =
This is the extras section! Here you have trouble shooting, and hints & tips
== Troubleshooting ==
=== Cannot find data/conf/quest.xml ===
This is fixed in current CVS. You can ignore this error because the quest diary is not finished and in game yet.
 
This is an easy one. Take stendhal-server.jar, and open it via a archive manager. Click through the folders until you are at /data/conf. Click on Add (or Import in some cases) and point it to the quests.xml file found in the source code directory of stendhal. This would be stednhal-src/data/conf/quests.xml. Click OK, and close the window. Stop your server, and start it again. You should not get this error again, unless you (accidently, right?) put the wrong file or put it on the wrong directory
 
=== Can't login! ===
You try logging in with the account you made when you first got Stendhal. It doesn't work in your server! You see, the MySQL database we created is the user and some other info database, meaning that we have a list of users, while the main server has it's own list. Until access is publicly granted to the MySQL database over there, we must click on Create An Account and choose localhost as the server to join. 2 different accounts. That, well, sucks.
== Server bonuses ==
=== You are the man! ===
Want to be an admin? Now you can! It's easy! First create a file called "admins.list" This is a plain text file, with each name on a seperate line. The name must be EXACT, or it will not work. Then opengo to the directory where you extracted stendhal-server-X.jarXX.zip, and browse to /data/conf (create it if it isn't already there). Add admins.list there.
=== Be my wife? And other server extensions ===
Server extensions. They add much (or little) functionality to a server, that another may not have. If you want to add the Spouse extension, which adds marriage (uh-oh!) to your server, just add these to your marauroa.ini file we created earlier (note that marriage is not built in to the server and doesn't require an extension, but you can use this template for all extensions):
# load StendhalServerExtension(s)
<pre>
groovy=games.stendhal.server.scripting.StendhalGroovyRunner
# load StendhalServerExtension(s)
groovy http=games.stendhal.server.scripting.StendhalGroovyRunnerStendhalHttpServer
http spouse=games.stendhal.server.StendhalHttpServerextension.SpouseExtension
server_extension=groovy,http,spouse
spouse=games.stendhal.server.extension.SpouseExtension
server_extension=groovy,http,spouse
http.port = 8080
 
http.port = 8080
</pre>
The first 3 lines (not including the comment) point to specfic classes in your code. Ther server_extension line tells marauroa to load those extensions at start time. After adding these, restart your server. Don't worry - the RSA keys won't break because you added these lines. I personally have 3 server extensions that I wrote as well, 2 of which are broken (help!). To add those, just add this:
my_extention my_extension=java.class.path.to.my_extension
<pre>
And add "my_extentionmy_extension" to the end of server_extentionserver_extension (don't forget the comma seperatingseparating everything!)
my_extention=java.class.path.to.my_extension
</pre>
And add "my_extention" to the end of server_extention (don't forget the comma seperating everything!)
 
= Finished =