Procgen Bug-Ship

By Paul Spooner Posted Tuesday Jul 16, 2019

Filed under: Programming 20 comments

I’m attempting, in this series, to program the computer to make space ships. So far, I’ve manually generated some blocky ships, and some roundish ships, and done a little exploration of hull plates and a few sub-systems. There hasn’t been any procedural generation yetunless you count the starfield in the background but I’m not too worried. I want to be comfortable making all of this manually before setting out to tell the computer how to make things. I could start doing the programming already, but I’m enjoying this whole manual exploration thing, so let’s keep going with that.

Last time I mentioned, near the end, that the morphological metaphor for space-ships is shaping up to be more along the lines of bugs than bears, but on reflection, the broader categories of invertebrates instead of vertebrates seems more apt. However, as much as I’d like to careen off on an Anthozoa-inspired tangent, let’s stay on the path I indicated last week and start by talking about:

Despite the impression one gets from 'cosmic' music, I've been told that these subtitles hardly exhibit self reference AT ALL!
Despite the impression one gets from 'cosmic' music, I've been told that these subtitles hardly exhibit self reference AT ALL!

The Lonely Expanse of Space

No, ahh, that was what we started with last week, but what I meant to talk about this week which I indicated last week was:

Antennas

There’s nothing quite like an antenna to indicate delicate sensors and communication. We can make them in a variety of sizes and shapes.
The main place I would expect to see antenna on a space ship is the crew quarters, especially the command center, so the antennas can act as a secondary identifier (after windows) of the crew-focused section of the ship.

You know when you go overboard on antennas? And then realize, 'No wait! More antennas!'
You know when you go overboard on antennas? And then realize, 'No wait! More antennas!'

While we’re on crew quarters, I’m going to bring up something that you see a lot in sci-fi visuals, which is these angled windows. This is a really powerful visual shorthand for “this is a structure where weight and strength are more important than square windows” because it mimics windowsor indeed entire rooms built into a girder structure. The windows built around the diagonal bracing in the girders form this characteristic parallelogram shape. Or, no, not a parallelogram? A rhombus? No! I’m going the wrong way! Uh… help me Wikipedia. Trapezoid!

You'll be seeing a lot more of this particular design as the articles go on. I'll get into why later.
You'll be seeing a lot more of this particular design as the articles go on. I'll get into why later.

The characteristic trapezoid shape that you see so often in Cool Looking space ships. It’s so Cool Looking that I’m using it in the hull panels as well, and it seems to be pretty effective! The trapezoid offsets in the seams, or even single 45 degree jogs, add that feeling of technology. In addition to the nod to underlying structural members, I think another reason these 45 degree angles say “spaceship” so effectively is that circuit boards are “future science” things, and are also commonly composed of square angles and 45 degree paths and stuff.

Anyway, windows and antennas denote crew. And of course, crew need to get on and off the ship as well, so we’ll also need some:

These are supposed to be the main fuel intake filter and antimatter port. Why are they so glowy? Because it looks sweet!
These are supposed to be the main fuel intake filter and antimatter port. Why are they so glowy? Because it looks sweet!

Ports

These connection points can be docking ports, or refueling ports, or coolant transfer points, or munitions sockets, or hanger doors, or whatever else one might imagine entering or exiting a space-ship. I’d like to have an exhaustive design for each of the vessels created in this way, but even if we never get there, scattering a few of these around the vessel should lend a bit of believable detail. The “circuit board” insight yields some good fruit here as well, as round ports and round solder pads work well with the hull-plate-seam to circuit-board-trace metaphor.

The main cargo hatch. You can probably tell this isn't really a cargo ship.
The main cargo hatch. You can probably tell this isn't really a cargo ship.

Because storage is generally where things end up immediately after transfer, I’d expect the cargo section of the ship to have the highest concentration of ports. By now you’ve probably seen the pattern, so it will come as no surprise that I next bring up:

Delicate Sheer Wings of Darkest Night

Now, you may be wiping your monitor after the spit-take there because you, as an educated and fully literate individual, are well aware that space-ships don’t need wings. They don’t do anything in space! It’s space! There’s nothing there! At all! That’s why it’s so easy to take out the garbage. You just kick it out the airlock, and it doesn’t pile up, because there’s nothing to pile up on.

Well my, erudite friends, allow me to remind you of another property of space, which is that it’s a fantastic insulator. And the corollary, that this makes it very difficult to take out the energy garbage, also known as heat. Because, unlike physical garbage, you can’t throw heat. Well, there is one way actually. That’s why these wings aren’t really wings at all.

I know I said Bugs earlier, but these are really more like fish fins.
I know I said Bugs earlier, but these are really more like fish fins.

They’re Radiators!

And what is the most likely source of waste heat that we need to get rid of? Why the engine room of course! How tidy! The three primary sections of the ship that we identified in the very first article have returned except there were four sections because we forgot the limbs section which was called “guns” earlier but this time is:

Landing Legs

I’m kind of torn on these actually, because they are one of the features that exist on real spacecraft, but look best when they are completely hidden behind body panels except when landed.
So, I don’t know, maybe I’m going to put them in the proc-gen engine,the proc-gengine? maybe not. Either way, here are some legs on that ship we keep seeing.I call it the Tramp Destroyer

Sometimes I try things that don't work out the way I intended.
Sometimes I try things that don't work out the way I intended.

So, there we go! We now have both primary and secondary identifying characteristics for all four primary vessel sections. Next week I’m going to do some studies based on the concept art that you link in the comments.so, be sure to comment with spaceship designs that have features I haven’t examined yet Or, failing that, I’ll talk about the Tramp Destroyer, why I made it, and what its deal is. You can download the source file for this week here:

http://peripheralarbor.com/ProcgenSpaceship4.blend

 

Footnotes:

[1] unless you count the starfield in the background

[2] or indeed entire rooms

[3] the proc-gengine?

[4] I call it the Tramp Destroyer

[5] so, be sure to comment with spaceship designs that have features I haven’t examined yet



From The Archives:
 

20 thoughts on “Procgen Bug-Ship

  1. Ninety-Three says:

    I love the triangular windows (especially the way they work on the domes), but the scale has gone all wonky again. My brain wants those windows to correspond one story of a building, so the bewindowed spheres are eight or ten stories tall, but then in the final screenshot the ship “feels” like it’s smaller than the Millennium Falcon.

    Part of that is the landing legs: traditionally we’re much more likely to see landing legs on something Falcon-sized than Star-destroyer-sized. The other part is that we’ve got those big glowy rectangles everywhere: if a glowy rectangle looks like it’s part of the engine then I can buy that it’s glowing because of space magic, but when it’s stuck randomly on the side of the ship I expect it’s either a window or a blinkenlight, both of which are relatively small, so it imposes an implied maximum size on the ship.

    1. Ciennas says:

      Change the color of the big not window glowy bits, and it implies thrust, and helps the scale kick back up.

      But for bigger ships, they generally just… don’t land. they take up station keeping, or get docked in a drydock structure of gantries and machine shops.

      (The final level of Halo Reach has you briefly run through and around one such structure on your way to the end of the story.)

      1. Paul Spooner says:

        One of the things I’d like to get to is station generation, which would be perfect for making orbital docking structures that you seem to be describing.
        And, yes, a large vessel like this wouldn’t normally have landing capability. I’ve included the legs partly for reasons I’ll get into later, and partly because this vessel is supposed to be a feature showcase to test out implementing all the different features I’d like to include.
        I’ll have to try a different color for the engines… maybe purple?

    2. Decius says:

      Landing legs should be no more than a few meters long. If your ship needs them longer, it shouldn’t be landing in the first place.

    3. DerJungerLudendorff says:

      I agree, having a giant ship balance on landing legs just feels wrong. Like it should simply collapse from putting all it’s (presumably massive) weight on those little stilts. Not to mention the sheer momentum when landing that thing.

      Maybe a bunch of smaller legs would look better? It would fit the insect aestethic as well.

    4. The Stranger says:

      I agree with this. The final picture looks like those latticed spheres are maybe two or three feet high. I think the legs are a big part of that, but also the gaps/seams between the hull plates. If we assume that those windows are approximately one story high, those hull plates have something like 20-foot gaps between them, which is just huge. Even if you assume all of those plates represent sections that can swing open (landing legs, cargo bays, weapon arrays, etc.), that’s a huge gap. My brain insists that those seams are, at most, a foot or so across, so the windows look tiny.

      More generally, it may just be a mismatch in the level of detail in different components. If the hull plates had a lot of little details like sensors, weapons, smaller seams etc., maybe it would look right. But most of the ship is big, clean elements, which don’t convey the sense of scale well.

    5. Oliver says:

      I think it is also partly down to the camera position for the screenshot. With no ground texture to inform distance to the ship and no idea of camera height, you automatically assume a human height camera at a perceived distance. With the centre of the ship in centre view, you automatically take either that or the “face” at the front as the reference point for scaling.

      Try focusing on the front of the ship and you can imagine it is shuttle sized, look at the centre and it’s like the millennium falcon, look at the back spheres and you are stating upset a massive ship. Despite this, I think it just needs some other known object/terrain for scale reference.

      1. Paul Spooner says:

        Ooh, yes! Need some office buildings or something clustered around the base. I’ve been thinking that the tools for spaceships should be able to make buildings as well. Maybe I’ll do a little foray there next week.

  2. tmtvl says:

    Organic spaceships can have cool original or weird designs, but sometimes (X3 Boron ships) they’re just kinda boring (pun not intended).

    I have noticed that your designs tend to stick to the ‘one big main unit’ type. Have you thought about having a few modules connected together à la Star Trek?

    1. default_ex says:

      I dunno, the Boron fighter ships were really cool. The freighters and warships however were kind of meh.

  3. Lino says:

    Why are you calling it a bug ship? Your code doesn’t have any bugs yet (ba-dum-tss)!

    Bad puns out of the way, this ship is probably the best one you’ve shown us so far. I can’t wait to see how this project proceeds!

  4. Kathryn says:

    Those antennas don’t look right. Having trouble putting my finger on why, but it’s at least partly because an antenna with that form factor is going to have a narrow field of view, like maybe 45°, where on a spaceship, you’re going to want to get as close to 180° as you can manage. Maybe a dish would look better. I’ll think about it some more and see what I think of.

    This has been an interesting series. Thanks for sharing!

    1. Kathryn says:

      On a second glance, I see there *are* dishes. That’s what I get for commenting before my contacts are in XD The proportions still don’t look right on the antennas, though. The last antenna I put on something I was sending to space was cylindrical, about the size of a quarter and maybe 1/2″ thick. Maybe a whole inch, it’s been a while.

    2. DerJungerLudendorff says:

      It does look like all those antenna’s and dishes are either massively redundant, or going to seriously interfere with each other.

      1. Paul Spooner says:

        In reality, all the antennas would be tuned-phased-arrays built in to the hull plates. But that looks boring.
        Personally, I prefer the look of clusters of whip antennas. The dish antennas look clunky and old-fashioned to me. But I figured I should include a variety to demonstrate the range of options. All of this will be configurable in the proc-gen tools, so everyone will be able to generate the style that they prefer.

  5. WarLadle says:

    I wonder if the insect angle would lend it self to more bulbous ships as well? Ships seemingly made up of multiple interlocking spheres, with bubble like hull plates could look really interesting.

    1. Lola Ferguso says:

      Overlapping bubbles would definitely look more organic, like the ship had more modules added over time. I mean, you can do the same with rectangular slap-dash welding-looking stuff, but that’s a different level of “organic”. More like “old broken, recycled ships” than “we grew these sections from semi-sentient nanomachines” or “these are living, growing ships”.

  6. LCF says:

    Nice work, interesting. Please keep them coming.
    Regarding landing legs, you might want to factor them in, and not show them deployed when you don’t need.

  7. Jeff says:

    No seriously, those star circles are way too distracting. They’re more foreground than background, especially with the lack of light being cast on the ships.

    1. Paul Spooner says:

      Well, I’ve provided the source files, so you can make your own renders. The circles are the lower node branch in the post-processing phase.

      Yes, the stars used to be lighting the scene, and reflecting from the hull plates, but I had to turn the sampling so far up to get rid of the noise that it was taking several hours per render. Although… now that you mention it… I could add a specular layer to the star-field pass, which doesn’t get denoised, and has a real low sampling rate. Hmmm… Will have to try that.

      The last render, of course, is crazy pants, a result of a pathological intermediate state while I was playing with the node setup. But it turned out so neat looking I just had to include it!

Thanks for joining the discussion. Be nice, don't post angry, and enjoy yourself. This is supposed to be fun. Your email address will not be published. Required fields are marked*

You can enclose spoilers in <strike> tags like so:
<strike>Darth Vader is Luke's father!</strike>

You can make things italics like this:
Can you imagine having Darth Vader as your <i>father</i>?

You can make things bold like this:
I'm <b>very</b> glad Darth Vader isn't my father.

You can make links like this:
I'm reading about <a href="http://en.wikipedia.org/wiki/Darth_Vader">Darth Vader</a> on Wikipedia!

You can quote someone like this:
Darth Vader said <blockquote>Luke, I am your father.</blockquote>

Leave a Reply

Your email address will not be published. Required fields are marked *