Skip to main content

On Sale: GamesAssetsToolsTabletopComics
Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

Consume.Uke

10
Posts
1
Followers
1
Following
A member registered May 29, 2025 · View creator page →

Creator of

Recent community posts

This game is so cool

Thanks so much yea i had bugs to fix on my trello board but i didnt get enough time to fix them

ill send you the code (disclaimer this is in GD script and there are lots of removed and broken features) - this is practicly my enitre game code besides the snake movement

extends Node2D

@onready var snake_head = $SnakeHead

@onready var snake_trail = $SnakeTrail

@onready var trail_label: Label = $"CanvasLayer/Panel/Trail Length UI"

var comboactive = false

var path: Array[Vector2] = []

var path_length := 0.0

var combomult = 1

signal dashupgot

var dashup = false

var combolife = 1

signal permspeed

var doubleupgot = false

@export var spacing := 5.0

@export var trail_length := 500.0

var apple := 0

signal speady

var more_apples_upgrade = false

@export var berry_scene: PackedScene

@export var big_apple_scene: PackedScene

@export var golden_apple_scene: PackedScene

@export var bomb_apple_scene: PackedScene

@export var poison_apple_scene: PackedScene

@export var spawn_area: Rect2 = Rect2(Vector2(-1000, -1000), Vector2(1800, 1800))

@export var berry_count := 5

signal moreapplesgot

signal betterpallesgot

signal combogot

var better_apples = false

var big_apple: Node2D = null

var golden_apple: Node2D = null

var bomb_apple: Node2D = null

var poison_apple: Node2D = null

var upgrade_big_apple := false

var upgrade_golden_apple := false

var upgrade_bomb_apple := false

var upgrade_poison_apple := false

var golden_multiplier_active := false

var combo = 0

var extralife = false

var loop_cooldown := false

var loop_check_distance := 15.0

func _ready():

for i in berry_count:

spawn_random_berry()

if upgrade_big_apple:

spawn_big_apple()

if upgrade_golden_apple:

spawn_golden_apple()

if upgrade_bomb_apple:

spawn_bomb_apple()

if upgrade_poison_apple:

spawn_poison_apple()

path.append(snake_head.global_position)

snake_trail.add_point(snake_head.global_position)

func _process(delta):

var current_pos = snake_head.global_position

var last_point = path[-1] if not path.is_empty() else current_pos

var distance = current_pos.distance_to(last_point)

trail_label.text = "Apples: " + str(apple)

if better_apples == true:

emit_signal("betterpallesgot")

if distance >= spacing:

path.append(current_pos)

snake_trail.add_point(current_pos)

path_length += distance

while path.size() > 1 and path_length > trail_length:

var removed = path.pop_front()

var next = path[0]

var seg_length = removed.distance_to(next)

snake_trail.remove_point(0)

path_length -= seg_length

if not loop_cooldown:

_check_for_loop()

func _check_for_loop():

if path.size() < 6:

return

var head = path[-1]

for i in range(path.size() - 5):

if head.distance_to(path[i]) < loop_check_distance:

_process_loop()

break

func _process_loop():

var polygon = path.duplicate()

var collected := 0

var new_points := 0

var golden_multiplier = golden_multiplier_active

golden_multiplier_active = false

for berry in get_tree().get_nodes_in_group("berries"):

var pos = to_local(berry.global_position)

if Geometry2D.is_point_in_polygon(pos, polygon):

_consume_berry(berry)

collected += 1

if better_apples == false:

new_points += 1

else:

new_points += 2

for big in get_tree().get_nodes_in_group("big_apples"):

var pos = to_local(big.global_position)

if Geometry2D.is_point_in_polygon(pos, polygon):

big.queue_free()

spawn_big_apple()

collected += 1

new_points += 3

for gold in get_tree().get_nodes_in_group("golden_apples"):

var pos = to_local(gold.global_position)

if Geometry2D.is_point_in_polygon(pos, polygon):

gold.queue_free()

spawn_golden_apple()

collected += 1

new_points += 5

golden_multiplier_active = true

for bomb in get_tree().get_nodes_in_group("bomb_apples"):

var pos = to_local(bomb.global_position)

if Geometry2D.is_point_in_polygon(pos, polygon):

bomb.queue_free()

spawn_bomb_apple()

_explode_nearby_apples(bomb.global_position)

collected += 1

for poison in get_tree().get_nodes_in_group("poison_apples"):

var pos = to_local(poison.global_position)

if Geometry2D.is_point_in_polygon(pos, polygon):

poison.queue_free()

spawn_poison_apple()

collected += 1

new_points -= 2

if collected >= 2 and doubleupgot== true:

emit_signal("speady")

if new_points > 0 and golden_multiplier:

new_points *= 2

if collected > 0:

$AudioStreamPlayer2D.play()

_start_loop_cooldown()

if combolife == 1 and extralife == true:

combolife =2

if comboactive== true:

apple += new_points + combo

combo+=combomult

print (combo)

else:

apple += new_points

func _consume_berry(berry: Node2D):

berry.queue_free()

spawn_random_berry()

func _random_spawn_pos() -> Vector2:

return Vector2(

randf_range(spawn_area.position.x, spawn_area.end.x),

randf_range(spawn_area.position.y, spawn_area.end.y)

)

func spawn_random_berry():

var berry = berry_scene.instantiate()

berry.global_position = _random_spawn_pos()

berry.add_to_group("berries")

add_child(berry)

func spawn_big_apple():

if big_apple:

big_apple.queue_free()

big_apple = big_apple_scene.instantiate()

big_apple.global_position = _random_spawn_pos()

big_apple.add_to_group("big_apples")

add_child(big_apple)

func spawn_golden_apple():

if golden_apple:

golden_apple.queue_free()

golden_apple = golden_apple_scene.instantiate()

golden_apple.global_position = _random_spawn_pos()

golden_apple.add_to_group("golden_apples")

add_child(golden_apple)

func spawn_bomb_apple():

if bomb_apple:

bomb_apple.queue_free()

bomb_apple = bomb_apple_scene.instantiate()

bomb_apple.global_position = _random_spawn_pos()

bomb_apple.add_to_group("bomb_apples")

add_child(bomb_apple)

func spawn_poison_apple():

if poison_apple:

poison_apple.queue_free()

poison_apple = poison_apple_scene.instantiate()

poison_apple.global_position = _random_spawn_pos()

poison_apple.add_to_group("poison_apples")

add_child(poison_apple)

func _explode_nearby_apples(origin: Vector2):

var radius = 100.0

var to_free := []

for berry in get_tree().get_nodes_in_group("berries"):

if berry.global_position.distance_to(origin) <= radius:

to_free.append(berry)

for big in get_tree().get_nodes_in_group("big_apples"):

if big.global_position.distance_to(origin) <= radius:

to_free.append(big)

for gold in get_tree().get_nodes_in_group("golden_apples"):

if gold.global_position.distance_to(origin) <= radius:

to_free.append(gold)

for poison in get_tree().get_nodes_in_group("poison_apples"):

if poison.global_position.distance_to(origin) <= radius:

to_free.append(poison)

for apple in to_free:

# Determine type and respawn

if apple.is_in_group("berries"):

_consume_berry(apple)

elif apple.is_in_group("big_apples"):

apple.queue_free()

spawn_big_apple()

elif apple.is_in_group("golden_apples"):

apple.queue_free()

spawn_golden_apple()

elif apple.is_in_group("poison_apples"):

apple.queue_free()

spawn_poison_apple()

func _start_loop_cooldown():

loop_cooldown = true

await get_tree().create_timer(0.5).timeout

loop_cooldown = false

func _on_size_increase_pressed() -> void:

if apple >= 1:

trail_length += 50

apple -= 1

func _on_texture_button_pressed() -> void:

if apple >= 3:

berry_count += 2

apple -= 3

spawn_random_berry()

spawn_random_berry()

more_apples_upgrade = true

emit_signal("moreapplesgot")

func _on_texture_button_2_pressed() -> void:

if apple >= 5 and upgrade_big_apple == false and more_apples_upgrade == true:

upgrade_big_apple = true

apple -= 5

spawn_big_apple()

func _on_golden_apples_pressed() -> void:

if apple >= 20 and upgrade_golden_apple == false:

upgrade_golden_apple = true

apple -= 20

spawn_golden_apple()

func _on_better_apples_pressed() -> void:

if apple >= 5 and better_apples == false:

better_apples = true

apple -=5

func _on_snake_head_bang() -> void:

combolife -= 1

if combolife <= 0:

combo = 0

combolife = 1 if extralife else 0

func _on_combo_pressed() -> void:

if comboactive == false and apple>= 5:

comboactive= true

apple-= 5

emit_signal("combogot")

func _on_x_combo_pressed() -> void:

if apple >= 10 and combomult==1:

apple-= 10

combomult = 2

func _on_extra_life_streak_pressed() -> void:

if apple>=10 and combolife==1 and extralife == false :

apple-=10

combolife=2

extralife = true

func _on_double_pressed() -> void:

if apple >= 5 and doubleupgot == false:

doubleupgot = true

apple -= 5

func _on_speed_pressed() -> void:

if apple >= 1:

emit_signal("permspeed")

apple-=1

func _on_dash_pressed() -> void:

if apple >= 10 and dashup == false:

dashup = true

apple -= 10

emit_signal("dashupgot")


sorry if its quite long i didnt remove anything in case of breaking it

also - the formating is broken there are normaly tabs

yea that bug is so anoying its getting removed now

yea that bug is gonna get fixed

Yea thats a bug i was trying to fix, ran out of time. 

(1 edit)

Can you compare my LOOPsnake and the other LoopSnake that was also submitted in the jam

Verry nice work here i personaly love it going from rags to riches ;P

Great work mabey try adding sounds or fix the issue where apples spawn on bombs

This is verry similar to my game even the name.