Category Archives: General

It’s been a long time. How have you been? Do you remember that time when we jumped from Unity, to Panda3d, to Unity again?

…well.

The Plan

Science of the Spheres is now on Unreal Engine 4, and has been for a while now. I won’t go into too many specifics as to the why, but the gist of it is that we’ve concluded it to be a better choice than Unity for many of the things we wish to do, and as well can achieve a much higher level of fidelity in the game than we could otherwise. In addition, UE4 provides access to the engine source, which is a godsend given a few of the things we wish to make in the future can be implemented more or less directly into the engine rather than clumsily affixed onto it. As one example, this will greatly aid the creation of the voxel terrain system in the future. At the present time though, that goal is at an indeterminate point in the future. The current direction of development is to produce a playable demo/prototype on the new engine, containing a small selection of the main features for the final game, to serve as an effective example of what the future will hold. This includes the following:

Headquarters scene and surroundings

Construction and operation of spacecraft

Basic scientific observations

Single pre-made “showcase” solar system

In more descriptive terms, this means that for the demo, the player will be able to wander around the headquarters at their leisure and interact with things, build spacecraft (with unlimited funds and supplies), deploy them, and fly them around a specially made solar system, designed to show off what the future procedural generation will be able to produce. This demo will be released for free, and followed shortly after by the opening of the Kickstarter campaign which I have just announced in this sentence. That will be used to get a bit of seed funding (I do mean only “a bit” – a pittance compared to what many campaigns ask for) to give a boost to development until the game is ready to begin the alpha period after the remaining major features have been implemented.

Now, the alpha period for SotS will be private, carried out by a group of testers selected for the task (please don’t request a position, that will be handled much later). During this time, the game’s features and content will be developed and implemented as the testers dissect it, until all main features have been implemented and the biggest game-breaking bugs have been destroyed. After that, beta begins, and with it Early Access on Steam. This will effectively just be a public beta test available to those who have pre-ordered the game, focused on killing bugs and polishing that what remains, with no major feature additions beyond that point.

After that, after a very long, joyous, terrible, bug-filled road, Science of the Spheres will be released. And then? I have no idea.

The Rest of the Plan

Now, beyond the demo features listed above, things are a little bit more nebulous. But, by now the concept for the game has matured enough that I feel confident of making a Big Damn Features List to articulate what currently is planned for the game. Eventually I will be making a big periodically-updated list with little blurbs about what each feature means, but for now, of the top of my head:

Microverse

(* – Not really, but close enough: each galaxy is based on a 64-bit seed, which would allow every single person in the world to spend the rest of their lives seeing different galaxies)

Things in this list will most certainly change in some way or another. I’ve also likely forgotten a number of things, but the eventual Big Damn Features List will be updated semi-frequently whenever it does show up.

The Right Now

At the present time, the main focus has been setting up the two game scenes, and getting a few base systems programmed. Specifically, implementing the Bullet physics engine, and re-jiggering a few things in the engine code to allow two scenes to co-exist at the same time. There has also been a considerable amount of theory-crafting, as well as some simulation/prototyping of how planet formation can work with the new physics provided. Here are a few more random pictures:

And lastly, here is a video version of the first picture in this post, with sound effects added to enhance the mood:

Over the past few days I’ve been making a system to procedurally generate small asteroids and comets in space. This can happen anywhere, be it in a solar system or in interstellar space. Each asteroid also uses a similar terrain generation technique to the planets, so every single one is unique.

I need to work some more on the noise parameters though, as they all look pretty samey right now. But overall, it’s nice to see some activity in an otherwise currently very inactive universe.

Which brings me to a very interesting occurrence that happened when I left the generator running for a while to see if anything broke…

I wasn’t around for the event but when I came back to check on it, the debug trails immediately pointed out something odd. One of the asteroids had actually ricocheted off a planet’s surface, then had been gently tugged into a semi-stable orbit by the other planets of the system.

(Animated at 4x normal speed)

I ran the game at accelerated time for what must have been a several hours of game-time. The thing kept periodically bumping into the planet’s surface and then being tugged into an orbit again by the same process that captured it originally. Eventually though, the perturbations brought it inexorably to its demise…

Time again for the slightly-more-than-annual progress report. Things have been going pretty well. A bit sluggish, but well.

Panels

The game’s UI has been developed and designed a lot further. At present, we’re leaning toward maximum immersion – having a full virtual console that the player sits in front of, instead of a traditional flat UI that overlays the screen. It’s been given an initial model and had some basic functionality prototyped, and it works pretty well. We may include an optional 2D UI in the end anyway, for those that would prefer that.

Here is the design thus far:

Most of the areas are self explanatory. The little up/down arrows on some of the panels are for switching between multiple available targets. The toggle switches turn that respective component on and off. The card on the Command Functions panel will have written on it whatever command groups you’ve designated for that spacecraft. Who changes the cards and writes the new text? It’s probably safer if that remains a mystery…

Most (if not all) items will be accessible via hotkeys of some kind, and the whole thing will be easily accessed from outside the game to make things simpler for anyone who might be inclined to build a replica one someday (I can dream).

Also, if/when we add VR support, this panel will be perfect.

Planets

And, more recently than that, I’ve been working at improving the visual fidelity of the universe at large. In particular, new atmospheres and terrain shaders. Pictures generally do a better job of explaining visuals, so have some:

This is still just a stopgap measure until the voxels come along, though, and they still don’t have normal maps or the needed triplanar mapping to avoid texture stretching. After those parts are done though, I think it’s more than good enough to sit around for however long it takes to have the voxels ready.

It’s currently based off of vertex coloring on the mesh – red for the main texture, green for the secondary texture, and blue for the cliffs. With some magical and terrifying combinations of stuff, they have a sort of blend mask between the textures, although not a very good one. This led to some interesting results while it was being made.

Oh, I almost forgot. Each progress report will now have a gif attached. Here is today’s:

First off, apologies for the long gap between posts. Most information has been posted elsewhere, such as the twitter feed, which will be receiving a sidebar on this site at some point soon.

Status report:

Interstellar flight is working very well. You can fly between solar systems in the galaxy, and planets load and unload as they’re supposed to, and do so very cleanly (memory leaks cleaned up, only a few kilobytes or less leaked with each system).

A simple terrain generator was added as an intermediary step between, well, nothing, and the final voxel terrain system. As a result of this, the final terrain is at present in a holding pattern until other areas of the game have been worked on. However, a good amount of work has been done on them, and they should perform well when the time comes to finish them. The final terrain system will be calculated fully on your GPU via OpenCL, and should (fingers crossed) be very quick to generate and update.

At present there’s a lot of rethinking of the backstory of the game going on. Keep an eye on the Game Info page, that will be rewritten when it’s more thought out. Still in the 1970s though, and still with dangerous technology.

With the basics of spaceflight somewhat taken care of for the moment, our attention soon will turn to things like construction, as well as some visual aspects of the game, such as shadows and atmospheres. Then will come the task of integrating the two. Much to be done…

Also, here are a few random development pictures from the past while:

To start, I’d like to apologize for the lack of progress updates on this blog recently. Most of the time the smaller updates have been posted on the official twitter account, which is located here.

Anyway, hopefully today’s events will make up for the lack of recent blog posts. After a bit of tweaking, additions, and fixes, the very first SotS prototype (from around July 2013) is now ready for public consumption.

It’s currently still got its share of bugs, and is very rough in general, though the basic gameplay gives a decent example of what to expect from the final game. Just remember, even though it’s had a few recent additions, it’s still VERY old and unpolished, and more than a bit ugly. Keep that in mind as you play!

In an unprecedented moment of flip-flopping(artist’s impression), development was shifted back to Unity as opposed to using Panda3D. In the end it boiled down to a question of “How well can we do this on engine X vs engine Y, and how easily can it be done on engine X vs Y?”. More specifically: “Should we use this engine we already know inside and out despite its flaws, or attempt to learn an entirely new system, workflow, and potentially slow things down immensely”. In this case, Unity eventually won out, and from that point, development has picked up pace considerably! We are trying to be mindful of Unity’s limitations, however, but hopefully due to the relatively small scope of the game (figuratively and literally) we won’t run into too many of them.

The terrain system is going very well, and I’ve been getting a good flow of textures going on for it as well. It still needs some optimization for speed as it’s somewhat slow to generate right now, but it’s coming along nicely. Screenshots of it will come when it’s further along and nicer looking – namely, when it has multiple terrain types and textures, and some issues with normal maps are worked out.

The construction system is still in its beginnings, but the basic concept and early systems are in place and well functional. Much of it will be GUI work, in the end.

A procedural solar system generator has also been written. It’s not integrated with the terrain system, but it generates planet positions, radii, atmospheres, surface gravity values, and calculates their temperatures, which sets the stage for eventually populating those planets with plant and animal life, assuming the random number generator gods smile upon them.

Not much visual stuff to show off just yet, but keep watch for the first imagery of the terrain system…

Yesterday I downloaded the trial version of 3dCoat and tried it out. Long story short, it’s a fantastic piece of software, and in under 12 hours of work (and then an hour or three of rigging and animating today), I managed to make this beautiful beastie:

You should recognize this creature from the site banner, as well as the “Outsider” concept from the first post on this blog. From a 2 million triangle detail mesh, the low-resolution mesh is a relative pittance at 3700 tris, a number which I hope to reduce further, to the point you’ll be able to have hundreds of the things on screen at once with minimal impact…

There are still some color and model tweaks I would like to make, but so far I’m happy with the result.

In-game, the hopper will be a creature of simple living. Usually found in small groups, they hop from location to location, hunkering down against the ground and eating up a chunk of turf with their mouth-foot, before spitting out the inedible portions and hopping to the next location. Primary defense is hopping away furiously. Secondary defense is the mother of all headbutts. Tertiary defense is to flip onto its back and bite large chunks out of your spacecraft.

Also, for anyone interested, here is the original piece of concept art for the hopper.

This is the first post in the “Tangent” series, wherein I spew a short ramble about an intended (or in progress) feature to help better explain the finer details of numerous intended features of the game.

Quite quickly after the decision to move the game back to an unspecified time in the early 70s came a new idea in how to handle in-game music: vinyl. That is to say, as opposed to a normal ingame soundtrack of randomly played pieces of music, the player can freely pick and choose from a collection of vinyl records, and assemble a “playlist” of sorts via their Legmann 9600 Automatic Multi-Disk Turntable, which will then go through them in the order chosen by the player (and loop back around when it’s done). These records come from a “starter collection” of a variety of genres, but more can be purchased with in-game money via a phone-order system from the local record store.

Internally, this is intended as a very flexible and moddable system. A record, in the file system, is simply: 1. a collection of audio files, divided into two “side” folders, 2. a label image, 3. a sleeve image, and 4. a config file linking all of the previous elements together. This means that any music can be put into the game by the player inclined to do so, as long as it’s in the correct format.

On a side note to this, I also hope to release the game’s soundtrack in lossless format via bandcamp or something, with a means to put those files into the game to replace the inevitably-low-quality ones distributed with the game.

In this post I’m going to be talking about some stuff not covered in the game info page. Specifically, more detailed workings of the microverse, both in-game and behind the scenes.

To start off, at the top level of existence, there are two known universes – our universe[1], and the Microverse. The two are completely separate, both living out their lives in peace with the dimensional gap between them undisturbed until the player’s advanced technology forms a bridge between them. Below each universe is the familiar hierarchy of space, with galaxies, stars, planets, and so on. For purposes of the game (and sanity), the only area of our universe the player has access to is the MEA complex just outside St. Louis. Most areas of the Microverse, however, are accessible to the player’s spacecraft.

To begin the process of ripping space a new one, a set of coordinates (or a text string) is entered into the Universal Translation Matrix (or whatever it’s called), which locates the nearest galaxy to those coordinates, then a star roughly near the middle of that galaxy, whereupon it spits the player out into open space. Due to the nature of the UTM, however, each coordinate is only linked to one location – as in, entering that coordinate will always bring the entry point to that location. Each galaxy, in effect, has a “home base”, that any incoming traffic will end up in.

From that point, the spacecraft is now considered to be inside the single massive space that is the chosen galaxy, and is now free to fly around. Given intergalactic distances here can approach real-world light years, galaxies are, internally, considered to be wholly independent from one another, and no travel between them is possible without retargeting the UTM and sending things through the new portal. While intergalactic travel isn’t possible, interstellar travel is. As interstellar distances are only on the order of hundreds to thousands of kilometers, they’re easily navigable over non-geological timescales by properly-equipped small spacecraft.

When leaving[2] a solar system to go visit another, at a certain point the current system will quietly be unloaded, vessels in it frozen, and the time of departure marked. When arriving at a new system, the new planets will be loaded up, and any vessels have their motion in your absence (from the last saved time up til now) calculated. If a vessel is found to have intersected a planet, it will be stopped, “backed up” a bit along its trajectory, before being simulated normally in a quick, low fidelity fashion (accuracy is less important in this case given you aren’t watching)[3]

Near the bottom of the hierarchy lies the humble planet. In this case, a collection of fluff and rocks[4] and stuff grabbed by a gravity core that vaguely resembles what we call in our universe a “planet”. As could be expected, in comparison to interstellar travel, interplanetary travel is trivial – minimal delta-v is required given the small dimensions of solar systems (although, more may be necessary in the event rapid transit is desired). Planets, as one might surmise, come in a variety of flavors – airless balls of rock, balls of rock with a bit of gas on them, balls of rock with a lot of gas on them, balls of semi-molten rock, balls of rock with trees and animals and angry grass, and so on and so forth.

Lastly, at the very bottom of the space barrel, are all the bits of fluff drifting around in deep space. These range from pebbles to full-blown asteroids, as well as extremely volatile, explosive rocks that have come to be known as “comets” due to the tails they make when approaching a star. That’s not to say there are only rocks out there, however. Even in the Microverse, space is a big place, so who knows what you’ll (figuratively and/or literally) run into…

[1]Technically not our universe. The actual designation is UnivPrime4, a similar but distinct and different version of the real world (UnivPrime1). Among differences are a strange continent layout for Earth, Apollo having 19 missions, and the Beatles not breaking up until the early 1990s.

[2]“Leaving” is determined from distance, based on the overall system size – after you’re past the most distant planet plus around ten kilometers.

[3]This is only a preliminary concept for how to solve the problem of spacecraft crashing while you’re away… we’ll see how it works in practice eventually.