Movatterモバイル変換


[0]ホーム

URL:


Captain your starship through adventures with your friends



Please consider donating to support development of Space Nerds In Space.Patreon

Or considercontributing code, either to the core codebase, or mission scripts.

Some video of game play at HackRVA in Richmond, VA, 2016-02-16



Appimage and Flatpak

If you don't wish to build SNIS yourself (though I must stress, building ityourself isnot difficult), Github user and (presumably) SNIS fanVince Pelss has compiled SNIS into Appimage and Flatpak forms. These may be found here:

Note: The most up to date code is always HEAD of the github source repository. Flatpaksand appimages may lag behind and have incompatible network protocol differences.

Build Instructions

Here's a quick preview of the build instructions detailed below:

  1. Acquire necessary hardware (some linux machines, network switch, cables, projector, stereo, etc.)
  2. Clone git repository or obtain source tarball and unpack it.
  3. Install dependencies
  4. Build the code (type "make")
  5. Run the game (type "bin/snis_client")
  6. Download additional art assets
  7. Restartsnis_client

Here is a long, boring video demonstrating how to install

Step 0: Acquire Hardware and OS

This is a linux game. You will need a computer running linux that hasa reasonably decent GPU. A Raspberry Pi 4 (with 4Gb RAM) and heatsinks issufficiently powerful to run the game at 720p for <em>some</em> screens, namely NAVIGATION,ENGINEERING, DAMAGE CONTROL, SCIENCE and COMMS, but is <em>not</em> really good enoughfor the MAIN VIEW, WEAPONS, or DEMON screens (you'll see very low FPS).Here is a long boring youtube video demonstrating installation and running SNIS on a Raspberry Pi 4Bif you want to see for yourself what it's like.Older Raspberry Pisare generallynot powerful enough to run the game.

It is possible to run the game entirely on a single linux laptop, but for the full andproper spaceship experience you will want six linux computers, a network switch,a projector or large TV, and a stereo system for audio in a reasonably darkroom.

The game is currently developed usingMint 20.3It is within the realm of possibility that the game could be made to buildand work on Mac OSX (it has been done before, but not since 2014 or so.)You're on your own if you want to try to run it on Mac, and my understandingis that newer Macs don't support OpenGL, which means you're out of luck.

Step 1: Download the Source Code

The source code is here:Space Nerds In Space github page

NOTE: Do NOT perform these steps as root!

To get the source code, there are three methods:

git clone git@github.com:smcameron/space-nerds-in-space.git

git clone https://github.com/smcameron/space-nerds-in-space.git

After downloading the zip file, you must unpack the zip file. Type (as a non-root user):

unzip space-nerds-in-space-master.zip cd space-nerds-in-space-master

Step 2: Install Dependencies

There is a script,util/install_dependencies. In theory it can install dependencieson apt, yum, zypper, or rpm based systems, but it has only been tried with apt basedsystems. If you want to see what it will do without actually doing anything, it hasa--dry-run option. Even on apt-based systems, package names are not consistentacross various linux distros so it might not do the right thing. This is a HardProblem which there is no avoiding.

util/install_dependencies

If you don't want to run this script, or find that it does not work for you, you caninstall the dependencies manually, as described below. Ifutil/install_dependenciesperforms its job satisfactorily, you can advance to Step 3.

sudo apt-get install build-essential; sudo apt-get install portaudio19-dev; sudo apt-get install libpng-dev; sudo apt-get install libvorbis-dev; sudo apt-get install libsdl2-dev; sudo apt-get install libsdl2-2.0-0; sudo apt-get install liblua5.2-dev; sudo apt-get install libglew-dev; sudo apt-get install libttspico-utils; # optional, for text to speech # Even better than libttspico is nanotts https://github.com/smcameron/nanotts # which is my version nanotts which is a version of pico2wave with a better # user interface. (original nanotts is here: https://github.com/gmn/nanotts # I just added a man page, and improved the Makefile to user PREFIX and DESTDIR) # Both nanotts and libttspico are *far* superior to espeak. sudo apt-get install sox; # for "play" command, used by text to speech sudo apt-get install libcrypt-dev; # used by bin/snis_update_assets sudo apt-get install libcurl-dev; # used by bin/snis_update_assets You might also need these in addition or instead of some of the above: sudo apt-get install libcurl4-openssl-dev sudo apt-get install libssl-dev # Opus is needed for voice-chat, though you can compile without voice chat or, # you can have the Makefile download and compile opus for you instead of # using packages if you distro does not have Opus packages # sudo apt-get install libopus-dev; # used for voice-chat feature sudo apt-get install libopus0; # used for voice-chat feature # (The following are optional) sudo apt-get install espeak; # optional alternative to libttspico-utils sudo apt-get install alsa-utils; # optional alternative to sox, for "aplay" command sudo apt-get install openscad; # optional, only needed if you intend to work on 3D models. # Also, it is recommended to get it from http://www.openscad.org/downloads.html # as the version in the repos tends to be out of date. sudo apt-get install git; # Version control, useful if you're hacking on the game sudo apt-get install stgit; # Useful for making patches if you're hacking on the game. It's likequilt but on top of git.

If you want to try the optional pocketsphinx based local speech recognition,you will want the following packages:

sudo apt-get install pocketsphinx-utils; sudo apt-get install pocketsphinx-lm-en-hub4; sudo apt-get install pocketsphinx-lm-en-hub4; sudo apt-get install libpocketsphinx1;

The above list may be incomplete, and these are the package names on mint 17.3 / ubuntu,so may be different on RPM based systems.

Step 3: Build the Code

To build the code, make sure you are in the top leveldirectory for the game ("space-nerds-in-space" if yougot the source using git, or "space-nerds-in-space-master" if youdownloaded the zip file), and type (as a non-root user):

make

You should see quite a lot of output, like this:

COMPILE mathutils.c COMPILE snis_alloc.c COMPILE snis_socket_io.c ... many steps omitted here ... LINK bin/snis_server LINK bin/snis_client LINK bin/snis_limited_client LINK bin/snis_multiverse

If you have problems building the code, it likely means there is somemissing dependency. Double check that you have all the required dependenciesinstalled. If the missing dependencies have to do with opus libraries, and yourdistro does not have opus packages, you can run "make DOWNLOAD_OPUS=yes", and themakefile will download the opus library source from mozilla.org and compile itfor you.

You can also file a bug report if you think you have discovered a problemwith the build process, or the instructions here. I believe you will need a githubaccount to file a bug report.

Step 4: build openscad models (optional, not recommended)

Or you can skip to step 5 and just download the models instead (recommended).This step will take a long time and requires that you installed OpenSCAD.In general, unless you are working on the models, you can and should skip this step.(Again, as a non-root user):

make models

Note: If you intend to run the game without downloading aditional assets(step 5, below), with just the default assets, this can be done, butrequires the additional step of running:

bin/snis_update_assets --force --destdir ~/.local/share/space-nerds-in-space --srcdir ./share/snis

to copy assets into ~/.local/share/space-nerds-in-space.

Step 5: Run the game

bin/snis_client

You should see something like this:

SNIS Client complains about missing assets

There are art assets not included in the source code. Click the UPDATE ASSETSbutton to fetch the assets.

SNIS Client fetching assets

After a few minutes, the assets will finish downloading. Then you can press theRESTART SNIS CLIENT button to use the newly acquired assets.

Restart SNIS Client

Next, start the game servers (snis_server,snis_multiverse, andssgl_server) byclicking the START SERVERS button.

Start SNIS server processes

Next, connect to the lobby.

Connect to the lobby

Here is the Network Setup screen. Choose your ship name and password, and checkthe MAIN SCREEN role, then click the ENTER LOBBY LOCALHOST button.

Network Setup screen

Now you will see the lobby screen, with a single snis server running. Click on this andthe CONNECT TO SERVER button.

SNIS Lobby

Finally, you are playing the game. First you will see the MAIN VIEW -- the view out ofthe window of your spacecraft.

MAIN VIEW

In your brand new spacecraft, nothing is turned on. Press F4 to go to the ENGINEERING screen,then click on the '1' to activate the first preset which gives power and coolant to all theship's systems.

ENGINEERING

Press F2 to go to NAVIGATION. In the upper right corner of the screen is a verticalslider that controls the thrusters of your ship. Click on it to begin moving forward.

NAVIGATION

Step 5. Play around

Keyboard Controls

The function keys are used to switch between screens, except for F1, which is the 'help' key.

To quit the game, press ESC and confirm using arrow keys and ENTER.Note, this only quits your client process.You can re-join the server (via "bin/snis_launcher" script option 5)It still leaves several processes running, the snis_servers, the lobby processand snis_multiverse. To kill all of them, run the "./killem" script or useoption 8 of snis_launcher.

NAVIGATION SCREEN

From the navigation screen, you can steer the ship and maneuver around.Here is a 10 minute tutorial video about the Navigation screen.

Note: Initially, your ship may have power to all systems turned off via Engineering.Many things won't work without power, including steering and moving the ship. See thesection onEngineering, below.

Navigation Controls

You can use the following keys to steer the ship:

           Q   W   E                ^                                    |           A   S   D<-        ->                                    |                                    V

WEAPONS SCREEN

From the weapons screen, you can fire the laser turret and launch torpedoes.Here is a short tutorial video about the Weapons screen.

The weapons screen

Weapons Screen Controls

ENGINEERING SCREEN

From the engineering screen, you can control how power and coolant is distributedto the various systems of the ship.Here is a tutorial video about the Engineeringand Damage control screens.

The engineering screen

Engineering Screen Controls

DAMAGE CONTROL SCREEN

From the damage control screen, you can repair the various systems of the ship.Take a look at the tutorialvideo for the Engineering and Damage control screensabove.

The damage control screen

Damage Control Controls

SCIENCE SCREEN

From the science screen, you can scan ships, planets, asteroids, launch the miningrobot and help navigate to distant targets.

The science screen

Short Range Scanner

Science Short Range Scanner Controls

The science screen

Scanning Target Details

Science Details Screen

The details view of the science screen

Long Range Scanner

Science Long Range Scanner Controls

The long range scanner is useful for locating distant planets and starbases.It shows a 3D view of the space around your ship.

COMMUNICATIONS SCREEN

From the communications screen, you can hail starbases and other player ships andcontrol what is displayed on the "main screen" as well as activate the RED ALERT alarm.You also control the ship's inventory and can interact with the ship's computer toask it questions or even use it to control almost any aspect of the ship.

The communications screen

The row of buttons at the top is for theCOMMS OFFICER to controlwhat is displayed on theMAIN SCREEN. For this to work best, individualplayer stations should not have theMAIN SCREEN ROLE checked (on theNETWORK SETUP SCREEN when they joined the game) but only the computerattached to the projector or big TV should have theMAIN SCREEN rolechecked. Essentially these buttons make all terminals that have the MAINSCREEN role switch to displaying the selected station instead. The ideabehind this comes from Captain Picard's command, "On screen!" The captain can command anystation's screen be displayed "On Screen!" and theCOMMS OFFICER can"make it so". Note: it is also possible for any player to pressCtrl-Oon their station to make their screen be displayed on the main screen.If they pressCtrl-O a second time, the main screen reverts to showingthe main view out the window into space. So if the captain orders "Weapons,On Screen!", either theWeapons Officer can pressCtrl-O,or theComms Officer can press theWEAPONS button ontheCOMMS screen. Again, if players have the "MAIN SCREEN" rolechecked when they join the game, it can be a bit confusing, becausethentheir own computer will be considered to be a "mainscreen". In general, there normally should only beone computerper bridge that joins the game with the MAIN SCREEN role enabled,and that computer should be the one connected to a projector.

The "EMF" chart in the upper right shows a measuring of local EMF. Whenan NPC ship scans the players ship, this chart will show elevated levels ofEMF. This can give a heads up that some ship is scanning you, and an attackmight be coming soon.

TheMAIN SCREEN button in the lower right portion of the screenmakes the last 4 lines received appear on the main screen so everyonecan see them.

TheRED ALERT button toggles the red alert system on and off.

The shields display is there so the COMMS officer can know if a requestto dock will be denied due to shields still being up.

The zoom slider control at the bottom of the screen controls the zoomlevel of theMAIN SCREEN

So what can Comms do with this terminal interface? First of all, anythingwhich is typed in that is not a command is broadcast on the current channel,which is by default channel 0, which all player ships receive. You can alsoswitch channels, and only player ships tuned to the particular channel willreceive those messages. The intent here is for player-to-player chat in amulti-bridge setup. The channel system is also used (implicitly) forcommunications with starbases and with mining bots.

Commands you can type in are preceded with a slash, '/', along the lines of IRC commands.

    /help -- displays a list of commands (I need to update the help screen)    /computer",    /channel channel-number - change current channel",    /eject cargo-bay-number - eject cargo",    /hail ship-name - hail ship or starbase on current channel",    /inventory - report inventory of ship's cargo hold",    /passengers - report list of passengers    /about - report information about the game (i.e. version number, etc.)

Of the above, /hail, and /computer are the most powerful.

/hail is how you communicate with starbases to request permission to dock,or other things that starbases do (not all of which are implemented yet):

    LOCAL TRAVEL ADVISORY    REQUEST PERMISSION TO DOCK    BUY WARP-GATE TICKETS    REQUEST REMOTE FUEL DELIVERY    BUY FUEL    REPAIRS AND MAINTENANCE        BUY SHIELD SYSTEM PARTS        IMPULSE DRIVE PARTS        BUY WARP DRIVE PARTS        BUY MANEUVERING PARTS        BUY PHASER BANKS PARTS        BUY SENSORS PARTS        BUY COMMUNICATIONS PARTS        BUY TRACTOR BEAM PARTS    ARRANGE TRANSPORT CONTRACTS        BUY CARGO        SELL CARGO        BOARD PASSENGERS        DISEMBARK PASSENGERS        EJECT PASSENGERS    SIGN OFF

You may /hail other player ships, or mining bots. The mining bots have somefunctionality accessed via comms:

    STATUS REPORT    RETURN TO SHIP    TRANSPORT ORES TO CARGO BAYS    STOW MINING BOT    RETARGET MINING BOT    SIGN OFF

If you aren't sure of the name of the mining bot, you can ask theSCIENCE OFFICER to scan it.

The /computer command is the most powerful action the Comms officer can use,with this, the entire ship may be controlled just by asking the computer to dothings in English. For example, stuff like this should all work:

    /computer set a course for the nearest starbase    /computer launch the mining bot    /computer lower shields    /computer set warp power to 100%    /computer engage warp drive    /computer turn left 10 degrees    /computer engineering on screen    /computer calculate a course to the nearest asteroid    /computer describe    /computer set warp drive coolant to 50 percent

MAIN SCREEN

The main view

From the main screen, you can steer the ship with theARROW KEYSand with theA, W, S, D keys and additionallyQ andEallow you to roll the ship. The primary purpose of the mainscreen view it to be projected on a large screen for all players to view at once.

Thebackquote key cycles through first person and a few third person viewsof the ship.

The+ and- (plus and minus) keys and theMouse Scroll Wheelzoom and unzoom the camera. Additionally the zoom can be controlled from theCOMMS screen.

SHIFT-W toggles the main screen view between front facing and weaponsfacing. This is fun to let the whole crew see what theWEAPONS OFFICERis busy destroying.

Note, in a proper multi-player setup, theMAIN SCREEN ROLE (on theNETWORK SETUP SCREEN, see below) should not be active (checked) for mostplayers, but only for the computer which is connected to the projector orbig TV.

TheR key can be used to cycle through different renderer modes(this is really just for debugging though.)

DEMON SCREEN

From the demon screen, the game master can inject all kinds of objects intothe game, direct NPC ships, run Lua scripts and construct scenarios to entertainthe other players. Note: The "demon" screen began life as a debugging screen,and it contains kind of a mish-mash of features that don't necessarily hangtogether in a very coherent way. Consider yourself warned. Some quirkinesslies ahead.

The demon screen

Game Master Screen (aka "Demon" screen).