Heat Signature, A Stealth Space Game About Temperature

Here’s the first video of Heat Signature, a temperature-based space stealth game I’ve been making the last two days. It’s about sneaking up on ships while keeping your ship cool enough to fool their sensors.

So you can jet around an infinite galaxy super fast, but your thrusters generate heat, and enemies can detect that from far away. The closer you want to get to them, the cooler you have to stay, and the more precise you have to be with your thrusters. And to take them out, you have to physically clamp onto their hull and shut down their systems.

GHGC is still my main project, I’m just taking a break from the brutal process of learning Unity to make something quick in Game Maker, where I already speak the language. How far I take this depends on how the next few features work out.

24 Replies to “Heat Signature, A Stealth Space Game About Temperature”

  1. Looking good. Osmos, I-War, Starfarer, Torchships, Orbiter/KSP and Through a Scanner Darkly Soup Stock.

    My next move would be an interstellar medium which generates an impact heat signature of its own with high velocities; make it vary in density, and suddenly you’ve got areas where you can’t just out-G everyone and sail along invisibly.

    If you wanted to throw in some Silent Hunter and cross-pollinate with GHGC, you could de-twitch the player ship and make the goal to artillery-game launch a grappling torpedo rather than collide yourself. The problem with that is it probably doesn’t add much to the interception problem, which is already trivialised in any game where the avatar is fixed to the center of the screen.

  2. This looks super fun. However, science-nerd glasses on: space, being a near-perfect vacuum, is an incredibly good insulator. This means that a hot ship in space will stay hot, taking much much longer to cool down than for example a hot ship in air or water. One of the big barriers for interstellar travel, in fact, is trying to figure out how to radiate heat away faster than your engines are generating it to stop from cooking yourself.

    So just make sure you reference some scifi mumbo jumbo device to account for that.

  3. This already looks quite fun! cough cough secret beta access list cough cough

    As Daniel H said, heat dissipation in space is hard. Have you considered a maximum heat level beyond which the thrusters won’t fire? It could be an upgradeable attribute. Then again, that might not be fun at all.

  4. The problem that happens when you move to far, is likely a float imprecision problem, it’s easily fixable by moving the world instead of the player, since the player stays always in the center (or very close to it), by doing that the float imprecision only happens when very far from the player view, as such it does not affect the player experience in anyway (depending on what you’re doing there OFC).

  5. If one were aware that heat dissipation in space is slow and requires the scifi mumbo-jumbo known as ‘radiators’, one might make a videogame based around it as a primary mechanic and called, perhaps, Heat Signature.

    So there’s this long part in the video where he explains how he fixed the float imprecision problem by moving the world instead of the player…?

  6. >So there’s this long part in the video where he explains how he fixed the float imprecision problem by moving the world instead of the player…?

    Even after making the ‘game’ move around the ‘player’, you will still have the problem with float imprecision. However now you will not see it on screen. e.g. The game will still need to track the velocities and positions of the enemies far away (assuming Tom wants any kind of persistence). Before this float imprecision was visible with the stars being “bands” the further you get from the middle. The off-screen problem will be that an enemy a billion meters from the player wanting to move 1m/frame in some direction won’t actually move at all. Not in a gamemaker “not simulated in spelunky” kind of way, but a “big float + tiny float = exact same big float”.

    It’s the same reason for the badlands in Minecraft.

    Tom, do something like this in the monsters movement code
    if (magnitute(move_vec) != 0.0f)
    assert(position + magnitute(move_vec) != position)

    and observe if it hits as you thrust far away.

    A float only has 24 bits of precision at any ‘detail’ level.

    16777216.0f = 16777216
    16777216.0f + 0.2f = 16777216
    16777216.0f + 1.0f = 16777216
    16777216.0f + 2.0f = 16777218

    As that number gets bigger the ‘minimum increment’ starts to get bigger

    1125899906842624.0f = float 1.125899907e+015

    (1125899906842624.0f + 40000000f) == 1125899906842624.0f
    is true

    (1125899906842624.0f + 4000000000f) == 1125899906842624.0f
    is false

    Scary, right?

    1.0f + 0.00000003f = 1.0f
    1.0f + 0.00000002f = 1.0f
    1.0f + 0.00000001f = 1.0f

    0.0002f + 0.00000002f = 0.0002000199893f
    0.0002f + 0.00000001f =
    0.0002f + 0.00000003f =

    If you want to know more read something like

    What can you do to solve this?
    a) A “quick fix” is to simply use doubles instead of float, though that simply moves the problem from 2^24 to 2^53. That might be enough for you, but the problem will still exist. Will gamemaker allow you to do that?
    b) Not have persistence on those really-far-away things / place a limit on your galaxy
    c) avoid adding really small and really big numbers
    d) perhaps used fixed point numbers, if you can? (i.e. do everything with integers). You need to decide what your “minimum” increment is. i.e. a 32bit int can represent 0 to 2^(30-1) with 1/4 increments.

  7. Well yes it never really fixes the problem, float precision is always a problem, which is the reason why floats can’t be compared the same way a integer can (not correcting BTW, just sort of adding to what you said).

    The guys from kerbal space program did a talk on the solutions they used for the problems they had related to this (which were quite a few), if anyone is interested to see the talk http://www.youtube.com/watch?v=mXTxQko-JH0 .

    Adding to the number of solutions, you can benefit from having a 2d game, and divide the world in “tiles”, you would “line” this tiles on the unused dimension.
    So if you were using X, Y for movement, then the tiles could be lined on the Z axis.
    This solution would basically give you volume which OFC adds a whole lot of space to your space, and should be fairly simple to implement.

  8. Sir, we have the enemy’s heat signature. It’s just that we, we don’t have one. Some Adventure Time for ya, now that’s out of my system. I like how the momentum works, we don’t get to a a lot of space games that follow Newton’s Laws. Definitely a good start for a space game.

  9. That is just so cool.. I love roguelikes and space and stealth! Never, ever thought the combination of those three would be so awesome.

    I have been doing some little game projects by myself on LÖVE game engine, but I gotta ask – Where do you get your ideas and inspiration from? How did you come up with such a brilliant idea? I never have those ideas.. Can you give some tips about game designing? Finding that one mechanic the game could be based around?

  10. This is a really neat idea. I’m not a fan of soft-serve scifi, so I could see the player clamping asteroids/debris to dissipate heat. Have you considered making the player’s viewport similar to that of an actual radar?

  11. Loving the looks of this. You nailed the sounds, especially the shutting-enemy-ship-down sound. Brilliant idea too, having to dock.

    Any game ideas I work on hit idea-bloat way too fast, and I lack the mental discipline to keep them small. This idea seems really tight, however. Can’t wait to see a final product!

  12. Cheers everyone!

    The star-banding bug in the first few prototypes is fixed in the final one I show – it was just a bias in the way I was choosing new locations to spawn stars in new territory.

    Tracking the motion of extremely distant objects isn’t going to be important for the kind of game I have in mind, so I’m not worried about floating point stuff grinding them to a halt (if that is indeed how Game Maker stores co-ordinates – you don’t choose or see data types).

    A teen: this one came from thinking about the cool moment in sci-fi movies where the outnumbered ship has to land on an asteroid or similar and switch off its engines to avoid detection by more powerful pursuers. It seems like a lot of tension and drama in space stories comes from stealth, but there aren’t many space stealth games.

    CannedLizard: heh, this might be a little more bloated than the first video suggests, if the feature I’m working on pans out.

  13. “As of 2013, the Voyager 1 space probe is about 18 billion kilometers away from Terra and its radio signal is a pathetic 20 watts (or about as dim as the light bulb in your refrigerator). But as faint as it is, the Green Bank telescope can pick it out from the background noise in one second flat.”

    But you should, of course, never let real-world physics objections scuttle a fun game mechanic.

  14. That’s radio not heat, on a frequency carefully selected to be free from background noise, if it’s pointed in exactly the right direction already, and the Green Bank Radio Telescope is not mounted on a spaceship.

    I’ve read that article before, and many of the objections to it are unfounded, but it carries its own freight of sleazy question-begging.

  15. I’m sure it was covered in the discussions over and Kerbal (as I have little-to-no programming experience, take it with a grain of salt) – but if you really cared, you could easily keep your small float “on the side”, when it adds up enough to be significant, ie when
    small_float + big_float != big-float
    then you could increment big_float, That said, they’d have to be pretty far away before it matters. How many times the maximum view field do they need to get before they get wiggy?

    Anyway, to combine some of the complaints above, and as a way to overcomplicate things, you could have radiators which are large compared to the ship (and therefore an easy target) which could get shot off without killing you.
    Those could repair over time.

    And of course, that leaves the option for ‘flak’, perhaps sacrificing super-heated bits of radiator – meaning you’ll cool more slowly but you’ll get out of one sticky situation. Then you could have thermal batteries (massive weights built into radiator structure which take a long time to cool but also are good for short bursts (basically this is already there except that they would make great “flak”), and let’s not use the term “phase change” unless you just want to sound techy. :-)

    Anyway, raiding other ships for their cooling fins gives me a reason to want to attack them. And I’ve overstayed my welcome. Cheers!

  16. Out of the grappling hook game and this one, this one excites me more with the possibilities of how it could end up. But I love my space stuff.

    Having to propel yourself at full speed then cut engines as you make your way into an enemy base to steal some secret space documents from evil space guys. Then totally Han Solo’ing it on the back of a Star Destroyer to escape again.

  17. Has a similar kind of feel in the video as Captain Forever, albeit with a very different core mechanic. Looks good!

Comments are closed.