Made some progress this month, check it out;
https://www.youtube.com/v/YgispZnTU30Graphics & shadersFirst of all, the graphics got a huge update. I decided to do things a little bit different and not go for the pixel style I usually use. This is in part because the shaders I'm experimenting with simply go better with a more smooth design.
The fisheye shader I was using until this week, had a little glitch in the form of a blurry dot right at the center of the screen. I found a similar shader which didn't produce the glitch, so that's solved. I also added a tilt-shift shader, which blurs the top and bottom parts of the screen, to give it a more realistic depth effect. The combination of these 2 shaders give the effect of navigating a tiny globe, very satisfied with the result.
This all works perfectly fine in iOS btw, I read everywhere that shaders either don't work or slow things down heavily. Well, no problems here.
Enemy off screen pointerWhen an enemy is off screen, a little orange pointer appears to notify the player which way to look out for. Nothing complicated, just simple math. Gameplay wise it's a nice thing to have though.
TrailThe trail our cat leaves behind now has a more 'slashy' look. It looks less awkward now when 2 parts of the trail meet. I'm still having some issues with the starting/ending points of the trail, they're sometimes a little too far apart. Guess it's because of rounding the position to whole numbers instead of having a float, but I'll have to look into that.
Water detectionThe game now detects if the player or any enemy is either on land or in the water. I first tried to work something out using collisions, but that slowed things waaay down, while not even functioning consistently.
Solved it by generating a map of the tile based terrain on startup, and checking coordinates continuously. When the scene loads, all tiles are checked, if a land tile is detected, it sets 1 white pixel at the right place on the map, everything else becomes black. While the game is running, an always events checks the coordinates of the player and every enemy actor. If the coordinates represent a black pixel on the map, an 'InWater' attribute gets toggled for the corresponding actor. The animation gets swapped, the shadow removed and as long as the attribute is true, water waves will be spawned underneath the actor.
This method is not very accurate though, you can either be on a tile or not, nothing in between, but for now it's okay. Performance wise it's a great solution, I can have 50+ enemies where these actions get performed on without slowdown.
Found this gif on my computer from the first iteration of this game, like half a year back. Funny to see how things change.