Flythrough Space: Beta

It’s been a couple of months since I last wrote about Flythrough.Space. It was the first time I ever got any feedback on the project from people who understood what I was going for, so it was pretty informative. I had productive discussions about perspective and (as I’d feared) overlapping 3d models are a bit weirder than overlapping sprites.

In any case, if you tried it before and thought it was rubbish, you might as well give it another try because it’s radically different, at least in appearance. Go to the settings menu and try out the different options. Message me if you want cheat codes to try different ships (or figure it out from the source!) When in doubt try resetting the settings or refreshing the page.

New Features:

  • Sound effects. Pew pew, etc.
  • Anti-tunneling collisions. Players complained that it was hard to hit stuff; this was partly because of a well known problem called collision tunneling. I bit the bullet and ported over a line collider, so now fast-moving shots should connect more frequently.
  • Implemented a settings menu so that as I started to add GPU and CPU hungry effects I wouldn’t leave people (or my own laptop) behind. It’s slightly jank so I recommend refreshing the page after you leave the menu to make sure the settings take effect.
  • Guided weapons.
  • Asteroids! Mine them for fun and profit! Blow the metal (orange) ones into very small (hard to see) pieces and scoop them up by flying over them. Then go to a market and sell!
  • Lighting effects. Though each star system could already define its own lights, now ship explosions cause a flash in addition to particles. I was reading The Dark Forest and the descriptions of space made it necessary. Also shadows are in but don’t work very well.
  • Piracy! You can now plunder disabled ships for cash and cargo. Press ‘B’ when you’re close to a disabled ship.
  • Starfield. Classic space videogame effect… it lets you see where you’re going. Got some good help on the babylonjs forum with this one. I originally tried to build it with a shader, but gave up and did it with a massive number of sprites.
  • Perspective (or, well, the camera looking at your ship from an angle) is now optional. If you prefer your space-shooters to be top down (because planets getting bigger and smaller is disorienting, for example) you can have that now. An ortho camera proved to be not quite what I wanted, though it would still be cool if combined with a vertex shader that applied perspective to individual objects, to better achieve the look of a sprite-based game but with the lighting benefits of a 3d engine.
  • Impact Physics! When you hit stuff, it gets pushed!
  • Zoom! It became too hard to debug weapon placement without it, so I added it in. Use [ and ] to zoom in and out.
  • Beams! Take an XIC Prospector or drillship out for a cinematic experience.
  • Textures. Ships have them now, including an (optional) glow effect around emissive (self-lit/glowing) bits which I think look pretty cool. Each model has multiple (per-faction) skins which are easy enough to palette swap and add more.
  • Fixed various bugs, including making the map show up right away when you pause the game (now you don’t need to drag it) and explosions now show up reliably.
  • Particle effects everywhere!
  • Every item (ship or upgrade) should be available for purchase somewhere. There’s no notion of unlocks, you just need to get enough cash and drop by the right stellar object. There’s now a test which enforces this!
  • Trade routes. The trade system is still a bit confusing, but the fluff text should direct you to some decent trade routes (or some very lucrative ones, if you are willing to brave pirate infested space!)
  • Alert text at the bottom to tell you, for example, that you’re too close to the system center to engage your sidereal drive (jump to another system.)
  • Optional ‘arcade’ mode where shots don’t inherit velocity from the things firing them. Should make hitting stuff easier. I think it matches the behavior of other genre games. I don’t like it very much myself, but that’s why it’s a setting.
  • Carriers can launch fighters! They don’t do anything particularly clever yet though, they just use the normal AI for the most part. Q to launch, (hold) R to recall, F to attack your target.
  • Saving and loading, so your progress isn’t erased every time you land on the page. Like settings, for now saves are using local storage. You can also upload or download a save file from the same menu.
  • Pause button now takes you to the main menu; press ‘m’ for map and esc to return from the map. This means I don’t need to debounce map button presses and as a result it’s less janky.
  • You can now see which systems are mission destinations in the map, even if you haven’t explored them yet. An orange circle around a system indicates that your mission is there.
  • Code changes: Entity manager is now a singleton, so I should not have to pass it around everywhere. Refactored the HUD into individual widgets. Ships can now inherit from other ships with the “extends” property, which should cut down on clutter in ships.json and make nova-style ship variants much more possible. Input is a lot less gross.
  • Control changes. Using CTL as the fire button wasn’t feasible on Mac. Same deal with +/- for zoom.
  • Data Changes: Cleaned up terminology for factions so it should be much easier to read the data files.

Where we go from here

So what’s next? Well, I’d really, really like feedback. Yelling into the void is less than satisfying. I’d like people to give the game a spin and tell me how horrible it is. One thing I’m especially concerned with is making sure the ships feel right – not too quick, not too fast, not too slow. The weapons could also be a lot more balanced. The biggest improvements to the game at this stage will be all about tweaking the numbers. Nothing would delight me more then someone downloading the game and trying out different tweaks to see if they can find the fun. Yes, I realize that this would ideally be done in the prototype rather than the final game but hey, not all projects can go perfectly.

What do I still want to add? I’d like to fill out the galaxy with more planets and more NPC placement. If anyone wants to write planet descriptions I’ll do my best at editing. A lot of the Loyal Suns, League, and a bit of Freehold territory still needs attention. More diverse asteroids would be cool too. As far as big code features, well, fleets are a big one. More missions would be nice. A more in-depth hailing system to allow planetary domination would be cool and give the game more of an end-state. Also, the AI is full of bugs and would really benefit from the level of unit testing I’ve applied to player.js.

I may take a hiatus from development for a short while, or I might not. I keep telling myself I’ll try to work on another project, but I keep coming back to FTS.

Don’t remake an old game

I’ve seen this way too often. A flashy trailer, some assets, a community project, a feverish dream at reclaiming the glory of games when they seemed new to you. I have made this tragic mistake, but you don’t have to. No matter how much you want to, do not pick up a 20+ year old video game and start trying to make a remake (in Unity! In Unreal! In Godot!) I’m not saying that you will fail, but I’m saying that you probably won’t get what you want.

You won’t get the IP

In order to use the name “Your Favorite Game” you will need to purchase it from the existing owners. If nobody is producing sequels it’s probably because the IP holder has chosen not to. You will not be able to contact the IP holder and if you manage to, they will not sell it to you. If they do offer to sell it, it will be at a price way outside of your price range. If you wanted to purchase it at that price, you’d need to take out a loan, you’d need a business plan, and the project would very quickly not be fun anymore. You could also just sort of not quite use it and hope that the IP holder does not decide to shut you down. But getting the name is extremely important, because the path is littered with other semi-remakes that didn’t use the name, and you didn’t like any of them. Somehow, none of them had “it” because you’re still looking at remaking the old one, not playing someone else’s remake. Will you fare better?

The myth of fans

But I have a ready-made audience! You cry. Except you don’t. Videogames are massively more popular now than they were when Your Favorite came out. The audience for games has increased in size but the number of fans of Your Favorite has remained constant. It might be because genres have moved on. It might be because other franchises took up the banner. But the number of people who potentially enjoy The Remake is actually much smaller than the original fanbase was. Some people will have drifted away and don’t care anymore, some have probably moved on from gaming. Some may never have existed, because you don’t know what the sales figures are for Your Favorite and it was released before social media and steam statistics so you can’t really be sure what the size of your audience is. What about the number of active posters on the discord/reddit/forum where people desperately wish someone would finally come out with The Remake? That seems like a reasonable proxy. Go find this number (I bet it’s less than 100, but you may have better luck.) This is likely to be the maximum number of people who will care about The Remake. If you still want to embark knowing that you’re working for that audience exclusively, read on.

The myth of memory

So your intended audience is the people who are still online right now clamoring for The Remake as they have been since Your Favorite didn’t get the sequel it so richly deserved. But these will also be your harshest critics. Like you, each individual who played Your Favorite had an idea of what the game was, but they’ve each had twenty plus years to elaborate on that idea, and these imagined games have diverged. There will be a multitude of conflicting expectations which will mean that you cannot possibly satisfy them all, or even most of them. Indeed, because they (and you) have had years to embellish this imagined sequel and for their expectations to diverge, it’s possible that no game will satisfy them-no game will ever live up to what they want. The Remake may not have a ready-made audience, but it does have its first and harshest critics. But surely new technology will allow you to wow them, right?

The myth of progress

Making games is so much easier now! Surely if I take modern tools such as Unity, Unreal, Godot, Source, Lumberyard, etc, I will be able to rebuild this old obsolete game with minimal fuss. This may be true for arcade games like Space Invaders or Asteroids, but Your Favorite is only about 20 years old, so this is a misguided attitude. The tools of game creation are very good at making modern games. If you are building a sophisticated but off-the-beaten-path project, you are as much on your own as the original creators of Your Favorite where. Which is not to say that you can’t create original titles with modern tools-just that by constraining yourself to an archaic design, you may not be winning yourself any saved effort. You’re not a wizard from the future, coming back to build a castle with magic spells… you’re pounding in nails with a cordless drill. Modern game engines have primitives for things like “guy walking around” and “wheeled vehicle.” Trying to mimic the behavior of weird bespoke setups from the time before physics engines will result in very little off-the-shelf stuff to use. Same goes for a million other quirky modes of interaction with games that have ultimately been replaced with stuff like “reasonable defaults” and “realistic physics.” You’ll be reinventing the wheel constantly. You might be able to make it look nice, but many (most?) such projects stop there.

The Right Move

What should I do? If you really want to share the joy that Your Favorite brought you, you need to figure out what it is about the game that you found enjoyable. Consider the cargo cult; to recapture the bounty of cargo drops, people (so the story goes) built elaborate fake airstrips, thinking that if they created the right conditions, cargo would appear. I see the same in remakes – “if we take the art assets (or clone them, or redo them but off-brand-enough that we don’t get sued” and keep the gameplay exactly the same, it’ll be awesome!” Don’t do this. What you need to do is break down the design of Your Favorite, and figure out what it was that made the game compelling. “Everything” is not an acceptable answer, you need to be critical. You need to think about what you can reproduce in $CURRENT YEAR and what’s an artifact of its time, like compromises due to affordances of the platform, or time constraints. You must translate those compelling aspects into your future projects, and discard the anachronisms and sacred cows and genre conventions that belong to the past. Make your own game.

PAX East 2020

On the eve of the Covid-19 Pandemic, with the stock market tumbling, hundreds (thousands?) of game fans breezed into a convention center to try some new stuff, purchase apparel, and frequently use hand sanitizer. It was everywhere.

Image
There’s something sinister about the rise of Discord, but I can’t explain why yet

Thursday was far better than Saturday, so definitely go then if you can. I was able to play far more games, and the boardgame tables where much easier to navigate.

Exciting New Games

While speaking to the creator of BlazeSky, I name-checked Escape Velocity and he knew what I was talking about. But the more I look at it, the more it looks like Empty Epsilon/Artemis. The different styles of play (rescuing people, combat, exploration, etc) are represented by different characters who give you quests, which is a neat approach to writing storylines. I found the banking camera made it difficult to reason about where my shots where going, and I hope that at launch there’s an option to keep the camera steady while the ship turns, but even if there isn’t I’ll probably play the hell out of it.

Another game that was physically demanding just due to its camera was Sludge Life. After you fight through its extremely elaborate recreation of a 90s desktop interface you’re dropped in a colorful, heavily distorted 3d environment. Very Getter: Headsplitter. The distortion (I think the vertical FOV was unusually high or low or whatever) was jarring and slightly dizzying. I predict that this game will be a stoner-hit of Rez proportions. Devolver is playing in the same space as Adult Swim here.

Watched some people play Dunk Lords. The world is ready for strawberry-headed athletes. You could dismiss it as Space Jam: The Videogame but stripped of its bizzare branding, the concept of cartoony basketball feels pretty novel. Sports games that attempt to simulate a sport (like EA’s catalog) or Be a sport (like Rocket League) aren’t my jam, but using the basic rules of a sport to do something unique or new definitely is.

Watched some Panzer Paladin play. There was an enormous reproduction of the cover art, standing out against the crowd. Makes me wonder what the differentiator is. It looks like a Gameboy Advance game (specifically, it looked like Metroid) to me, and though the mechanics where cool and smooth, I wonder who’s buying enough copies of this to justify an enormous booth at PAX. What’s the differentiator. Are they just striking at the right moment? Is it the great Anime art? Am I not enough of a sidescroller fan to understand what the difference between it and AVGN Adventure (which we also demo’d) is.

A radically different sidescroller with very clear differentiation was Carrion, a game where the avatar resembles the blob monster from The Thing. I’m not sure what the gameplay is besides sliding and swinging around an industrial environment and eating (?) the little NPCs that run from you.

If you’re itching to play Star Citizen but don’t like social interaction or having to hire an entire clan to operate your large spaceship or pass flight training to join an org, and also want a game that’s finished, I unfortunately can’t recommend Everspace II yet, because it isn’t finished either. But what I did play compared favorably to Star Citizen, and I venture to say that it’ll be done far sooner. The vision of space was colorful and dense with things to explore and tractor beam into your ship.

I also got a chance to demo Brigador Killers. In addition to the stompy robots seen in Brigador, you get to play as an infantry suit or a giant floating wrecking ball. The controls are also slightly different – rather than absolute direction, your WASD controls are now relative to the mouse. It took some getting used to, especially with the wrecking ball.

Parting Thoughts

Check out the screen attached to this expensive of a gaming PC. I’m not sure words will do it justice, but if you’ve been here, you know.

Image
The dreaded launcher update.

I also demo’d a Cookie Clicker clone which I won’t name to protect the guilty. It pitched itself as being about the development of life from molecules to technological singularity. However, in reality it is a cookie clicker clone, the meta of a game (buy stuff on a tech tree to augment your abilities) without the actual gameplay (you score by just tapping the screen. Anywhere on the screen. I wondered again what the filter was between successful games and trivial games. Was presence at PAX a marker of success or a desperate gambit? I told myself I was done with the game, but then I reached down to the tablet and tapped it a few more times.

Unrelated image of a book that was on sale at the convention

A gem: Multiverse In Review

Multiverse In Review is the type of treatment that makes reading a bunch of background story for a tabletop game worth it. Source by source, the author is examining every available piece of Fluff in (and out of) the Magic: The Gathering cannon, with (so far) an emphasis on the type of sources that most fans never would have seen, especially in the pre-internet “before time”.

The most fascinating bits are the insights into how the story evolved, and what hidden information those changes reveal. I find these big shared universes very fascinating, and would love to see a similar treatment of, say, the Warhammer 40k setting. A good example, if you want a horizontal slice, would be these three articles on the conception of the Antiquities story the Antiquities comics and the Jeff Grub novel that slots the story into the modern (ish) cannon. Every article is a good read if you’re into that sort of thing.

SYLP is dead, long live SYLP

emf.sdf.org, or “The Shipyard Liberation Project” hasn’t been updated in years. This is mostly because I haven’t had anything to add to it-I think I got every last graphic I could, contacted everyone who’s email address still worked, etc. I’d also all but run out of space for my SDF account (I even had to host the 3d models from Ares on my own site.) Somewhere along the line, I lost access to my SDF account, but by then I was using Unix every day so I didn’t really miss it.

Fast-forward to now, I’ve realized that the fine folks at the Internet Archive have a sweet upload utility that allows you to upload whatever files you want, and (critically) add metadata to them so that some sort of context can be preserved. So I’ve uploaded those files to the archive, you can enjoy them here. That puts out the “what if SDF deletes my account” fire, but some stuff remains:

  • Files with appropriate licenses ended up on OpenGameArt rather than on SDF because I figured more people would see/use it. They ought to be mirrored on the archive.
  • Someone from the Ambrosia forums kindly ripped the graphics from a TC called “The Novel One.” I’ve got the graphics somewhere, but I haven’t been able to find the thread.
  • The “Open Source TC” had some assets at some point, and the notion was that anyone could take it and run with it. I’ve never run across a copy of it (it was hosted on DropBox of all places)
  • The list of missing shipyards on the SDF site still stands – if anyone out there has any of those graphics, I’d love to see them!

Estes and Escape Velocity’s Rocket Design

I first noticed while thumbing through old Estes ephemera on this site  when I saw it staring me in the face:

Snippet from the 1990 estes catalog
1990 Estes Catalog

Estes is a company that has, for a great many years, built and sold flying model rockets-as in, you build them, stick a solid fuel engine in the back, and launch it into the sky. It’s very much an orthogonal hobby for someone who’s a fan of spaceships. The same camp where I learned the art of model rocketry was where I found out about Escape Velocity, which brings us back to the point. If you’re an Escape Velocity or EV Nova fan, you probably recognize that as fictional space pirate “escort Frigate” the Atinoda Kestrel.

A diagram of the Kestrel, with labels for flavor
The Kestrel

Probably the most iconic ship from that game, it made its way into EV Nova as a post-game bonus option and NAEV as its poster-ship. Matt Burch, author of Escape Velocity, had this to say in an Ambrosia Times interview:

Ambrosia Times: […] Is it true that some of the graphics in EV are the result of a model rocketry hobby?

Matt Burch: Well, I used to build model rockets when I was little, and a couple of the ship designs in EV are loosely based on my memories of some of my favorite Estes kits.

That confirms my suspicions. So, which other ships are based on Estes rockets?

 

From the 1990 catalog, we’ve got these two:

Cropped catalog page of an oddly configured two-finned rocket
Estes Star Seeker

EV graphic from Evula.com
EV’s Executive Transport

Clipping from Estes catalog
Estes Strike Fighter

EV graphic of the lightning
EV’s Lightning Fighter

I’d seen the Rebel Cruiser described as having “babylon 5 roots” but I think its lineage is very clear from this:

Screen from a 90s Estes catalog
Estes Starseeker

Screen from EV
EV’s Rebel Cruiser

I’m less sure about the Clipper (which I think is the astro blaster.) The configuration is the same (two back-swept wings with giant winglets and canards in the front.)

Astro Blaster from the 92 catalogue
Estes Astro Blaster

Screen from Escape Velocity
Clipper from Escape Velocity

There are two possibilities for the Manta, and I’m not sure which one it really is, despite it sharing the name with one of the rockets. Maybe a combination of both:

Clipping from estes catalog
Estes Delta Clipper from 1986

Manta from 1994 Estes Catalog
Estes Manta (’94)

Screenshot from EV
EV’s Manta

So, several of the ships in EV share more than a passing resemblance to Estes rockets. There may be others that I’ve missed, or other sources of inspiration. I’d love to hear about them!

Making a model for FlyThroughSpace part 2: Export

Note: This post is way out of date, expect a new one soonish.

Apply the mirror modifier

Hit apply on your mirror modifier. Be careful: further changes will not conserve our precious symmetry! I advise that from this point forward you refrain from saving your work, or at least save it in a separate file.

Rotate the model

We’re going to do the rotation using hotkeys. This makes it easier since you’ll need to do this for every model.

'R' (rotate) '9' '0' (ninty degrees) 'X' (along the Y axis) 'CTRL'+'A' (Apply)

Then another transform:

'R180Y' 'CTRL' + A

Export

Next you need to install the babylonjs exporter. There are instructions here. Then export the scene. .babylon is a JSON format, so you can now hand-edit anything you’d like into it, such as the proper texture file. Note that on my machine the exporter crashes Blender but does do the export.

Making a model for FlyThrough.Space

Ever wanted to make a 3d vehicle model?

What follows is an extremely minimal (and probably very wrong) blender tutorial. I’m mostly posting this so that I do not forget, but I know that there’s an audience out there that just wants to use Blender to do quick modelling tasks, and this is the shortest path I’ve found to achieve that goal. This post explains how to make and texture the model. A subsequent post will explain the aspects that are specific to BabylonJS (and, thus, FlyThroughSpace)

Step 1: Bilateral Symmetry

Most scifi spaceships are bilaterally symmetrical, at least from the outside. I won’t get into for the rationale for this (if nothing else, cars and airplanes count.) And though there are Notable Exceptions, even those generally start from a symmetrical base with variations on each side.

We don’t want to have to recreate every change by hand, so we’re going to set up our blender object to automatically mirror our changes along the X axis.

Switch the “active data to display and edit” tab on the right to Modifiers (Wrench icon)

Now, add a modifier of the type “mirror” by opening the “Add Modifier” dropdown and selecting “Mirror”

One thing I notice here is that it offers up what I think is the equivalent Python code so that you don’t need to do this task in the GUI. A laudable goal.

Now select the following options and don’t hit apply.

Axis: Y, Options: Merge, Clipping, Vertex Groups

What follows is my least favourite step, because I’m 100% sure I’m doing it wrong. Your cube is half-repeated, because it was already symmetrical and repeated along the Y axis. You need to get rid of the real part overlapping with the mirror part. What I do is go to edit mode, set the selection mode to face, and then slide the face out of the mirrored side, then delete it. I encourage finding a more reliable method and leave it as an exercise to the reader.

At the end of this step, you should have half of a cube mirrored to make a full cube.

Half a cube reflected into a full cube

Step 2: Make your spaceship

I won’t claim to be an expert in actually using the modeling tools in Blender. When I first tried my hand at making 3d objects, it was in Lightwave, when your basic tools where Extrude and Slice, so that’s what I usually use to achieve the shapes I’m looking for. There are probably far better tutorials on how to actually model in blender out there, so feel free to consult some of those. I’ll be here, extruding faces and sliding edges around until you’re back.

Not especially spaceship-y yet

Some subdivision and the knife tool go a long way

You can press ‘K’ to select the knife too, drag it around to add vertices and edges in the middle of faces. You can delete troublesome vertices and re-close your mesh by selecting three vertices and hitting ‘F’ for a new face. I won’t pretend to be an especially good modeler. Here are the results:

Step 3: Paint on a texture

Use the circle select in edit mode (faces) to select every face. You’ll need to rotate the model between uses of the select tool to get all of them. Now in “shading/UVs” press “unwrap” and select “Smart UV Project.” Now you can switch your bottom window to “UV Editor” mode and scale it up a bit (icon in the bottom left)

Now make a material for it, set the view mode to texture or material, and load up some random texture to paint on.

ugly tiger looking thing

Well, that wasn’t very good. There used to be a way to just paint a single color and I was going to sort of airbrush it up, but I can’t find it anymore (leave a comment if you know where it is!) If you _must_ work with solid colors, you can texture paint from solid colored textures I guess.

If you haven’t saved your work before, do save it now and do not keep saving it after this step! We’re going to do some destructive editing in order to export for BabylonJS