This is a copy of a thread on freegamedev.net. Once around 2010 or so, I lost a similar thread over there for my other little game, Word War vi when the forum database was lost, so I created this as a backup in case something similar happens again.


smcameron 04 Nov 2012, 04:49

Hi guys... I've got a new project rolling these days...

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

Still in the pretty early days, not even "playable" yet, really, though I expect to approach "playable" tomorrow or in the next few days (though no where near polished enough to be considered done.)

So this game (when it becomes a game) is very much inspired by Artemis Spaceship Bridge Simulator See: http://www.artemis.eochu.com/ The idea is you have a game which is played much as the actors in the Star Trek TV series played their roles on the bridge of the Starship Enterprise. There are a number of "stations": Navigation, Weapons, Science, Communications, etc. and each player assumes that role. Each station has it's own laptop or other computer which communicates via network to a central server which simulates the game universe. So it's kind of a cooperative multiplayer network game... No reason not to have multiple teams in multiple starships inhabiting the same server/universe either cooperating or doing battle.

Mine is different than Artemis Spaceship Bridge Simulator in that it is:

Here's a video from a couple days ago... (much progress since then.)

http://www.youtube.com/watch?v=BF19sPZGvmo (yeah... it's not much to look at yet.)

Hoping to be able to "drive" the ship around the "universe" and "shoot stuff" sometime tomorrow... we'll see.

-- steve


Skorpio 04 Nov 2012, 20:05

I'd love to see this game finished. Are you leaning more towards a simulation or an action game?


smcameron 04 Nov 2012, 20:23
Skorpio: I'd love to see this game finished. Are you leaning more towards a simulation or an action game?

Well, I'm not sure what you're asking...

It's going to be real time, but the action is probably somewhat slow, not frenzied. In some ways it's a simulation, but, also an action game?

In any case, I've gotten pretty far in the last day.

You can now drive and shoot, which as everyone knows, are the two most important activities of a starship captain.

Individual players can join the game at any time, and specify which starship to join, and multiple starships per game are possible. (this is all working now.)

That being said, you can pretty much *only* drive and shoot -- and the torpedoes don't ever hit anything, or die -- the torpedoes are immortal, just like everything else in the game so far (deleting objects from all the clients is not straightforward, but should be do-able, just haven't done it...)

-- steve


Skorpio 04 Nov 2012, 20:51

With simulation I meant a more complex game in comparison to a simplistic action game, but of course a simulation can be simple as well and contain lots of action (like the farming simulator :D ).


smcameron 05 Nov 2012, 04:14

Progress video... sorry about the low quality. The red lines esp. do not show up well in the video, but maybe you can still get some idea of what it's like.

http://www.youtube.com/watch?v=Jf6lttQN2A4&feature=youtu.be

-- steve


smcameron 12 Nov 2012, 02:08

Just a little update:

http://www.youtube.com/watch?v=fC0iFtF2I4A&feature=youtu.be

-- steve


smcameron 25 Nov 2012, 03:00

Got a lot done over the last week, as I was on vacation for Thanksgiving. Too lazy to do a video today, so just some screen shots:

Above is all the client modes (screens) Weapons, Navigation, Science, Comms, Engineering, and Debug. They are small because, like Word War vi, the graphics scale to match the window size, and I have shrunk them all down to fit on the screen. They are all separate processes communicating via network with a server process. The large screen partially shown on the right is the "main" screen. Any client process can "project" his screen onto the "main" screen by pressing "ctrl-O" -- O for "on screen!", as Capt. Picard so frequently says.

Above is the navigation screen. Left/right arrow keys rotate the ship, up/down arrow keys move the ship fore and aft. The Warp drive slider and "engage" button "warp" the ship instantly through space (the warp drive needs some work to make it a little more intuitave and, uh, dramatic as well.)

Above is the Weapons screen. Torpedoes may be loaded into the torpedo tubes (2) and fired at passing ships. This needs work (sound effects) and also, right now, a single hit invariable annihilates whatever it hits, so that needs fixing. Phasers don't work yet.

Above is the "science" screen (scanning). You have a scanning beam that you can swing around using left/right arrow keys. up/down arrow keys control the width of the beam. When the beam is wide, it's range is short, and the further away things are, they "fuzzier" they are. As you narrow the beam, the objects become less fuzzy. At a certain point, when things are un-fuzzed enough, you get some information about the ship, like it's name, position, bearing, range, heading, shield strength and wavelength characteristics. You can also zoom the science scope in and out using the mouse scroll wheel.

The "dotted" lines in the above still picture are kind of moving around and a bit more lively than they look in this picture, but you can't see it in a still shot.

Above is the engineering screen. There are 4 gauges: RPM, Fuel, Power, and Temperature. The idea is you have some sort of "engine" consuming "fuel" and producing "power" which can be distributed to the various systems. The power is a function of rpm and temperature. The sliders are used to distribute the power around the ship. The power distribution part doesn't really do anything yet (but the sliders work.)

Last, is the debug screen, which shows a map of the universe. The white dots (or, X's, if you look really closely) represent computer controlled ships. They are clustered around the "starbases" because the AI for these ships at the moment consists of "go sit near the nearest starbase."

Also, difficult to show, when you start up each client you can specify which "roles" it will fulfill -- science, weapons, navigation, etc. ("all" is an option.) Additionally there is a "soundserver" role, so that sounds which are global to the ship -- e.g. being hit by a photon torpedo -- can be directed to the system that is connected to the big stereo. Sounds also may be directed to individual stations -- so you could get distinctive science-y beeping noises from the science station laptop, and weapons-y noises from the weapons stations etc. Not that any of those sounds are in there yet, but the infrastructure to do it is there in the code.

No 3d "thru the window" view yet --- if I do it, it will be a totally software z-buffered flat-shaded triangle renderer that looks like it's from a 1982 silicon graphics workstation. You'd probably rather someone besides me programs that bit, lol. As would I, as would I.

-- steve

p.s. Not getting a lot of feedback... wonder if I'm wasting my time creating a game that requires you get together 4-6 of your linux/startrek nerd friends on a LAN to play, lol. Well, it's a fun waste of time programming the thing, and, I am learning a bit doing it, so... I'll keep at it. I do worry that the various stations won't actually be *fun enough* though -- trying to program in some "fun", but, also keeping to the spirit of the thing -- the "fun" may depend more on the personality of the participants than on the game content for this sort of game, not sure.


charlie 25 Nov 2012, 06:03

It's not pretty, which sadly limits any kind of exposure.

However it looks really interesting.


Myckel 25 Nov 2012, 17:48

Looks more and more as something I might want to check out. How easy would it be to change the vector-interface to allow (backdrop) images, to make it more pretty?

3D would be great on the long term.


smcameron 25 Nov 2012, 20:01

Well... probably if I switched from basic gtk/gdk line drawing and so on to cairo, compositing a backdrop image -- even scalable -- would be possible, similar to Dueling Masters of Space Time. http://smcameron.github.com/dueling-mas ... pace-time/ Performance might be iffy on low end machines, but, eh, it'd probably be ok. To some extent, I think the "looks" of the thing aren't necessarily all that important, what's important is that is should be "fun", and fun and looks are not necessarily correlated, and maybe a lot of the "fun" of this particular game may come from the people playing it, we'll see, I guess.

The one place I think that the looks probably do matter quite a bit would be in the as-yet-unimplemented 3d "out the window" viewscreen.

I need to hurry up and get things far enough along that I can get some people together to play it and see what it's like.

-- steve


charlie 25 Nov 2012, 21:59

I wouldn't worry too much about the looks, I didn't mean it in a critical way.

Not everything can be Crysis 3, and to be honest I like the quaint style you use, I think Word War Vi is great. Like you say; priority is gameplay first.


qubodup 26 Nov 2012, 14:06

This looks exciting! What self-ironic name. :) (It might make sense to make some things in the game nerdy-funny-ironic, rather than nerdy-serious, too. in-game warning messages perhaps.)

The look is quite TTY-retro but dark-blue-on-black is very bad to read. I recommend light blue instead for the weapons screen.

If you enjoy tweaking the color palettes, here are some inspirations:

http://commons.wikimedia.org/wiki/File:USS_Conquest_(MSO-488

If you prefer to not care about that but are interested in people testing other color palettes and posting screenshots and diffs, let us know.


Skorpio 26 Nov 2012, 20:25

I've been working on some new top-down spaceships (and mechs), just for fun, and wondered if you have a use for them. Or are you going for a more abstract look and 3D graphics for the screen? If you want 3D ships, then you could probably utilize the shipyard on OGA.

Btw, I think the term phaser is protected and you should better replace it.


smcameron 26 Nov 2012, 22:29

I'm probably going for a more abstract thing than those top-down views. The shpyard may come in handy when I get to the 3d stuff. (I have vague notions of metaprogramming OpenSCAD to procedurally generate spaceship models, but haven't thought very hard about it.)

As far as "phasers" being a protected term... I'm a little skeptical. Games like Netrek (http://www.netrek.org/ ) contain "phasers" ( http://www.netrek.org/beginner/newbie.php) , as do all the old text based star trek games. If a lawyer writes me a scary letter, I'll worry about it then.

For now, getting the game into a playable state (and I think the 3d view is not strictly needed for that) is the highest priority.

-- steve


smcameron 02 Dec 2012, 04:11

https://www.youtube.com/watch?v=geGwx384Fh4


schmidt100 11 Dec 2012, 11:06

This game looks really nice. Its impressive to see the fast progress and all the new things. Keep up your interesting work, I`ll follow your posts. Do you have any idears of goals for the players, beside flying around in space?


smcameron 12 Dec 2012, 01:26

Do you have any idears of goals for the players, beside flying around in space?

Well, as a start, various ships will attack various starbases, as well as your ship, so you try to intervene, etc. and stay alive.

Additionally, multiple player-controlled starships may inhabit a server, so either cooperative or combative play is possible. "Space" being kind of wide open (and in my implemenation) kind of two dimensional, there's not much opportunity to hide-n-seek, or have elaborate strategies that I can think of for multi-ship combat. Will have to think about some ways to liven that up and make things more interesting.

Farther than that, I haven't really given it much thought, just trying to get the game to a playable state for now.

If you have some particular ideas, feel free to share, but of course I can't guarantee I'll ever get around to implementing any of them.

Ideas that allow simple things to be combined in interesting ways that lead to some interesting emergent behavior are probably the best, but that is kind of a tall order.


smcameron 21 Dec 2012, 06:22

Just a little progress update...

https://www.youtube.com/watch?v=XqXw85tyhXU&feature=youtu.be


smcameron 10 Jan 2013, 02:42

Lot of progress in the last few weeks.

Tons of refactoring to make the UI code ... start to resemble some sort of UI framework. Frightening.

Added a network setup screen from which you can launch the lobby server and the game server from the client and connect the client to the aforementioned.

And, added a wireframe 3d renderer.

https://www.youtube.com/watch?v=cZVxT4L4hJw&feature=youtu.be

-- steve


Evropi 10 Jan 2013, 15:26

Nice! What is the classical music playing in the background by the way?

BTW, you may wanna try actually, err, using a screen recorder (FDesktopRecorder is the one I find the best for Linux). Also, if you find OpenSCAD slowing you down, try BRL-CAD. It's much more powerful, and in many ways, the granddaddy of the CAD programs today, made by the American army. I'll just quote Wikipedia on it:

The BRL-CAD source code repository is believed to be the oldest public version-controlled codebase in the world that's still under active development, dating back to 1983-12-16 00:10:31 UTC.

You know your program is mature when it is still in use and development today and its original author is dead (another example: the C programming language) :)


smcameron 10 Jan 2013, 19:37

Evropi: Nice! What is the classical music playing in the background by the way?

I believe it's Bach, the Brandenburg Concerto.

BTW, you may wanna try actually, err, using a screen recorder (FDesktopRecorder is the one I find the best for Linux).

Bit of a hassle with the audio then... pointing the camera at the screen is trivially easy, and I'm lazy, though it does give sub-par results.

Also, if you find OpenSCAD slowing you down, try BRL-CAD. It's much more powerful, and in many ways, the granddaddy of the CAD programs today, made by the American army. I'll just quote Wikipedia on it:

The BRL-CAD source code repository is believed to be the oldest public version-controlled codebase in the world that's still under active development, dating back to 1983-12-16 00:10:31 UTC. You know your program is mature when it is still in use and development today and its original author is dead (another example: the C programming language) :)

Interesting. I'll have to take a look at that. It appears to be a bit of a monster compared to openSCAD.


hc 10 Jan 2013, 23:53

+1 for openscad. I'm aware of brlcad and it's history for a some time btw.

But for programmers openscad seems like an awesome tool - again because I'm a fan of parametric and procedural design.

On the other hand maybe I've missed similar features in brlcad?

Can it do CSG operations like intersection, subtraction and addition on 3D geometry and that parametrically scripted with macro/modules

Would be nice if you can surprise me.

Edit: The MGED Quick Reference card shows a brlcad programming example with variables, loops and conditions. But openscad seems 'turing' complete, looks familiar and decomposition into modules (like C functions) is simple and obvious, too.


smcameron 12 Jan 2013, 08:26

hc:

But openscad seems 'turing' complete, looks familiar and decomposition into modules (like C functions) is simple and obvious, too.

I'm a big fan of openSCAD as well. I'm not actually sure whether it's turing complete or not. It does have some pretty severe limitations (e.g. the "variables" you get in openSCAD act more like constants than like variables.) For this reason, I came up with openCSCAD, which is a tiny little C library for outputting openSCAD code. (It's kind of a neat little hack at best, and a useless piece of crap at worst, lol.) It does technically get you nice things like real variables, recursion etc. but at the cost of massive openscad file output which may or may not really be processable by openscad. (e.g. the tree picture on that page was done by screen shotting after pressing F5, not F6. F6 in openscad actually does all the reall CSG stuff, and doing all the intersections of all those branches, etc... well, you may or may not live long enough to see that computation run to completion.)

Haven't yet looked at BRLCAD, as I have no pressing need, and it looks a bit daunting.


hc 12 Jan 2013, 23:12

Hm, assumed that recursion in OpenSCAD would work - which would still make it a more or less complete functional programming language for solids even without variables - but it didn't work. It gave no errors for module-recursion but didn't work as expected, duplicating and renaming the duplicate method code did of course. Yes, seems pretty static compile time and incomplete but for technical/mechanical models it should be enough. As for BRL-CAD: Can't imagine a tank having fractal structures ... unless for stealth someday ;)

Yeah, generating code from code is of course an option - besides openSCAD's code-editor isn't the best. OpenSCAD's loops should suffice most of the time, I think I'll try when in need of recursive structures.

Wouldn't mind if Admins would move this discussion about tools somewhere else - don't want to divert from the interesting work in progres topic.


smcameron » 13 Jan 2013, 05:06

hc:

besides openSCAD's code-editor isn't the best.

Yes. I'm pretty sure the openSCAD developers know this, because they provided a "hide editor" option, and the F3 key reloads the source file. What I do is have vim going in another window, and switch between the two with alt-tab. Save from vim, alt-tab to openscad, F3, then F6, then alt-tab back to vim -- that is essentially the "edit compile debug edit" cycle for me with openscad.


hc 13 Jan 2013, 14:08

Ah, I see: It's an integrated spare wheel editor. :)

Well, seems there are command line options for running automatic scad -> stl conversions, too, might become handy.


Brian Rubin 26 Feb 2013, 22:42

Hello! I just registered so I could find out more about this game. I have a site that covers space games called Space Game Junkie, and would love to learn more about your game so I could share it with my readers. :)


smcameron 27 Feb 2013, 02:29

Brian Rubin:

Hello! I just registered so I could find out more about this game. I have a site that covers space games called Space Game Junkie, and would love to learn more about your game so I could share it with my readers. :)

Alright. What would you like to know?

-- steve


Brian Rubin 27 Feb 2013, 02:37

Oh, stuff like inspiration, time spent working on it, how much work it took in creating it, planned features and such like that.


smcameron 27 Feb 2013, 03:32

Brian Rubin:

Oh, stuff like inspiration, time spent working on it, how much work it took in creating it, planned features and such like that.

Ok....

Inspiration, well obviously Artemis, as I've mentioned. I've never played it myself, but I've seen youtube videos, and it seemed like a cool idea, and not having (nor wanting) a windows machine, I figured, well, I guess I've got to make my own version. This is a bit of a pattern for me, as another game, or more like a novelty than a game which I made, called "Be The Wumpus" came in to existence in the same way -- taking the kernel of an idea of an existing Windows-only game and making my own version of it. Of course, the Star Trek TV series also informed the design of the game to an extent -- same as it did for Artemis, presumably.

Time spent working on it... hmm, well, as the painters say, my whole life up to this point. Well, I first began working on the network part of it, in the form of a generic lobby server which can be found here: https://github.com/smcameron/ssgl although that code is out of date and buggy compared to the variant which is found within SNIS -- need to fix that, I suppose -- about 2 years ago I guess (according to github). I got bogged down with that when I couldn't figure out how to do NAT punchthrough for peer-to-peer connections. So that lay fallow for a couple of years. But, the initial impetus for the lobby server was to make a game similar to Artemis, and that would have been in the fall of 2010, when I first became aware of Artemis. But, I got bogged down in the NAT punchthrough, and Christmas rolled around, and vacation, and I got distracted, and just dropped it. I think I also had some of the network code for SNIS partially done (but buggy as hell) at that time. But in any case, I dropped it at the end of 2010.

And then, in November of 2012, there was a "hackathon" at Platform Houston ( http://www.platformhouston.com/ ) and I knew one of the guys involved in that place, so I said sure, I'll go to this hackathon, which was a 2-day weekend thing, see what you can cook up in two days. So I was kind of fishing around for ideas of what to do, and I thought of this old idea of doing a variant of Artemis, and I remembered Space Nerds in Space that I had started back in 2010, so I thought, ok, let me pick up that ball again.

So I spent a couple days of hard programming getting that onto it's feet. So, all the infrastructure work that I did in 2010, building the lobby code, and the network code, that, by itself, did nothing, and was quite a lot of drudgery to write (all C code, from scratch, not much in the way of pre-made libraries, just because, that's how I roll, usually, not for any good reason other than sheer pigheaded stubbornness, really) -- all that work served me pretty well, and having taken that long break, well, I got the thing to where you could 'drive" and "shoot", and had several different "screens" all potentially separate processes communicating via network working in those 2 days. And of course I re-used a lot of ideas and code -- esp. the font system -- from Word War vi -- so the graphics kind of have that look -- everything is drawn with lines, so everything is scalable. One thing that has always irritated me is when you start up a game and it's at a fixed resolution, and esp. old games written for low-res systems that now look tiny on modern systems, so I tend to make my games scale. Anyway, I digress.

So, over Thanksgiving I had a good solid week off work, and put that to use on SNIS, and made a lot of good progress. Most recently, I've gotten bogged down in the 3d graphics aspects. This is probably a mistake, in several ways. First, I was trying to make my own software 3d renderer. It soon became clear that 1) debugging the thing is really hard for me, 2) it's not fast enough. So there are a couple possible solutions to that, one would be to use gtkglext to do the graphics and well, I'd have a different set of bugs (that I would presumably create) to worry about and lose some portability, but it should be plenty fast, and the other possibility is just use a wireframe renderer (already done, mostly) and don't worry about making the 3d graphics all fancy. If it's good enough for Elite on the old BBC micro, then it's just plain good enough, right? :) Esp. considering the game is fundamentally a 2D game, so the 3D graphics are somewhat superfluous, *except*, for that starship bridge experience with a big projection screen, you've got to have some kind of "out the window" view, right?

As far as planned features, well, I suppose I would aim for the minumum set of features that will make a fun game, as a start. That is, each station has got to have enough for the players to do, and behave in ways that encourage cooperation between "crewmembers", the crew has got to be able to get their ship into interesting and dangerous situations and be able to get out of them (or not) in some kind of interesting and fun way, and basically have something to do, other than merely mindlessly driving and shooting.

The game as it stands today is not ready to be reviewed or played. For starters, there are some bugs that need fixing first, but there is quite a lot else that needs doing.

In the last few weeks, I've been distracted from SNIS, (adding shiny laser projector support to Word War vi, and other little amusements).

But, I hope to get back to SNIS development soon.

Feel free to ask more questions.

-- steve


Brian Rubin » 28 Feb 2013, 05:42

Hmm, might I use this on my blog as an impromptu Q&A of sorts?


smcameron 28 Feb 2013, 16:31

Brian Rubin:

Hmm, might I use this on my blog as an impromptu Q&A of sorts?

Sure.

If you're on G+, we could do a hangout, if you think that might work better.

-- steve


Brian Rubin » 02 Mar 2013, 02:53

smcameron:
Brian Rubin:

Hmm, might I use this on my blog as an impromptu Q&A of sorts?

Sure.

If you're on G+, we could do a hangout, if you think that might work better.

-- steve

Huh, I totally am, and it totally could. Could you use the contact form on my website to send me an email so we can continue this discussion?


charlie 02 Mar 2013, 14:04

He can use the email button on here (as could you) in the user profile to the right of each forum post.


Imerion 18 Mar 2013, 17:23

Wow! I had no idea this project existed, but it seems fantastic! Would love to get a few friends together and play this once more finished. Thanks for creating it and keep up the good work!


farcodev 19 Mar 2013, 04:11

A bit off-topic sorry, but a Freegamer G+ circle would be cool.

Keep it up smcameron!


smcameron 08 Apr 2013, 05:51

Just a little update...

https://www.youtube.com/watch?v=aKG_uUBsme4&feature=youtu.be


charlie 08 Apr 2013, 14:32

My inner Spock says, "Live long and prosper!" \\//_


farcodev 08 Apr 2013, 23:48

Very good job!

It takes shape very well :)


smcameron 14 Apr 2013, 03:12

[deleted] (thought better of it. Don't worry you didn't miss anything interesting.)


smcameron 17 Apr 2013, 16:58

FWIW, thought I should mention that there's a fork of Space Nerds In Space on github now... the dude appears to be rewriting the whole thing in C#. Well, that was unexpected.


JeffM2501 17 Apr 2013, 18:42

So far it seems to be going pretty well.


smcameron 20 May 2013, 03:49

Just a progress update. Here's a little video showing the new Damage Control station:

https://www.youtube.com/watch?v=gkNfBEh-EsU&feature=youtu.be


JeffM2501 20 May 2013, 23:51

While I agree that the activity in Artemis is a bit lacking in interactivity, do you think that this may be too far the other way? How long will it take someone to fix a system while ignoring the rest of the interface? I fear that this may not be something someone is willing to do in the heat of battle.

I dig the fact that you are going outside the box here, but is this now a chore to fix something?

Also can you get repaired faster by docking with a friendly starbase?


smcameron 21 May 2013, 00:18

JeffM2501:

While I agree that the activity in Artemis is a bit lacking in interactivity, do you think that this may be too far the other way? How long will it take someone to fix a system while ignoring the rest of the interface? I fear that this may not be something someone is willing to do in the heat of battle.

You may be right. We'll see. Once I had the idea, I couldn't get it out of my head any quicker way than by implementing it. An "autonomous mode" in which the robot performs his functions by himself is probably a good idea, if for no other reason than it might be hard to get enough crewmembers together to play all the stations.

I dig the fact that you are going outside the box here, but is this now a chore to fix something?

To some extent the entire game is a series of chores. Normally starship crew get paid, I expect. :)

Also can you get repaired faster by docking with a friendly starbase?

I don't know, haven't got all this planned out, I'm making it up as I go.


Evropi 21 May 2013, 09:42

Yeah, I too thought this felt like an overly-repetitive chore. I would really not want to go through this minigame more than once to fix my spaceship.

You know what would be better? If you install new stuff on your ship and manually lug them around (fixing should, preferably, be automated). It would definitely... personalise your ship more. I envision something like Secret Bases in Pokemon games (I know, I know...) where you can put useful things as well as decorate the place with gratuitous plants and tables and chairs and so on.


JeffM2501 21 May 2013, 17:14

Componentization is a good thing but I think you are pondering the wrong aspects of it. What I think would be fun would be to build up a ship from a set of modules that contain equipment. So you can upgrade your Warp, or beams, or add more missile tubes.

These type of games don't really let you walk around the ship to see tables and chairs, the idea is that your physical computer screen is the console you use as a crew member of the ship and the 3d view you see is ether out the window, or in this case a camera above the engineering bay (that somehow magically can follow the robot)


Part of my motivation for the whole "damcon arena" as I call it, was to provide something for the players to say to each other.

I imagine:

Captain: "How's that warp drive repair coming, Scotty?"

Scotty: "Fine, I just have to get the transient wormhole suppressor reinstalled and we should be good to go."

And Scotty wouldn't just be merely "repeating what the computer says" (a la galaxy quest), he would actually _mean_ that he really was trying to re-install the transient wormhole suppressor into the warp drive in the game.

Whether that's really good enough reason, and whether it's worth while... I don't really know. I'll think about it some more.

It's also arguable that I haven't succeeded in getting very far away from having the player just "repeating what the computer says" in that the names I came up with are obviously just pseudo-space-jargon gibberish with no actual meaning or relevance.

(tentative list of components is here... https://github.com/smcameron/space-nerds-in-space/blob/master/snis_damcon_systems.c

-- steve


JeffM2501 21 May 2013, 23:23

The concept of the mini game is good. Something does need to be done more then

"waiting on the blue dots Sir".

I was going to look into some kind of power routing thing so it can be "Just have to shunt the drive matrix through the hyper inverter Sir"


smcameron 28 May 2013, 06:47

Just another progress update. Been working on 3d models, and the 3d "out the window" view with my very limited 3D programming chops. Hence why it's wireframe and looks like it came from the days of DOS.

https://www.youtube.com/watch?v=ToHnLq0TfBY&feature=youtu.be

There's no view frustrum culling, so things which are behind the camera show up upside down and reversed. If someone well versed in the ways of the 3D matrix wants to take a stab at view frustrum culling, the relevant code is in entity.c, probably in render_entities() or render_entity().

https://github.com/smcameron/space-nerds-in-space/blob/master/entity.c (not that I really expect anyone to pick that up and run with it, but stranger things have happened.)


charlie 28 May 2013, 16:22

It looks pretty cool. It really reminded me of something.


smcameron 04 Jun 2013, 04:43

Just a little progress update. I think all the wierd glitches in the 3D view have been sorted out now. If you've been keeping up with this thread and the videos so far, you may want to skip ahead to about the 5:00 minute mark to see the new stuff.

https://www.youtube.com/watch?v=zhgPbECMtq8&feature=youtu.be

--steve


smcameron 12 Jun 2013, 05:16

Just another progress update, Jun 11, 2013:

https://www.youtube.com/watch?v=_7aaKKBogDk&feature=youtu.be


smcameron 16 Jun 2013, 22:23

Tried to do a multiplayer run at Houston's hackerspace, TX/RX Labs today, but ran into technical issues with the network. It seems the machine hosting the server process would randomly get re-assigned a new IP address. Needless to say any TCP connections established with the old IP address ceased to work. The projector screen was also terribly washed out due to it being the daytime and light flooding in through the skylights. Maybe next week will be more successful.

snis-at-txrx


farcodev 16 Jun 2013, 23:28

Keep it up! :)


smcameron 17 Jun 2013, 00:00

BTW, in case people want to try this game (in its current unfinished state), but don't have enough linux-using friends, here's how you make a bootable live dvd containing the game that can be run on windows machines without disturbing it at all, which is what I had done for the above picture, as all those machines are windows boxes. This does assume a 32-bit Mint 13 linux install (you could install it in a vm to make the dvds, I guess.) This worked for me... if it doesn't work for you, well, you're probably on your own for now.

 Install the package "mintconstructor" from the repositories
   sudo apt-get install mintconstructor

    Open a terminal
    Type sudo /usr/lib/linuxmint/mintConstructor/mintConstructor.py
    In the mintconstructor window that opens:
   In the "Directory" field, choose a directory for the ISO (use a new
   directory with nothing in it for this) Make sure to select the
   "New project" radio option
        Click the browse button on the right of the "ISO file" field and
   point it to your ISO file
   (in my case I used linuxmint-13-cinnamon-dvd-32bit.iso  from here: http://www.linuxmint.com/edition.php?id=105
        Click "Next" and then "Yes" to confirm.

    Wait for it to do its thing for a bit, then click the button it
    presents to open a chrooted environment (it opens an xterm).  In
    the xterm:

    apt-get install build-essential
    apt-get install portaudio19-dev
    apt-get install libvorbis-dev
    apt-get install libgtk2.0-dev
    apt-get install git
    apt-get install stgit
    apt-get install openscad

If the openscad package isn't around, you can get it from here:
http://www.openscad.org/downloads.html
 and then from outside the chrooted environment, copy
openscad-2013.0.x86-32.tar.gz into your chroot directory/root
   Then, back in the chrooted xterm:

   cd /root
   tar xzvf openscad-2013.01.x86-32.tar.gz
   cd openscad-2013.01/
   ./install.sh
   cd ..

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

   (now Space Nerds in Space has been built within the chrooted env.)

    Once you're finished making modifications, make sure to clean up with the following commands:


    Now clean up the chrooted env (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
    history -c
    exit

(xterm will close)

    Click Next
    Give your ISO a description (which will be embedded as the name of the CD
or USB stick onto which the ISO is burnt)  Don't pick too long of a name though
because if you do, it won't work.
    Click Next

Iso image will be made

Then to run the game, burn the iso to dvd several times, and boot up all your machines from dvd.

Open up a terminal, type "sudo su -"

(no password -- it's a live dvd)

Then, cd to space-nerds-in-space

Has to be root because we installed spacenerds in space into /root/space-nerds-in-space above when making the dvd -- this could be worked around by chowning it all to user "mint", perhaps putting it someplace else before making he ISO image, but I don't have the exact instructions to do that, and didn't think to do it,but if you're paranoid, you probably want to think about that.

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 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).

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.

edit: 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.

-- steve


charlie 17 Jun 2013, 10:25

That's good info steve. My one concern is that you don't just leave it here in the forum but get it up on the website.

Do you even have a website yet? :shock:

A github wiki would do...


smcameron 17 Jun 2013, 14:25

No, don't have a website yet, though I've been meaning to make one. I suppose I was hoping to have some tolerable video of real multiplayer action before putting up a website, on the theory that not having a website is ok for now since the game is still in a really rough state as far as playability goes. Not sure I want to make a whole bunch of noise about the game only to have people try it in it's half finished state and conclude "this sucks!" I will probably just use a gh-pages branch on github.

-- steve


smcameron 20 Jun 2013, 14:31

Running on a Raspberry Pi:

https://www.youtube.com/watch?v=p3tiFIAINVQ&feature=youtu.be

(Not my video, btw)


smcameron 22 Jun 2013, 13:29

Last night, ran a multiplayer session for the first time. IT WAS AWESOME!

A little rough around the edges, things are a bit unbalanced, and the game play is a little more frenetic and crazy (and hilarious) than I'd imagined it would be. Didn't really feel like "Star Trek", but it was pretty fun. In general, it was a big hit, definitely onto something cool with this game.

Unfortunately didn't get any video footage of the mayhem, or even any pictures. Maybe next time.

-- steve


charlie 22 Jun 2013, 14:18

Yes, next time do get some footage!


qubodup 23 Jun 2013, 01:25

smcameron:

Unfortunately didn't get any video footage of the mayhem, or even any pictures. Maybe next time.

Aaaaawww.

The most fun to present games at the recent game jams that I was part of were the ones where the audience could vote on what action to take (multiple choice text adventures for example). And Space Team is amazing fun with two players already. I can only imagine how amazing it must have been...

So yeah, video please next time. :)


smcameron » 29 Jun 2013, 15:15

Here's a bit of video from last night's attempt. Got off to a bit of a rough start when the server process crashed with an assert inside pthread_mutex_lock (no doubt a glibc bug ;-). Moved the server to another machine and ran it under valgrind, and we played the game for about an hour with it running under valgrind, which found nothing. Lots of rough edges with the game play that need tuning, not to mention all the functionality that isn't in the game yet, but, it's very good to finally have it in a playable state, more or less.

The video's a bit dark, and esp. the projector screen doesn't show up very well, next time I'll bring the DSLR, maybe that will help.

https://www.youtube.com/watch?v=gCfrT0N0FGA&feature=youtu.be


farcodev 29 Jun 2013, 19:16

Haha good one when they begin to act as a team.

Great progress! I hope that you will not be annoyed by any more network problems in the future.

Keep it up!


smcameron 12 Jul 2013, 04:43

Just a progress update. Had a week off around July 4, and I used it to totally re-vamp the power-system of the ship. Now all systems are modelled as a resistive network with a fixed voltage, capped current power supply. So long as the resistive load does not exceed the max current that can be supplied, voltage is constant, and the requested power is delivered. When the load requires more current than the supply can deliver, voltage drops, current decreases. Gives a rather natural way to couple all the power consuming systems together.

Additionally, I've done a lot of work on the "DEMON" screen, and now, from this screen, you can delete things from the universe, add things to the universe, become a puppet-master for any non-player ship, able to drive it, shoot the weapons, and transmit communications from any non-player ship. By this means, you can act as game master and provide a little puppet show for the rest of the players.

Some video of the latest code:

https://www.youtube.com/watch?v=TUp0h6h7qI8&feature=youtu.be


smcameron 23 Jul 2013, 03:50

My software renderer is working pretty well these days. Just flat shading, no texture mapping or anything fancy, but still I'm pleased.

Also has retro wireframe mode (press 'r' on the main screen to cycle through the renderer modes).

Here's an "epic space battle" of sorts: (note: skip to 27s mark to get to the action. The forum's youtube tag doesn't appear to allow you to tack on a t=0m27s URL parameter to automatically do that, unfortunately.)

https://www.youtube.com/watch?v=KcEbCyKU0Qs&feature=youtu.be

I'm pretty pleased with the progress I've made on this game so far, I think it's really coming along nicely.

-- steve


smcameron 05 Aug 2013, 00:53

Just a few screen shots showing some new models, laser fire, and simple lighting stuff. By modern standards, not too impressive, but considering it's done with a software renderer I made myself from scratch, I'm fairly pleased with it.

Hmm, if your screen is small, this board seems to clip the images rather than scale -- you might want to hit ctrl-minus to shrink things down to be able to see it all.

"Research vessel" model plus new station model.

Skorpio ship model.

Taking laser fire from an asteroid miner.

Disruptor and new station model. Note the lighting is from below.

Taking laser fire from a distance, and new starbase model.


smcameron 12 Aug 2013, 01:50

Got side tracked a little bit... I was thinking about spaceship models, and how making them by hand was difficult, and I remembered shipwright -- that procedural spaceship generator that slams a bunch of canned, hand-made parts together somewhat randomly, but in pairs, and in ways that maintain bilateral symmetry, and I got inspired a little bit, though I was dissatisfied with the results of shipwright -- which is here, btw: http://ship.shapewright.com/

So, yesterday I started hacking on a little bit of openscad metaprogramming to make me some freakin' spaceships.

I called my program "ship not even wrong", (inspired by "shipwright", and by that famous quote of Wolfgang Pauli)

My program is here:

https://github.com/smcameron/opencscad -- in the ship-not-even-wrong subdirectory. It relies on opencscad to produce openscad code, and of course on openscad to process the models.

Typically, a big ship will take 30000 triangles or something, so it's probably not actually suited to Space Nerds In Space as it currently stands -- my poor little software renderer is brought to its knees by such large models. Though I did manage to get some screen shots anyway.

Oh, and the SCIENCE screen now has a "DETAILS" button that shows a rotating 3d wireframe model of the selected target...

So... too many triangles for SNIS currently, but perhaps someone else will find this freaky spaceship factory useful or entertaining. Here's a little video showing lots of ships:

https://www.youtube.com/watch?v=VnyerXljmrQ&feature=youtu.be

-- steve


smcameron 23 Aug 2013, 18:45

Incremental progress.

I've added a "Tractor Beam" (that doesn't really work yet) and the Science station can now view 3D models of whatever it's scanning, and now ships are not all confined to the same flat plane, and I've started adding some lua scripting abilities.

https://www.youtube.com/watch?v=6BUt21fBlRw&feature=youtu.be


smcameron 09 Sep 2013, 03:07

Just a progress update. Converted to use opengl. I am however, still using the software renderer, just all the 2D drawing (e.g. triangle fills) is done with opengl. Plan is to replace the software renderer, but I'm not that far along yet. Only real 3d stuff done with opengl so far is the skybox. Oh yeah, I made a little (not very sophisticated) skybox program: https://github.com/smcameron/cosmic-space-boxinator

I also figured out how to get recordmydesktop to stop garbling the video (use the --on-the-fly-encoding option.). Unfortunately it now garbles the sound. So here's a silent video showing the new skybox.

https://www.youtube.com/watch?v=aZqBO-FdNZs&feature=youtu.be

--steve


charlie 09 Sep 2013, 10:57

Video capture on Linux is a minefield. I've yet to find a solution for just reliably recording from my webcam, let alone capture the desktop as a stream. Hours of research and hours of frustration for what should be a really well solved task. A new client seems to pop up and look promising every year then succumb to bitrot.


Julius 09 Sep 2013, 11:21

charlie:

Video capture on Linux is a minefield. I've yet to find a solution for just reliably recording from my webcam, let alone capture the desktop as a stream.

Not sure how well it captures video streams and OpenGL apps, but for a regular screencast the build-in tool of Gnome Shell (Gnone3 etc.) is pretty awesome (but not very well known): https://wiki.gnome.org/GnomeShell/Features#Screencast_Recording

smcameron 16 Sep 2013, 03:39

Not too much to report this week, other than that the lua scripting is coming along and is now to the point that simple mission scripts are possible. There are still a lot of entry points and callbacks and what not that would be nice to have -- I'm taking it somewhat slowly to try to avoid an API explosion, since I don't have a very good feel for the sorts of things which are a good idea vs. a bad idea for such APIs, other than that it's probably better if the lua API is small, rather than large.

Here is a bit of documentation about the Space Nerds In Space lua API, still subject to change obviously.

Here are a couple of mission scripts I've made so far:

* Training misison 1 -- kind of a race around a circuit to dock with 4 starbases -- in case it's not obvious (it isn't) the way to dock with a starbase is get very close to it, then type "dock" in the comms screen. In general, all the commnications from these scripts with the player occurs via the comms screen.

* Training mission 2 -- the obvious mission, decoy mayday call leads to ambush.

I am open to ideas about the sorts of things such an API should provide to enable easier creation of a rich set of mission scripts, though I can't promise to implement suggestions, obviously.

Edit: Also, if anybody wants to take a whack at making a mission script or two, by all means, please do, and if in so doing you run into things that the API is missing that prevent you from being able to do what you want to do -- and are going to do -- let me know.


dusted » 18 Sep 2013, 11:38

There's a great tool for capturing opengl applications on linux, it's called glc, and is hooking into the opengl api (LD_PRELOAD i believe) to do high-performance screen captures, it also hooks into the audio subsystem, it produces quite large raw files which can then be converted into less-quite-large-files which can be read by tools such as ffmpeg to produce nicely-sized-files.

http://www.dedoimedo.com/computers/glc.html

https://github.com/nullkey/glc

http://www.youtube.com/watch?v=t2wp2QqMeV0


Arthur 18 Sep 2013, 14:21

I recommend capturing with ffmpeg instead of using glc - the latter is no longer maintained and is a pita to install and configure properly. The former is just a pita to configure.


smcameron 22 Sep 2013, 22:27

So a new guy named Jack Younger rolled into TX/RX Labs a few weeks ago and ended up pointing a camera at me and asking me some questions about Space Nerds In Space for a bit, so, this happened:

https://www.youtube.com/watch?v=ATWvxgZerb0&feature=youtu.be


qubodup 23 Sep 2013, 02:10

I raise all two of my thumbs!

Re-posted on freegamer blog.


charlie 23 Sep 2013, 09:57

I think it's a great social game. I'm very impressed.


farcodev 27 Sep 2013, 16:19

Great video and project.

The guys had fun :D

Keep up the good work


Imerion 09 Oct 2013, 15:26

So happy to see this project is still moving on and getting more and more awesome each update! :)

Among the most interesting games I'm following right now this one, so thanks for doing all this great work!

dusted 10 Oct 2013, 14:02

Good interview! :)

SNIS is a really interesting project, I reckon it's only a matter of time before someone hacks up a real starship bridge for this ^_^

The "gamemaster" idea is great reminds me of good old tabletop rpgs. If it could be scripted in the future, people could share their "missions" or scenaries.


smcameron 10 Oct 2013, 16:05

dusted:

Good interview! :)

SNIS is a really interesting project, I reckon it's only a matter of time before someone hacks up a real starship bridge for this ^_^

The "gamemaster" idea is great reminds me of good old tabletop rpgs. If it could be scripted in the future, people could share their "missions" or scenaries.

There is already some support for scripting missions with lua. It's still a work in progress and I haven't filled in all the events and callbacks and things or figured out what the best set of features for a scripting system are -- taking it kind of slow in an attempt not to bloat the scripting API with crap before I figure out what's really needed, though not having done something like this before, It will probably end up with its share of warts anyway.

You can see what the current (still subject to change) api is like here: https://github.com/smcameron/space-nerds-in-space/blob/master/lua-api.txt

and some example scripts (that don't do a whole lot) here: https://github.com/smcameron/space-nerds-in-space/tree/master/share/snis/luascripts

Currently you run the scripts by going to the "demon" screen and typing eg. "lua training-mission-1.lua" into the command box.

-- steve


dusted 11 Oct 2013, 08:33

Oh, that lua api looks neat, and the missions there shows it off well! :)

I'm wondering if openscad is strictly required for building the game, does it compile the model-files into a machine-specific format?

It'd be great if the content-creation tools were only required for content creators (most projects won't require photoshop or gimp to render .psd or .xcf files into pngs during the build).

That being said, after changing includepaths for lua, stuff compiles and looks great! Definitely going to give scripting a go :)


smcameron 11 Oct 2013, 13:54

dusted:

I'm wondering if openscad is strictly required for building the game, does it compile the model-files into a machine-specific format?

Well, openscad is needed only to build the stl files from the scad files (to state the obvious). I guess I don't make such a distinction in my mind between "content-creation", and coding, esp. since "content-creation" with openscad *is* coding. :)

Originally I had dropped the stl files into github directly, but... they're relatively huge and they screwed up my graph, man... :) https://github.com/smcameron/space-nerds-in-space/graphs/code-frequency

See that giant spike around Dec 2012/Jan 2013? That's stl files. Then the giant negative spike in June 2013 is me getting rid of the stl files.

Obviously if the game is built and packaged up into RPMs or .deb or whatever, the stl files will be in there pre-built (presuming I don't move to something more complicated allowing texturing, etc. at some point) but for what goes into github as "source", I think having the scad files and not having the stl files is the right decision.

BTW, if you make any cool mission scripts, send me a patch/pull request. And, if there's something you find yourself needing from the lua api that's not there right now (quite likely) let me know and we can hash out what should be done.

-- steve


dusted 11 Oct 2013, 14:19

smcameron:

Originally I had dropped the stl files into github directly, but... they're relatively huge and they screwed up my graph, man... :)

That's fair enough, i wondered if maybe it was something like size.. :)

I don't know if you're interested, but I've setup a build-server for SNIS for doing automated builds against github-commits, I've sent a mail with details, you can then decide if you want this or if I should back off :)


smcameron 11 Oct 2013, 14:47

dusted, that's awesome, thanks!

It's probably getting to be time to add a "dist" target to the makefile that does more or less what your build script does.

I have been thinking (not very much, but some) about what form this game might best be distributed for people that just want to play it, rather than hack on it, and I think this game is a little different than most. Since it's (at the moment) a linux-only game, and since it requires several people to be in the same location with a bunch of linux computers in order to play -- well, that is a very tall order, and most people probably won't be able to meet it. To help them meet it, we could build a bootable linux distro on a USB flash drive image with the game on it. Then, all they do is download the image, blast it onto a bunch of USB flash drives, boot up all their various computers from the flash drive, et voila!

Of course, to get into the business of distributing an entire linux distro, while still compiying with the GPL to distribute source upon request, etc.... maybe there are complications with that. And in the unlikely event the thing got popular, that could eat a lot of bandwidth. So, i dunno.


dusted 11 Oct 2013, 14:52

Building the dist needn't be much trouble, as a single link to the upstream dist would suffice as "source" I think.

Building a "going to work without too much hassle" usb dist is likely more difficult, maybe based on knoppix or another of the live-dists

I'm glad it may be useful, I'll follow the project and update the buildscript accordingly to the makefile changes. :)

I'm using ccache to speed up compilation, so the CC parameter is useful.

The server is on a 100 mbit upload, so it can handle a bit of traffic, and you're free to deeplink to the files, I've configured it to keep latest 10 builds, so using the "lastSuccess" link is propably useful.


dusted 12 Oct 2013, 00:38

Sorry for spamming, wanted to say that fresh 32 and 64 bit binaries can be downloaded here, these may not be correctly packaged, please correct me if I've made any mistakes.

I also implemented a simple caching system for the stl files from the scad files, so those will only be generated if they change.

These builds are not officially supported and I've made them on my own initiative, so if you have trouble with them, complain to me first.

http://contigrator.wizznic.org/jobs/space-nerds-in-space/history.htm

http://contigrator.wizznic.org/jobs/space-nerds-in-space/builds/lastSuccess/output/


smcameron 10 Nov 2013, 06:16

It's been a little while since I posted an update, and if you've only been casually watching the github page, you might have thought not much was going on, but if you dug a little deeper, you'll have seen that there's plenty going on, just not on the "master" branch.

It's been just a little over a year since I began this thread with the bare beginnings of a network game. In the original conception, the game was primarily a 2-dimensional game that happened to have a 3-d "out the window" view. Since then, and esp. in the last month, a lot of progress has been made in turning this primarily 2-dimensional game into a real 3-dimensional game. It's been a heavy battle, and many matrices have been manipulated and quaternions grokked.

So, here's a little update video showing some of the new stuff. It's still not really ready for prime time, but in case you want to play with the new toys anyway, the code is on the "more-coord-fixing" branch on github.

https://www.youtube.com/watch?v=ha8NxGSjx1A&feature=youtu.be


xahodo 23 Nov 2013, 00:34

A quick suggestion, but I don't know whether you already implemented something like that already.

Why not add (simulated) non-bridge crew? They can get wounded or even die when their post gets hit. Each crew member could have its own qualities, making it suited for a certain posting.

If crew starts getting wounded or (god forbid) start dieing, the system(s) they are posted start running less smoothly or stop getting repaired. This makes sure the bridge crew is more careful with the ship.

When the ship is running smoothly, the non-bridge crew can spend time optimizing the various systems of the ship. Causing the various ship systems to slowly improve in effectiveness.

Crew could be shuffled around, to affect things like repair or (re)charge time.


smcameron 23 Nov 2013, 07:17

xahodo:

A quick suggestion, but I don't know whether you already implemented something like that already.

Why not add (simulated) non-bridge crew[....].

Thanks for the idea, I will consider it. I am afraid though that there are many higher priority things which will need to be done before I can get to that. If I make a list of all the things that need to be done before I can have something which is a complete and playable game, there are many sort of "basic functionality" things that remain to be done, and at least to some extent, I try to choose what I work on with the goal of getting to a complete game in mind.

-- steve


dagrichards » 29 Nov 2013, 22:56 mintconstructor is not in any repo I can apt-get from, after a bit of rooting around I found some version here: http://download.polytechnic.edu.na/pub3/LinuxMint-Packages/pool/main/m/mintconstructor/

I am building a small fleet of iso's for a New Years Eve Party of Space Nerds In Space

Will get back with some addl feedback on the provisioning process.

FYI performance is actually pretty good running i2 VM's in VirtualBox on an older MacPro single socket 2.8 Xeon with GB Ram. Kudos to you.

I have noodled through the station UI's a bit and watched most if not all the vids you have up. I find some of the controls erm elusive?

Do you have any hidden docs or other guides? If I gen up some specific questions and ask in bulk are there answers to be had?


smcameron 02 Dec 2013, 00:52

Sure, you can ask questions, and I'll try to answer. F1 is help, which I've tried to make help screens, but, yeah, the controls (esp. on the DEMON screen) are elusive, as you say.

All the coolant stuff recently added to the engineering screen is pretty experimental (but it's on master, so, experimental or not, it's what you get.)

But sure, fire away with the questions. Maybe I'll start a FAQ or improve the in-game docs, or ... somehow make it better. Feedback is good (even if I don't agree with it or do anything about it.)

-- steve


smcameron 05 Dec 2013, 07:18

December development update:

https://www.youtube.com/watch?v=9wre3DkN8TE&feature=youtu.be

The video ends a bit abruptly due to camera battery failure, but there's enough there to get the idea.

Forgot to mention in the video the significant code contributions to the rendering engine by Jeremy Van Grinsven, without which things would not look as good nor be as fast as is the case.

Summary of latest updates:

Lots of progress, lots of fun, no major, insurmountable problems -- all in all, things are going well.


Natasha_Gita 13 Dec 2013, 09:56

This looks fantastic! It's amazing to browse this topic and see how far you've progressed. I noticed some of your videos had classical music playing in the background, but are you planning to add any other music at some point?


smcameron 13 Dec 2013, 13:32

Hi, and thanks for the kind words. There is a more cool stuff coming soon.

As for music, I'm not sure. In the very early days of home computers, just making any sound at all was a novelty, and if your game could play music, or -- oh miracle! -- even *talk*, this was quite a neat thing. Nowadays, that sort of novelty is gone, as computers can easily reproduce any sound, or video, or what have you. So, in one way of thinking about it, it doesn't make sense any more to have some particular music to go with the game, any more than your automobile should have a theme song to go with it that starts up every time you drive it (well, even that might be cool for a little while, but only because your car would be the *only* car with such an absurd thing, but it would still wear thin.)

Now I am quite aware that music is a powerful thing for setting a mood, and ideally, we'd all have John Williams in our game room conducting an orchestra performing an extemporaneous composition which varies seamlessly on the fly to suit whatever is happening in the game, like a real time film score. But that's not happening, of course. Next best, we might have some music composed that is broken into little component pieces that can be mixed and matched on the fly to make a kind of robotic simulation of John Williams piecing together something to suit the game play. This is really hard, although there have been some attempts (iMuse springs to mind: http://en.wikipedia.org/wiki/IMUSE ) Doing something like that is likely beyong my abilities, and even if it weren't, it probably wouldn't be that good. Next best, we can just strap some canned music into the game (e.g.: Brahms Tragic Overture seems like a reasonable fit, and there is a fairly decent free recording around: https://musopen.org/music/1567/johannes-brahms/tragic-overture-op-81/ ) However, this gets old on repeated exposure, and is not really much superior to just letting the player cue up whatever he likes on his media player of choice in the background.

So now I'm down to maybe I just provide a "suggested listening" list to accompany the game? You could do worse than to just crank up Pandora and type in "john williams" and let 'er rip.

-- steve


andrewj 14 Dec 2013, 11:53

I reckon this is the kind of game where having no music during gameplay is actually a good thing.

Music for the pre-game title screen / menus would be nice, of course.


jcantero 14 Dec 2013, 17:08

Some sci-fi theme tracks http://www.jamendo.com/es/list/a65062/sci-fi-music under CC-BY-SA license. The 6th (good morning) is the type of track for a relaxing not-combat situation. The same author has other albums of space ambient music.


smcameron 02 Jan 2014, 00:48

Some New Year's day fireworks for you guys in this development update:

https://www.youtube.com/watch?v=6gv40ukIwWk&feature=youtu.be

Thanks to the foundational work of Jeremy Van Grinsven to enable modern OpenGL shaders and such within the Space Nerds In Space codebase, we now how alpha-blending texture-mapping shaders to render lasers, torpedoes and sparks and such, and I'm sure more exciting and beautiful things will be coming soon.

Other changes: The damage control robot can actually repair stuff now too. A lot of improvement to the client side object movement interpolation code was done as well, so things move a lot more smoothly than they previously did. Lots of other small miscellaneous changes too numerous to mention, consult the history if you need more (too much) detail.

On another topic: I know a few people are trying to run this thing on Raspberry Pis. It was never really a design goal that it should run on Raspberry Pis, though I was happy to see people try it, esp. back before any OpenGL code was added. Now that the OpenGL barn door is opened though, it appears to be leaking into many of the screens besides just the "Main Screen" (Nav, Weapons, and Science, for example.) I do not see this trend abating as development continues, the sexy graphics are just too alluring. Much as I like the idea of SNIS on Rasp. Pi, the little machine may simply not be sufficiently powerful for it. -- steve


smcameron 05 Jan 2014, 06:05

Maybe nobody else would be excited about this, but I am.... texture mapped planets!

(if you only see a mostly black starfield, the forum is clipping the crap out of the image. Use ctrl-minus repeatedly to shrink the image down to the point the forum won't clip it -- the image isn't huge, the forum is just an aggressive clipper.)


charlie 05 Jan 2014, 14:53

Steve, you are in danger of having a good looking game on your hands!

This is quickly turning into one of my favourite FOSS game projects.


smcameron 12 Jan 2014, 01:59

Just a little teaser pic, will probably post a new video tomorrow...

Those nebula are not baked into the skybox, they are 3 dimensional and you can drive through them.

Also, quite likely the forum has silently clipped the image, press ctrl-minus a few times to see the whole thing.

Edit: Here's another teaser pic, some space rocks and behind them some nebula goodness. This thing is like driving the Hubble around... except with lasers.

Same caveat about pressing ctrl-minus or right-click, "view image".


smcameron 13 Jan 2014, 06:25

https://www.youtube.com/watch?v=HPrFNofRkKY&feature=youtu.be


charlie 13 Jan 2014, 11:30

Looking really good!


smcameron 04 Feb 2014, 14:43

I'll just leave this here...

https://www.youtube.com/watch?v=-dVLMqKm4d8&feature=youtu.be


charlie 04 Feb 2014, 17:47

Holy Rings of Saturn, Batman!


smcameron 16 Feb 2014, 22:23

Just a short video for now -- now NPC ships use warp (aka jump) drive (which is represented by the bright flashes you see in the video):

https://www.youtube.com/watch?v=1MoVUdvWy8Y&feature=youtu.be

Oh yeah, Zach Schultz made an awesome modified and textured model of the "wombat" spaceship...


dusted 20 Feb 2014, 14:38

Looks awesome! We are soon giving SNIS a go at work ^_^


smcameron 25 Feb 2014, 05:31

February 2014 devlopment update:

https://www.youtube.com/watch?v=LwzWGQ255cI&feature=youtu.be


dusted 04 Mar 2014, 14:09

Looks great! I will soon have to try another shot at doing a dedicated snis-distro ^_^


smcameron 23 Mar 2014, 05:43

Development update for March 2014...

https://www.youtube.com/watch?v=JQDhI2FeLUg&feature=youtu.be


smcameron 24 Apr 2014, 00:56

Space Nerds In Space April 2014 Development update.

Kind of slacking off lately in terms of committing code to Space Nerds In Space. That's ok, it's expected that there will be occasional lulls in momentum for any hobby project of this size. Look at Word War vi -- plenty of gaps in the commit history when enthusiasm waned.

Anyway, I have by no means abandoned the project. Here's a little video of what's new this month:

https://www.youtube.com/watch?v=oJRhO7ur8YA&feature=youtu.be

The audio isn't sync'ed to the video, and the video runs out before the audio finishes, ... oh well.

Most notably, I've been getting into emulating some fluid dynamics stuff to try to get decent textures for gas giant planets. I've made some progress mostly by pursuing the ideas in this paper: Curl Noise For Procedural Fluid Flow by Bridson, Hourihan and Nordenstam. You can the current state of my experiments here: Curly Vortex on github.

What it looks like in game so far (this is not committed because I'm not yet satisfied with it.)

The fluid flows on that planet image were simulated (faked) on 6 square faces of a cube arranged in a field of perlin noise with particles moving to adjacent faces when they leave another face. This works ok, but not great, leaving visible artifacts (though less artifacts than wrapping a seamless rectangle around a sphere). It also does not work well if you want to introduce belts of counter rotating flows parallel to the equator of the planet -- things get a little too tricky for me near the edges of faces and on the top and bottom squares of the cube. I think the better way to do it is do the flows in real 3d on the surface of the sphere, then generate the cube map textures from that data, which is what I'm currently working on, but it's not really there yet. In the mean time, here some examples of 2D fluid flows with horizontal bands of flows alternating between left and right with chaotic zones between. imgur album here.


farcodev 24 Apr 2014, 01:31

I following your project since the start when you posted on this forum and I'm impressed by all the continued effort you have put in it.

It is already far from these times. Keep it up!


charlie 24 Apr 2014, 09:28

smcameron:

What it looks like in game so far (this is not committed because I'm not yet satisfied with it.)

[awesome pics]

I just looked back and came across this in the 2nd post of the thread:

smcameron:

No 3d "thru the window" view yet --- if I do it, it will be a totally software z-buffered flat-shaded triangle renderer that looks like it's from a 1982 silicon graphics workstation. You'd probably rather someone besides me programs that bit, lol. As would I, as would I.

Hrm... are these two the same guy? I'm unsure. :D


NaN 24 Apr 2014, 12:57

Beautiful idea to use curl of noise function to get divergence free velocity field.

smcameron:

The fluid flows on that planet image were simulated (faked) on 6 square faces of a cube arranged in a field of perlin noise with particles moving to adjacent faces when they leave another face. This works ok, but not great, leaving visible artifacts (though less artifacts than wrapping a seamless rectangle around a sphere). It also does not work well if you want to introduce belts of counter rotating flows parallel to the equator of the planet -- things get a little too tricky for me near the edges of faces and on the top and bottom squares of the cube. I think the better way to do it is do the flows in real 3d on the surface of the sphere, then generate the cube map textures from that data, which is what I'm currently working on, but it's not really there yet.

You say you have tried Latitude / Longitude Projection (seamless rectangle)? Did you scale vx or dx to account for changing circumference cos(lat)? Should be simpler than trying to get the Cubed-Sphere Grid (cube map) right I think.

Edit:

Using spherical coordinates for particles positions and velocity should work for cubemaps I think. You just have to figure out the transform from spherical to cubemap coords :twisted:


smcameron 24 Apr 2014, 23:37

charlie:
smcameron:

What it looks like in game so far (this is not committed because I'm not yet satisfied with it.)

[awesome pics]

I just looked back and came across this in the 2nd post of the thread:
smcameron: No 3d "thru the window" view yet --- if I do it, it will be a totally software z-buffered flat-shaded triangle renderer that looks like it's from a 1982 silicon graphics workstation. You'd probably rather someone besides me programs that bit, lol. As would I, as would I.
Hrm... are these two the same guy? I'm unsure. :D

Well, as it happens the bulk of the gnarly opengl coding was done by someone besides me.

And I didn't commit those textures because I didn't want to bloat the repo with commits of huge binary graphics files I knew would not last long.


smcameron 24 Apr 2014, 23:43

NaN: Beautiful idea to use curl of noise function to get divergence free velocity field.
smcameron:

The fluid flows on that planet image were simulated (faked) on 6 square faces of a cube arranged in a field of perlin noise with particles moving to adjacent faces when they leave another face. This works ok, but not great, leaving visible artifacts (though less artifacts than wrapping a seamless rectangle around a sphere). It also does not work well if you want to introduce belts of counter rotating flows parallel to the equator of the planet -- things get a little too tricky for me near the edges of faces and on the top and bottom squares of the cube. I think the better way to do it is do the flows in real 3d on the surface of the sphere, then generate the cube map textures from that data, which is what I'm currently working on, but it's not really there yet.

You say you have tried Latitude / Longitude Projection (seamless rectangle)? Did you scale vx or dx to account for changing circumference cos(lat)? Should be simpler than trying to get the Cubed-Sphere Grid (cube map) right I think.

Edit:

Using spherical coordinates for particles positions and velocity should work for cubemaps I think. You just have to figure out the transform from spherical to cubemap coords :twisted:

Yeah, I think I know how to do it, just need to actually do it, and debug it. I don't think I can run the sim on the faces of the cube map easily, or I can't figure out how to get rid of velocity discontinuities at the edges of the faces, and it makes doing counter rotating velocity bands more complicated than I can deal with. After trying for awhile I have concluded it would be easier to do the sim in 3d proper, and get the cubemap images from the 3d data.


smcameron 28 Apr 2014, 04:52

So I have spent the last several days trying to do a proper 3D version of my fake fluid flow stuff.

Having some problems.

1. Cannot seem to get a divergence free velocity field on the surface of a sphere like I can for a 2D plane. Not totally sure why. Might have to do with error deciding if the noise gradient is "uphill" or "downhill". Adding a fudge factor to correct (somewhat) for one error in that area helped (reduced divergence) but what i thought should be a perfect correction was worse than the fudge factor. So... yuck. Not sure what's going on there.

2. Still have issues with discontinuities at cubemap face boundaries. Drat. The whole point of doing the sim in real 3D was to get rid of those. Haven't really tried to debug that, might turn out to be something simple, but... not happy to see those discontinuities.

3. libpng sucks. :) The initial particle colors are taking from an starting image. Right now that image must be 1024x1024 or it won't work. That's due to me not being able to figure out wtf is going on with libpng. Seems like it should be simple, but... it is the exact opposite of simple. Or I'm suffering some kind of brain lock on the issue, I don't know. Spent entirely too much time on it before just manually scaling the input image to the same size as the output images and giving up on that aspect for the time being. (if 1 and 2 can't be solved, 3 doesn't matter.)

Oh, btw, if you want to play with this mess, I checked it into master of space-nerds-in-space repo on github. The program is gaseous-giganticus. You will need a 1024x1024 png image as a starting point in the current directory that is named "gas.png" (you have to make this yourself. I suggest some cropped image of sedimentary rock formations from arizona found by google image search. Antelope canyon is also a good gis term. but anything will do, so long as it is cropped/scaled to 1024x1024 and name gas.png.) Then it will dump out (and overwrite, many times) files called tmpg-0.png (and 1,2,3,4,5 as well as 0). You can view those with, e.g. gqview or other image viewing program, and also mapped onto a sphere with mesh_viewer (part of space nerds in space code) by "mesh_viewer -p tmpg-" command.

A pic of one cube map face output. The gray areas, and esp. gray areas bordered by black with particles leaving the area are the divergences.

And on a sphere:

Those are with, iirc, 1M particles. 8M particles looks a bit better (divergences are somewhat hidden by the mass of particles.)

-- steve


ashdnazg » 30 Apr 2014, 22:47

I've been following your project for quite a while, and I must say it's incredible! (I plan to try it with my friends when it's possible).

Anyway, as libpng sucks, I usually use stb_image: http://www.nothings.org/stb_image.c , which is wizardry at it's best (you just stbi_load at stuff and you get an array of pixels back). That's, unless you got things to work, which is even better :)


smcameron » 03 May 2014, 23:44

Fixed a few problems.. it's working pretty well...


charlie 04 May 2014, 02:15

That is stunning. Well done.


farcodev » 08 May 2014, 02:29

Pretty cool, thumbs up!


smcameron 11 May 2014, 00:16

Some more progress on the procedural gas giants...


smcameron 15 May 2014, 01:19

I presented gaseous-giganticus at this month's meeting of the Houston Recreatonal Computer Programming Group. Here's a little write-up.


smcameron 12 Jun 2014, 05:50

No big updates to report, but I have been working on procedural generation of earthlike planets...

Here is a presentation about my program "earthlike", in the space nerds in space codebase to produce "earthlike" cubemap planet textures. Procedural Generation of Earthlike Planets. Use arrow keys to navigate the slideshow.

Also, I have been adding some code to enable custom physical devices to interface with Space Nerds In Space. Not too much to show for now, but there's this:

https://www.youtube.com/watch?v=w6vwbhHMmI4&feature=youtu.be

--steve


NaN 12 Jun 2014, 11:03

Awesome stuff. I remember Sean O'Neil having some nice procedural planets with craters code. His focus was more on continuous level of detail though. Unfortunately his website seems to be gone http://www.sponeil.org . I think I had his code somewhere, need to check my backups and maybe upload it to github/sourceforge.


NaN 14 Jun 2014, 09:18

Found the code: https://github.com/logzero/sandbox The interesting bits will be in src/Planet/PlanetaryObject I think. No pics unfortunately, will have to get it building/running on my current system first.


NaN 19 Jun 2014, 14:04

Here is how it looks like:

There seem to be distortions near cube map edges though.


smcameron 20 Jun 2014, 01:29

Thanks NaN. Wish I were actually good at writing shaders...

-- steve


smcameron 21 Jul 2014, 17:55 If you're interested in Space Nerds In Space and you run Arch linux, you may be interested in this: https://aur.archlinux.org/packages/snis-git/


smcameron 22 Jul 2014, 13:25

Compare:

https://www.youtube.com/watch?v=sQFYuQbg-HQ&feature=youtu.be

Today, above, vs. one year ago.


victort 26 Jul 2014, 00:32

Hi,

I've recently discovered Space Nerds In Space, and I'm totally impressed, but i can't shake the feeling that it wouldn't be amiss to suggest the author of SNIS take a(nother?) look at a GPL'd game called Pioneer Space Sim (http://pioneerspacesim.net)..

Both SNIS and Pioneer are GPL'd games. It seems like they should.. like.. go on a date, maybe.. at least flirt a little.

It would be a wonderful path to greatly expand the universe SNIS is shaping up to take place in, and it would certainly benefit Pioneer to have an angle on becoming an excellent multiplayer game...

anyway, i just wanted to register, and put my two cents in on it. These are both incredibly good works of space nerdery, I thoroughly enjoy both games, it'd be a shame if they didn't at least know about each other.. maybe some sexting?

Alas, i am not much of a developer myself. I have no way to assess both codebases and know how surmountable any integration might be.. For all i know, from a coding standpoint, it's a ridiculous suggestion.. It's.. just.. the conditions both games exist under.. the general rising climate of the popularity of space nerdery.. it's.. now just seems like an amazing time to suggest such.. um.. couplings..

as a space nerd reveling in this sudden outburst of awesome games (on linux, no less) out in the world, just imagine for a moment...

That was all..

US$0.02++

-m


smcameron 27 Jul 2014, 21:51

Improved planet rings, now using 1D textures so I can fit 256 rings into the same texture space as 1 ring previously required.

https://www.youtube.com/watch?v=RdXC_apBsnI&feature=youtu.be


smcameron 27 Jul 2014, 22:41

victort:

Hi,

I've recently discovered Space Nerds In Space, and I'm totally impressed, but i can't shake the feeling that it wouldn't be amiss to suggest the author of SNIS take a(nother?) look at a GPL'd game called Pioneer Space Sim (http://pioneerspacesim.net)..

Both SNIS and Pioneer are GPL'd games. It seems like they should.. like.. go on a date, maybe.. at least flirt a little.

It would be a wonderful path to greatly expand the universe SNIS is shaping up to take place in, and it would certainly benefit Pioneer to have an angle on becoming an excellent multiplayer game...

anyway, i just wanted to register, and put my two cents in on it. These are both incredibly good works of space nerdery, I thoroughly enjoy both games, it'd be a shame if they didn't at least know about each other.. maybe some sexting?

Alas, i am not much of a developer myself. I have no way to assess both codebases and know how surmountable any integration might be.. For all i know, from a coding standpoint, it's a ridiculous suggestion.. It's.. just.. the conditions both games exist under.. the general rising climate of the popularity of space nerdery.. it's.. now just seems like an amazing time to suggest such.. um.. couplings..

as a space nerd reveling in this sudden outburst of awesome games (on linux, no less) out in the world, just imagine for a moment...

That was all..

US$0.02++

-m

I'm aware of Pioneer. Merging the projects isn't going to happen for a variety of technical reasons, and I'll leave it at that. That being said, I have from time to time peeked at their shader code, and they're welcome to use, for example, my gas giant planet texture generator if they wanted to.

smcameron 28 Aug 2014, 13:14

Here is a slide deck from a talk I gave last night at a local game developers meetup: Procedurally Generating Gas Giant Planet Textures.


charlie 10 Oct 2014, 23:27

Any updates? I just saw this on a humble bundle and thought, "That looks like a crap version of SNIS!" They may have better marketing, though...


smcameron » 12 Oct 2014, 04:15

Hi Charlie. Sorry about the radio silence on the SNIS front. I have been looking for a job lately, so that has taken up all of my time for the past month. As far as "... crap version of SNIS!" LOL! If you take a look again at the very first post in this very thread you'll notice that this "crap version of SNIS", called "Artemis: Spaceship Bridge Simulator" is in fact one and the same as the very inspiration for SNIS. And before I even got very far with it, I emailed Thom Robertson to be sure he was ok with me re-using the same basic idea -- not that doing so was necessary, but it just seemed a decent thing to do. With his blessing, I proceeded with SNIS.


Pollux568 13 Dec 2014, 19:25

Hi smcameron,

just a small note to say that I discovered the concept of bridge simulator with Artemis last year. Then I've heard about the SNIS project, and I have been really really interested. There are some features which makes this game more interesting than Artemis in my point of view, above all the full 3D displacement, the far bigger world with more realistic distances, the feeling of an alive world (with many ships). And the total compatibility with Linux (I've tested it on my Linux Mint distribution, works perfectly :) ).

One thing prevents me however to organize LAN party on the subject, it is the lack of missions/objectives (but I might have missed a point). Although it is an open world sandbox game, it could be interesting to have global objectives (for example, destroy an enemy base or escort another ship).

I can't wait for further improvements of the game, keep motivated, it is worth !


CONTINUED ON PAGE 2