Proc-gen IP-Infringement-Ship

By Paul Spooner Posted Wednesday Sep 25, 2019

Filed under: Projects 10 comments

Before getting into the meat of this article, I’m going to revisit a couple previous articles’ content and the updates I’ve made to them. The changes aren’t really significant enough for an entire article on their own, and I’m eager to keep moving forward with this project instead of endlessly revisiting past accomplishments. So first up, there’s a new version of the calculator module. It has cyclic nesting detection nowbrute force by iteration count, but better than nothing and re-factored for clarity. Oh, and I did a couple bug-fixes. Or, not really bugs? The system was functioning as intended, but there was some unintended behavior happening in there that I rooted out. For example, the resource list had double entries for nodes which contained other nodes, but did not themselves appear on the list of nodes to solve. I suppose it made it solve a little slower, so, optimized for performance? I was also hoping to detect negative resource balance (which the first iterationthe one without nesting had) but I haven’t settled on an elegant way to do it, and I’ve been too busy to wallow through a naive implementation.

Just wanted to mention one thing more about the code. You’ll see near the top of the page the following odd line:

DEBUG = False #True #

Which is designed for ease of Ctrl-select and copy paste to quickly toggle the settings. I’m curious if it works in other text editors, but in all the ones I’ve used this lets you toggle in four “key strokes.”how do you define number of strokes with modified key presses?
Latest Version (0.2) here.

The other one was your dose of star-field for the article.

Can't stop the lens flare... from exhibiting proper effect overlap.
Can't stop the lens flare... from exhibiting proper effect overlap.

Similar changes here. Changed the “flare” from a “dialate” modifier to a Bokeh Blur. Added some more effects to the nebula, to make it more stringy. And of course re-factored the whole thing to run a little faster.

Blender file here

Okay, so now that’s out of the way, we can get back to:

Moar Space Ships

While I was making the visuals for these articles several weeks ago, one of my sons asked me if I could make Commander Keen’s spaceship. And I said yes, I can do that, no problem! Commander Keen was probably the first “real” video game I played, and I had tried to model the ship before back when my skills were less developed. It also fits pretty well with the mission of getting comfortable with the star-ship modeling process. So let’s take a look at the ship itself! Or, rather, let’s all do an image search for the “Bean-with-Bacon Megarocket” because I don’t want to get in trouble for re-posting other people’s IP. Got it? Took a good look?

A few things to note.

First, the high-res version from Keen 4 is nearly a perfect side-view, which is great if we were making a technically accurate reconstruction. It’s also noticeably different from the side view in Keen 1, which is terrible if we want an accurate reconstruction because now there’s conflicting reference! Oh well. This wasn’t supposed to be perfect. We’re taking the ship more as an inspiration than a blueprint. What we really need, though, is another view! These two are from the side. Maybe a perspective view? Fortunately, there is an excellent one on the Keen 3 splash screen, showing the general flattish shape of the fuselage. Unfortunately, there’s another one in the Keen 4 splash screen, which depicts a much taller and squarish body. Both disagree on the shape of the wings as well, one showing rectangular wings and the other with a leading edge swept somewhat forward to meet the curve of the fuselage. All of the reference, though, seems to agree that the wings join the fuselage with a hard angle. If only there was some reference looking straight down on the ship!

There is! In Keen 2, right at the start of the game. The down side is it flatly contradicts the wing configuration of all the other reference art available, showing an integrated fuselage and wing, and a curved windscreen. The up-side is this is easily the coolest presentation of the vessel, so I used it wherever possible. In this case “wherever possible” meant “in the 3-projection reference sketch I made.” Fortunately for all of you who have been thinking this article has way too much words and not enough pictures, I drew the sketch myself, so I feel confident that Shamus won’t get sued for putting it up on his website.

Unfortunately for those same people, I'm not a great artist.
Unfortunately for those same people, I'm not a great artist.

So from there it was a relatively simple matter to make a symmetrical subdivided mesh hull. I was intending to make the hard edge between the wing and the body, but it just looked so amazing with the smooth transition that I had to keep it that way. After adding a window, a couple of guns, some landing gear, and the iconic vacuum and hooch on the back it looked something like this.

It's more of an airplane than a spacecraft.
It's more of an airplane than a spacecraft.

As I just mentioned in the image description, this doesn’t look very “space” to me. It’s too streamlined. Too compact. Too, airplane I guess. On the other hand, the strict symmetry and unified design looks great! I’m certainly going to need to revisit this style.

Here’s the Keen Spaceship blender file if you’d like to play around with it.

And, as long as we’re at it, may as well toss it on the background.

Space ships in space!
Space ships in space!

So, we have a “symmetrical” spaceship from a children’s media series. As long as we’re on the topic, let’s visit the classic target for IP infringement by way of a “circular” spaceship. That’s right ladies and gentlemen, it’s time for the:

Calvin and Hobbes Segment

So, personal story, Calvin and Hobbes was a hugely formative comic strip for me. I learned to read at around the age of three, largely so that I could read the comic in the newspaper. I admired Calvin’s daring and bravery, and learned vicariously through his stubbornness, foolishness, and failure. I don’t recall ever playing Spaceman Spiff explicitly, but the character was certainly an inspiration for many of the make-believe sessions that my brothers and I embarked on. I suppose the character was too clearly a symbol of Calvin’s constructed anti-social conflict with everyone around him for me to adopt it wholly, but I suspect that, in the deepest longings of my heart, careening around the cosmos in a little shiny red flying saucer was what I have been hoping for in Spore and No Mans Sky and so many other space adventure games.

So, Spaceman Spiff’s Spaceship is special to me, probably more so than that of Keen. As before, here’s the reference sketch I made for the vessel.

There's almost nothing to it.
There's almost nothing to it.

And, after a very little bit of work, here’s the 3D model.

What a cool ship.
What a cool ship.

There’s something about the bare minimum spaceship here, with just a hint of concession to aerodynamics and stylishness. I really wanted to make the internals of the cockpit as well, so I did. Here’s the 3d model of Spaceman Spiff’s ship.

It's the perspective I've always wanted.
It's the perspective I've always wanted.

Next time I hope to try making much larger and more complicated ships from reference. On the other hand, maybe I should stop putting it off and start procedurally generating variants on these little ships. Or give it up and go off on proc-gen astrophysics! Let me know in the comments if you have any preferences one way or the other.



[1] brute force by iteration count, but better than nothing

[2] the one without nesting

[3] how do you define number of strokes with modified key presses?

From The Archives:

10 thoughts on “Proc-gen IP-Infringement-Ship

  1. Sorta off topic but….. it’s space related. has a free giveaway for Freespace 2 for the next 38 hours (at the time of writing this).

    1. Joseph says:

      At my time of reading this there was only 8 minutes left to snag a copy. Cheers for the heads up.

  2. Syal says:

    Man, I never realized how much I wanted Spaceman Spiff to show up in every space setting, until this post.

  3. Ross Smith says:

    If you write “DEBUG = 1 == 10”, it only takes one keystroke to toggle it.

    This comment brought to you by Lazy Programmers R Us.

    1. Philadelphus says:

      There’s also

      DEBUG = False
      #DEBUG = True

      Toggle comment on second line as desired (either one or two keystrokes depending, as noted, on how you define multi-key sequences). :)

  4. BlueHorus says:

    You’ve done Spaceman Spiff’s ship wrong. It needs clouds of smoke billowing out the back with a speech bubble filling most of the screen declaring that ‘SPACEMAN SPIFF IS GOING DOWN!!’

    Poor guy spent more time crawling out of the wreckage of his ship than actually flying it, as I recall.

    1. Spiff 4 Lyfe says:

      I’m pretty sure something like 3/4 of his adventures start with him crash-landing on an alien planet.

      1. Paul Spooner says:

        Spaceman Spiff alien world generator? Hmmmm…

  5. Galad says:

    Ohh, I only discovered Calvin and Hobbes a few years ago, being on the other side of the great big honkin’Atlantic pond, but I love it dearly as well. It’s such a human, down-to-earth comic, with the amzing bonus of mr. Waterson, its creator, also being a very down-to-earth person, refusing to sell out on it.

    1. BlueHorus says:

      I’m kind of sad that Waterson retired from comics. Given the sentiments he expressed about TV in C&H, I’d love to know what he thinks of computer games and the internet.
      And I bet he’d have some interesting thoughts on social media as well…

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="">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 *