Skip to main content

Vancouver Global Game Jam!

·815 words·4 mins

Day One
#

The white dots are the two players. The pig nose-looking things are masks.

So far my team’s been playing with the idea of tiles with wearing masks to blend into the tile. You can lurk in tiles of the same colour until it’s safe to go out and pick up another mask. Then you’ll be able to hide in tiles of a different colour.

It’s already been really fun working on a two player game and I’m a little nervous and very excited about taking a more organic approach to developing the gameplay.

Day Two
#

Phew!

I got actual masking working. Previously the players would only disappear into their tile because their colour matched the tile exactly. That’s no fun for the artwork so I wanted them to actually disappear into the tile.

Turns out this is not straightforward. I can’t use a tile map as a clipping mask in Godot for reasons. But among those reasons are also workarounds.

I put a tile map into a SubViewport and then used a Sprite2D to display that SubViewport’s texture. Don’t forget to enable Transparent BG in SubViewport (this got me).

Then I can set the Sprite2D to clip its children and add the Player as a child. Boom.

In the image above, I’ve included two images on the right side showing the clipping masks for each player. The player in pink is on the left and it will only appear in non-pink tiles. The player in blue is on the right and the clipping mask where they can appear.

Loving this because the theme of “mask” becomes a core part of the implementation as well as the mechanic. Cool.

Realized I better double check that this works on the web on Itch. And yeah, good to go!

I wanted the player to be revealed when they get tag the other player or when they get tagged. At first I tried disabling clipping but then it showed the white and transparent squares from the clipping tile map. So I made it invisible. But then the player is a child of that node is the player disappeared, too!

Painted myself into a corner a bit.

In the end I just iterated all tiles in the clipping tile map and set them so that the player would be displayed. Might be a better way (set a large texture on the clipping sprite?) but it’ll do for now.

I implemented attack with a button because that’s how it always is but Reina wanted to try it without. It’s pretty awesome, actually. It feels like you’re swinging the stick at your opponent.

Added a stun when you get hit by the stick and a recovery period for the attack as well.

Okay, here’s a problem.

I want to detect when a player is touching a tile of the same colour. We want to try having the player disappear as soon as they’re even touching their element tile.

I can’t rely on the player being a perfect circle. That’s only my placeholder art (we’ve got an artist on and it’s looking so good, I can’t wait!). I need to detect when the player’s hit area overlaps with a tile.

There doesn’t seem to be a simple way to do this in Godot. There’s no TileMap.get_overlapping_anything(). Unforch.

What I can do is manually create square Area2Ds every time the player picks up a mask. Similar to recalculating the clipping tile mask but with the additional burden of managing the instances. Then I can call Area2D.get_overlapping_bodies() on each of those. Actually, I could just lay out 16 of them, I don’t need to recalculate them every time the player picks up a mask. That’s not so bad.

Still a bunch of work.

Maybe for now we playtest with a simple algorithm based on the assumption that the player hit area is a circle. Then if needed I’ll implement a grid of Area2Ds.

Classic. I was getting weird behaviour because when I make the player visible again (coming out of hiding) it was getting stunned. What the—? Turns out when the player became visible, it triggered “on body entered” for its own attack area and played the corresponding animation which turns the stun flag on and off.

Whenever checking for bodies overlapping with the hit area I need to make sure it’s not just shooting itself in the foot.

Glad I’ve encountered this before. It was much faster to find it today as a result.

Day Three
#

Character art assets received. Let’s go!

And now with crowns!

Working on the treatment for the side panels.

Font dump

https://www.1001freefonts.com/pixel-splitter.font https://www.1001freefonts.com/nine-pin.font https://www.1001freefonts.com/alpha-beta.font https://www.1001freefonts.com/origami-mommy.font https://www.1001freefonts.com/roses-are-ff0000.font

Last hour!

It’s changing a lot visually now, too.

All done! Phew. Was a bit of a rush at the end but now it’s time to play other’s games.