Thanks for playing and thanks for the feedback! It seems I'll need to expand my collection of controllers to make sure it works with everything. I was only able to test with an Xbox-compatible controller and a PS4 controller.
dstears
Creator of
Recent community posts
Thanks for the feedback. Increasing the maximum health after each boss may be a good idea. As you said, the enemy DPS goes up as the game goes on and the player will bleed health faster in later waves.
Being able to flip tiles or move the source nodes would give the player more freedom, but we have to be careful about making the puzzle aspect too easy. There needs to be some friction between what the player wants to do and what they are able to fit in the limited space.
Thanks again for giving detailed feedback!
The presentation of the game is very good. I like how you can see your alchemist in the background of the combat pane on the left and you can see boss behind the alchemist on the right. The menu goblin is also very cute.
For the gameplay, it would be helpful if there was a button to click to brew the potion; the functionality of the spacebar is not conveyed in game (as far as I could tell). For the most part, I couldn't try to brew any specific potion and just hit space as soon as I saw the cauldron turn green.
Thanks for checking it out!
While I was doing research for this game, I found that someone made a games with some single player puzzles: https://aenever.itch.io/pig-pig-rocket
This code is looking below the character to see if there is anything identified as "ground" close enough to the character.
The Raycast function looks like this:
RaycastHit2D Raycast(Vector2 origin, Vector2 direction, float distance, int layerMask)
The function will shoot a ray in the specified direction and return information about any objects that the ray hits.
In this case, the ray begins at transform.position + colliderOffset and is directed downward (Vector2.down).
The ray extends a distance of groundLength (which is probably based on the size of the character). If this is too large, then onGround would return true before you land. If it is too small, then the rays may not reach the edge of the collider and won't detect the ground even if the character is standing on it.
The LayerMask groundLayer identifies which physics layers should be considered as "ground". The ray will ignore other layers.
If the ray doesn't hit anything, then Raycast will return null which is interpreted as "false" when used as a bool. If the ray hits something, it returns a valid RayCastHit2D object with additional information about the collision. But in this case we only care whether or not there was a hit, so a valid object is interpreted as "true" for the onGround bool.
There are two raycasts, one with origin transform.position - colliderOffset and one with origin transform.position + colliderOffset. I expect that this is to cast rays starting from the left edge and right edge of the object so that you detect ground even if you are partially hanging off of a ledge.