SPACE-NERDS-IN-SPACE(6)
π« SPACE-NERDS-IN-SPACE(6) π«
okay bestie, so you know snis_server? literally the most iconic multiplayer starship bridge simulator server to ever exist? yeah, we're getting into it. this is a section 6 manual page (Games), and it's giving main character energy. buckle up πβ¨
β¨ NAME β¨
snis_server β a multi player cooperative star ship bridge simulator (the server version, obvi) π
π SYNOPSIS π
snis_server -l lobbyhost -L location [ -m multiverse location ] [ -n
servernick ] [ --enable-enscript ]
like, that's the whole vibe. keep scrolling for the deets π«Ά
π¦ DESCRIPTION π¦
okay so snis_server is literally a server process for the game Space Nerds In Space, which β in case you didn't know β is a multiplayer starship bridge simulator. iconic. it simulates the entire game universe and processes input data from client processes and sends outputs back to those client processes. it's the whole backbone, no cap π«‘
the location parameter is used to tell one game instance apart from another one running on the same host (and yes, multiple snis_server processes can absolutely run on the same host, we stay busy). the location should be a short human readable string that uniquely identifies the game instance and it is required. and the lobbyhost? that's the hostname of the server hosting the ssgl_server process. boom, that's the lore π
πΈ Examples πΈ
Note: normally, you shouldn't have to startsnis_servermanually yourself. it should either be started bysnis_client,snis_multiverse, or by thesnis_launcherscript. but in case you want to start it manually for whatever reason, here are some examples. (you do you, bestie π )
- Ordinary invocation β the classic, the standard, the moment.
snis_server -l lobbyhost -L location -m multiverse-location \
-n server-nickname
- Bare
snis_serverβ running a baresnis_serverinstance with no lobby and nosnis_multiverse, allowing WAN connections fromsnis_clientson port 20000. living on the edge fr fr π₯
snis_server --allow-remote-networks -L location -s solarsystem \
-n server-nickname --nolobby -p 20000
β¨ OPTIONS β¨
okay this is the part you actually need, so pay attention bestie π
--acknowledgmentsβ prints out acknowledgments and license information and exits. shoutout to the legends π«Ά--allow-remote-networksβ by default,snis_serverwill drop connections from any client originating from a different network, allowing connections only from clients on the same network, since it's primarily a LAN game. this option allows clients to connect from different networks. there's also a tweakable variable in the console calledLOCAL-NET-ONLY, which this option sets to zero. so like, if you want the whole world in your lobby, this is your moment πβ¨-e,--enable-enscriptβ enable the"enscript"command on the Demon screen. this allows clients to create files on the server so you should probably leave this off π like, seriously, leave it off unless you really know what you're doing-g,--NAT-ghetto-modeβ if it happens thatsnis_servercannot connect tosnis_multiverseusing the IP addresses it gets fromssgl_server, this flag makes it take a wild guess that the reason for this is NAT, so thatssgl_serverhas the wrong IP addresses. and then it takes another wild guess thatsnis_multiverseis running on the same host asssgl_server, and so it attempts to connect using the IP address of the lobby host and the port number it got from the lobby for thesnis_serveron the theory that the port number will work because of port forwarding. it's giving "chaotic but might work" energy π-h,--helpβ prints a usage message and exits. the classic help me help you πββοΈ-l,--lobbyhostβ set the hostname at which the lobbyhost is running. the lobby needs a home okay π-L,--locationβ set the"location"to be used with the lobby server. this is just an arbitrary string for human consumption to differentiate one gameserver from another. and yes, it is required. no location, no game, periodt β-m,--multiverse locationβ set the'location'of thesnis_multiverseserver to connect to.snis_serverwill monitor the lobby looking for entries with game type of'SNIS-MVERSE'(i.e. for instances ofsnis_multiverse) and with the location field set to the value specified by the--multiverseoption. it's literally matchmaking but make it multiverse π-n nickname,--servernick nicknameβ specifies a nickname for thissnis_serverinstance. this name will be transmitted tossgl_server, and be visible insnis_clientin the lobby, and in the output oflsssgl. basically, it's your server's whole identity β¨--nolobbyβ this is for running a baresnis_serverinstance with no lobby (nossgl_server) and nosnis_multiverse. just you and the void, bestie π«Ά-p port-number,--port port-numberβ specify the port number to use for incoming connections fromsnis_client. if not specified, a port will be chosen randomly from the default range for dynamic ports,49152 - 65535. let the universe decide π²-r min:max,--portrange min:maxβ by defaultsnis_serverchooses a random port in the range49152 - 65535but you can specify another range with this option. this is useful if you're running behind a firewall and want to open up only a smaller range of ports. very considerate of you honestly π₯-s solarsystem-name,--solarsystem solarsystem-nameβ specifies the solarsystem name. this is used to select what assets to use for skybox textures, planet textures and so on. the default solarsystem name is"default". pick your aesthetic πΈ-t,--trap-nansβ trap (crash) whenever certain floating point exceptions occur. this is for debugging erroneous floating point calculations that produceNaN(not a number) values, such as divide-by-zero, overflow, and so on. it's giving "let it crash so we can fix it" energy π-v,--versionβ print the program's version number and exit. know your roots π
π FILES π
the files this thing touches, bestie, they're important:
/dev/input/js0β the joystick device node πΉοΈ/dev/input/event5β the rumble effect device. yes, rumble, we love tactile feedback π₯/usr/share/snis/sounds/*.oggβ contain the audio data used by the game π΅share/snis/luascripts/*β various lua scripts which may be run to implement scenarios or missions. okay so this part is important: the file names of luascripts must be uppercase β useABC.LUA, notabc.lua. one level of subdirectories is allowed βXXX/ABC.LUAis permitted, but notXXX/YYY/ABC.LUA. if multiple subdirectories contain scripts with the same name, the first script encountered is executed. that is to say, if you haveA.LUA,X/A.LUA,Y/A.LUA,Z/A.LUA, and you execute"a"from the demon screen,A.LUAwill be executed. ifA.LUAdidn't exist, thenX/A.LUAwould be executed. you can differentate by typing, e.g."z/a"on the demon screen to executeZ/A.LUA. the lore is deep, iykyk π§
π ENVIRONMENT VARIABLES π
SNISRANDβ can be set to a random seed to affect universe generation. chaos theory but make it a video game πSNIS_ASSET_DIRβ can cause the program to use a different directory to read various assets (models, sounds, etc.) from a different directory allowing easy substitution of all art assets. default is to useshare/snis. dress your game up however you want πSSGL_PRIMARY_IP_PROBE_ADDRβ if you're on a dual-homed machine with multiple network interfaces on multiple networks or on a machine that is on an isolated network that can't reach the internet, you may need to use this. by defaultsnis_serverassumes that the interface to listen for connections on is one that can reach8.8.8.8(Google's DNS server). no packets are transmitted to8.8.8.8, it just queries the routing table to see what interface should be used to transmit there if we wanted to. ifssgl_serveris not reachable by the same interface that can reach8.8.8.8, or if there is no interace that can reach8.8.8.8, then this variable can be set to any IP address on the network on whichssgl_serveris reachable so that the correct network interface is chosen. networking is complicated, but you got this bestie π«Ά
β SEE ALSO β
go check out the whole squad: snis_client(6), ssgl_server(6), snis_multiverse(6), lsssgl(1). they're all part of the friend group, they all matter π
π GOOD LUCK π
you'll need it.
(the manual said that, not me, but honestly? valid π)
π AUTHOR π
written by Stephen M. Cameron. the icon, the legend, the moment. we stan π«Άβ¨
that's the whole manual, bestie. snis_server, the Feb 2025 version, with every single detail we could possibly squeeze in. now go forth and simulate some starship bridges πππ
π¦ where this page comes from
- nixos 26.05: snis 1.0.9
- nixpkgs unstable: snis 1.1.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms