Lets talk ice. and how to implement it

There were various reasons why Frostfeast did not incorporate ice:

  • It’s not possible, or was not possible, to have translucent terrain blocks. For me, this is a deal breaker. Ice isn’t just some glittery, blue-ish stuff, it’s supposed to be transparent.
  • Because water bodies are all cuboids, you would have to perform (expensive) checks on what cuboid is actually the top-most body, and which one is touching air. Not all water freezes to ice, only the top layer. This could be done, but:
  • There need to be various re-checks on where ice should be. If you drain a lake, for example, periodically the ice should re-form, and existing ice may drop lower as a result. However, the dropping bit is complicated, as is the re-checks.
  • What happens if you pour water onto ice? It either increases the thickness of the layer, or it flows through and lifts the layer up. Both are non-trivial to implement in a nice way.
  • What about heat sources? Frostfeast had a concept of heat sources, and it would be weird to not honour them for ice. We didn’t for the terrain because we could, somehow, pretend that it was generally devoid of color due to the light, and because of engine limitations. If you had dynamic, growing water, players would expect the water to disappear because of heat, too.

All in all, given the engine limitations and the bad performance to start with, I didn’t think it was viable, or possible, to have an implementation of ice that’s up to my standards. And as with quite a few features for Frostfeast, it was therefore canned.

3 Likes