SPACE NERDS IN SPACE

An Open Source Multi-player Networked Starship Bridge Simulator for Linux


Instructions for making a bootable image for playing Space Nerds In Space

Instructions for creating a Live DVD image to run the game

    Summary
  1. Fresh Install Linux Mint 18
  2. Prerequisite package installations
  3. SNIS source code retrieval from Github
  4. SNIS build from source
  5. Desktop customizations & cleanup
  6. Test the game briefly
  7. Use Linux Live Kit to generate a new bootable disk image from self
  8. Burn/copy/cast/press freshly created image to bootable media

Warning: if this trashes your hard drive, you're on your own. This procedure worked for me, but you assume all risk and responsibility for the safety of your data. Partially based on instructions found at https://community.linuxmint.com/tutorial/view/1784 and https://wiki.debian.org/ReduceDebian

These instructions assume you have a Mint 18 linux distribution installed and running to create the bootable ISO image. You can use Virtualbox and install linux Mint 18 on the virtual machine to make the ISO, then when you're done, you can trash the virtual machine. Linux Mint 18 ISO can be found at the Linux Mint download page.

For convenience, consider creating a user "snis" with password "snis" and making it an auto-logon user during OS install.

  1. Boot into freshly installed Linux Mint desktop
  2. #Optional trimming
    sudo apt-get remove mono-runtime-common gnome-orca cupsys*
    sudo apt-get remove thunderbird*
    sudo apt-get remove libreoffice*
    sudo apt-get remove mint-backgrounds-sarah mint-backgrounds-serena mint-backgrounds-sonya mint-backgrounds-sylvia
    sudo apt-get remove mint-x-icons
    		
  3. Now perform standard build of Space Nerds in Space from main SNIS build instructions.

    If the openscad package isn't around, you can get it from here:

    	http://www.openscad.org/downloads.html
    		

  4. Once SNIS build is complete, resume here:

    After you exit from the game client in quickstart.sh, server may still be running.
    cd Games/space-nerds-in-space
    ./killem.sh
    		
  5. Desktop customizations:
    curl -LO https://apod.nasa.gov/apod/image/1406/hud2014_1280.jpg
    mv hud2014_1280.jpg ~/Pictures
    gsettings set org.cinnamon.desktop.background picture-uri  "file:///$HOME/Pictures/hud2014_1280.jpg"
    cp /usr/share/pix/icons/hicolor/22x22/actions/browser-mode.png /usr/lib/linuxmint/mintMenu/mintMenu.png
    
    sed -i 's/^/SNIS Live (based on/' /etc/issue
    echo ')' >> /etc/issue
    
    cat <<__EOF__>~/Desktop/SNIS_Client.desktop
    [Desktop Entry]
    Version=1.0
    Type=Application
    Terminal=false
    Exec=/home/snis/Games/space-nerds-in-space/snis_client --fulscreen
    Path=/home/snis/Games/space-nerds-in-space/
    Name=SNIS Client
    Comment=Space Nerds in Space Game client
    Icon=/usr/share/icons/gnome/32x32/categories/applications-games.png
    
    __EOF__
    
    chmod ug+x ~/Desktop/SNIS_Client.desktop
    		
    Create webbrowser bookmark and set homepage to SNIS homepage.
  6. Prerequisites for live image building:
    apt-get install squashfs-tools genisoimage
    		
  7. Now clean up the game environment before we prepare the disk image (and yes aptitude takes the weird tilde options for some reason):
    aptitude purge ~c
    aptitude unmarkauto ~M
    apt-get clean; rm -rf /var/cache/debconf/*.dat-old; rm -rf /var/lib/aptitude/*.old; rm -rf /var/lib/dpkg/*-old; rm -rf /var/cache/apt/*.bin; updatedb
    history -c
    rm /root/.bash_history
    rm /root/.nano_history
    rm ~snis/.bash_history
    rm ~snis/.nano_history
    history -c
    		
  8. Download the Linux Live Kit to /tmp and extract.
    sudo mkdir /LINUXLIVEKIT
    sudo chown snis /LINUXLIVEKIT
    cd /LINUXLIVEKIT
    curl -LO https://github.com/Tomas-M/linux-live/tarball/master
    ls -lF
    gunzip *gz
    tar xvf *.tar
    cd linux-live*
    		
  9. Give your ISO a description (which will be embedded as the name of the CD or USB stick onto which the ISO is burnt) by editing the file named "config". Don't pick too long of a name though because if you do, it won't work.

    sed -i 's/^LIVEKITNAME="linux"/LIVEKITNAME="SNISlinux"/' config
    sudo ./tools/isolinux.bin.update
    		
  10. Now build filesystem and generate ISO image, which will take a while:
    sudo ./build && sudo /tmp/gen_SNISlinux_iso.sh
    		

    ISO image will be made right in /tmp ; if you will be burning to DVD, this is what you need. There will also be a directory named something like SNISlinux-data-##### (where ##### is some integer) which is the package for bootable USB flash volume. Although the linux live website mentions a tar file, I did not find one, and this directory appears to be the goods.

  11. Virtualbox has some integration features to help you get files off of the guest virtual machine, or you can use an SFTP client to retrieve the files from the virtual machine to the host. But you can also expose a flashdrive to the virtual machine via the Devices menu in VirtualBox.
  12. Burn/copy/write this image to your DVD. Etcher is a really nice Windows-based image writer.

    Or:

    USB Media build:

    There was some trouble with the automounting of the USB flash drive (which was formatted with vfat) due to showexec mount option. Apparently the udisks2 automounter used by Linux Mint does not currently have a method for changing the mount options. The bootinst.sh file errored out with this option set. Therefore it is necessary to remount the flash media manually without this option.

    # Just switch to root at this point.
    sudo su -
    
    MOUNTLINE=( $(mount | grep /media/ | sed 's#showexec,##') )
    MOUNTOPT="rw,owner,umask=000,users,exec"
    udisksctl unmount --block-device ${MOUNTLINE[0]}
    mkdir /mnt/usbmedia
    mount -t ${MOUNTLINE[${#MOUNTLINE[@]}-2]} -o $MOUNTOPT ${MOUNTLINE[0]} /mnt/usbmedia
    			

    cd /tmp/SNISlinux-data*
    cp -r SNISlinux /mnt/usbmedia/
    cd /mnt/usbmedia/SNISlinux/boot
    sh ./bootinst.sh
    cd /tmp
    sync
    umount /mnt/usbmedia
    	
    You can now safely remove the USB media, repeat just this last numbered step to get all the bootable USB media you need.

Then to run the game, boot up all your machines from the built DVD or USB media. Log in as user snis (if you did not opt for auto-login). /home/snis/Games/space-nerds-in-space/ is where the game executables can be launched from.

Repeat for several machines on your LAN, say, five of them or so.

On one machine that is connected to a projector, note the IP address: (run ifconfig from a command terminal window to figure this out.)

Then start the snis client:

  ./snis_client

From there, start the lobby server on localhost, start the gameserver, connect to lobby, and connect to the gameserver.

Note the shipname and password you use (make up what you want, but note that you must use a password).

On the remaining machines, start snis_client, replace the lobby host "localhost" with the ip address noted above, fill in only the shipname and password as above, and connect to the lobby, then to the gameserver. You can be choosy about the 'roles' for each station at this point, but you don't have to.

That's it.

btw, prior to making live dvd iso's and burning a bunch of dvds, we tried to run the game in linux installed to virtual machines on the windows boxes -- that didn't work out so well, performance was kind of crap for whatever reason. With the dvds, performance was fine at least for the few minutes the network was working. They were relatively low performance, inexpensive USB flash drives though.

One other side note: as of Mint 18.3, I found that the install of apparmor was actually blocking dhclient from running and getting an IP address. Somewhere on one of the stackexchange sites I found some instructions to overcome this with some edits in /etc/apparmor.d/.

The code is licensed under the GPL v. 2, or at your option, any later version. Audio files have various other licenses, typically some variant of a Creative Commons license.