Giter VIP home page Giter VIP logo

smcameron / space-nerds-in-space Goto Github PK

View Code? Open in Web Editor NEW
714.0 36.0 73.0 183.31 MB

Multi-player spaceship bridge simulator. Captain your starship through adventures with your friends. See https://smcameron.github.io/space-nerds-in-space

License: GNU General Public License v2.0

Makefile 1.10% C 86.73% Shell 0.75% Awk 0.01% Lua 5.01% OpenSCAD 1.36% GLSL 1.08% Java 0.92% Python 0.03% HLSL 1.00% Roff 0.05% Perl 1.91% C++ 0.01% Jupyter Notebook 0.04%
game space-game starship-bridge-simulator simulator simulation starship bridge bridge-game procedural-generation star-trek

space-nerds-in-space's Introduction

Space Nerds In Space is an open source multiplayer networked spaceship bridge simulator game inspired by another game called "Artemis Spaceship Bridge Simulator" It is still a work in progress, but it is substantially far along, and reasonably free of bugs as far as I know (the game should not crash, in other words.)

Here is some video from February 2019, at HackRVA in Richmond, Virginia:

Watch the video

Features:

  • Terminals for Navigation, Weapons, Engineering, Damage Control, Comms, Science, and Game Master.
  • Multi-crew (multiple bridges) supported
  • Terminals may join/leave/re-join games at any time.
  • Asteroid mining
  • Bounty hunting
  • Travel between instances of the game via warp gates in an arbitrarily large universe of solar systems.
  • Dock at starbases to repair your ship, buy/sell various commodities, sell mined ore, obtain warp gate tickets, etc.
  • Lua scripting API for mission scenarios.
  • Voice chat
  • And of course, fly around and shoot stuff.

Note: This game is meant to be played on a LAN with all players in the same room. Bandwidth requirements are on the order of 100k/s per client.

  1. How to build the game from source (or see below):

    https://smcameron.github.io/space-nerds-in-space/#buildinstructions

  2. How to run the game on a single machine (single player):

    https://smcameron.github.io/space-nerds-in-space/#singlemachineinstructions

  3. How to run with a multi-player LAN setup:

    https://smcameron.github.io/space-nerds-in-space/#multiplayerinstructions

If you would like to help work on this project, see CONTRIBUTING.md. There is also a guide to the code here: Hacking Space Nerds In Space. Here is documentation for the Lua scripting API intended to be used for creating "mission scripts".

BUILD INSTRUCTIONS

Here is a long, boring video demonstrating how to install

These instructions are a duplicate of what is found here: https://smcameron.github.io/space-nerds-in-space/#buildinstructions

Step 0: Acquire Hardware and OS

This is a linux game. You will need a computer running linux. A raspberry pi doesn't count, it's not powerful enough. The game is currently developed using Mint 17.3 It is within the realm of possibility that the game could be made to build and work on Mac OSX (it has been done before, but not within the last couple years.) You're on your own if you want to try to run it on Mac.

Step 1: Install Dependencies

Build dependencies

Perform these steps as root:

    apt-get install build-essential;
    apt-get install portaudio19-dev;
    apt-get install libpng-dev;
    apt-get install libvorbis-dev;
    apt-get install libsdl2-dev;
    apt-get install libsdl2-2.0-0;
    apt-get install liblua5.2-dev;
    apt-get install libglew-dev;
    apt-get install libssl-dev;
    apt-get install libttspico-utils; # for text to speech
    apt-get install sox; # for "play" command, used by text to speech

    # (The following are optional)

    apt-get install espeak; # optional alternative to libttspico-utils
    apt-get install alsa-utils; # optional alternative to sox, for "aplay" command
    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.
    apt-get install git; # Version control, useful if you're hacking on the game
    apt-get install stgit; # Useful for making patches if you're hacking on the game. It's like "quilt" but on top of git.

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

    apt-get install pocketsphinx-utils;
    apt-get install pocketsphinx-lm-en-hub4;
    apt-get install pocketsphinx-lm-en-hub4;
    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.

NOTE: problems building on SuSE Leap 15.1. The following problems/solutions have been conveyed to me regarding SuSE Leap 15.1. This information is not very complete or accurate, but it is the best I have for now. Please feel free to send me improvements to these instructions. See Bug 222.

  • Need to install pkg-config and pkg-config_files.
  • Need to set pkg-config-path environment variable
  • All references to lua 5.2 in the Makefile need to be changed to lua 5.3. Note, we only compiled snis_client (via "make bin/snis_client") which shouldn't need lua at all. I don't know if the differences between lua 5.3 and lua 5.2 are significant enough to break things. I normally use lua 5.2 on my systems. Changes to Lua 5.3 -- at a quick glance I didn't see anything that I think will be problematic.

Step 2: Download the Source Code

The source code is here: https://github.com/smcameron/space-nerds-in-space

NOTE: Do NOT perform these steps as root!

To get the source code, there are three methods:

If you are a registered github user, type (as a non-root user):

        git clone [email protected]:smcameron/space-nerds-in-space.git

If not a registered github user, you can still use git with https. Type (as a non-root user):

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

Finally, you can just download a snapshot zipfile without using git at all: https://github.com/smcameron/space-nerds-in-space/archive/master.zip

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 3: Build the Code

To build the code, make sure you are in the top level directory for the game ("space-nerds-in-space" if you got the source using git, or "space-nerds-in-space-master" if you downloaded 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 some missing dependency. Double check that you have all the required dependencies installed.

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

Click here to file a bug report.

Step 4: build openscad models (optional)

Or you can skip to step 5 and download them (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 skip this step. (Again, as a non-root user):

      make models

Step 5: Download additional assets

If you skipped step 4 and didn't build the openscad models, they will be downloaded in this step, along with some other things. This step requires an internet connection. If you performed step 4, you may skip this step though it is not recommended, as you will be missing some additional solarsystem assets. As a non-root user:

      make update-assets

Step 6. Run the Game on a single system

(Try this before trying multiplayer)

Type (as a non-root user):

        $ ./snis_launcher

             Welcome to Space Nerds In Space

        ------------------------------------------------------------
        No SNIS processes are currently running.
        ------------------------------------------------------------

           1. Launch SNIS lobby server
              The lobby server allows clients to find servers
              There should be one lobby server total.
           2. Launch SNIS multiverse server
              The multiverse server stores player ship data
              There should be one multiverse server total
           3. Launch SNIS server
              There should be one snis server per solarsystem.
              There should be at least one instance of snis_server.
           4. Launch SNIS client process
              There should be one snis client process per player
              plus one more per ship for the main screen.
           5. Launch limited SNIS client process (no Open GL required).
           6. Stop all SNIS processes
           7. Stop all SNIS clients
           8. Stop all SNIS servers
           9. Check for asset updates
           10. Enter Lobby Host IP addr (currently localhost)
           0. Quit
           Choose [0-10]: _

Choose option 1, then option 2, then option 3, then option 4 (taking defaults for any questions you might be asked.)

space-nerds-in-space's People

Contributors

aboyett avatar akien-mga avatar bentley avatar broosa avatar cruzr avatar heaventwig avatar her001 avatar ioangogo avatar ivansanchez avatar jrwarwick avatar jv4779 avatar kapcom01 avatar lincolnbryant avatar logzero avatar lucki avatar mcmic avatar mdeguzis avatar sbenesh avatar smcameron avatar spaceshipoperator avatar teflonsquirrel avatar the-maldridge avatar timotheegerber avatar tkopecek avatar toadster122 avatar ugom avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

space-nerds-in-space's Issues

Main Screen feature requests

A couple of nice-to-have's in the future for the Main screens

Magnification:
Be able to magnify the center of the screen to see what's going on a little farther out. More of a Star Trek-ism more than anything.

Sensors:
for the Captain to plan out his next course, having the sensors on main screen could be an option. This could be a subset of what science sees.

Pressing "W" on Mainscreen no longer switches to Weapons stated on Help screen

The Help Screen for the Main Screen states that "W" toggles weapons view. Currently it controls the pitch of the ship (WASD controls). This should probably be removed.

In snis_client.c

static char *help_text[] = {

        /* Main screen help text */
        "MAIN SCREEN\n\n"
        "  CONTROLS\n\n"
        "  * USE ARROW KEYS TO TURN SHIP\n\n"
        "  * W KEY TOGGLES BETWEEN WEAPONS VIEW\n"
        "    AND MAIN VIEW\n\n"

Fleets eventually absorb all ships

On respawn, ships may randomly choose to join a fleet. But there's no way for a ship to leave a fleet (other than dying and respawning). As a consquence, fleets tend to grow indefinitely in size, and since joining a fleet forces the faction of the member to be the same as the faction of the leader, what happens, is all factions but one go extinct as a massive fleet crushes all before it.

Needs balancing.
screenshot from 2014-02-19 07 35 08

Fleet mis-behavior

Rogue leaderless fleets occasionally wander off into the hinterlands.

rogue-fleets

Use of pseudo random numbers in clients can lead to discrepancies between clients

There are lots of places in snis_client.c where we use pseudo random numbers to generate object properties. For instance, the spin on asteroids, choosing of asteroid models, the trajectories of sparks, the configuration of nebulas, etc. If the clients do not happen to use the same seed and same random number algorithm, or if multiple threads in the client use the single random number generated (glibc's rand(), at the bottom of it all), then the different clients can display different things. For example, the same asteroid might use one model on one client, and another on a different client, and the asteroid might spin differently, the nebulas might appear different from one client to the next, etc. Actually, it so happens that the nebulas are generated early enough that it seems the clients do make the same nebulas (have not tried on 32 and 64 bit clients to see if those are the same), but relying on this behavior seems wrong.

If in nebula, hide from enemy sensors

While in a nebula, weapons and helm screens are scrambled. Enemies will still head toward you and attack, apparently with their systems unaffected.
Make enemies not be able to attack with such ease or at least misfire a few shots.
Make it so you can hide in nebulas, in-case you are being attacked. Also hide enemies in nebulas.

Laser targeting is no fun

The lasers look cool, but laser targeting is no fun -- less fun than the old system with manual aiming of the old lasers (that were just photon torpedoes that were weaker and faster). Make it funner.

Error compiling on Ubuntu 13.04 64 Bit

After recently checking out source code I am now getting an error when running make. /lib/x86_64-linux-gnu/libpng12.so.0 does exist. This has worked on previous revisions.

LINK snis_server
/usr/bin/ld: snis_graph.o: undefined reference to symbol 'png_set_sig_bytes@@PNG12_0'
/usr/bin/ld: note: 'png_set_sig_bytes@@PNG12_0' is defined in DSO /lib/x86_64-linux-gnu/libpng12.so.0 so try adding it to the linker command line
/lib/x86_64-linux-gnu/libpng12.so.0: could not read symbols: Invalid operation
collect2: error: ld returned 1 exit status
make: *** [snis_client] Error 1

Map all buttons and controls to Keyboard keys

I'm planning on building some custom keyboards for the game and I'd like to be able to control everything in game from the keyboard without having to use a mouse. (These will get double use with Artemis SBS). A config file would be nice to be able to remap keys for future upgrades to code and to my custom keyboards.

Windows build throws errors

I doupt this game was thought for Windows but I wonder if someone is going to make it compatible.
Please tell me if there's a need for an error log, it's huge.

Segfault of SNIS with French locale

I built SNIS on Mageia Cauldron (development version of the upcoming Mageia
5). It was not that straight-forward since I had to package OpenSCAD, and
to do so also package CGAL and OpenCSG, but either way it's good that
OpenSCAD is now available in the distro :-)

I get a segfault when running snis_client with my system locale
(fr_FR.UTF-8): http://pastebin.com/Y84xFhE3
When running SNIS with an English locale (LC_ALL=C ./bin/snis_client), it
seems to work as expected.

My guess would be that the issue comes from the decimal delimiter, which is
a dot in English but a comma in French (and other locales too, such as
German or Spanish). I've already experienced quite a few games crashing
because of such locale-related issues (mainly indie games on Steam though).

This would explains errors such as:

Error reading 'orientation' from file './share/snis/materials/nebula0.mat'

If the system awaits commas and finds only dots, it doesn't understand the
numbers. I'm not sure how you could best fix this on the programming side
though, I don't have much developer skills.

Text placement issues at various resolutions

A user was testing out snis on a computer with i3 window manager and two 1920x1080 monitors, which lead to ui placement issues. h ignored them because of the unusual environment, but then a community member in Steam Linux User Group also had issues.

This other guy was kind enough to take a couple screenshots:
snis-help
snis-menu

He said "line 225 and 226 of snis_font.c .. I added in * 0.7" and that made it so the fonts did not overlap anymore.

It might suitable, for now, to have a way to set the resolution. Perhaps an option --resolution=XxY

Nav spins ship in circles

Ran into an issue this weekend with a 6 computer game. For some reason the ship was spinning in circles. I tried closing out of the game on the Nav client computer as well as the Main screen client, but, it continued.

I've seen this issue off and on previously but it usually get corrected after a commit, or so I thought.

This was on 32bit Debian Stable but have seen it on Ubuntu off and on.

minor bug in gaseous-giganticus.c

Minor bug with using a cubemap ( NO "-s" or "-S" ) in gaseous-giganticus.c

at the end will be a link to a zip file with examples

a cube map is normally h =3 w=4 proportion

reading in the width is FINE however the tile height that is not correct

the tile height is being inputed as 3/4 of the 1024 rows then outputing a 1024 image ( of the 768 rows read)

so far i have NOT been able to find the loop that is causing this read error

included in the zip is a standard test image i use simple cylindrical 10 degree lines
a cube map of it
and a "work around " remapped cube map that DOSE work
but that is a work around only

for a correct cube map --- not outputting correctly
./gaseous-giganticus -c 1 --noise-scale 0.1 --velocity-factor 1 -i ./lines10Cube.png --bands 1

a "fudged cubemap that will output correctly "lines10Cube1.png"
./gaseous-giganticus -c 1 --noise-scale 0.1 --velocity-factor 1 -i ./lines10Cube1.png --bands 1

" Test.zip"
https://drive.google.com/file/d/0B6ZYAd08tZL-UnREOGtRMy04UGM/view?usp=sharing

Shields causes problems during docking with stations

When trying to Dock with stations, the shields must be lowered.
After lowering the shields to what at least looks like zero (both power and shield strength), sometimes it takes 2 requests from Comms to be able to dock. It's hard to tell if it's the shields still having some power left or just a Comms bug/issue.

A Shields Up/Down button would make it easier to turn on & off the power and to tell the current status of the shields. This would help coincide with the request of the Captain for Shields Up or Down and make it easier for the engineer.

Decouple assets from binaries

I think the game assets should be completely decoupled from the codebase. Right now it's a bit of a downer to see all the openscad files being re-compiled every time I do amake clean.

Ideally, SNIS should be able to switch between sets of game assets (models, textures, shaders, materials, sounds, commodities, factions) easily. The current way of overriding the asset directory looks good enough for me.

I suggest following the example of Artemis with VesselData.xml - create some kind of plain text file listing all available models&textures&materials, parse it, dinamically load assets from there, and have the exhaust ports in plain text rather than .h.

For what I've seen, snis_client.c needs some .h files from the models to know where the exhaust ports are. I guess this should be one major bit of code to clean up and a good place to start.

Bonus points given for:

  • A graphical interface to choose available assets whenever a server is started.
  • Make the game server (or even the lobby) the only piece that can choose the assets, and have all clients sync the assets from the server they're connected to.
  • Provide more than one set of assets.
  • Making separate Debian packages (e.g. snis-core, snis-assets-default and snis-assets-startrek).
  • Splitting the Git repo structure into code and assets.

Missing OGG file in share directory

Missing file share/warning-hull-breach-imminent.ogg

Error when running snis_client:
Decoding audio data...stat('share/warning-hull-breach-imminent.ogg') failed.

As far the game runs with out issue, but haven't tested to the point of audio triggering.

Gaseous Giganticus fudge factor mysteriously makes it work

There is code in gaseous giganticus for computing the curl of the noise gradient like this:

        if (m1 < m2 * left_right_fudge) /* rotate left or right if uphill or downhill */
            quat_init_axis_v(&rotation, &axis, M_PI / 2.0);
    else
            quat_init_axis_v(&rotation, &axis, 3.0 * M_PI / 2.0);

However, left_right_fudge is 0.995. This was originally put in when trying to debug discontinuities in the velocity field which later turned out to be due to something else (see commit 8896774). However, the fudge was left in. The idea behind it is not important as that idea was not correct. So, we should be able to remove this fudge factor. Doing so breaks the program (use the -h option to see areas particles have vacated). It turns out, the value 0.995 causes the if statement to always evaluate to true.

So, the projected noise gradient is always turned right, never left. Why does that work? It (as I understand it) should be the case that we have to turn "uphill" noise gradients one way and "downhill" noise gradients the opposite way. Yet, this is not the way we are doing it, and "fixing" it (by setting fudge to 1.0, or removing the fudge factor altogether) breaks the program (introduces discontinuities and voids (sinks?) in the velocity field.)

So something's weird and wrong, but the mistakes appear to be cancelling each other, (or very nearly so).

Red Alert feature request

Add new button to Comms to toggle repeating Red Alert sound on Main Screen client.

When comms hits the red alert button the main screen computer continuously plays an ogg of a red alert sound. Comms can then hit the button again to turn off.
Eventually I'd like to have it control some lights and/or other screens.

I figure for the sound use a mix of http://www.freesound.org/people/zimbot/sounds/178032/
and
http://www.freesound.org/people/Ionicsmusic/sounds/137948/

I attempted to add the feature myself, but had no luck playing a file.

Cannot Build On EEEPC Running Mint 17 32bit

Hello. Ive been trying to build SNIS on my EEEPC-900HD. I am running Linux Mint 17 Xfce 32-bit and have installed all of the required dependencies without issue. Unfortunately the build fails. Here is the output:

CGAL Cache insert: multmatrix([[3,0,0,0],[0,3,0,0],[0,0,3,0 (606236 bytes)
CGAL Cache insert: multmatrix([[1,0,0,0],[0,1,0,0],[0,0,1,- (606236 bytes)
CGAL Cache insert: group(){multmatrix([[1,0,0,0],[0,1,0,0], (606236 bytes)
CGAL Cache insert: multmatrix([[1,0,0,0],[0,1,0,0],[0,0,1,4 (219516 bytes)
ICE default IO error handler doing an exit(), pid = 16591, errno = 32
make: *** [share/snis/models/wormhole.stl] Error 1
make: *** Waiting for unfinished jobs....
CGAL Cache insert: union(){group(){difference(){multmatrix( (663244 bytes)
CGAL Cache insert: group(){union(){group(){difference(){mul (663244 bytes)
  OPENSCAD share/snis/models/starbase4.scad

Any suggestions? Thanks!

Enemies shoot through planets

I was testing the latest commits last night and I was being shot by an enemy ship on the other side of a planet. Both beams and torpedoes were coming though. The enemy came out from behind the planet before I could see if I was able to hit it before my ship was destroyed.

Unable to see server in lobby on Lubuntu Linux 13.04 64bit

I recently setup a machine with Lubuntu Linux 13.04 64 bit (fresh install). I can compile and run the snis_client fine and connect to another ssgl_server and snis_server (on a Raspberry Pi). I am not able to connect to snis_server on localhost. I can connect the lobby server on localhost. Just no servers show up on the list. It is running and I see an open TCP connection listening for the server. I also tried to connect to 127.0.0.1 and the computer name.

I have been able to make and run on another Lubuntu Linux 13.04 32 bit machine with no problems.

Just to make sure I compiled against commit 4d3c0b4 from 5 days ago to make sure it wasn't something from the new Makefile changes. It has the same problem.

There were no errors on compilation. I'm guessing this has something to do with the version of Linux being 64 bit.

Missing file during compiling for Vanquisher model

Guessing there's some info missing on the new model from commit 16f7874

  COMPILE graph_dev_opengl.c
  COMPILE snis_graph.c
snis_client.c:4765:55: fatal error: share/snis/models/vanquisher.scad_params.h: No such file or directory
  #include "share/snis/models/vanquisher.scad_params.h"
                                                       ^
compilation terminated.
make: *** [snis_client.o] Error 1

LANG needs to be en_US

I am on Ubuntu 13.04 (32bit) and when i run ./snis_client I get:

kapcom01@ProBook:~/space-nerds-in-space$ ./snis_client 
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
bt_audio_service_open: connect() failed: Connection refused (111)
bt_audio_service_open: connect() failed: Connection refused (111)
bt_audio_service_open: connect() failed: Connection refused (111)
bt_audio_service_open: connect() failed: Connection refused (111)
ALSA lib pcm_dmix.c:957:(snd_pcm_dmix_open) The dmix plugin supports only playback stream
Portaudio reports 11 sound devices.
Portaudio says the default device is: 10
Decoding audio data...ALSA lib pcm.c:7339:(snd_pcm_recover) underrun occurred
Done.
failed reading normal at line 2
failed reading normal at line 2
failed reading normal at line 2
reading 'asteroid.stl'
failed reading normal at line 2
Σφάλμα κατάτμησης (segmentation fault)

But if first do export LANG=en_US.UTF-8 and run again, then it starts fine.

After pressing ESC ask to confirm exit

In the middle of a firefight, especially during a single player game and switching screens, accidentally pressing ESC closes out of the game. This could cause the loss of the ship, even though you can reconnect. This takes time.
Having the user confirm that he/she wants to disconnect will reduce this issue.

Leftover Torpedoes still loaded after ship is destroyed

If you have a torpedo loaded, and your ship is destroyed, when you respawn the ship has a torpedo still loaded.

Have all torpedoes unloaded upon destruction of ship. Also reset controls to default for Phaser Wave Length and any other changed settings.

Space stations should always be identified on Science, Helm & Weapons

Since Space Stations should be in known places on the map in the universe for friendlies, they should always be marked on each of the stations (Sci, Weapons, Helm).

Another way to possibly handle this, is to have Comms send out a broadcast to all stations and have the stations give their positions upon this request. The screens could then update with the information.
Range could be reduced for this to not identify farther out stations.

Add liblua5.2-dev to Makefile notes

In order for me to compile with the new Lua additions on Ubuntu 12.10 I had to install liblua5.2-dev to resolve dependency for lua.h. Apparently I already had it installed on my 13.04 machine.
This info needs to be added to the Makefile to make the info complete.
sudo apt-get install liblua5.2-dev lua5.2

NPC AI has numerous problems

Recent commit 2eeca4e to make NPC ships warp if travelling distance is too great effectively speeds up the universe, and exposes latent problems with NPC ai.

E.g. they will warp way off the map sometimes. Sometimes they seem to lose their minds and just sit around doing nothing (not in 'H'angout state.) Fleets lose their leader, and nobody steps up, so you end up with leaderless fleets wiggling around.

So... NPC ai needs work.

Space in Ship Name causes client to stop

If you put a space in the Ship Name in the network setup screen, enter your password and connect to lobby - upon clicking on the server and Connect to Server, the screen goes blank and does not continue to show the ship screens. ESC will close the game out properly. I see no error when this happens. Tested on Ubuntu Linux Desktop and Raspberry Pi.

Basic Building Variables Missing

I want to make a packaging script to make snis available to everyone who uses the Arch User Repository, but it is very difficult because the makefile for this project does not support the DESTDIR or INSTALL variables. Making packages easier to produce could greatly increase the popularity of this project, so I think it would be beneficial for everyone if these variables were added.

Weapons shooting ships below crew's ship

Currently (at least as far as I can tell) there's not a way to shoot enemy ships below the crew's ship.

Way to possibly fix it:
Add another turret on the bottom of the ship, and allow Weapons to toggle between the 2 turrets. There could be an additional weapons screen for bottom turret (and one for the top if there is enough players). This would also cause a struggle for resources occasionally. In my opinion having to keep up with this wouldn't be a bad idea.

New opengl rendering breaks some stuff

Just recording this here so these things don't fall off the map and to make it clear that these are known issues.

Some rendering modes don't work anymore after commit bbd7409

  • flat shading with wireframe outline
  • wireframe with black_tris
  • bright line wireframe
  • dotted lines in a liine mesh
  • nav trident isn't colored by depth
  • Derelict objects show up as gray silhouettes (probably due
    to incorrect normals, mesh_derelict() needs attention, and new
    code for computing vertex normals and coplanar triangles for meshes
    outside the context of reading meshes from stl files needs to be
    written.
  • Skybox is broken

After Docking Sliders are not reset

After Docking with a station, not all the sliders are reset to zero. The bar itself is reset but you have to move the slider to have it correctly set it's value.

Also, if there are engineering screens on 2 separate clients the sliders do not match. The bar adjusts fine. Not sure if other stations have this problem.

Building on Ubuntu 13.04 requires disabling -Werror in Makefile

Before running make on Ubuntu 13.04 I have to remove the -Werror section of the Makefile to be able to compile. I've been doing this for a while now. Honestly, I don't have a big problem with it, but other users might have the problem. I can send the output of make if need be.

Broke shaders on Mac OSX

Scott Benesh reports:

So here's the commit that broke my apple builds:

053ced4 is the first bad commit
commit 053ced4
Author: Stephen M. Cameron [email protected]
Date: Fri Jul 4 08:35:27 2014 -0500

do not hard code ambient light and allow to be overridden by shader include

And here are some of the error messages I'm getting when I try running

Initialized GLEW
OpenGL 3.0 available
sRGB framebuffer supported
sRGB texture supported
Vertex shader compile error in files:
0: "string_vertex_header"
1: "single-color-lit-per-vertex.vert"
Error:
ERROR: 0:2: '' : #version must occur before any other statement in the program

Vertex shader compile error in files:
0: "string_vertex_header"
1: "wireframe_transparent.vert"
Error:
ERROR: 0:2: '' : #version must occur before any other statement in the program

Vertex shader compile error in files:
0: "string_vertex_header"
1: "wireframe-transparent-sphere-clip.vert"
Error:
ERROR: 0:2: '' : #version must occur before any other statement in the program

These files already have a #version 120 as the first line.

So I did something like this in graph_dev_opengl.c

define AMBIENT_LIGHT_DEFINE "#define AMBIENT 0.05\n"

define UNIVERSAL_SHADER_DEFINES "#version 120\n#define AMBIENT 0.05\n"

and removed the #version 120 line from teh .vert and .frag files which seems to make it work again.

Not sure if there's a better way to do this. Or why Linux doesn't complain.

Along with OpenGL, support OpenGLES

Devices like the Raspberry Pi, Android phones and devices, Beagleboards and other embedded systems do not support full OpenGL. Please add support for OpenGLES for those and other systems.

Broken Make run

Sorry but when I run make after extracting the zipped version of this I get the following error..

Package vorbisfile was not found in the pkg-config search path.
Perhaps you should add the directory containing vorbisfile.pc' to the PKG_CONFIG_PATH environment variable No package 'vorbisfile' found Package portaudio-2.0 was not found in the pkg-config search path. Perhaps you should add the directory containingportaudio-2.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'portaudio-2.0' found
ogg_to_pcm.c:31:31: fatal error: vorbis/vorbisfile.h: No such file or directory
compilation terminated.
make: *** [ogg_to_pcm.o] Error 1

Server seg fault after attempted internet game

We attempted a game via the internet, using a VPS to prevent the routing issues currently present in SNIS when not on a lan. After some testing, it seemed that multiple ships didn't have a problem joining snis_server, but if a new crew member joined there was a segfault. The server works fine on a local network.

Here is some gdb output:

(gdb) r 192.227.164.140 0 Arch VPS
Starting program: /usr/bin/snis_server 192.227.164.140 0 Arch VPS
warning: Could not load shared library symbols for linux-vdso.so.1.
Do you need "set solib-search-path" or "set sysroot"?
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
Lua setup done.
[New Thread 0x7ffff6ecd700 (LWP 3757)]
[New Thread 0x7ffff64cc700 (LWP 3758)]
found!
[New Thread 0x7ffff58bf700 (LWP 3767)]
[New Thread 0x7ffff4ebe700 (LWP 3768)]
[New Thread 0x7fffe7fff700 (LWP 3776)]
[New Thread 0x7fffe75fe700 (LWP 3777)]

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7ffff6ecd700 (LWP 3757)]
0x00007ffff728ceb8 in __lll_unlock_elision () from /usr/lib/libpthread.so.0
(gdb) bt
#0  0x00007ffff728ceb8 in __lll_unlock_elision () from /usr/lib/libpthread.so.0
#1  0x000000000042ff5d in ?? ()
#2  0x000000000043035e in ?? ()
#3  0x00007ffff7283124 in start_thread () from /usr/lib/libpthread.so.0
#4  0x00007ffff6fb74bd in clone () from /usr/lib/libc.so.6

Modability

Game engine should be abstracted to allow fully configurable bridge stations.

[Suggestion] Move SCAD/STL (& OGG) files into a subfolder

Put 3D models in a sub-folder to clean up main directory and allow future mods.

Move *.stl, *.scad (and *.ogg) files into a sub-directories so it will be easier for Mods to be created

Something simular to this:
/home/user/space-nerds-in-space/snis

Sub-directories for the files themselves
/home/user/space-nerds-in-space/snis/audio/ for .ogg
*/home/user/space-nerds-in-space/snis/models/
for *.scad & *.stl

This would allow directories for Mods such as the below to be created to house their models and audio

/home/user/space-nerds-in-space/startrek
/home/user/space-nerds-in-space/starwars
/home/user/space-nerds-in-space/babylon5
/home/user/space-nerds-in-space/bsg

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.