FlyThrough.Space: Alpha Release

I’ve been sitting on this project for way too long. Doomed the project by not soliciting feedback early enough. Failed to heed the warnings of Agile. Kept coming up with reasons not to tell anyone about it, promising that I’d make it public after I added just one more feature. But I think there’s enough that people will be at least intrigued. Or annoyed. The point is that they’ll feel something. I’d be interested to hear any feedback on what’s there and which planned features you’d find most compelling or what would make you likelier to make a mod.

TL;DR: Code Here: http://github.com/eamonnmr/flythrough.space

Play Here: http://flythrough.space

Neat Features:

  • It’s written in Vanilla ES6, only depends on one library (the Babylonjs engine) which is included, so you can hack away on it to your heart’s content without setting up any sort of development environment. Just open up the files, edit them, and host them (locally)
  • 2.5d perspective in a full 3d engine with 2d sprites for planets and projectiles, and a 2d overlay on top.
  • EV/Endless-Sky-esque with the ability to trade cargo, purchase a new ship, add weapons, and do battle in asteroids-style high-stakes space combat. Arrow keys to move, left control to shoot. The default weapon may run out of ammo though!
  • Visible weapons on ships. It’s a capability, even if I haven’t added bones to most of the ship models to take advantage of it. If done right I expect it will be super immersive.
  • Original, handcrafted (unfinished) universe to explore. For all of you fans of non-procedural-generated worlds.
  • Open architecture allowing for radical gameplay changes and a totally data-driven model.
  • Press ‘Escape’ to see the star map (bug: drag it around if it does not show up right away). Select a system, exit the map, and press ‘J’ to jump to that star system. You can only see explored systems and systems linked to them, which won’t be very many at first, but there’re lots out there to explore.
  • Press ‘L’ to select a nearby planet and ‘L’ again to land
  • press ‘`’ to select the nearest other ship
  • Select “open contracts” after landing for random cargo missions

Planned Features (don’t count your features before they ship):

  • More missions/storylines.
  • Save and restore game. I’ve got it set up to save and load from local storage, just need a menu to select your save. I didn’t set out to make a roguelike.
  • Secondary weapons. Right now when you pull the trigger, everything goes off at once. Also a prerequisite for stuff like carried ships.
  • Beam-based weapons. Need to add a beam collider to the collision system. Explored adding a real physics system but they’re mostly overkill for this type of game; writing a beam/circle collision system may change that. It would also let me implement anti-tunneling for projectiles (collide a line segment between the previous position and the current position.)
  • Decide what to do with ai leading. You can switch leading on and off with querystring ?ai_leading=basic which will make the AI try to lead its shots. But it uses a basic approximation so it still misses a lot.
  • Turrets. Getting the math, blender export/in-engine-use toolchain set up to make visible turrets on ships has proven frustrating. Some of the code is there but it would take a not insignificant amount of work to finish. Which is probably why I keep putting off…
  • Starfield. Will have to probably do this by hand with star sprites.
  • Nice ship models with textures! I’ve been cranking out kinda lousy models as programmer art (thinking that the final art will maybe have different constraints – visible turrets being a big one), but someday it would be cool to put some more effort into it. Hampered by the fact that I mostly work on this on a train so I don’t usually have room to use a mouse.
  • Sound. There isn’t any. I just haven’t gotten around to it, I can’t imagine it’ll be too hard to throw in there.
  • Escorts/Carried Ships. The AI and collision systems are set up for it, and some recent refactoring has probably opened the door to it. Just takes some doing.
  • Board/Plunder/Capture-this just needs some doing, but shouldn’t be a huge technical hurdle.
  • Demanding tribute/galactic conquest/planetary destruction – would require a bit of additional work, but not much. Unclear to me if this is a feature people really want.
  • Zoom in / out: Just needs the controls rigged up to do this, but it’d be kinda cool (right?)
  • The GUI could definitely look a lot nicer, and the code could probably be cleaner. I’m not a graphic designer.

I plan to keep hacking away on it at the slow-but-mostly-steady pace that you can see from the (lengthy) commit history. If you want to play a complete game now, this isn’t for you. But if you’ve always wanted to hack on an EV clone but the other ones where too intimidating or weren’t 3d enough, maybe this is your ticket. Will definitely check out any Pull Requests (or, for that matter, emailed diffs) that come my way, and I’ll try and do a walk-through of major interesting bits in the code in future blog posts. If you’re still reading this far down, you are the target audience! Let me know what features you would like to see most, what would make this project compelling for you to use/fork, or what utterly repulses you about it. I’m all ears.

Atomic PI emulation setup notes

I mostly game on PC, but at one point I set up a retropi for emulated console multiplayer. Mario Kart ran pretty well (sprites and all!) but BattleTanx wasn’t performing. That’s the N64 game that I probably played the most of, and it’s cracking good multiplayer, even at the 9FPS that the Pi could manage. That was sort of the experience I was after though, so I went looking for something a bit more powerful.

Enter Digital Loggers. There was a kickstarter for a board called the Atomic Pi. It’s about the size of two Raspberry Pis and has an Intel Atom processor rather than the Pi’s ARM core. It’s still smaller than any one of the various consoles I plan to emulate on it, which is a nice bonus.

For this setup I got the Atomic PI with the small breakout board that provides a (more or less) standard adapter plug. I’m using this power brick and this multi USB hub (because there is only one USB port on the board.) It comes with a soldered-in EPROM you can boot from and write an OS to, but OSs on the eprom are painfully slow so I would recommend installing your OS to a MicroSD card like you would with a RasPi. I’m using Lubuntu, and it’s performing pretty well considering the big screen it’s on, I’m sure your favorite lightweight distro will also do well. You’ll want something that ships with a desktop for emulation though

Back to Battletanx: To get it running in Mupen64Plus (which you can install with apt along with a barebones GUI for opening ROMs and managing settings) with Rice video you need only change the config in one way:

ScreenUpdateSetting = 7

There are some glitches (the button that makes the flame tank fire sideways and makes the FLP-E tank flip get stuck) but it’s mostly playable. And Mario Kart still runs great.

LEGO Shop At Home Scans: 95-99

A while back, I was trying to find a specific Lego catalog that I’d looked at as a kid. However, when I tried to find the specific one I was looking for, I realized that very few of these catalogs from the 90s had been immortalized by the internet. However, many of them where on sale for reasonable prices (and Sabrina wanted a Scanner for old family Photos anyway) so I got to work.

? 1995

Holiday 1995

January 1996

Holiday 1996

Spring 1997

Summer 1997

Holiday 1997

January 1998

Spring 1998

Summer 1999

Fall 1999

The raw files are here on my archive.org account, if you find my (largely imagemagick-powered) PDFing of the files inadequate. If the PDFs appear small just zoom in, they’re about as high-res as they can be without creating artifacts on the screens I tried. I plan on also scanning the ones that I personally saved when I was a kid, and will post those here too.

And the specific catalog I was looking for? Turns out it was Holiday 1997. Twenty one years ago. The page I was looking for in particular turns out to be this one.


In Appreciation: Termux

I’ve been playing with Termux quite a bit in the last couple of days. Being able to do development-any development-while standing on the train is an awesome feeling. I think the site undersells what it is-it’s your compiler in your pocket. It’s ssh in your pocket. I’m redoing my website on my phone (the mobile experience is crap at the moment) by editing the sources in vim, then hosting it locally with Python.