Jak vytvářet úrovně ve hrách Godot

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 v Godot Game Engine.

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 uzel Node2D 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 možnosti Nová scéna. Přidejte uzel CharacterBody2D, který bude reprezentovat postavu hráče. Uzel CharacterBody2D poskytuje vestavěné funkce pro detekci pohybu a kolizí pro 2D postavy.

Do uzlu CharacterBody2D přidejte uzel CollisionShape2D s tvarem obdélníku a uzel Sprite, který bude reprezentovat 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), které reprezentují každou úroveň samostatně. Se dvěma úrovněmi můžete implementovat jedinečné rozvržení a pohyblivé platformy.

  Chrome nyní v adresách skrývá WWW a HTTPS://. Zajímáš se?

Kód hráče

Skript CharacterBody2D 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 pohybují, o detekci kolize se stará funkce move_and_collide.

 extends CharacterBody2D

var speed = 300

func _physics_process(delta):
    var input_dir = Vector2.ZERO

    if Input.is_action_pressed("ui_left"):
        input_dir.x -= 1

    if Input.is_action_pressed("ui_right"):
        input_dir.x += 1

    if Input.is_action_pressed("ui_up"):
        input_dir.y -= 1

    if Input.is_action_pressed("ui_down"):
        input_dir.y += 1

    velocity = input_dir.normalized() * speed
    move_and_collide(velocity * delta)

Kód platformy

Skript Platform rozšiřuje StaticBody2D, což znamená, že platforma se nepohne, dokud na ni nepoužijete pohyb. V tomto případě můžete pomocí proměnné move_speed řídit, jak rychle se platforma pohybuje.

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.

 
extends StaticBody2D

const move_speed = 100
var move_direction = Vector2(1, 0)

func _physics_process(delta):
    var platform_movement = move_direction * move_speed * delta
    translate(platform_movement)

    
    if position.x > 400 or 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 ve svých platformových hrách.

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.

Skript Level Manager sleduje číslo aktuální úrovně a velikost obrazovky. Načte počáteční úroveň (úroveň 1) během _ready(). Funkce load_level vezme jako vstup číslo úrovně, vytvoří cestu k souboru odpovídající scény a vytvoří instanci scény úrovně.

  Jak uskutečňovat hlasové hovory a videohovory na Skype

Přidejte novou úroveň jako potomka správce úrovní; to účinně přepne aktuální úroveň.

 extends Node2D

var level_number = 1
var screen_size = Vector2()
var is_switching_level = false

func _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 = false

func switch_level():
    if is_switching_level:
        return

    is_switching_level = true
    level_number += 1

    if level_number > 2:
        level_number = 1

    
    var player = get_node("Node2D/Player")

    if player:
        var player_position = player.position

        if 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 = 0

    get_node("Node2D").queue_free()
    load_level(level_number)

func _process(delta):
    
    
    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.

  Jak získat emotikony na Androidu

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 otestujte své úrovně, abyste identifikovali jakékoli problémy, chyby nebo nerovnováhu. 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ů designu úrovní, využitím Godotových schopností a implementací dalších funkcí můžete vytvořit úrovně, které hráče zaujmou a pozvednou vaši hru do nových výšin.