it’s not quite ready yet, but I’ve been working on an update for Mysterious Space!
a summary of what’s definitely coming
- support for generic USB gamepads
- fixed full screen lag that some devices were experiencing
- better translation capability, and improved French translation
- a new type of planet: Crystal!
- various, smaller bug-fixes
- much smaller game install size
the long version
behind the scenes, this update includes updates to various 3rd-party libraries, the effects of which you mostly won’t see (more on “mostly” later :P) so why did I bother, if most of the effects won’t be seen? I want to make sure Mysterious Space continues to work on newer computers; by getting away from super-old libraries, I can (help) make sure that Mysterious Space doesn’t stop working when a Windows (or even Steam) update drops support for something that Mysterious Space happens to be using.
one of the most-significant updates was a switch from DirectX to OpenGL. this was happily relatively easy, since Mysterious Space uses MonoGame under the hood. (though I do have questions about MonoGame, in terms of software longevity, but that’s neither here nor there…) the switch to OpenGL does two major things that you might actually care about:
- allows the use of non-Xbox-compatible controllers. for example, I’m now able to play Mysterious Space with an N64-style USB controller – about the weirdest test case I could imagine 😛
- makes a cross-platform release of Mysterious Space more possible. (though there would still be a bit of work to do, and it’s not something I’m looking to do right now.)
the switch to OpenGL did NOT actually fix the full-screen lag issue; that was something bad in my full-screen logic (which I also changed, but the details there are probably not super-interesting :P)
finally, I want to mention the very-reduced game size in this release: this was accomplished by encoding the music as ogg files. previously, they were flac, because I’d had trouble getting ogg files to play reliably. later, for different reasons, I switched to using fmod for sound and music playing (MonoGame’s player is (was?) very bad at looping music). fmod handles ogg files flawlessly, it turns out, but I’d never tried!
some other changes I am gearing up for, but which may or may not be included in this update:
- a return to itch.io releases (near-term)
- true pixelated graphics (long-term)
- voice commands?! (medium term?)
Steam is more-prohibitive than itch.io in many ways, and with few added benefits (in my opinion). itch.io has also improved since I first released Mysterious Space: they have a desktop client, and the “butler” deployment tool for developers. I’m definitely not abandoning Steam, but it makes a lot of sense to ALSO release on itch.io.
Mysterious Space uses a kind of “fake” pixelated look: the graphics themselves are double-size. you can see this in-game: sometimes graphics seem to be half-a-pixel off from each other. this is because they’re actually 1 pixel off, but all the graphics are drawn at double size! this “fake” pixelization has some advantages and disadvantages:
- in theory, there’s a performance disadvantage to using images which are 4x as large as they need to be, but Mysterious Space’s demands on your graphics card are actually quite low, so there’s little to no practical disadvantage here.
- if someone wanted to “reskin” Mysterious Space with higher-res graphics, they totally could, and could easily achieve 4x the detail than the built-in graphics by doing so!
- Mysterious Space runs natively at 960×540. this resolution was very specifically picked, so that up to four screens can fit in an area 1920×1080 (for multi-player), or the game can be drawn at double size to fill 1920×1080 (for single player). however, this 960×540 resolution includes graphics which are ALREADY double-sized, so even though it SEEMS like the game should be able to run in 480×270, it can’t. this limits the scaling options of the game. for example: if you like playing windowed, and 960×540 seems to small, you’re kinda’ SOL, because the only other option is going 1920×1080, but if the game actually ran at 480×270, then 3x scaling for a 1440×810 window would be possible. more fine-grained scaling would also help future-proof Mysterious Space as monitor resolutions change.
the advantages and disadvantages are relatively minor, especially given the amount of work that the change requires (I tried implementing it once, a couple years ago, and gave up, due to just how much work it turned out to be!) but it IS something that bothers me, and something I’d like to revisit.
some related work that I did was a change to how the game arranges and scales the viewports in a multi-player game, especially when playing full-screen. the game now tries to figure out how best to fit the viewports in the available area, with the largest possible zoom level, and tries a couple different scenarios. it also adds padding between each viewport, if there’s space to do so. finally, when playing single-player, the game scales to fill the entire screen, even if that would result in a non-integer scaling factor, unless an integer scaling factor is very close, in which case it prefers to place a small black area around the screen.
there is some additional work here I could do to improve things for super-wide monitors, or monitors with a vertical orientation, but until/unless I get Mysterious Space running natively at 480×270, I’m not super worried about it.
yeah, so, the reasoning here is “why not? sounds fun” 😛 these would be a totally optional aspect of the game, of course, allowing you to perform some actions via voice command, ex:
- “use red (alien artifact)” to use a red alien artifact
- “use accessory” to activate an accessory
- maybe even “use tractor beam”?
of course, using your controller or gamepad is almost certainly faster; mainly, I’m just curious to try alternate methods of input, and see how it works! as a developer, voice input is not something I have much experience with, and this sounds like a fun way to experiment. and if it turns out to be dumb, and no one ends up using it, I’m cool with that 😛