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.