Kandria
An interlude
Hey, we've been hard at work on Kandria's new trailer and hammering out new concept stuff for the next regions and factions. You'll get to see more of that soon, I promise! But for now...
Eternia Sales
Eternia has been out for over a week now. I thought it would be interesting to share the sales data for this, since it's our first released game and all.
So we sold close to a hundred units, which is pretty neat! It's unfortunately a far cry from what we would need to recoup the costs of development, but since I never hoped to make my money back from this it's not a big deal.
I'm quite happy with the Eternia release overall, and especially the lessons learned with testing and reviewing are very valuable. Still, I also can't help but feel a bit of dread for Kandria. We'll have to build a much, much bigger community before it releases if there's any hope of making it even close to a success.
Anyway, a few folks have already written reviews for Eternia on Steam, and I'm super thankful for that! Reviews are both great for other users to see whether the game would appeal to them, but it's also great for us, as the Steam algorithm favours games with more reviews.
That said, if you decide to play the game, please do consider writing a review for it! It doesn't have to be anything fancy, either.
A technical interlude
It's been a while since I wrote something technical in these updates, but I felt I should. Today we'll take a look at an effect I implemented late at night recently: heatwaves.
Heatwaves conceptually aren't hard to do, at least in 2D. All we need to do is take a rendered image, and then shift things left or right slightly along each horizontal line. So we do just that. Here's our base image:
Next we'll render a helper image that tells us how much to shift each pixel and in what direction. This image will use the colour information as a shift direction. red will be the X offset, and green the Y offset. blue we can ignore. Thus "no offset" would be a colour that's 0.5 red and 0.5 green. We start out by making the screen be just filled with this neutral colour.
Then we need some way of showing the displacement that fits a heatwave. Typically this means alternating between shifting left and right in sort of "waves". To get this effect we create a small heatwave texture:
To make it easier for you to see it's been scaled up. In reality this texture is only a single strip of pixels, 64 pixels in height. Note that the texture matches in colour at the top and bottom so that it can be repeated indefinitely. Also note that we only change the red channel here, as we just want to shift colours horizontally, rather than vertically.
Next we render a rectangle with this texture onto our displacement map where we want the heatwaves to appear.
One thing not visible in this screenshot is that we also use the alpha-channel component to specify the "strength" of the displacement, which allows us to make the effect taper off towards the top.
Finally we perform another render using our displacement map and the undistorted rendered game image as inputs. For each pixel we look at the displacement map to check the offset, and then look the pixel up in the game image, offset by the amount the displacement map requires. Then we just emit that pixel.
And presto, we have a heatwave effect! Though... as it stands, this is a static heatwave, and thus not very exciting or realistic. So we use our final trick: shifting the heatwave texture over time.
This is why the heatwave texture can be repeated: so that we can just "scroll" it over our rectangle, making it appear as if the heatwave was actually moving through the air. Combined with the taper-off towards the top of our rectangle, this ends up looking quite convincing.
Hoorah for simple, but effective visuals!
Tim
A fairly short update compared to recent ones: I've helped worked on the new trailer, giving feedback and tweaking the script. My main job though has been updating the mushroom quest to work better with the open world. You'll now find different types of mushroom scattered far and wide throughout the entire region, which you can forage for at your own pace, and hand them into Catherine once the sidequest opens up. There's still some bug fixing to do, as well as for the restructured race quest, which I'll be looking into next week.
Conclusion
Barring any sudden fires, the new Kandria trailer should be done tomorrow. I'll be sure to send another short email with it when it does! We should also have a new update for the public demo by the end of the week, with some much needed bugfixes and improvements. We started replumbing some bigger stuff for that, which is why it's taken us longer than expected.
I'm also starting to feel a bit stressed and overworked in general, and might take the week after next off. Not yet sure, but it's highly likely. Either way though, there'll be another weekly update next weekend.
Thanks for reading! If you want to help us out, tell your friends and groups about Kandria! I'm sure there's bound to be others out there that would be interested in the project. Direct them to our discord and our mailing list!