Vytvořte si pocit pokroku a výzvy přidáním různých úrovní do svých her.
Vytváření úrovní je zásadním aspektem herního designu, který může výrazně zvýšit celkovou přitažlivost vaší hry. Úrovně poskytují strukturu a výzvy, které udrží hráče v zapojení a motivaci k postupu vaší hrou.
Pečlivým vytvářením dobře navržených úrovní můžete pro své hráče vytvořit pohlcující a zábavnější zážitek. Ať už jste začátečník nebo zkušený herní vývojář, Godot usnadňuje vytváření úchvatných úrovní, díky nimž se hráči budou vracet pro další.
Nastavení hry Godot
Než začnete vytvářet úrovně, je nezbytné nastavit svůj 2D herní projekt Herní engine Godot.
Kód použitý v tomto článku je k dispozici v tomto úložiště GitHub a můžete jej používat zdarma pod licencí MIT.
Vytvořte novou scénu a přidejte a Node2D uzel jako kořenový uzel. To bude sloužit jako kontejner pro všechny ostatní uzly ve vaší scéně. Nyní, když je váš projekt nastaven, je čas přidat na scénu hráčskou postavu.
Novou scénu vytvoříte kliknutím pravým tlačítkem na panel Scéna a výběrem
Nová scéna. Přidat CharacterBody2D uzel reprezentující postavu hráče. The CharacterBody2D uzel poskytuje vestavěné funkce pro detekci pohybu a kolizí pro 2D postavy.Uvnitř CharacterBody2D uzel, přidejte a CollisionShape2D uzel s obdélníkovým tvarem a Skřítek uzel reprezentující vzhled hráče.
Po nastavení postavy hráče a jejích vizuálních prvků se nyní můžete soustředit na vytvoření své první úrovně.
Vytvořte dvě úrovně
Chcete-li vytvořit úrovně v Godot, můžete použít soubory scén (.tscn) reprezentovat každou úroveň samostatně. Se dvěma úrovněmi můžete implementovat jedinečné rozvržení a pohyblivé platformy.
Kód hráče
The CharacterBody2D skript je zodpovědný za manipulaci s pohybem hráče na základě vstupu uživatele. V dodaném GDScriptu můžete vypočítat směr pohybu na základě stisknutí kláves a podle toho nastavit rychlost hráče.
Rychlost hráče určuje, jak rychle se pohybuje move_and_collide funkce se stará o detekci kolize.
extends CharacterBody2D
var speed = 300
func _physics_process(delta):
var input_dir = Vector2.ZEROif Input.is_action_pressed("ui_left"):
input_dir.x -= 1if Input.is_action_pressed("ui_right"):
input_dir.x += 1if Input.is_action_pressed("ui_up"):
input_dir.y -= 1if Input.is_action_pressed("ui_down"):
input_dir.y += 1
velocity = input_dir.normalized() * speed
move_and_collide(velocity * delta)
Kód platformy
The Plošina skript se prodlužuje StaticBody2D, což znamená, že platforma se nepohne, dokud na ni nepoužijete pohyb. V tomto případě můžete použít rychlost pohybu proměnná pro řízení rychlosti pohybu platformy.
Plošina se pohybuje vodorovně tam a zpět v určeném rozsahu (v tomto příkladu 100 až 400 jednotek). Když dosáhne okraje, obrátí směr svého pohybu.
# Platform Movement
extends StaticBody2Dconst move_speed = 100
var move_direction = Vector2(1, 0)func _physics_process(delta):
var platform_movement = move_direction * move_speed * delta
translate(platform_movement)
# Change direction when reaching the edge of the platform's path
if position.x > 400or position.x < 100:
move_direction *= -1
Pomocí těchto skriptů můžete vytvářet zajímavé pohybové vzorce pro platformy a navrhovat poutavé herní zážitky vaše plošinovky.
Spojovací úrovně
V typické hře budete chtít, aby hráči plynule postupovali z jedné úrovně do druhé. Chcete-li tak učinit, implementujte skript Level Manager, který zpracovává přepínání úrovní, když hráč překročí hranici obrazovky.
The Správce úrovní skript sleduje číslo aktuální úrovně a velikost obrazovky. Během načtení počáteční úrovně (úroveň 1). _ready(). The úroveň_načtení funkce vezme jako vstup číslo úrovně, vytvoří cestu k souboru odpovídající scény a vytvoří instanci scény úrovně.
Přidejte novou úroveň jako dítě Správce úrovní; to účinně přepne aktuální úroveň.
extends Node2D
var level_number = 1
var screen_size = Vector2()
var is_switching_level = falsefunc _ready():
screen_size = get_viewport_rect().size
load_level(level_number)func load_level(level):
var level_path = "res://Level" + str(level) + ".tscn"
var level_scene = load(level_path)
var level_instance = level_scene.instantiate()
add_child(level_instance)
is_switching_level = falsefunc switch_level():
if is_switching_level:
returnis_switching_level = true
level_number += 1if level_number > 2:
level_number = 1# Assuming the player node is named "Player"
var player = get_node("Node2D/Player")if player:
var player_position = player.positionif player_position.x < 0:
player.position.x = screen_size.x
elif player_position.x > screen_size.x:
player.position.x = 0
elif player_position.y < 0:
player.position.y = screen_size.y
elif player_position.y > screen_size.y:
player.position.y = 0get_node("Node2D").queue_free()
load_level(level_number)func _process(delta):
# Check if the player crosses the screen boundary
# Assuming the player node is named "Player"
var player = get_node("Node2D/Player")if player:
var player_position = player.position
var condition1 = player_position.x < 0
var condition2 = player_position.x > screen_size.x
var condition3 = player_position.y < 0
var condition4 = player_position.y > screen_size.y
if condition1 or condition2 or condition3 or condition4 :
switch_level()
Implementací Správce úrovní můžete plynule přecházet mezi úrovněmi a udržovat data hráčů napříč úrovněmi, což zajišťuje hladký herní zážitek.
Včetně dalších funkcí
Vytváření úrovní vám umožňuje přidávat do vaší hry různé funkce, díky nimž je pro hráče poutavější a vzrušující.
Sběratelské předměty
Přidejte sběratelské předměty, jako jsou mince, hvězdy nebo klíče, které mohou hráči sbírat, aby odemkli nové oblasti nebo získali odměny. Sběratelské předměty podporují průzkum a přidávají do hry další výzvu.
Nepřátelé
Představte nepřátelům různé chování a pohybové vzorce. Nepřátelé vytvářejí překážky, které musí hráč překonat, a přidávají do hry strategii a vzrušení.
Power-Ups
Zahrňte vylepšení, která dočasně zvýší schopnosti hráče, jako je zvýšená rychlost, neporazitelnost nebo vylepšené útoky. Power-upy poskytují momenty posílení a mohou hráčům pomoci překonat náročné úseky.
Hádanky
Navrhněte prvky puzzle, které musí hráči vyřešit, aby postoupili úrovní. Hádanky dodávají hře cerebrální aspekt a díky nim se hráči budou cítit dokonalí, když je vymyslí.
Začleněním těchto dodatečných funkcí do svých úrovní můžete vytvořit bohatý a rozmanitý herní zážitek, který hráče uchvátí a udrží je ponořený do vašeho herního světa.
Nejlepší postupy pro vytváření úrovní
Při vytváření úrovní můžete mít na paměti určité osvědčené postupy, které pomohou zajistit dobře vytvořený a příjemný zážitek pro hráče:
Obtížnost vyvážení
Udržujte plynulou křivku obtížnosti ve všech úrovních. Postupně zvyšujte výzvy, abyste hráče udrželi v záběru, aniž byste je přemohli. Postupně zavádějte nové mechanismy a výzvy, což hráčům umožní přizpůsobit se a učit se.
Podporujte průzkum
Navrhněte úrovně se skrytými cestami, tajemstvími a volitelnými oblastmi, které mohou hráči prozkoumat. Průzkum odměňuje hráče bonusy, sběratelskými předměty nebo zkratkami, které dodávají hře hloubku.
Testování a iterace
Rozsáhle si otestujte své úrovně k identifikaci jakýchkoli problémů, chyb nebo nerovnováh. Opakujte návrh úrovní na základě zpětné vazby hráčů, abyste zlepšili celkový zážitek.
Obraz a zvuk
Věnujte pozornost vizuálním a zvukovým aspektům vašich úrovní. Poutavá grafika a zvukové efekty bez autorských práv mohou výrazně přispět k atmosféře a pohlcení vaší hry.
Úroveň průtoku
Ujistěte se, že tok hladiny je plynulý a logický. Proveďte hráče úrovní pomocí jasných vizuálních vodítek a vyhněte se slepým uličkám nebo matoucímu rozvržení.
Dodržováním těchto osvědčených postupů můžete vytvářet úrovně, které jsou nejen zábavné, ale také dobře navržené a koherentní v kontextu vaší hry.
Úrovně udělají vaše hry Godot poutavějšími
Úrovně hrají klíčovou roli v tom, aby hry Godot byly pro hráče poutavější. Dobře navržené úrovně poskytují pocit postupu, úspěchu a průzkumu a lákají hráče, aby pokračovali ve hře.
Pochopením principů level designu, využitím Godotových schopností a implementací další funkce, můžete vytvářet úrovně, které hráče zaujmou a povýší vaši hru na novou výšky.