Difference between revisions of "Hosting a server"

From Space Station 13 Wiki
Jump to navigation Jump to search
(Talk about that __secret.dme file step and its associated error)
(stop telling people to compile with dreammaker!!)
 
(22 intermediate revisions by 5 users not shown)
Line 1: Line 1:
{{Warning|Notes=Do not follow this guide if you want to play by yourself! Follow the [https://github.com/goonstation/goonstation README on the GitHub] instead.}}
<br>
{{Warning|Notes=Do not follow this guide if you want to play by yourself! Follow the [https://github.com/goonstation/goonstation README on the GitHub] instead.}}
A simple guide for hosting your very own goonstation server, for all people of all computers, no previous admin experience, dedicated hardware, or technical know-how required. <strike>Shamelessly stolen</strike> Borrowed with permission and modified/updated from a [https://forum.ss13.co/showthread.php?tid=8604&pid=97600#pid97600 forum post] by Haine.
A simple guide for hosting your very own goonstation server, for all people of all computers, no previous admin experience, dedicated hardware, or technical know-how required. <strike>Shamelessly stolen</strike> Borrowed with permission and modified/updated from a [https://forum.ss13.co/showthread.php?tid=8604&pid=97600#pid97600 forum post] by Haine.


==Get a copy of a server's code==
[https://github.com/goonstation/goonstation Here is the code for Goonstation's open source release.] You can click the green ''Clone'' or ''Download'' button on the right side of that page, and then ''Download ZIP'', or if you know how to use git, do that. For this guide, we will simply download it. Once it's done, unzip your chosen code somewhere or navigate to where git downloaded it.
==Create the __secret.dme file==
Go to +secret subdirectory and create a ''blank'' file named <code>__secret</code> with the extension <code>.dme</code>. You usually can simply make a blank text tile and save it as "__secret.dme". In any case, you can download it from [https://www.dropbox.com/s/asvkccrk2fqkh14/__secret.dme this dropbox]. You need this __secret.dme file for the whole thing to compile, lest you get a <code>unable to open +secret\__secret.dme</code> error.
What's the code doing with a blank file? Basically, it's standing in for any content. Normally, on the official Goonstation servers run by Goonstation staff, the secret directory is occupied and has secret content, like the latest [[Chemicals#SECRET CHEMS|secret chems]] and lots of [[Adventure Zone]] content. Since you can't get said secret stuff on public Github without being a developer though (because that kinda defeats the purpose), the code has been configured to be alright with just a blank file instead of actual secret content.


==Compile the server==
= '''Read the above warning.''' Unless you want to host a server for people to join, '''do not follow this guide''', and follow the [https://github.com/goonstation/goonstation README on the GitHub] instead. =
Open the .DME file (in goonstation's case this is goonstation.dme).  It should load up in Dream Maker (if not, use Open With to make sure it does open with DM).  Once Dream Maker loads up (it might take a couple minutes), go to Build -> Compile, seen here:


<img src="https://i.imgur.com/inWcjlr.png">
==Setting up==
Follow the [https://goonhub.com/r/guide development guide] to download a copy of the repository and get it set up for compiling. You can then press <code>CTRL + SHIFT + B</code> and select the DM build task to build a copy of the codebase you can then run using Dream Daemon.


Or hit CTRL+K.
If errors HAVE occurred, please join #imcoder on the Goonstation Discord (https://discord.gg/zd8t6pY) and some of the users and staff will try to help resolve them.
=== Using the ZIP download causes lots of problems so do not do it. ===
'''


It will take a few minutes to finish compiling.  Once it does, if no errors have occurred, you're ready for the next step. A successful compile should look somewhat like this (by default the server compiles with different maps):
Don't download the 2020 or 2016 public releases or the r4407 release, if you somehow stumble upon that one. These are old snapshots of the Goonstation source code at certain points in time. They are not updated at all and can only run on older versions of BYOND. They're most likely not what you're looking for, unless what you're looking for are previous versions of Goonstation for historical interest or something.


<img src="https://i.imgur.com/YCitJEL.png">
If errors HAVE occurred, please post them [https://forum.ss13.co/showthread.php?tid=8604 here] or join #imcoder on the Goonstation Discord (https://discord.gg/0117EEzASKYV2vtek) and Haine and co. will try to help resolve them.


==Load Dream Daemon==
==Load Dream Daemon==
You can open it through the BYOND Pager by going to the gear wheel icon in the upper right corner, or by hitting CTRL+D.  This is what Dream Daemon looks like:
You can open it through the BYOND Pager by going to the gear wheel icon in the upper right corner, or by hitting CTRL+D.  This is what Dream Daemon looks like:


<img src="https://i.imgur.com/KQIe6Fa.png">
https://imgur.com/KQIe6Fa.png


First you will want to hit the ... button next to the File: box at the bottom.  Navigate to where your server code is (the folder with the .DME) and select the .DMB (in goonstation's case this is goonstation.dmb).  If you don't have a .DMB file, go back and try step 2 again.  Security, Visibility, and webclient settings can be set up however you feel like.  (Set visibility to Public if you would like your server to appear on the BYOND Hub).
First you will want to hit the ... button next to the File: box at the bottom.  Navigate to where your server code is (the folder with the .DME) and select the .DMB (in goonstation's case this is goonstation.dmb).  If you don't have a .DMB file, go back and try building again.  Security, Visibility, and webclient settings can be set up however you feel like.  (Set visibility to Public if you would like your server to appear on the BYOND Hub).


==Select a port and forward it==
==Select a port and forward it==
Line 35: Line 31:
The GO button next to the Visibility settings box should have turned green once you loaded the .DMB and if you click on it now, the server will start up.  After a minute or so (the window may appear frozen, but it isn't) the window should change to look like this:
The GO button next to the Visibility settings box should have turned green once you loaded the .DMB and if you click on it now, the server will start up.  After a minute or so (the window may appear frozen, but it isn't) the window should change to look like this:


<img src="https://i.imgur.com/q2u34b5.png">
https://imgur.com/q2u34b5.png


After a minute, the window should update to tell you if the server's port is accessible to outside connections.  If it says "BYOND hub reports port 8085 cannot be reached by players." you will need to go back to the port forwarding step and try again.  Otherwise:
After a minute, the window should update to tell you if the server's port is accessible to outside connections.  If it says "BYOND hub reports port 8085 cannot be reached by players." you will need to go back to the port forwarding step and try again.  Otherwise:
Line 50: Line 46:
To make yourself an admin:
To make yourself an admin:
#Go to the goonstation/config/ folder.
#Go to the goonstation/config/ folder.
#Open up the admins.txt file. Editor does not matter.
#Open up the admins.sample file. Editor does not matter.
#Add your your ckey (lowercase byond key) to the list of names, a -, then your rank of choice.  
#Add your your ckey (lowercase byond key) to the list of names, a -, then your rank of choice.  
#*For example, if your byond key/username is GokuSmokeWeed420, your ckey would be gokusmokeweed420 (notice it's all lowercase letters), and if it were Awesome McCoolkey, your ckey would be awesomemccoolkey (note that the space is removed).
#*For example, if your byond key/username is GokuSmokeWeed420, your ckey would be gokusmokeweed420 (notice it's all lowercase letters), and if it were Awesome McCoolkey, your ckey would be awesomemccoolkey (note that the space is removed).
#*There are many ranks, some with...interesting names, but the one with the most powers is Host. So, going back to the first example, you might add <code>gokusmokeweed420 - Host</code> somewhere--it doesn't really matter where.  
#*There are many ranks, some with...interesting names, but the one with the most powers is Host. So, going back to the first example, you might add <code>gokusmokeweed420 - Host</code> somewhere--it doesn't really matter where.  
#Save it as a new file. What you save it as depends on whether you have file extensions on. You can tell they're on if you see the extension in the name of the file itself when looking at files in File Explorer, e.g. the aforementioned admins.sample file shows up as "admins.sample.txt". Merely seeing Explorer list a "Type" column does not mean they're on.
#*If you have file extensions ''off'' (it is off by default), save it as just <code>admins</code>.
#*If you have file extensions ''on'', save it as <code>admins.txt</code>.
#Compile and run again.
#Compile and run again.


=== Setting the map ===
=== Setting the map ===
#Go to goonstation/_std/ folder
#Open goonstation.dme. This should open up Dream Maker.
#Open __build.dm.  
#Go to the __build.dm through the file tree on the left. It's under _std.
#There should be few lines of code that in the format <code>//#define MAP_OVERRIDE_MAPNAMEHERE</code>, just after the cute and adorable ASCII bee. Remove the // for your map of choice. This will uncomment the code, so that BYOND knows to run it, and this particular section code tells the game to override it to that map. Compile it again and run it.
#There should be few lines of code in a "MAP OVERRIDES" section in the format <code>//#define MAP_OVERRIDE_MAPNAMEHERE</code>, past the cute and adorable ASCII bee and some sections for handling profiling, debugging, and speeding up setup. Remove the // for your map of choice. This will uncomment the code, so that BYOND knows to run it, and this particular section code tells the game to override it to that map. Compile it again and run it.
#*For example, if you want the map to be [[Cogmap1]], make <code> //#define MAP_OVERRIDE_COGMAP</code> into <code>#define MAP_OVERRIDE_COGMAP</code>.  
#*For example, if you want the map to be [[Cogmap1]], make <code> //#define MAP_OVERRIDE_COGMAP</code> into <code>#define MAP_OVERRIDE_COGMAP</code>.  
#Compile and run again.
#Compile and run again.


=== Fixing the unable to open +secret\__secret.dme error ===
Note that you cannot use Map Vote to change map on private servers. On the Goonstation public servers, the Map Vote tells Goonstation's internal software to modify and recompile the code, essentially doing the above, but automatically. Even though the code's configured to use this software, a private server can't access it. Simply put, you don't have the required infrastructure unless you build a new one yourself.
Make sure you [[#Create the __secret.dme file|created the __secret.dme file correctly]].
 
Do not try to go to __build.dm directly through your browser's file system. BYOND not does like it if you try to open DM  files without starting up a .dme environment. If you do, you might cause BYOND to modify the .dme file to the point ''where it won't compile''.
 
=== Starting the round early ===
Just testing stuff alone in a private server and don't want to wait 150 seconds for the game to finish counting down? If you've given yourself admin privileges, you can use the "Start Now" command. You can enter it as "start-now" into your text parser/command bar on the bottom or find it in the Server tab.
 
In addition, __build.dm, which also is where you [[#Setting the map|configure maps]], has a list of defines for faster loading right after the ASCII bee, under a section called "OPTIONS TO GO FAST". Remove the <code>//</code> for the one you want and remember to save, compile, and run it again.


=== Further Information ===  
=== Further Information ===  

Latest revision as of 18:51, 22 November 2024

HeadOfSecurityHatless-64x64.png Warning!
Do not follow this guide if you want to play by yourself! Follow the README on the GitHub instead.


HeadOfSecurityHatless-64x64.png Warning!
Do not follow this guide if you want to play by yourself! Follow the README on the GitHub instead.

A simple guide for hosting your very own goonstation server, for all people of all computers, no previous admin experience, dedicated hardware, or technical know-how required. Shamelessly stolen Borrowed with permission and modified/updated from a forum post by Haine.


Read the above warning. Unless you want to host a server for people to join, do not follow this guide, and follow the README on the GitHub instead.

Setting up

Follow the development guide to download a copy of the repository and get it set up for compiling. You can then press CTRL + SHIFT + B and select the DM build task to build a copy of the codebase you can then run using Dream Daemon.

If errors HAVE occurred, please join #imcoder on the Goonstation Discord (https://discord.gg/zd8t6pY) and some of the users and staff will try to help resolve them.

Using the ZIP download causes lots of problems so do not do it.

Don't download the 2020 or 2016 public releases or the r4407 release, if you somehow stumble upon that one. These are old snapshots of the Goonstation source code at certain points in time. They are not updated at all and can only run on older versions of BYOND. They're most likely not what you're looking for, unless what you're looking for are previous versions of Goonstation for historical interest or something.


Load Dream Daemon

You can open it through the BYOND Pager by going to the gear wheel icon in the upper right corner, or by hitting CTRL+D. This is what Dream Daemon looks like:

KQIe6Fa.png

First you will want to hit the ... button next to the File: box at the bottom. Navigate to where your server code is (the folder with the .DME) and select the .DMB (in goonstation's case this is goonstation.dmb). If you don't have a .DMB file, go back and try building again. Security, Visibility, and webclient settings can be set up however you feel like. (Set visibility to Public if you would like your server to appear on the BYOND Hub).

Select a port and forward it

In Dream Daemon, enter a number for the port (0 makes it random each time the server is started, we don't want that unless you feel like messing with the port forwarding each time (you probably don't)). It should be something in the 1000+ range, for example 8085. You will then need to forward your chosen port to your computer, through your router's admin settings. As this is different for every router and network setup, please consult https://portforward.com/ for instructions on how to do so for your router.

Start the server

The GO button next to the Visibility settings box should have turned green once you loaded the .DMB and if you click on it now, the server will start up. After a minute or so (the window may appear frozen, but it isn't) the window should change to look like this:

q2u34b5.png

After a minute, the window should update to tell you if the server's port is accessible to outside connections. If it says "BYOND hub reports port 8085 cannot be reached by players." you will need to go back to the port forwarding step and try again. Otherwise:

You are now all set to play!

Click the yellow arrow sign to join the game through DD, and the red stop sign to shut the server down when you're done. Click on the byond://[IP]:[port] text to copy the link to the server into your clipboard. You can then share that link with others and they will be able to join your server with it!

Once you've compiled the code the first time, you'll only need to load Dream Daemon and start up the server when you want to run it - you don't need to compile each time.

Quick Useful Tibits

Setting yourself as admin

To make yourself an admin:

  1. Go to the goonstation/config/ folder.
  2. Open up the admins.sample file. Editor does not matter.
  3. Add your your ckey (lowercase byond key) to the list of names, a -, then your rank of choice.
    • For example, if your byond key/username is GokuSmokeWeed420, your ckey would be gokusmokeweed420 (notice it's all lowercase letters), and if it were Awesome McCoolkey, your ckey would be awesomemccoolkey (note that the space is removed).
    • There are many ranks, some with...interesting names, but the one with the most powers is Host. So, going back to the first example, you might add gokusmokeweed420 - Host somewhere--it doesn't really matter where.
  4. Save it as a new file. What you save it as depends on whether you have file extensions on. You can tell they're on if you see the extension in the name of the file itself when looking at files in File Explorer, e.g. the aforementioned admins.sample file shows up as "admins.sample.txt". Merely seeing Explorer list a "Type" column does not mean they're on.
    • If you have file extensions off (it is off by default), save it as just admins.
    • If you have file extensions on, save it as admins.txt.
  5. Compile and run again.

Setting the map

  1. Open goonstation.dme. This should open up Dream Maker.
  2. Go to the __build.dm through the file tree on the left. It's under _std.
  3. There should be few lines of code in a "MAP OVERRIDES" section in the format //#define MAP_OVERRIDE_MAPNAMEHERE, past the cute and adorable ASCII bee and some sections for handling profiling, debugging, and speeding up setup. Remove the // for your map of choice. This will uncomment the code, so that BYOND knows to run it, and this particular section code tells the game to override it to that map. Compile it again and run it.
    • For example, if you want the map to be Cogmap1, make //#define MAP_OVERRIDE_COGMAP into #define MAP_OVERRIDE_COGMAP.
  4. Compile and run again.

Note that you cannot use Map Vote to change map on private servers. On the Goonstation public servers, the Map Vote tells Goonstation's internal software to modify and recompile the code, essentially doing the above, but automatically. Even though the code's configured to use this software, a private server can't access it. Simply put, you don't have the required infrastructure unless you build a new one yourself.

Do not try to go to __build.dm directly through your browser's file system. BYOND not does like it if you try to open DM files without starting up a .dme environment. If you do, you might cause BYOND to modify the .dme file to the point where it won't compile.

Starting the round early

Just testing stuff alone in a private server and don't want to wait 150 seconds for the game to finish counting down? If you've given yourself admin privileges, you can use the "Start Now" command. You can enter it as "start-now" into your text parser/command bar on the bottom or find it in the Server tab.

In addition, __build.dm, which also is where you configure maps, has a list of defines for faster loading right after the ASCII bee, under a section called "OPTIONS TO GO FAST". Remove the // for the one you want and remember to save, compile, and run it again.

Further Information

You can ask for server help on the goonstation's dedicated gooncode channel, #imcoder on the Goonstation Discord (https://discord.gg/zd8t6pY), or post a new thread in the General Discussion forum.


Community
Contributing Guide to Contributing to Wikistation · Goonstation Development Guide · Goonstation Contributor Guidelines · Spriting · Goonstation Spriting Guidelines · Coding · Goonstation Code Guide · Hosting a server · Mapping · Goonstation Map Submission Guidelines · Goonstation Audio Guidelines · Contributing to Requisitions
Members Admins
Culture & Art Terminology · Storyline (Old Storyline) · Basic Lore · Fan Videos · Fan Art
History & Happenings Changelog · Pre-2016 Changelog · History of SS13
Tales & Humor Sex and the Singularity · Maintenance Doggs · The Rapper · The Trial of Heisenbee · Albert and the Deep Blue Sea · The uWu Interrogation · HeadSurgeon · Tales of The Devil‎ · IT'S ALIVE! It died. IT'S ALIVE! It died. IT'S ALIVE!‎ · The floor is now explosions‎ · My god, it's full of butt · The Crashwich · The Doom Peel‎ · Jugglemancy‎