Cum se creează niveluri în jocurile Godot

Crearea de niveluri este un aspect crucial al designului jocului, care poate spori semnificativ atractivitatea generală a jocului tău. Nivelurile oferă structura și provocările care îi mențin pe jucători implicați și motivați să progreseze în jocul tău.

Creand cu atenție niveluri bine concepute, poți crea o experiență mai captivantă și mai plăcută pentru jucătorii tăi. Indiferent dacă ești un începător sau un dezvoltator de jocuri cu experiență, Godot facilitează crearea de niveluri captivante, care îi vor face pe jucători să revină pentru mai multe.

Configurarea jocului Godot

Înainte de a începe să creați niveluri, este esențial să vă configurați proiectul de joc 2D în Godot Game Engine.

Codul folosit în acest articol este disponibil în acest articol Depozitul GitHub și este gratuit pentru utilizare sub licența MIT.

Creați o scenă nouă și adăugați un nod Node2D ca nod rădăcină. Acesta va servi drept container pentru toate celelalte noduri din scena ta. Acum că proiectul dvs. este configurat, este timpul să adăugați personajul jucătorului în scenă.

Creați o scenă nouă făcând clic dreapta în panoul Scenă și selectând Scenă nouă. Adăugați un nod CharacterBody2D pentru a reprezenta personajul jucătorului. Nodul CharacterBody2D oferă funcții încorporate pentru detectarea mișcării și a coliziunilor pentru caracterele 2D.

În interiorul nodului CharacterBody2D, adăugați un nod CollisionShape2D cu formă dreptunghiulară și un nod Sprite pentru a reprezenta aspectul jucătorului.

Cu personajul jucătorului și imaginile sale configurate, acum vă puteți concentra pe crearea primului nivel.

  Cum să dezactivați sugestiile pe pagina filă nouă Chrome

Creați două niveluri

Pentru a crea niveluri în Godot, puteți utiliza fișiere de scenă (.tscn) pentru a reprezenta fiecare nivel separat. Cu două niveluri, puteți implementa machete unice și platforme mobile.

Codul jucătorului

Scriptul CharacterBody2D este responsabil pentru gestionarea mișcării jucătorului pe baza intrării utilizatorului. În GDScript-ul furnizat, puteți calcula direcția mișcării pe baza apăsării tastelor și puteți seta viteza jucătorului în consecință.

Viteza jucătorului determină cât de repede se mișcă, iar funcția move_and_collide se ocupă de detectarea coliziunilor.

 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)

Cod platformă

Scriptul Platformă extinde StaticBody2D, ceea ce înseamnă că platforma nu se va mișca decât dacă îi aplicați o mișcare. În acest caz, puteți utiliza variabila move_speed pentru a controla cât de repede se mișcă platforma.

Platforma se deplasează înainte și înapoi orizontal în intervalul specificat (100 până la 400 de unități în acest exemplu). Când ajunge la margine, își inversează direcția de mișcare.

 
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

Folosind aceste scripturi, puteți crea modele de mișcare interesante pentru platforme și puteți crea experiențe de joc captivante în jocurile dvs. de platforme.

Niveluri de conectare

Într-un joc obișnuit, vei dori ca jucătorii să progreseze fără probleme de la un nivel la altul. Pentru a face acest lucru, implementați un script Level Manager care se ocupă de schimbarea nivelului atunci când jucătorul trece granița ecranului.

Scriptul Level Manager ține evidența numărului de nivel curent și a dimensiunii ecranului. Încarcă nivelul inițial (nivelul 1) în timpul _ready(). Funcția load_level preia un număr de nivel ca intrare, construiește calea către fișierul de scenă corespunzător și instanțează scena nivelului.

  Cum se configurează Microsoft Teams

Adăugați noul nivel ca copil al Managerului de nivel; aceasta va schimba efectiv nivelul actual.

 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()

Prin implementarea Level Manager, puteți trece fără probleme între niveluri și puteți păstra datele jucătorilor de la niveluri, asigurând o experiență de joc fără probleme.

Inclusiv caracteristici suplimentare

Crearea de niveluri vă permite să adăugați diverse funcții la jocul dvs., făcându-l mai captivant și mai interesant pentru jucători.

Obiecte de colecție

Adăugați obiecte de colecție precum monede, stele sau chei pe care jucătorii le pot aduna pentru a debloca noi zone sau pentru a primi recompense. Piesele de colecție încurajează explorarea și adaugă un strat de provocare jocului.

Inamici

Introduceți inamici cu comportamente și modele de mișcare diferite. Dușmanii creează obstacole pe care jucătorul le poate depăși, adăugând strategie și emoție jocului.

Power ups

Includeți power-up-uri care sporesc temporar abilitățile jucătorului, cum ar fi viteza crescută, invincibilitatea sau atacuri îmbunătățite. Power-up-urile oferă momente de împuternicire și pot ajuta jucătorii să depășească secțiunile provocatoare.

  Cel mai bun NAS pentru serverul dvs. media de acasă în 2024

Puzzle-uri

Proiectați elemente de puzzle pe care jucătorii trebuie să le rezolve pentru a trece prin nivel. Puzzle-urile adaugă un aspect cerebral jocului și îi pot face pe jucători să se simtă împliniți atunci când își dau seama.

Încorporând aceste funcții suplimentare în nivelurile tale, poți crea o experiență de joc bogată și variată, care captivează jucătorii și îi menține cufundați în lumea ta de joc.

Cele mai bune practici pentru crearea de niveluri

Când creați niveluri, păstrarea în minte a anumitor bune practici poate ajuta la asigurarea unei experiențe bine concepute și plăcute pentru jucători:

Dificultate de echilibru

Mențineți o curbă lină de dificultate pe tot parcursul nivelurilor. Creșteți treptat provocările pentru a menține jucătorii implicați fără a-i copleși. Introduceți noi mecanici și provocări treptat, permițând jucătorilor să se adapteze și să învețe.

Încurajează explorarea

Proiectați niveluri cu căi ascunse, secrete și zone opționale pe care jucătorii să le exploreze. Explorarea recompensează jucătorii cu bonusuri, obiecte de colecție sau comenzi rapide, adăugând profunzime jocului.

Testare și iterație

Testați-vă nivelurile pe scară largă pentru a identifica orice probleme, erori sau dezechilibre. Repetați designul nivelului pe baza feedback-ului jucătorului pentru a îmbunătăți experiența generală.

Vizual și Audio

Acordați atenție aspectelor vizuale și audio ale nivelurilor dvs. Grafica captivantă și efectele sonore fără drepturi de autor pot contribui în mod semnificativ la atmosfera și imersiunea jocului tău.

Flux de nivel

Asigurați-vă că fluxul de nivel este fluid și logic. Ghidează jucătorii prin nivel cu indicații vizuale clare și evită punctele fără fund sau amenajările confuze.

Respectând aceste bune practici, poți crea niveluri care nu sunt doar plăcute de jucat, ci și bine concepute și coerente în contextul jocului tău.

Nivelurile vă fac jocurile Godot mai captivante

Nivelurile joacă un rol esențial în a face jocurile Godot mai atractive pentru jucători. Nivelurile bine concepute oferă un sentiment de progres, realizare și explorare, atrăgând jucătorii să continue să joace.

Înțelegând principiile designului de nivel, valorificând capacitățile lui Godot și implementând caracteristici suplimentare, puteți crea niveluri care captivează jucătorii și vă ridică jocul la noi culmi.