Space Nerds In Space

Re: Space Nerds In Space

Postby smcameron » 24 Apr 2016, 03:58

Around the end of August of 2015 I had made a proof of concept of traveling between multiple "universes" (really, more like solar systems) within the game. Over the last 8 months or so I have been slowly trying to get this code stable and working, and doing all the things it needs to be able to do (mostly having to do with maintaining state of the player ship) to be something worth committing. There turned out to be quite a lot of code for this, around 75 patches. I didn't clean them up quite to the level of my usual standards, but carrying around ~70 patches for ~8 months was getting to be a little tiresome (although stgit made it tolerable). This new code is still disgustingly hacky in the way that it works, but it is nonetheless committed, and you can try playing with it.

{l Code}: {l Select All Code}
git diff 8d8dd83 e8e9842 | diffstat
 Makefile                                    |   44
 README                                      |    3
 graph_dev.h                                 |   15
 graph_dev_gdk.c                             |   33
 graph_dev_opengl.c                          |  182 +++
 key_value_parser.c                          |  458 +++++++++
 key_value_parser.h                          |  103 ++
 quat.c                                      |   10
 quat.h                                      |    4
 quickstart                                  |   59 +
 share/snis/models/warpgate.scad             |   38
 share/snis/solarsystems/default/assets.txt  |    3
 share/snis/solarsystems/default2/assets.txt |   14
 snis.h                                      |   20
 snis_bridge_update_packet.c                 |  200 ++++
 snis_bridge_update_packet.h                 |   35
 snis_client.6                               |    2
 snis_client.c                               |  766 +++++++++++++---
 snis_hash.c                                 |  106 ++
 snis_hash.h                                 |   32
 snis_marshal.h                              |    5
 snis_multiverse.6                           |   37
 snis_multiverse.c                           | 1336 ++++++++++++++++++++++++++++
 snis_multiverse.h                           |   19
 snis_packet.h                               |   12
 snis_server.6                               |   47
 snis_server.c                               | 1199 ++++++++++++++++++++++++-
 snis_server_tracker.c                       |  243 +++++
 snis_server_tracker.h                       |   18
 solarsystem_config.c                        |   54 -
 solarsystem_config.h                        |    2
 ssgl/ssgl.h                                 |    1
 ui_colors.h                                 |    2
 33 files changed, 4877 insertions(+), 225 deletions(-)



There is now a new process, snis_multiverse, which maintains the state of all bridges in a small "database". This means that when you run snis_client (either manually, or via the quickstart script) there is now a "create ship" checkbox. The first time you use a ship name, you need to check this box, and subsequent times, you should leave it unchecked -- that is to say, your ship is now persistent between runs, and its state is preserved in the "database" maintained by snis_multiverse.

I am quite sure there are a lot of bugs lurking in this new code -- some I already know about, and undoubtedly some that I don't know about. I expect there are some races in the hand-over code when all the snis_clients on a bridge switch to a new snis_server, and I expect there is still some ship state that is not preserved across such switches, but at least the infrastructure to preserve that state exists now.

By default, the quickstart script will only start a single instance of snis_server, and there will not be any warp gates in the game. But, if you "export MULTIVERSE_TEST=1" prior to running quickstart, it will create 3 instances of snis_server -- that is to say, 3 solar systems -- and will put warp gates near each planet, and you can buy warp gate tickets to different solar systems from the starbases via the comms station. You are advised to use additional art assets in the space-nerds-in-space-assets repository on github if you run multiple solar systems.

When running in multiverse mode, every planet currently has a nearby warp gate, and from any warp gate, you can get to every other known solar system. The warp gates correspond 1 to 1 between every pair of solarsystems, so if you depart from warp gate X in solarsystem A to solarsystem B, you will consistently pop out of the same warp gate in solarsystem B, and if you depart from warp gate X+1 in solarsystem A, you will pop out at warp gate N+1 in solarsystem B. In the future, I think I would like to be able to have some kind of graph to establish the possible paths of travel between warp gates to enable building a more interesting topology of solar systems than this kind of automatic and fully connected graph we have now.
smcameron
 
Posts: 208
Joined: 29 Oct 2010, 23:44

Re: Space Nerds In Space

Postby smcameron » 08 May 2016, 07:04

About three years ago I implemented the damage control station with a little robot that you can drive around to repair your ship, and this is tied into the engineering station and power model for all the various systems of the ship. At the time, there was a bit of discussion about whether or not this thing was actually a good idea, or maybe not such a great idea.

I have now made the damage control station "optional." It's optional in the sense that now the "automatic" mode for the robot actually works, and if you turn it on, then the robot can drive itself around and autonomously repair your ship for you without any intervention. There is some intelligence to how it chooses what to repair at any given time -- if shields or warp drive are esp. damaged, it will fix those first, as they tend to be more critical for survival, and otherwise choose to fix approximately the closest and most damaged component. There is doubtless room for improvement, better prioritization of which systems to repair first, and taking into account the overall damage to a system, not just the damage to individual components, etc. If you manually control the robot, you can likely do a quicker job, and make wiser decisions about what to repair next. But if you're short a player, the robot doesn't strictly require a human operator any more.

I don't have a video for this update -- it's not all that interesting to watch. From the programming side, the most interesting thing is the A* pathfinding algorithm which is used to let the robot navigate around the deck where all the systems reside -- not that the A* algorithm is anything new, but I think the API I came up with is quite nice, although the implementation is nothing special, and on a large graph, performance is suboptimal just because I didn't bother to optimize since the graph I am searching is small (~50-100 nodes). It's nice because the caller is not required to represent the search space in any particular way, so long as a list of neighbor nodes may be obtained from a given node, and so long as a cost estimate and distance estimate function can be constructed to estimate the distance/cost between two given nodes. An example of how to use the API is in a_star_test.c.
smcameron
 
Posts: 208
Joined: 29 Oct 2010, 23:44

Re: Space Nerds In Space

Postby smcameron » 30 May 2016, 05:40

Development update for May, 2016 -- 3D "demon" screen implemented.


youtu.be/ju8pDrY6Tos
smcameron
 
Posts: 208
Joined: 29 Oct 2010, 23:44

Re: Space Nerds In Space

Postby charlie » 30 May 2016, 14:16

Nice update.
Free Gamer - it's the dogz
Vexi - web UI platform
User avatar
charlie
Global Moderator
 
Posts: 2000
Joined: 02 Dec 2009, 11:56
Location: Manchester, UK

Re: Space Nerds In Space

Postby smcameron » 13 Jun 2016, 04:05

Lately I have been working on enhancing the capabilities of the Lua API to better enable scripted missions.

The Lua API is documented here: https://github.com/smcameron/space-nerd ... ua-api.txt

The following additions have been made in the last few days:

You can now set asteroid speeds (between 0 and 1). This is primarily to allow stationary asteroids.
You can now control the ratios of the ingredients contained within asteroids.

{l Code}: {l Select All Code}
set_asteroid_speed(id, speed);

Sets the speed of the asteroid with the specified id to the specified
value. The speed should be between 0 and 1.

{l Code}: {l Select All Code}
set_asteroid_minerals(id, carbon, silicates, nickeliron, preciousmetals);
-- sets the proportions
of carbon, silicates, nickeliron, preciousmetals. Returns 0.0 on success, nil otherwise.
May fail if id doesn't match an asteroid.

Example:
{l Code}: {l Select All Code}
        asteroid = add_asteroid(1000.0, 1000.0, 10000.0);
        set_asteroid_speed(asteroid, 0.0);
        set_asteroid_minerals(asteroid, 90.0, 5.0, 3.0, 2.0);


You can now get a callback based on proximity of two objects to one another. So you can have your mission script react when the player ventures too close to the space-thingy in your mission scripts.

{l Code}: {l Select All Code}
register_proximity_callback(callback, oid1, oid2, distance);
-- when the objects
indicated by oid1 and oid2 are within the specified distance of one another,
the specified callback is called passing the two object ids.

Example:
{l Code}: {l Select All Code}
        function mycallback(oid1, oid2, distance)
                print "Player has come within 300 of starbase_x\n";
        end
        register_proximity_callback("mycallback", player_ids[1], starbase_x, 300);


Timed text windows for mission start explanations, win screens, lose screens, etc. are now supported.
{l Code}: {l Select All Code}
show_timed_text(id, time_in_seconds, textstring);

shows a text screen with the given textstring for the specified amount of time
on all clients of the bridge for the given player ship id. If id is -1, then
the message is displayed on all clients of all bridges.
[/code]

Lua scripts can now be chained with one script starting another when it ends. The specified script is added to a queue, and when the current script ends, the next one on the queue begins.

{l Code}: {l Select All Code}
enqueue_lua_script(scriptname);

Queue the named lua script for execution;

Many ship attributes may now be queried:
{l Code}: {l Select All Code}
get_ship_attribute(id, attribute_name);
-- returns the specified attribute of the ship. The
type depends on the attribute, though generally will be a number or a string.

The attributes and their types are listed below (output of print_ship_attributes program):
The types are as follows (from key_value_parser.h):
{l Code}: {l Select All Code}
   's' - string
   'q' - number (uint64_t)
   'w' - number (uint32_t)
   'h' - number (uint16_t)
   'b' - number (uint8_t)
   'Q' - number (int64_t)
   'W' - number (int32_t)
   'H' - number (int16_t)
   'B' - number (int8_t)
   'd' - number (double)
   'f' - number (float)

Though, to lua, they're all just "numbers."


The attributes are as follows:
{l Code}: {l Select All Code}
                                     Key Type     offset       size      index
                                       x    d         96          8          0
                                       y    d        104          8          0
                                       z    d        112          8          0
                                      vx    d        120          8          0
                                      vy    d        128          8          0
                                      vz    d        136          8          0
                                 heading    d        144          8          0
                                   alive    h        152          2          0
                                    type    w        156          4          0
                               torpedoes    w        168          4          0
                                   power    w        172          4          0
                                 shields    w        176          4          0
                                shipname    s        180        100          0
                                velocity    d        280          8          0
                            yaw_velocity    d        288          8          0
                          pitch_velocity    d        296          8          0
                           roll_velocity    d        304          8          0
                        desired_velocity    d        312          8          0
                        gun_yaw_velocity    d        320          8          0
                             sci_heading    d        328          8          0
                          sci_beam_width    d        336          8          0
                        sci_yaw_velocity    d        344          8          0
              sciball_orientation.vec[0]    f        352          4          0
              sciball_orientation.vec[1]    f        356          4          0
              sciball_orientation.vec[2]    f        360          4          0
              sciball_orientation.vec[3]    f        364          4          0
                          sciball_yawvel    d        432          8          0
                        sciball_pitchvel    d        440          8          0
                         sciball_rollvel    d        448          8          0
                 weap_orientation.vec[0]    f        456          4          0
                 weap_orientation.vec[1]    f        460          4          0
                 weap_orientation.vec[2]    f        464          4          0
                 weap_orientation.vec[3]    f        468          4          0
                             weap_yawvel    d        536          8          0
                           weap_pitchvel    d        544          8          0
                        torpedoes_loaded    b        552          1          0
                       torpedoes_loading    b        553          1          0
                       torpedo_load_time    h        554          2          0
                      phaser_bank_charge    b        556          1          0
                                    fuel    w        560          4          0
                                     rpm    b        564          1          0
                                throttle    b        565          1          0
                                    temp    b        566          1          0
                                shiptype    b        567          1          0
                                 scizoom    b        568          1          0
                                weapzoom    b        569          1          0
                                mainzoom    b        571          1          0
                     requested_warpdrive    b        573          1          0
                        requested_shield    b        574          1          0
                       phaser_wavelength    b        575          1          0
                           phaser_charge    b        576          1          0
                    damage.shield_damage    b        992          1          0
                   damage.impulse_damage    b        993          1          0
                      damage.warp_damage    b        994          1          0
               damage.maneuvering_damage    b        995          1          0
              damage.phaser_banks_damage    b        996          1          0
                   damage.sensors_damage    b        997          1          0
                     damage.comms_damage    b        998          1          0
                   damage.tractor_damage    b        999          1          0
                               view_mode    b       2064          1          0
                              view_angle    d       2072          8          0
               power_data.maneuvering.r1    b       2080          1          0
               power_data.maneuvering.r2    b       2081          1          0
               power_data.maneuvering.r3    b       2082          1          0
                power_data.maneuvering.i    b       2083          1          0
                      power_data.warp.r1    b       2084          1          0
                      power_data.warp.r2    b       2085          1          0
                      power_data.warp.r3    b       2086          1          0
                       power_data.warp.i    b       2087          1          0
                   power_data.impulse.r1    b       2088          1          0
                   power_data.impulse.r2    b       2089          1          0
                   power_data.impulse.r3    b       2090          1          0
                    power_data.impulse.i    b       2091          1          0
                   power_data.sensors.r1    b       2092          1          0
                   power_data.sensors.r2    b       2093          1          0
                   power_data.sensors.r3    b       2094          1          0
                    power_data.sensors.i    b       2095          1          0
                     power_data.comms.r1    b       2096          1          0
                     power_data.comms.r2    b       2097          1          0
                     power_data.comms.r3    b       2098          1          0
                      power_data.comms.i    b       2099          1          0
                   power_data.phasers.r1    b       2100          1          0
                   power_data.phasers.r2    b       2101          1          0
                   power_data.phasers.r3    b       2102          1          0
                    power_data.phasers.i    b       2103          1          0
                   power_data.shields.r1    b       2104          1          0
                   power_data.shields.r2    b       2105          1          0
                   power_data.shields.r3    b       2106          1          0
                    power_data.shields.i    b       2107          1          0
                   power_data.tractor.r1    b       2108          1          0
                   power_data.tractor.r2    b       2109          1          0
                   power_data.tractor.r3    b       2110          1          0
                    power_data.tractor.i    b       2111          1          0
                      power_data.voltage    b       2112          1          0
             coolant_data.maneuvering.r1    b       2128          1          0
             coolant_data.maneuvering.r2    b       2129          1          0
             coolant_data.maneuvering.r3    b       2130          1          0
              coolant_data.maneuvering.i    b       2131          1          0
                    coolant_data.warp.r1    b       2132          1          0
                    coolant_data.warp.r2    b       2133          1          0
                    coolant_data.warp.r3    b       2134          1          0
                     coolant_data.warp.i    b       2135          1          0
                 coolant_data.impulse.r1    b       2136          1          0
                 coolant_data.impulse.r2    b       2137          1          0
                 coolant_data.impulse.r3    b       2138          1          0
                  coolant_data.impulse.i    b       2139          1          0
                 coolant_data.sensors.r1    b       2140          1          0
                 coolant_data.sensors.r2    b       2141          1          0
                 coolant_data.sensors.r3    b       2142          1          0
                  coolant_data.sensors.i    b       2143          1          0
                   coolant_data.comms.r1    b       2144          1          0
                   coolant_data.comms.r2    b       2145          1          0
                   coolant_data.comms.r3    b       2146          1          0
                    coolant_data.comms.i    b       2147          1          0
                 coolant_data.phasers.r1    b       2148          1          0
                 coolant_data.phasers.r2    b       2149          1          0
                 coolant_data.phasers.r3    b       2150          1          0
                  coolant_data.phasers.i    b       2151          1          0
                 coolant_data.shields.r1    b       2152          1          0
                 coolant_data.shields.r2    b       2153          1          0
                 coolant_data.shields.r3    b       2154          1          0
                  coolant_data.shields.i    b       2155          1          0
                 coolant_data.tractor.r1    b       2156          1          0
                 coolant_data.tractor.r2    b       2157          1          0
                 coolant_data.tractor.r3    b       2158          1          0
                  coolant_data.tractor.i    b       2159          1          0
                    coolant_data.voltage    b       2160          1          0
          temperature_data.shield_damage    b       2176          1          0
         temperature_data.impulse_damage    b       2177          1          0
            temperature_data.warp_damage    b       2178          1          0
     temperature_data.maneuvering_damage    b       2179          1          0
    temperature_data.phaser_banks_damage    b       2180          1          0
         temperature_data.sensors_damage    b       2181          1          0
           temperature_data.comms_damage    b       2182          1          0
         temperature_data.tractor_damage    b       2183          1          0
                               warp_time    d       2184          8          0
                              scibeam_a1    d       2192          8          0
                              scibeam_a2    d       2200          8          0
                           scibeam_range    d       2208          8          0
                                 reverse    b       2216          1          0
                                 trident    b       2217          1          0
                       next_torpedo_time    d       2220          8          0
                         next_laser_time    d       2224          8          0
                          lifeform_count    b       2228          1          0
                            tractor_beam    w       2232          4          0
                 overheating_damage_done    b       2236          1          0
              steering_adjustment.vec[0]    f       2240          4          0
              steering_adjustment.vec[1]    f       2244          4          0
              steering_adjustment.vec[2]    f       2248          4          0
                          braking_factor    f       2252          4          0
                             ncargo_bays    W       2448          4          0
                                  wallet    f       2452          4          0
                            threat_level    f       2456          4          0
                         docking_magnets    b       2516          1          0
                        passenger_berths    b       2517          1          0
                             mining_bots    b       2518          1          0
                         mining_bot_name    s       2524         20          0
                              sdata.name    s       2576         20          0
                sdata.science_data_known    h       2596          2          0
                          sdata.subclass    B       2598          1          0
                   sdata.shield_strength    B       2599          1          0
                 sdata.shield_wavelength    B       2600          1          0
                      sdata.shield_width    B       2601          1          0
                      sdata.shield_depth    B       2602          1          0
                           sdata.faction    B       2603          1          0
                              sci_coordx    d       2608          8          0
                              sci_coordz    d       2616          8          0
                      orientation.vec[0]    f       2720          4          0
                      orientation.vec[1]    f       2724          4          0
                      orientation.vec[2]    f       2728          4          0
                      orientation.vec[3]    f       2732          4          0

Example usage:
{l Code}: {l Select All Code}
   player_ids = get_player_ship_ids();
   money_player_has = get_ship_attribute(player_ids[1], "wallet");
   ship_name = get_ship_attribute(player_ids[1], "sdata.name");


Enjoy.
smcameron
 
Posts: 208
Joined: 29 Oct 2010, 23:44

Re: Space Nerds In Space

Postby smcameron » 20 Jun 2016, 07:07

Some improvements to planetary rings. I spent some time watching videos of the Cassini flyby of Saturn. In particular this one: https://vimeo.com/33933151

This made me realize a few of things. 1) the rings are essentially either opaque or transparent -- there's not a lot of translucency. 2) The side of the rings in sunlight looks different than the opposite side, which is in shade. So, I made a few changes to try to get things to look a bit more realistic. Shadows tend to be stark, not subtle.

Here are three views of the same planet with my changes The rings have a light side and a dark side now.

Image

Image

Image

What things used to look like:

Image
smcameron
 
Posts: 208
Joined: 29 Oct 2010, 23:44

Re: Space Nerds In Space

Postby smcameron » 03 Jul 2016, 06:35

Here's a video that demonstrates some new functionality of the Lua API of Space Nerds in Space. In particular, it demos the show_timed_text() and text_to_speech() functions. This is a demo of the training-mission-1.lua script, which implements a timed race in which the player has to dock at four starbases in succession, finally returning to the first starbase to dock and complete the race. It took me about 10 minutes to complete the circuit in this run.


youtu.be/nc1n_4vaOSQ
smcameron
 
Posts: 208
Joined: 29 Oct 2010, 23:44

Re: Space Nerds In Space

Postby charlie » 03 Jul 2016, 20:36

Customary virtual applause from a lurker fanboi. You can't hear but I am clapping!
Free Gamer - it's the dogz
Vexi - web UI platform
User avatar
charlie
Global Moderator
 
Posts: 2000
Joined: 02 Dec 2009, 11:56
Location: Manchester, UK

Re: Space Nerds In Space

Postby smcameron » 10 Jul 2016, 05:53

Here is a demo of the Saving Planet Erph mission of Space Nerds In Space:


youtu.be/nTBiM5zJi8A

To run this mission, run SNIS as normal, then go to the "demon" screen and type in "lua mainmenu.lua", then select "Saving planet erph" from the menu on the main view screen.
smcameron
 
Posts: 208
Joined: 29 Oct 2010, 23:44

Re: Space Nerds In Space

Postby smcameron » 12 Jul 2016, 06:29

Github user ProfessorKaos64 has built and hosted Space Nerds In Space binaries for SteamOS Brewmaster and Debian Jessie (have not tried these myself.)

http://packages.libregeek.org/debian/pool/games/s/snis/
http://packages.libregeek.org/SteamOS-T ... es/s/snis/
smcameron
 
Posts: 208
Joined: 29 Oct 2010, 23:44

Re: Space Nerds In Space

Postby smcameron » 17 Jul 2016, 18:03

I have added a new mission script, SPACEPOX.LUA

SPACE POX

Locate and deliver SPACE POX VACCINE to save the crew
of the ICARUS station orbiting planet BONX from the
SPACE POX which has broken out and is slowly killing
them off one by one in a series of unlikely "accidents"

This mission can be kind of difficult
The biggest difficulty is finding the space pox vaccine
unless you know the trick. Then, the zarkon dreadknights
are liable to get you unless you make a quick getaway, but
your warp drive will probably not help you.

Here is the script: SPACEPOX.LUA (contains spoilers, obviously).

Found quite a few bugs in the Lua API while making this one. It is a little more difficult than I expected to come up with decent scenarios and implement them.
smcameron
 
Posts: 208
Joined: 29 Oct 2010, 23:44

Re: Space Nerds In Space

Postby Imerion » 18 Jul 2016, 01:58

That video. Wow. I'm so very very impressed by how cool this project is. Looks amazing, can't wait to get a group together to play it. Perhaps this fall, when I might buy an extra computer. ;)
Try my games! : My Games - Read my FOSS Games Blog! : Free Game News
Imerion
 
Posts: 98
Joined: 09 Apr 2011, 19:37

Re: Space Nerds In Space

Postby smcameron » 29 Aug 2016, 04:10

A small update. New things are:

* Text entry boxes can be dynamically sized.
* New EMF graph on Comms screen that can give early warning of impending attack
* Tow truck service implemented.


youtu.be/_KO6T3UXozI
smcameron
 
Posts: 208
Joined: 29 Oct 2010, 23:44

Re: Space Nerds In Space

Postby smcameron » 05 Nov 2016, 06:07

Don't really have an update, but just wanted to let people know a couple things. First, I haven't disappeared, and while I haven't done much lately with SNIS, I've not given up on it. Second, today marks exactly 4 years since I made the first post about it here, starting this very thread.

So I wish a happy 4th birthday to all the Space Nerds In Space.
smcameron
 
Posts: 208
Joined: 29 Oct 2010, 23:44

Re: Space Nerds In Space

Postby farcodev » 06 Nov 2016, 00:13

Happy BDay to your project!
Keep it up!
farcodev
 
Posts: 163
Joined: 09 Feb 2011, 02:52

Re: Space Nerds In Space

Postby smcameron » 01 Jan 2017, 04:41

Spent a bit of time the last couple of days mucking around trying to improve the look of thruster exhaust plumes....

This forum has a way of cropping the images, so you might have to right click and "view image" to see the entire image.

Image

Image

Image

Image

Image
smcameron
 
Posts: 208
Joined: 29 Oct 2010, 23:44

Re: Space Nerds In Space

Postby smcameron » 02 Jan 2017, 21:35

Working on some new stuff... not entirely sure this thing is a good idea, but this was on my screen a few minutes ago:

Image
smcameron
 
Posts: 208
Joined: 29 Oct 2010, 23:44

Re: Space Nerds In Space

Postby smcameron » 03 Jan 2017, 04:22

Ok, got collision detection working for the new Big Honking Death Machine...


youtu.be/WUTmXUIMifQ
smcameron
 
Posts: 208
Joined: 29 Oct 2010, 23:44

Re: Space Nerds In Space

Postby smcameron » 09 Jan 2017, 04:10

In case anyone might be interested, Here are some slides about how the speech recognition and natural language processing hack works in Space Nerds in Space.

The image on the first slide is busted, but it's not important.

Use arrow keys to navigate. This probably does not work worth a damn on mobile.

And if you don't know what the speech recognition/natural language processing hack is, here's a video from ~6 months ago:

youtu.be/tfcme7maygw
smcameron
 
Posts: 208
Joined: 29 Oct 2010, 23:44

Re: Space Nerds In Space

Postby smcameron » 17 Jan 2017, 05:03

Inspired by the opening scene of the new Star Wars movie, and the sense of scale it was able to convey, I spent a half hour or so playing around with the camera in SNIS. And this happened:


youtu.be/siPMjrEq8Rw
smcameron
 
Posts: 208
Joined: 29 Oct 2010, 23:44

Re: Space Nerds In Space

Postby smcameron » 31 Jan 2017, 14:45

Experimenting with some different ways to control velocity. I don't think this will be put into the game -- makes things seem too small -- but it looks cool.


youtu.be/bvGfYSLtiNM
smcameron
 
Posts: 208
Joined: 29 Oct 2010, 23:44

Re: Space Nerds In Space

Postby Imerion » 01 Feb 2017, 13:32

Very cool! Especially that giant ship. :D
Try my games! : My Games - Read my FOSS Games Blog! : Free Game News
Imerion
 
Posts: 98
Joined: 09 Apr 2011, 19:37

Re: Space Nerds In Space

Postby smcameron » 06 Feb 2017, 00:00

FWIW, I have made some improvements to the web page, adding fairly extensive documentation about how to build and run Space Nerds In Space.

http://smcameron.github.io/space-nerds-in-space/
smcameron
 
Posts: 208
Joined: 29 Oct 2010, 23:44

Re: Space Nerds In Space

Postby smcameron » 21 Feb 2017, 16:24

Here is some GPL'ed 3D turret aiming code someone may find useful. It does rely on some other code (for quaternions and vectors mostly). I figured I'd post this here since I thought other game developers might find it useful, as getting this to work is a bit tricky. The turret may be arbitrarily oriented, it is not required that the turret axes be aligned with any world axes, for example. The turret is rate limited in its motion about its axes (you set the limits.) It currently does not have enforced limits on motion about those axes though -- the turret can pass the guns through its own base, for example. It's on my list of things to do, but it's not done.

* https://github.com/smcameron/space-nerd ... et_aimer.h
* https://github.com/smcameron/space-nerd ... et_aimer.c

See also quat.c, quat.h for the vector and quaternion code it relies on.

Here's a quick demo:


youtu.be/JVBWHlVaY9U
smcameron
 
Posts: 208
Joined: 29 Oct 2010, 23:44

Re: Space Nerds In Space

Postby lynxmonkey » 28 Mar 2017, 05:34

This is, by far, the most amazing game ever! I played Artemis with our crew for a while, that was super fun, but this is a whole new level of awesome.
The whole "real time" effect is the best, It's like being in a real life version of Firefly or USS Defiant. Start up the game, pull up a seat, open a beer and hangout, until you're required to do some work. Being a member of this crew, in this space, is like having the best job in the verse.

I'm on comms and have figured out:
request to dock
request a towing service
buy / sell mined stuff to get money

-- I still haven't figured out how to re-fuel the ship, any advice here would be great... please... seriously... I really need help..
otherwise our games will continue to end, with the ships voice telling us the fuel level is critical. I figure it's probably going to involve "/computer do X " or "/hail SB-01 request refuel" ??

Please keep making this great game :)
lynxmonkey
 
Posts: 2
Joined: 28 Mar 2017, 05:17

Who is online

Users browsing this forum: Bing [Bot] and 1 guest