Bubble Ranch, for Global Game Jam 2025!

Bonus Screenshot Saturday post

Here’s how our artist set up the face textures with 4 states! Using a sprite-sheet style we can offset the UV map, also saving extra space by mirroring the eyes and mouth.

In the script we can apply these textures by an index, or preferably an enumerated type, with a little bit of math.

enum Face {
	NEUTRAL,
	SAD,
	SURPRISED,
	OUCH
}

func set_face_idx(idx: Face) -> void:
	eye_material.uv1_offset = Vector3(idx * 0.25, 0, 0)
6 Likes