MP EV MVP Retro

What I’ve learned from breaking my own rule.

I remade a game again

EVMVMVP is the awkward initialism for my latest project; a multiplayer EV-like. You can download it here, and look at the source code here. I know I said I shouldn’t do it, but I really wanted to learn Godot and having a multiplayer server with multiple levels seemed like a really interesting problem to tackle. Implementing a bunch of stuff I already know pretty well but in a new engine and language has been a fun ride. I’ve jotted some notes down about the project so far. I’ve saved a deep technical discussion of Godot for another post.

Using an engine is well worth it

After flythrough.space I decided that I wasn’t going to build too much from scratch next time, not was I going to fight against tooling. The options I considered for FTS where Panda3D and BabylonJS. However over the course of that project also tried out Unity and Godot for small side demos and ended up liking Godot (and it’s permissive license and thriving community) enough to go all-in. In retrospect this was the absolute right move and I regret nothing.

Working With Onyx’s Sprites

I’ve been staring at these sprites on and off for something like fifteen years, itching to put them into a game. The original models used to render them are long gone, but Onyx (in a tutorial) explained how to separate out the engine glows. Working with these sprites feels like stepping out of time. They’re from the 90s. There are dithering tricks here I wouldn’t even imagine. They use a tiny palette but they’re so damn weighty. Present. Metallic when they need to be, plastic when they want to be. They tend towards the Star Wars / Used Future look. They invite stories to be written about them. And the planets are just absolutely lush too. Something about that limited palette…

Testing with real people is essential

I’ve been nagging more people to play this one. On the one hand, it’s much easier to convince someone to play your game if you can play it with them. On the other hand, you really need to do that testing or you will (like I did) find out that the sync method you’re using is totally busted and you need to replace it with interpolation. Furthermore, you’ve got no idea if your game is fun to anyone but yourself unless you subject it to ruthless testing by people who will give honest feedback. It becomes very easy to get settled in and work around horrible UI issues you’ve coded because “well, I know how it works.”

The ability to test solo is essential

Wrangling people for a test is hard. You need to be able to fire up an instance of your server and client with minimal effort or you’re going to wait too long and leave a bunch of bugs that you’ll be scrambling to fix when you finally get people around to test with. And absolutely nothing is more frustrating than the stars aligning for a test only to have a showstopper rear its head at the worst possible moment.

Procedural Generation

I had a conversation with a coworker about EV games and roguelikes. They made a claim that I’m not sure is true but definitely opened my eyes-they thought that the star maps in EV games probably had been procedurally generated-once.

Actually hand-crafting a full EV map is a bit of a process. One thing I never finished doing in FTS was populating all of the systems.

Meanwhile, Mag Steel glass has developed a really cool universe generator spreadsheet. I figured I could leverage it to make a map. Traditional EV games require you to specify exactly who spawns in what star system and FTS carried on that painful tradition. For this one I had simpler rules; factions had starting locations and then grew “influence” where planets (or stations) would belong to them and their ships would spawn. If two areas of influence overlapped, they’d fight.

Document enough for people to get up and running locally

Port forwarding is a lost art. There was much grumbling when my friends and I went to go start a game of Valheim; luckily I’d learned to properly port forward as part of this project! If you need a server for people to play your game, you can’t rely on your master server; you’ve got to give people an option to join localhost and put it in your manual/readme. Having images in the readme also helps show people what your project is about; this is especially important for games.

You don’t get cross platform for free

Using cross platform technology does not absolve you from cross platform testing. All of your target platforms might have the same features but they may all have different bugs for you to work around. I’m developing on linux out of what is probably just bloody mindedness at this point, so when I did my live demos on windows I often learned exciting new things like ‘your sound exports are busted’ or ‘only one computer can be assigned to a given port by a given router’ or ‘you need to version bump the editor for correct mac exports.’ Guess which one of those lead to an incredibly embarrassing platform bug report!

Video Tutorials are worth it

Part of my commitment to overcoming my stubborn hangups was relenting and watching video tutorials. I still strongly prefer written tutorials as a medium but the content is moving to video. For example:

This (and the followup on extrapolation) gave me enough to totally re implement my networked movement.

Working In Public

I post progress updates on discord channels full of fans from the old days, and regularly demo the game with friends. This has been a source of motivation and helped me stick to a more iteration focused (and less “well, I’ll go off for a month and make all of the models/textures/features”) work habit. I’m not sure I’m going to do this for every project; part of why I did it for this one was I wanted to spur participation and that didn’t really happen. Very few people who I didn’t know personally went to the trouble of getting the game running. Part of that is because it wasn’t immediately approachable (you need to host or find a server then run another client to join it) and wasn’t immediately grippy (ok, I can buy a ship, now what?) Any amount of friction is going to turn away potential players, and if you’re used to playing rough unfinished demos this can become a blind spot. But beyond even that, getting someone to try something new is just plain hard.

People respond to Video

At the end of the day, pictures and text don’t cut it for sharing a game. Games are animation. People are used to watching streamers. You need a video of your thing and it needs to show off what the thing is about, including how you interact with it and why it’s compelling. This was my attempt:

Have features and fixes gone in since that video was made? Sure. But it’s still the best tool to show off what the project is about.

Parting Shots

Has the project met its goals so far?

  • Learn the Godot engine: ✔️

I’m comfortable with the technology now; expect future prototypes to be more rapid.

  • Use Onyx’s Sprites in a game: ✔️

I used most of the ship sprites themselves and lovingly separated out the engine glows for even the ones I didn’t use, in case someone in the future wants to use them again. Cosmic Frontier mod anyone?

  • Build a reusable platform for multiplayer EV-clones: ✔️

Maybe this is a partial check. If someone has an idea and that idea is based on multiplayer EV gameplay, I’m confident that if they’re willing to learn Godot they could at the very least copypasta big chunks of the MPEVMVP codebase and get something running. Or they could fork it, replace everything, add missions, remove multiplayer, and make an EV clone real fast.

  • Discover if EV gameplay works in multiplayer: ✔️

Learned important lessons about how much bullet hell spam a networked game can handle, and as a straight dogfighting sim it let me figure out what is and isn’t fun in PVP EV.

  • Build a game people want/like/play: ❌

As far as I can tell, nobody enjoyed playing this besides on demo night. The service I think people want this game to be is beyond the scope of what it can be with a team this size.

4/5 ain’t bad. Thanks a bunch to everyone who tested it, gave feedback, and flew too far to find the center of the map again.

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 a good 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!