04.09.2016 - Starbows and relativity
Ever heard of something called a "starbow"?
The new story in Spaceway involves slower-than-light interstellar flight, so i've been adding relativity effects recently.
A naive implementation of the doppler shift yields a colorful effect of the stars contracting into a rainbow-like pattern ahead of the ship. A pretty sight, described in many an old school sci-fi story.
Sadly, some research later it turned not to be real - a relativistically doppler shifted blackbody would still be a blackbody, only with a different temperature.
The result is dimmer stars behind, and brighter and bluer stars ahead, no rainbows.
As one article's author put it, "We hope that this presentation will spell the end of the `starbow`. At the same time we regret its demise. We have nothing so poetic to offer as its replacement, only better physics."
This being a game, i'm considering leaving it as an option.
What do you think?
At 0.9c, looking mostly forwards.
Starbow version: rel_160904_1.jpg
Real version: rel_160904_2.jpg
Standing still reference: rel_160904_3.jpg
At 0.5c, looking left, with the galaxy behind for emphasis.
Starbow version: rel_160904_5.jpg
Real version: rel_160904_4.jpg
Standing still reference: rel_160904_6.jpg
20.08.2016 - Progress report, middle of 2016
Take a guess, how many mesh generation systems are there in Spaceway, excluding the planetary one?
The answer is - more than would have been reasonable.
At first, there was only the system i made for my PhD, the one that uses one turing-complete language to describe mesh blocks and then another expression language for joints between them.
A mesh, then, is an expression in the second language. The idea was to make a system that would take spoken text and make a 3D model from it, but the research never went that far.
There are still a few models made with it, like the Gateship and the Derrik.
It produces regular modular meshes, like this station:
The second system is a simple code-that-makes-mesh in a vessel plugin. Nothing special, quick and dirty hack.
It is used to make the Hius:
The third system is a parametric geometry system, where the mesh is defined as a set of joined lines, spheres and boxes. Unlike Hius, this one is parametric - change one size, and the shape would remain connected and meaningfully altered.
It makes the rocket chair from the VR ride:
Finally, there is the 3D CSG engine, the constructive solid geometry i originally made for 3D printing uses.
This one can produce meshes with internal spaces, rooms, holes, and so on.
The Rapier is made by it, but the characteristic object for it is the Space Elevator from the earlier VR ride:
As you can see, it's a zoo of systems that were designed at various times for various things.
I'm working on fusing these systems into a single one.
Number 2 is to be dropped, number 1 is stripped to it's bare pieces (useful part is the block linking system) and fused with the number 3, the result is then to be extended by the operations available to number 4.
In the end, Spaceway would carry a single mesh generator instead of 4, which would make it a bit faster to start, quite a bit easier to design for and less of a mess inside.
Needless to say, none of that internal work would be visible from the outside, except for slightly more detailed meshes in the long run.
That's about it for the current status.
I'm not going to be giving any new release date promises - they'll just get broken anyway as history shows.
Personally, i'm feeling better now.
With the recent release of No Man's Sky, a game that contains most of the still-planned features of Spaceway, i'm left so far behind that i no longer really care about catching up.
I expected that it would be the other way around, but surprisingly enough what NMS did was giving me closure.
There are no more goals to chase or expectations to live up to. Spaceway is once again just a game i make for my own fun and for showing it off to friends and VR event visitors.
So, in the end, all is well :)
The next progress report is to be expected around the start of 2017.
17.12.2015 - Progress report, late 2015
The thing about Oculus Rift is that if the game is bad, you get a slideshow, which is kinda meh-ish ok.
If it's good you get a smooth experience.
But if it is only so and so, then it's nauseating hell at the edge of the native FPS.
On max settings Spaceway tops at just below the no-nausea threshold, and often go down to 10-15FPS, on a fairly good system, which is 50-60-ish without Oculus...
Not good enough.
The last few month were full of hardcore optimizations to make it good in Oculus, resulting in a variety of changes and decoupling from Orbiter.
I started by compiling Spaceway with my own software implementation of OpenGL.
This way i can see every graphical issue clearly, since mine is made to crash on and log the errors, while the real vendor ones transparently ingest errors and spew out their best guesses.
Boy, was it a messy slideshow.
Not as slow as you might think, however - i managed to get it to 10-15 FPS.
Optimizing graphics is much easier when every slowdown is severely amplified. If you want to get a game running with software rendering, you need to clean it up hard.
Fixing up rendering inefficiencies brought up the FPS to 120-ish range, which in Oculus translated to straight in the middle of the nausea zone.
Oh so not good enough.
Software OpenGL does not do everything the real OpenGL does. There is no bus to the GPU to consider.
Further investigations revealed several inefficiencies in that department.
For example, you can store mesh data on the GPU, with a thing called the vertex buffer objects (VBO), to avoid sending it on every frame.
For some weird reason i only stored the vertex data, but not tangent data used by the shaders to draw the normal maps on the terrain.
I guess i thought it was not possible, but turns out it easily is.
With that the FPS got up to 180.
Neat...But that is standing still.
In motion, it was much worse.
Just moving your head produced a serious drop in FPS, almost to 10-15 in Oculus.
Well, it was Orbiter, the space flight simulator.
Spaceway grown from a graphics engine i originally designed for Orbiter (OGLAClient), and guess what?
The terrain was generated in the native Spaceway format, then converted to Orbiter compatible one, then converted back to the native format to be drawn.
This allows the engine to work with both sims, and also kills performance in Spaceway and gives a meh one in Orbiter.
It's been years since i did anything for Orbiter, so i realized it was about time to cast off.
That part felt like an end of an era - Orbiter defined many of my interests, and for a long time i developed add-ons for it, that conglomerated into Spaceway as the years went by.
Well, the past was good while it lasted, and now it's time to go ahead.
With the legacy and compatibility stuff dropped, the performance soared, getting 300FPS standing and 290FPS moving.
Almost good enough.
However, some icks still remained.
Quirks in the physics engine.
i.e. the hundreds of particles spewn by engines all went through the big physics calculations, dropping the FPS from 300 to 190 when the engines were running, or from 75 to 70 in Oculus, a critical difference between smooth immersion and nauseating jerks.
Moving them to a dedicated, fast calculation loop removed that drop.
Quirks in the drawing pipeline.
I.e. every time the terrain changed, it all got sent to GPU at once, jerking things at high speeds. That is fixed by allowing only so much terrain change per frame.
Quirks in the overlogic.
I.e. the MFDs were drawn on every frame, which at 300FPS was quite a drain. With 4 external MFDs on the lander chair that amounted to a drop from 300 to 150 FPS.
Made them draw at only ten times a second, and that drop was gone.
Now i'm getting native 75 FPS in Oculus at max settings most of the time.
Almost, almost good enough.
There are still some jerks and quirks left that i didn't track down, but the whole thing works well over ten times faster now.
Which, Oculus or not, is a good thing.
What the future holds...
Well, there are always plans and there are always ideas. Oculus VR demos, game ideas, this and that. I hope to get something interesting out in the coming months.
At the very least, there is enough bugs and performance fixes to just release it for the heck of it, with nothing extra. So out it will be.
In case nothing happens, next progress report will be around spring 2016.
29.07.2015 - Spaceway 150729
Spaceway 150729 Windows 32bit (2.2 Mb)
The space elevator and Oculus Rift update.
Oculus Rift support
How to use Oculus Rift.
I compiled two separate files for game with and without OVR, since it glitches quite profusely when OVR is on and not used and if it was a plugin you'd have to add and remove the dll file to disable/enable it.
So, to try OVR run the spaceway_oculus exe.
Two scenarios are provided - oculus_ascent and oculus_jump.
First lets you ride a space elevator as a passenger, the second lets you jump off of it at 50Km.
To enable rendering to OVR, press F11 then O. With it's on you can't see the menus, so it's off by default.
Before turning it on, point the view towards where you want to be forward. I.e. on the horizon looking out of the window.
The OVR's rotation is added to the camera rotation.
Known bug: Don't walk on the space elevator platform while it's moving. You will glitch off it.
You can use Oculus in any other scenario, of course.
But these two are the only ones that are at least a bit designed for it.
Space Elevator controls
Press 9 to open the control menu.
Press 8 to start the elevator moving up (useful in the ascent scenario).
Press 7 to start stopping the elevator.
As usual, it's all still in the middle of construction. The elevator's insides are kind of empty, the GEO station is missing, the Oculus Rift interface is kind of sketchy and so on.
Good enough to have fun at Copernicus, but far from anything finished.
Question: Are there any good Oculus Rift scenarios you want to see or can think of?
-Oculus Rift support
-CSG meshes optimizations and fixes
-Parameter selects if run last or start new game on start (--last)
-New set of procedural textures
-Removed old code for free roaming (Space Engine-like mode from 2008)
-Mesh offset cancellation in drawing, to avoid large single numbers on big offsets (less shaking for big objects)
-Base collision blocks and landability
-Fractional rotation rate of the planets
-Pre- and post- vessel/base program ticks cleaned up
-Fixed screenshot key coinciding with warp drive key (now F12)
-Fixed trees&rocks not showing up every now and then
-Fixed story click sound in non-story mode
-Fixed base data loading
-Fixed binmsh no texture loading
-Fixed black creep on trees bug (specular issues)
-Fixed black terrain rims bug
-Fixed shader cache update
-Fixed warp set/unset and sound
-Fixed anaglyph stereo rendering
-Various bug fixes and code improvements
-Various API fixes and improvements
-Known issue: Oculus Rift don't work on Linux yet, so no Linux version
-Known issue: Can't walk on moving elevator
-Known issue: TransX is not supported in this version, it's mid-rewrite
-Known issue: Some planets might have changed
-Known issue: Oculus Rift version gives all sorts of glitchy graphics before OVR rendering is activated
20.05.2015 - Progress report, early 2015
What was going on for the last 6 months?
A lot, and a little.
No release so far, as i tend to tinker on the internals rather than on something visible.
But it would be wrong to say that there is nothing new.
On the game side of things, there is Oculus Rift.
I happened to try it some time ago and found that it was awesome, so i added support for it into Spaceway.
Unfortunately, the Rapier cockpit is too ugly to be worth seeing, so i must fix that (and a few other bits of eye candy) before the thing is decent enough to be released.
But it is coming, and soon.
On the science side, there is Copernicus.
Playing around with Space Elevator construction and profitability, this July in Budapest.
Naturally, Spaceway is an excellent platform for simulating BDOs like that.
As a side effect of Copernicus, there would be changes and improvements aplenty, in directions i can't really outline in few words.
Or it might fail miserably.
In any case, things are about to accelerate, probably as fast as a space-bound rocket.
Or as fast as a BASE jumper stepping off a Space Elevator's ascender 100 Km above the ground (remember about Oculus Rift support? ).
In other news - some more site design improvements, synced up with Orbital Designs, figured out Facebook, Twitter and social networks in general, bla-bla-bla boring infrastructure stuff.
Next progress report is likely to be around July-August 2015.
See you in the bright tomorrow!
09.12.2014 - The D word
It would appear that some site design changes are long overdue.
Neither the colour scheme, not the basic layout was changed since 2008 or so.
Even worse, they are themselves based on one of my sites for another game project from circa 1998.
Summarily, that appears to make the site look dated.
To quote the Reddit, "Awww, even the website looks like it is from 10 years ago."
So, i was experimenting a bit.
Simple things first - getting the colours to match together and be easier on the eyes.
I've also made the comments more readable and usable, by adding visual cues between them and fixing the "incorrect captcha deletes what you typed" bug.
What do you think?
Anything else that is in an urgent need of changing?
02.12.2014 - Spaceway 140923, Linux 32bit
Spaceway 140923 Linux 32bit (826 Kb)
Linux version compiled, per popular request.
Main problem is, i don't currently have a Linux system capable of running Spaceway to test it on, so it's not being built by default.
Even now it is somewhat of a blind build, since the system i built it on can barely run it.
So, i will appreciate feedback on it's functionality.
The code itself is portable enough that i'm reasonably sure it would work fine, but Murphy is always out there.
Things that are known to be broken: UAP (autopilot), Hius vessel, trees/rocks, TransX.
Things that weren't ported to Linux at all: Sound.
22.11.2014 - Progress report, late 2014
415 downloads for 140920 and 140923 total.
Nope, not quite dead.
There are a few bugs left in the 140923, most notable is the V key being both a warp drive and a screenshot key at once in the alternate key set.
Not quite enough or serious enough for a new bug fix, so now they are waiting for the next release.
Adding a story seems to have been a good idea.
To quote, "I haven't ever done so many different things in Spaceway before... Sure I could have practiced orbital interception using a warp drive, but frankly the thought never occured to me.".
Even then it's still somewhat too difficult towards the end to people without grasp of orbital mechanics.
On the publicity side, i'm trying to figure out Facebook... Without much luck. It just does not make sense to me.
I still get most of the feedback on Orbiter forums.
There have also been some talk on Reddit lately.
On the development progress side, there haven't been much visible.
I've done extensive refactoring of the Pascal compiler used in Spaceway, and tweaked some other back-end things - stability stuff that isn't explicitly visible to players.
Adding sounds in the last update also derailed me into full-on research on procedurally generated sounds.
Hopefully the next update will have a better ambiance than the silence of space (and feature a "TaDa" sound currently missing at the end of the storyline ).
But at the end of the day, the development still stumbles forward aimlessly, and there is once again no scheduled next update time.
But there is something related that is scheduled.
I haven't talked much about science involved in making Spaceway before, since it's all published in Russian so far.
This might soon change, since if all goes well the core ideas will be published late 2015, in an English book.
It so happens that the procedural generation methods i developed have applications in artificial intelligence.
It's the ability to generate an image from an idea, from simple description.
One way, it turns spoken text into an image, a schematic, a blueprint, etc.
The other way, it helps image recognition - the description produced is turned back into an image, to match with the input and refine the recognition by feedback.
Fascinating, how you start making a game, and end up doing science.
If you find that interesting, i'll post the details when the books goes out.
If not, next progress report will be in early to mid 2015, or around the next Spaceway release, whichever comes first.
All in all, catch you later.
23.09.2014 - Bugfix 1 (Version 140923)
Spaceway 140923 Windows 32bit (1.4 Mb)
Spaceway 140923 Linux 32bit (826 Kb)
Thanks everyone for the feedback!
Here is a little update to fix a few little bugs and a big one.
-Fixed the non-appearance of a *spoilership* after intergalactic travel
-Fixed Relative MFD target select (MFD API was out of date)
-Fixed quicksaves being in the wrong directory
-lowgraph_start.bat will start the game with a simple launchpad menu, giving you an opportunity to tweak the options if the FPS was too low (--lowgraph from command line)
-Various tweaks to the story texts ("Of course I immediately jumped the rover off the cliff to see if anything would happen when I get to the pink ice, and nothing did")
-Moved star map to the infopad
-Made the fuel generator a bit smaller ("look at that 30 meters tall fuel generator I just happened to have in my pocket!")
20.09.2014 - Version 140920
Spaceway 140920 Windows 32bit (1.4 Mb)
Linux version might be compiled in case of requests - i don't have a Linux machine to test it on.
A lot of changes were done to the interface.
From trivial stumbles, like putting main menu on obvious Esc key instead of unexpected F4, to removal of duplicated and confusing functionalities.
From moving a few buttons around, to moving essential functionality from obscure locations to obvious places.
From more straightforward controls, to in-game quickstart guide.
I hope it's playable now. :)
You know the parable about a donkey, who sits exactly between two stacks of hay?
The poor beast can't decide which one is closer and dies of hunger.
Apparently, that is what was happening here. So, want to get moving - pick a direction and go.
Not to say that the gameplay idea was picked completely at random. I think it fits.
If it works out, i can work on a grander idea.
Any one story is tiny, compared to the infinite universe.
However, you can make as many stories as you like, without them coming close to each other. Or, instead, interacting one with the other.
If there was a way to write the stories in a universe like Spaceway, would anyone bother writing them?
It sounds tempting, like a Choose Your Own Adventure book, only in space and written by a community.
Unless i'm blinded by useless hope once again. :)
In short, there are now two game modes - sandbox and gameplay.
Sandbox is what Spaceway always was, gameplay is something slightly different.
Also, the universe is no longer a single entity - each save keeps it's own set of starlogs, system and planet names, bases, buildings, etc.
-Gameplay mode and sandbox mode
-A short storyline, for introduction to the game
-Interface improvements (infopad instead of many MFDs, inventory window, controls, guides, story, etc)
-Death and failures in game mode
-Quickstart guide in game
-Scanning worlds instead of all-knowing at once
-Start directly into a game
-Reload on big option changes
29.06.2014 - Follow-up on 2014 progress report
First of all, thanks to everyone who responded and to the guy who posted about this on Reddit.
Sorry for sounding like an attention whore - when i wrote that progress report i honestly thought i was talking to a proverbial empty room, so i wasn't paying much attention to how it would sound.
Honestly, lack of Spaceway's popularity does hurt, but mostly i am making it for my own fun.
As much kind words as i heard in the last days is enough, just so i can stop wondering about there being flat out none of them.
Which brings us to the real issues at hand, that more constructive posters noted.
I'm having fun with it, in the same way someone with a home-built factory can have fun with it, while an outsider will be ground by gears and dumped into a vat of acid within first minutes of trying.
Spaceway lacks purpose, goals, meaningful gameplay. It is as of now a wide open sandbox with an excessively complicated and undocumented toolset.
And i am by now clueless as to what to make of it.
Just making an infinite universe that you can fly around could have been a nice game on it's own, but Space Engine got there first, and i can't beat his graphics.
Making a "build your ship and fly it" type of a game is too hard to do without ripping off Kerbal Space Program.
Anything else i tried does not stick and does not fit, does not get any traction.
The wider the world is, the harder it is to stick a player into it.
That's the gist of it - i would like to make a game out of it, but i don't know how.
So, let's put this influx of views to some use:
What sort of game do you think Spaceway can be made into?
To recap the main features:
-Infinite universe, no borders to it.
-No discontinuities. All the distance between one planet, star, galaxy, etc and the other is actual space - no cuts, jumps or loading screens.
-Every planet, star or galaxy in it is a place you can get to - no backdrops or skydomes.
-Every planet or moon is real-world sized, with the requisite details.
-Real Newtonian physics underlying it (this part could be made optional, since real space flight just confuses people).
-Everything is algorithmically generated. No images, model files, etc. If it can't be described procedurally, then it's out (add-ons/mods are an exception).
I'm looking for ideas that can capitalize on the features, so something that uses a dozen solar systems here, and ignores the rest of the universe is likely a kind of idea that won't stick and get traction.
Some miscellaneous notes and responses to Reddit posts:
-CAPTCHA for comments ask for arithmetic addition of 1. So, if it says 4321 then you type 4322. I heard some people didn't catch that.
-I will try to get the Linux version working again.
-I have repeatedly failed miserably in making networking programs in the past, so there is basically no chance of any sort of multiplayer or MMO in Spaceway. "Online" is not my area of expertise.
-Open source is not an option. I found i can't have my peace of mind with that code being open, so i reverted back to closed source in 2011.
-I am not looking at monetizing this in foreseeable future.
26.06.2014 - Progress report, summer 2014
There is little progress to report, over the past 5 months.
Zero progress, to be exact - last commit in the GIT is still dated January 22nd.
Basically, i am clueless as to what else to be doing with Spaceway.
The 2014 version was downloaded a bit over 500 times.
Most of which are by bots and accidents, since over that time there were about 5 posters on the forum, 3 comments on the videos, and 0 comments on the site.
Even assuming 1 to 10 comment to silent ratio, that comes to about 50-100 players, total.
I am directly aware of maybe 10 of them, over the whole span of the project's existence.
For a game 9 years in the making, this is pathetic.
Why is it going so badly?
I don't have a clue.
Next progress report will be in late 2014, i do not anticipate much progress.
19.01.2014 - Version 140119
Spaceway 140119 Windows 32bit (1.4 Mb)
Linux version to be compiled in case of requests.
And here comes the update worthy of several months of development.
Refubrished the interface, added some backstory, fixed a ton of bugs.
Clearly defined arcade mode along the realistic simulator one (q or v to switch), more straightforward controls, usable autopilot.
-Starting scenarios for arcade and realistic modes
-MFDs are now mouse-controlled
-Planets can now be named
-Procedural mesh for Rapier
-Caching of generated vessel meshs
-Cache versioning - new version will clean up old cached files
-Made warp motion FPS-independent
-Warp drive does not need peculiar key combinations any more
-Added a refuel button to control menu
-Added presets to autopilot
-Made help screen more readable
-Fixed saving on window close and other exits
-Fixed terrain graphic presets
-Fixed crash on same system gate travel
-Fixed freakish textures bug
-Fixed autopilot throttle bug
-Fixed persistence of gate address
-Fixed gate names in systems with more than 26 planets/moons
-Fixed textures breaking after changing graphic settings
-Fixed cockpit jitter at high interstellar speeds
-Fixed lights going out after interstellar trip