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.