Skab en følelse af progression og udfordring ved at tilføje en række forskellige niveauer til dine spil.

Oprettelse af niveauer er et afgørende aspekt af spildesign, der kan forbedre dit spils overordnede appel betydeligt. Niveauer giver strukturen og udfordringerne, der holder spillerne engagerede og motiverede til at komme videre gennem dit spil.

Ved omhyggeligt at lave veldesignede baner kan du skabe en mere fordybende og fornøjelig oplevelse for dine spillere. Uanset om du er nybegynder eller erfaren spiludvikler, gør Godot det nemt at skabe fængslende niveauer, der får spillere til at komme tilbage efter mere.

Opsætning af Godot-spillet

Før du begynder at oprette niveauer, er det vigtigt at konfigurere dit 2D-spilprojekt i Godot spilmotor.

Koden brugt i denne artikel er tilgængelig i denne GitHub-depot og er gratis for dig at bruge under MIT-licensen.

Opret en ny scene og tilføj en Node2D node som rodnode. Dette vil fungere som container for alle andre noder i din scene. Nu hvor dit projekt er sat op, er det tid til at tilføje spillerkarakteren til scenen.

instagram viewer

Opret en ny scene ved at højreklikke i scenepanelet og vælge Ny scene. Tilføj en CharacterBody2D node for at repræsentere spillerens karakter. Det CharacterBody2D node giver indbyggede funktioner til bevægelses- og kollisionsdetektion for 2D-tegn.

Inde i CharacterBody2D node, tilføj en CollisionShape2D node med en rektangelform og en Sprite node for at repræsentere spillerens udseende.

Med spillerkarakteren og dens visuals sat op, kan du nu fokusere på at skabe dit første niveau.

Opret to niveauer

For at oprette niveauer i Godot kan du bruge scenefiler (.tscn) for at repræsentere hvert niveau separat. Med to niveauer kan du implementere unikke layouts og bevægelige platforme.

Spiller kode

Det CharacterBody2D script er ansvarlig for at håndtere spillerens bevægelse baseret på brugerinput. I det medfølgende GDScript kan du beregne bevægelsesretningen baseret på tastetryk og indstille spillerens hastighed i overensstemmelse hermed.

Spillerens hastighed bestemmer, hvor hurtigt de bevæger sig, og flytte_og_kollidere funktion tager sig af kollisionsdetektion.

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)

Platform kode

Det Platform script udvides StaticBody2D, hvilket betyder, at platformen ikke bevæger sig, medmindre du påfører den en bevægelse. I dette tilfælde kan du bruge move_speed variabel for at kontrollere, hvor hurtigt platformen bevæger sig.

Platformen bevæger sig frem og tilbage vandret inden for det specificerede område (100 til 400 enheder i dette eksempel). Når den når kanten, vender den sin bevægelsesretning.

# Platform Movement
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)

# Change direction when reaching the edge of the platform's path
if position.x > 400or position.x < 100:
move_direction *= -1

Ved at bruge disse scripts kan du skabe interessante bevægelsesmønstre til platforme og designe engagerende spiloplevelser i dine platformspil.

Forbindende niveauer

I et typisk spil vil du have, at spillere kan gå fra et niveau til et andet problemfrit. For at gøre det skal du implementere et Level Manager-script, der håndterer niveauskift, når spilleren krydser skærmgrænsen.

Det Niveauleder script holder styr på det aktuelle niveaunummer og skærmstørrelse. Den indlæser det indledende niveau (niveau 1) under _parat(). Det load_level funktionen tager et niveaunummer som input, konstruerer stien til den tilsvarende scenefil og instansierer niveauets scene.

Tilføj det nye niveau som et barn af Niveauleder; dette vil effektivt skifte det aktuelle niveau.

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

# Assuming the player node is named "Player"
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):
# 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()

Ved at implementere Level Manager kan du problemfrit skifte mellem niveauer og vedligeholde spillerdata på tværs af niveauer, hvilket sikrer en jævn spiloplevelse.

Inklusiv yderligere funktioner

Oprettelse af niveauer giver dig mulighed for at tilføje forskellige funktioner til dit spil, hvilket gør det mere engagerende og spændende for spillere.

Samlerobjekter

Tilføj samleobjekter som mønter, stjerner eller nøgler, som spillere kan samle for at låse op for nye områder eller modtage belønninger. Samlerobjekter tilskynder til udforskning og tilføjer et lag af udfordring til gameplayet.

Fjender

Introducer fjender med forskellig adfærd og bevægelsesmønstre. Fjender skaber forhindringer for spilleren at overvinde, hvilket tilføjer strategi og spænding til spillet.

Power-ups

Medtag power-ups, der midlertidigt booster spillerens evner, såsom øget hastighed, uovervindelighed eller forbedrede angreb. Power-ups giver øjeblikke af empowerment og kan hjælpe spillere med at overvinde udfordrende sektioner.

Gåder

Design puslespilselementer, som spillerne skal løse for at komme videre gennem niveauet. Puslespil tilføjer et cerebralt aspekt til gameplayet og kan få spillere til at føle sig gennemførte, når de finder ud af dem.

Ved at inkorporere disse ekstra funktioner i dine baner, kan du skabe en rig og varieret spiloplevelse, der fængsler spillere og holder dem fordybet i din spilverden.

Bedste fremgangsmåder til at skabe niveauer

Når du opretter niveauer, kan det være med til at sikre en gennemarbejdet og fornøjelig oplevelse for spillere at holde visse bedste praksisser i tankerne:

Balancebesvær

Oprethold en jævn sværhedsgradskurve gennem dine niveauer. Øg gradvist udfordringerne for at holde spillerne engageret uden at overvælde dem. Introducer ny mekanik og udfordringer gradvist, så spillerne kan tilpasse sig og lære.

Tilskynd til udforskning

Design niveauer med skjulte stier, hemmeligheder og valgfrie områder, som spillerne kan udforske. Udforskning belønner spillere med bonusser, samleobjekter eller genveje, hvilket tilføjer dybde til gameplayet.

Test og iteration

Spiltest dine niveauer grundigt for at identificere eventuelle problemer, fejl eller ubalancer. Gentag niveaudesignet baseret på spillerfeedback for at forbedre den overordnede oplevelse.

Billed og lyd

Vær opmærksom på de visuelle og lydmæssige aspekter af dine niveauer. Engagerende grafik og copyright-fri lydeffekter kan bidrage væsentligt til atmosfæren og fordybelsen i dit spil.

Niveau flow

Sørg for, at niveauflowet er jævnt og logisk. Guide spillere gennem niveauet med klare visuelle signaler, og undgå blindgyder eller forvirrende layouts.

Ved at følge disse bedste praksisser kan du skabe niveauer, der ikke kun er sjove at spille, men også veldesignede og sammenhængende inden for rammerne af dit spil.

Niveauer gør dine Godot-spil mere engagerende

Niveauer spiller en central rolle i at gøre Godot-spil mere engagerende for spillere. Veldesignede baner giver en følelse af progression, præstation og udforskning, hvilket lokker spillere til at fortsætte med at spille.

Ved at forstå principperne for niveaudesign, udnytte Godots evner og implementere yderligere funktioner kan du lave niveauer, der fængsler spillere og løfter dit spil til nyt højder.