6
\$\begingroup\$

https://www.youtube.com/watch?v=Tzf3zjPJYw4

In this game, Ink, color blobs fall then they create pretty color spots.

The color traces are unlike any other game.

For an example, in Super Meat Boy https://www.youtube.com/watch?v=snaionoxjos

The red traces of SM Boy was more of sprites aligned across the surfaces of the object.

The trace in game Ink is different from those traditional traces of other games because...

  1. They stack infinitely.

  2. Come in many different shapes.

The approaches I can think of are...

  1. Prepare many different shapes sprites, then put then where traces should be.
  2. Assign each block with their own texture, then draw the traces on that texture.

The issues I see however are...

  1. First solution will lead to having many-MANY-MANY sprites being generated to look as if the traces are being drawn upon the object.
  2. Heavy calls between GPU and CPU. Keep drawing traces while uploading drawn new texture onto the GPU to be rendered. Significantly slowing down the game.

I don't have a good computer. My computer cannot handle either approach 1 or 2. But it can the run the game Ink.

So I am assuming Ink must use some sort of clever approach to handle this crucial visual aspect of the game. But I am out of ideas.

\$\endgroup\$
  • \$\begingroup\$ One method is to have a decal texture over the map (or pieces) that you just draw all blood streaks onto and then just render that single texture \$\endgroup\$ – CobaltHex Aug 6 '15 at 4:35
  • \$\begingroup\$ Do you have scrolling in your game / big levels ? I see that in Ink the "level" is always a single screen. Having the level limited to a single screen would allow to put all the traces which are "at rest" into a texture via a Framebuffer Object ... everything would happen on GPU side so it would be very fast (only the traces currently "alive" would cost performance) \$\endgroup\$ – VB_overflow Aug 25 '15 at 15:59
4
\$\begingroup\$

Actually the author of Ink wrote a blog post explaining just that !

He is using Game Maker "surfaces" which are I think the equivalent of Framebufer Objects with color texture attachments in OpenGL.

\$\endgroup\$
-1
\$\begingroup\$

You could use a large texture for procedurally generating those decals on the GPU.

You could draw them in a way where they take the angle, density, viscosity, velocity (whatever you want) into account when drawing them.

A 1024×1024 surface would give you 256 different 64x64 decals at any given time. You choose to use 2 blocks for longer "smears" if that's worth it. Should be more than enough though if you are expiring them?

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.