Today, we bring you the words of Dan Penfound, server host extraordinaire, to share his universe creation insights. With Dan’s help, you’re about to dig into the nuts and bolts of forming a star system. Unfortunately, there’s no way to summarize these details. When you step back and think about the end results though; playing pool with asteroid belts, heaving celestial bodies around like beach balls, and meddling with the fundamental (virtual) laws of physics there is grace behind the numbers.
First, I want to make a couple of things clear that those not familiar with Space Engineers won’t already know. In the game there are two modes: Creative and Survival. In Creative mode there are no deaths or limitations and every player has infinite resources to design anything they want. Survival mode means you need to scratch and drill for every ounce of minerals and losing a ship means it’s not coming back. In Creative mode whole ships or stations can be copied and pasted, but not in Survival mode. Some people play only in Creative mode, desiging vessels and publishing them to the Steam Workshop. Others play only in Survival mode, preferring the limitations and the realism they bring. Someone creating a new universe (player server) would generally use Creative mode to set up the environment, then launch in Survival mode and open it up for other players. When referring to these dedicated playter-hosted server environments, the terms “world,” “star system,” and “universe” are used interchangably by Dan and the Space Engineers community. There’s only so many times you can say ‘server’ before it gets monotonous.
Lastly, Dan talks about using a program called the “Space Engineers Toolbox” (SEToolbox). He mentions it below, but it’s a 3rd party map editing program that allows for swift manipulation of the settings and locations of your server’s environment. It should be noted that Space Engineers’ recent update allowed the copying, pasting, and spawning of celestial bodies within Creative mode, so the same effect can be achieved within the client, but many find it easier to deal with coordinates in SEToolbox than to try to line things up by hand.
Without further ado, Dan’s Guide:
Space Engineers is a game that thrives on multiplayer, with thousands of active servers. For those who are interested in hosting their own server; this guide will teach you how. With minimal effort, and a little over an hour, you can have a fully functioning server ready for yourself and others.
SOME BACKGROUND KNOWLEDGE
When creating a Space Engineers Server there are several things that must be considered. How many asteroids do you want? How fast should the world download to players? Do you want any mods, and if so, which ones? How large do you want the world to be?
These were all questions I had to resolve and doing so turned out to be a rougher ride than I expected. I wanted a server that provided a lot of room to expand and discovery opportunity, but didn’t take too long for new players to download. I was willing to sacrifice download speed for server size.
At first I was considering a world with 60 asteroids in a 150km cube. That resulted in a download larger than 40mb, which is unacceptably long. To remedy this, I decided to halve the number of astroids, to 30, resulting in a roughly 20mb download. Now that download issue is resolved, the hard part is proper asteroid spacing. I devised an algorithm to create coordinates that would ensure that no two asteroids were within 15km of each other. This ensures that asteroids are spread out enough that players do not see two at the same location. The C++ uninitiated will just need to crunch the numbers and make sure no two coordinates are too close together to replicate this effect.
DeRavi’s Note: For those less visuospatially-inclined, I found a handy free site that helps to spread asteroids out. I also want to explain how the coordinate system works in Space Engineers, as that is important later in the guide. Here’s a handy video explaining what X, Y and Z coordinates are, which is important to understand for Space Engineers. When Dan is talking about coordinates, he means kilometers. SEToolbox considers the default spawn point in an empty world to be X:0, Y:0, Z:0. When working in SEToolbox, one unit is one meter. So 0,1000,0 is one kilometre above the center along the Y axis. Dan uses this to space out the asteroids and/or planets by editting the map in question then resaving it with the new information via SEToolbox. What most servers do before launching to the public is to place three beacons with infinite visibility range covered in indestructible armor at the edges of the universe, so that at any time players can see an X, Y, Z beacon. In this way, you can roughly gauge where you are in the universe. The beacons can be set at different distances in servers of different sizes, but ultimately if all three numbers are the same you are in the center of the server. This can be a bit confusing for newer players. In SEToolbox as a server creator, you are using a coordinate system based on 0,0,0 being the center. As a player on that server, you will be using the point at which all three beacon distances are equal as the center of the server. If the creator pops in as a player, he will be using the same system. If your server is a 200 km cube, you would put the X coordinate beacon on the far forward edge of the cube at 100k, the Y coordinate in the center of the top of the cube at 100k above the center, and the Z coordinate beacon in a similar position to X but perpendicular. Again, watch this video if this has you in a fog. Back to Dan:
The only area where I wanted multiple asteroids was in the middle, a known asteroid belt for easy mining. I also knew I wanted a coordinate system for easier navigation. Utilizing the common SE survival server method, I placed 3 beacons at proper distances with infinite visibility so at any time my players can calculate their X, Y, & Z coordinates.
THE NITTY-GRITTY DETAILS
DeRavi’s Note: the Space Engineers Server Extender is a “wrapper around the dedicated server that provides realtime access to the in-game objects.” This provides added functionality for a server’s host that allows for making changes on the fly rather than taking the server offline (and therefore booting the players).
First, create the server and configuration. To do this, navigate to the SpaceEngineersDedicatedServer64 directory (C:\Program Files (x86)\Steam\SteamApps\common\SpaceEngineers\DedicatedServer64). Launch “SpaceEngineersDedicated.exe”, select the “Local/Console” option, and click “Continue to server configuration.”
A large menu of items will appear. On the top left-hand corner select “New game.” Beneath that are the Server settings. The first thing order of business is the “Listen IP”. This corresponds to your Public IP Address. Go to http://www.whatismyip.com/. It will say “Your IP Address Is: XXX.XXX.XX.XXX”. Whatever those numbers are in place of the X’s, put them in your Listen IP. For instance, mine is 188.8.131.52.
The default server port is 27016. Keep it that way. You may need to use Port Forwarding if the server does not start up properly. To do so, forward port 27016 from your Public IP to the host computer’s internal IP using the UDP Protocol. Setting up port forwarding is different for every router so feel free to use this website to help: http://portforward.com/english/routers/port_forwarding/routerindex.htm. Next, select your Server Name and World Name. I would suggest keepping these the same. This makes it easier for people to find your server. For example, my server and world name are both “Caldari Prime”.
Next you need to determine who your server admins are going to be. In-game the only power server admins currently have is the ability to kick players, but admin status is also a status symbol. If someone has a question, they generally look to an admin for the answer. Specifying the name of a server admin requires a string of numbers. Everyone has their method of doing it but I prefer using a browser. Go to http://steamcommunity.com/ and under “Find People” type the name of the user you want to promote. That user will pop up in a list of search results so click on his/her name and then in the address bar and you should see something looking like this: http://steamcommunity.com/profiles/76561198054320715. That last string of digits is the Steam user ID. In this example, place “76561198054320715” into the “Server Admins” box. Do this for each admin you want. Use the same method to generate numbers to ban players.
The next area is “Mods”, and this is where you also need to be warned: it is possible to deploy a mod into your universe and then later the modder pulls their mod out of Steam Workshop. When they do, any items generated by that mod in the universe will no longer appear and you will have to remove its Mod-ID from the list. First, using the Steam Client, find a mod you want off of the Steam Workshop for Space Engineers. For example, I found “Ripptide’s CW & EE Continued”. To get this mod, you need to know the Steam ID for the mod. You first have to enable the Steam URL. To do so, click on the “View” button along the top left corner of the client. From the drop-down menu, select “Settings.” From the box that pops up, select “Interface.” One of the options in this new menu is “Display Steam URL address bar when available.” Check that box to enable it, then select “OK.” Now when you find a mod you will see a like http://steamcommunity.com/sharedfiles/filedetails/?id=297339996. That last string of digits, in this case “297339996,” is the Mod ID you enter into the Mod list. Do this for each mod you want.
Now, I did not use the Steam Group ID. This is useful if you want to Whitelist an entire Steam group on your server. For a public server, leave it at 0. I also left “Pause game when empty” and “Ignore last session” unchecked.
Now for the right side of the configuration. For the first two areas, this is the only chance you have to change those values.
Update 25/6/15: The Server UI has changed and there are now procedural generation options that replace some of these settings.
Scenario: For a normal survival setup, use “DisplayName_Scenario_Asteroids.”
Asteroid Amount: For this world, I selected 30. This can be however many you want.
Update 25/6/15: There is no longer an Asteroid Amount field in the Server UI.
GameMode: Survival or Creative mode allowed.
Assembler/Refinery: Next, the values you can change as the game goes on. The next 4 settings are fairly straightforward. They determine the size of your inventory and how quickly your assemblers and refineries work. A higher value means that they are quicker and therefore makes crafting components a bit faster and easier. A value of 1 is a “Realistic” setting.
Max Players: Simply put, the maximum number of players allowed on the server.
MaxFloatingObjects: The higher this number, the more floating objects you can have in your game (like steel plates or pieces of an asteroid). This does not including ships, it only applies to objects floating around randomly. I set this number to 15, a small number which will diminish lag considerably, especially if you have many players online.
EnvironmentHostility: Whether or not you want meteors flying around your map. “Safe” is No Meteors.
AutoHealing: Whether or not you want your players to heal over time if they are hurt.
EnableCopyPaste: For Creative Mode only.
WeaponsEnabled: Will you allow warfare on your server? Keeping this checked allows players to damage each other.
ShowPlayerNamesOnHud and ThrusterDamage are fairly straightforward. Keep them checked and you will allow them to stay on. These are personal preferences of whether or not you want them enabled.
CargoShipsEnabled: Do you want random cargo ships to fly in and out of the system? This allows for infrequent, randomly appearing targets for players to go after.
EnableSpectator: This allows players to spectate other players. I leave this off by default.
RemoveTrash: This is a setting that can applied when you start the server. This will remove floating trash from the server.
WorldSizeKm: The max world size. If you want a 150km cube, or 75km radius, set this value to 150km. If someone flies out of this limit, they will be warned first, then destroyed.
RespawnShipDelete: If a player dies or exits server, his/her ship will be deleted. I strongly suggest leaving this checked. Otherwise, you might have players respawning in respawn ships repeatedly, causing many ships to be in the server. This could increase the server size and lag incredibly.
ResetOwnership: If you have an active server, never check this box. Otherwise you will set the ownership on every item and block in-game back to Nobody.
Welder and Grinder Speed Multiplier: This determines how fast you can finish welding blocks and grinding them down.
RealisticSound: In space, in real life, there is no sound. You can’t hear anything unless you have an atmosphere. Check this box, and you’ll basically mute all sounds. I leave this unchecked.
ClientCanSave: If this is enabled, it allows a player to save the world in a local copy on their computer. This does not make download speeds faster for the players later. There is a danger if you allow players to save your map in a local copy. They could explore the map in an offline mode, allowing them to discover other people’s bases with little to no danger to themselves.
HackSpeedMultiplier: This simply determines how fast a player can grind down enemy blocks. If set to 0, there is no multiplier, meaning it’s at a default speed.
PermanentDeath: If enabled, this means that if a player dies, and there is no Medical Room for them to respawn in, they lose ownership over everything and have to restart in a respawn ship.
AutoSaveInMinutes: Every time the server does an autosave, it lags the server a little. I would set this to something at 15 minutes or above.
Set the settings as desired and your server is ready for a test run! Click on “Save config and start.”
Now a command prompt will appear (black rectangular box) while it starts up the server. After some time (anywhere between 30 seconds to a few minutes) the box will say “Game ready… Press Ctrl+C to exit.” This means your server has started up and is ready to go.
FOR SIMPLICITY, STOP HERE.
Your server is up, and ready for players. If you want to customize things even more however, keep reading.
First, the Offline Editor Space Engineers Toolbox:
First, you will need to acquire SEToolbox. SEToolbox’s homepage http://setoolbox.codeplex.com/releases/view/133345 will show the most recent releases. Extract the files from the .zip folder and run SEToolbox.exe located inside. Make sure your server is no longer running before continuing.Once the Toolbox is up, click on “File”, “Open”, and select your world underneath the bold heading of “Dedicated Server Host: Local / Console.” After some loading, lots of data will pop up. (WARNING: Your anti-virus program or Windows 8 might flag this program as not safe, but it is. So be sure to run the file anyways.)
SEToolbox offers many options for advanced users, but I’m just going to go through the simple features that I used. Since I wanted a coordinate setup for my server, I needed X-Y-Z beacons. So I created a single player creative world, and created a beacon with solar panels to permanently power it and labeled it X. I did the same for what will become my Y and Z beacons. Next, I opened up another instance of SEToolbox. In this new instance, I opened up my second world and found the 3 beacons I created. To transfer them from one world to another, simply click and drag from window to windows and your beacons will now be in your first server. In the original SEToolbox window, find the newly imported beacons. Click on each one in turn, and set their Position. I placed mine on the edges of the universe to avoid griefing. The X beacon is at: X: 150000, Y:0, Z: 0. The same ideas applies to the Y and Z beacons.
Now for the complicated part: asteroids. This is labor intensive, but work with me here. If you created a server with 20+ asteroids, you will know it immediately upon logging in. You will pretty much see all of them from your starting position. This causes a LOT of lag. The best way to handle this is to space them out. Unfortunately, this must be done manually. In the Toolbox, sort the list by “Type” and find the section labeled “Asteroid.” There will be 30 asteroids labeled “asteroid0,” “asteroid1,” “asteroid2,” and so on. One of them will also be labeled “centralAsteroid.” The rest are labeled “moon.” These are very small and contain just stone and iron, which means there’s not much point to them. Keep them or don’t keep them, it’s your choice. I deleted them as I found them to be a waste of space. So, however many asteroids you have left, you need to space out. You will have to do each one by hand, typing in the XYZ coordinates for each position. I like to make sure they are spread out enough to allow for some space exploration. Alternatively, you can position them close together. When doing this, however, remember that coordinates can be both positive and negative.
SPACE ENGINEERS SERVER EXTENDER
This next section, I highly suggest you follow. This second tool is extremely useful.
Once you have that done, your server now has a navigation system and spread out asteroids. There’s just one more step for completion. I use the Space Engineers Server Extender with my server, available at https://github.com/SEModCommunity/SE-Community-Mod-API/releases. Download the latest Build. It will be in a .zip file. Open it up, and extract the contents to C:\Program Files (x86)\Steam\SteamApps\common\SpaceEngineers\DedicatedServer64. One of the new file in that folder will be “SEServerExtender.” For simplicity, create a shortcut on the desktop for easy access, you iwll be using it a lot. To do this, right click SEServerExtender.exe, and click Create Shortcut. Now, double click this file, and start up the server extender. (WARNING: Again, your anti-virus program or Windows 8 might tell you this file is not safe, but it is. Be sure to run the file anyways.)
It is important to note that every Thursday, after the Space Engineers update, the server extender needs to be updated as. This can take anywhere from 6 to 48 hours. While the Server Extender is not updated, you will have to go back to using the main DedicatedSever.exe. Once Server Extender gets an update, stop your server, update SEServerExtender, and go back to using SEServerExtender.
Upon executing SEServerExtender, two windows will pop up. One is a command prompt window, the other is the Server Extender GUI. This GUI has 6 tabs; Control, Entities, Chat, Faction, Plugins, Utilities.
Control Tab: Here you will see the Server Properties chosen earlier and they can be changed again if needed. Set the Auto-Save Interval to whatever you like (15 minutes or above is recommended). Then click “Start Server” when you are ready.
Once the server is up and running, as shown in the command prompt, the other tabs will be active.
Entities Tab: This view will show all of the objects in your game. If you click on “Sector Objects” it will show several new things. “Cube Grids” consist of any objects made out of blocks. “Characters” will show any players who are not in a cockpit. “Floating Objects” will show what you have in-game that counts as a floating object. Usually, this is just some type of component.
This tab allows you delete things as you see fit and will update live. The Export command will allow you to export ships or structures into a file. The New command allows you to add new things to the world, which may include saved ship designs or components, among others.
If, in the future, your beacons at the edge of the map need uranium, you can find the beacon in the “Cube Grids” menu, select it and expand using the “+”. You may have to click off of the beacon then back on it, then its list should update. Select “Energy” and expand it. For example, a small reactor might appear. Expand it, select “Items,” and then click on “New”. Find the one labeled “MyObjectBuilder_Ingot/Uranium” and type in the amount you want then click Add.
Chat Tab: This shows the chat in-game. This also shows the names of all the players online (may show up as just digits at first). Using this interface, you can talk with the players in-game by typing in the bar and clicking Send.
Factions Tab: This is a very useful tab if you have a lot of people leaving and joining your server as, throughout time, the number of factions will add up. If you have a faction that is old, obsolete, or no longer used, you can select and delete it. You can also filter through its members and join requests.
Plugins Tab: This is for any plugins you want. Look through these if you want to use any http://forums.keenswh.com/post/server-list-of-seserverextender-plugins-7064424?pid=1284156049
Utilities Tab: This is for clearing floating objects. This section is self explanatory. Only one button.
This usually means that you tried to start your server, but failed. There are two common issues with setting up a Space Engineers server. The first is improper port forwarding. Using the website provided earlier, ensure that the proper port is forwarded correctly for your particular router.
The second common problem is that the port is already in use. This may mean you have a service using that port. To fix this problem, bring up the command prompt. For Windows: Type in netstat –aon | find “:27016”. A service should appear, and one of the columns should be labeled PID. Write down the number. Next, press Ctrl+Alt+Del. Based on hte version of windows you have, the next step is:
Windows 7: Go to the “Services” tab. Sort by PID. Find the number that corresponds with the one you just wrote down. Right click on that service and click Stop Service.
Windows 8: Go to the “Details” tab. Sort by PID. Find the number that corresponds with the one you just wrote down. Click on the service, and click “End Task.”
Your server is now fully functional and ready for players! No one ever said this was easy, but it certainly isn’t the hardest thing in the world. With a little effort and diligence you will have an amazing server to offer the fans of Space Engineers and a new area of space for players to enjoy.
(EDITOR’S NOTE: This article was originally written by DeRavi, and appeared on TheMittani.com under his byline.)