Stvorite osjećaj napredovanja i izazova dodavanjem raznih razina svojim igrama.

Stvaranje razina ključni je aspekt dizajna igre koji može značajno poboljšati ukupnu privlačnost vaše igre. Razine pružaju strukturu i izazove koji drže igrače angažiranima i motiviranima za napredovanje kroz vašu igru.

Pažljivom izradom dobro dizajniranih razina možete stvoriti impresivnije i ugodnije iskustvo za svoje igrače. Bilo da ste početnik ili iskusan programer igara, Godot olakšava stvaranje zadivljujućih razina koje će natjerati igrače da se vraćaju po nove.

Postavljanje igre Godot

Prije nego počnete stvarati razine, bitno je postaviti svoj projekt 2D igre Godot Game Engine.

Kôd korišten u ovom članku dostupan je u ovom GitHub spremište i besplatan je za korištenje pod MIT licencom.

Napravite novu scenu i dodajte a Čvor 2D čvor kao korijenski čvor. Ovo će služiti kao spremnik za sve druge čvorove u vašoj sceni. Sada kada je vaš projekt postavljen, vrijeme je da dodate lik igrača na scenu.

Stvorite novu scenu desnim klikom na ploču Scene i odabirom

instagram viewer
Nova scena. Dodati CharacterBody2D čvor za predstavljanje lika igrača. The CharacterBody2D čvor pruža ugrađene značajke za otkrivanje kretanja i sudara za 2D likove.

Unutar CharacterBody2D čvor, dodajte a CollisionShape2D čvor pravokutnog oblika i a Sprite čvor za predstavljanje izgleda igrača.

S postavljenim likom igrača i njegovim vizualnim elementima, sada se možete usredotočiti na stvaranje svoje prve razine.

Stvorite dvije razine

Za izradu razina u Godotu možete koristiti datoteke scene (.tscn) za predstavljanje svake razine zasebno. S dvije razine možete implementirati jedinstvene rasporede i pokretne platforme.

Kod igrača

The CharacterBody2D skripta je odgovorna za rukovanje kretanjem igrača na temelju korisničkog unosa. U priloženom GDScriptu možete izračunati smjer kretanja na temelju pritiskanja tipki i u skladu s tim postaviti brzinu igrača.

Brzina igrača određuje koliko se brzo kreće i kretati_i_sudarati funkcija se brine za otkrivanje sudara.

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)

Kod platforme

The Platforma skripta se proteže StaticBody2D, što znači da se platforma neće pomaknuti ako na nju ne primijenite pokret. U ovom slučaju možete koristiti brzina_kretanja varijabla za kontrolu brzine kretanja platforme.

Platforma se pomiče naprijed-nazad vodoravno unutar navedenog raspona (100 do 400 jedinica u ovom primjeru). Kada dođe do ruba, mijenja smjer kretanja.

# 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

Pomoću ovih skripti možete stvoriti zanimljive obrasce kretanja za platforme i dizajnirati zanimljiva iskustva igranja vaše platformske igre.

Razine povezivanja

U tipičnoj igri željet ćete da igrači neprimjetno napreduju s jedne razine na drugu. Da biste to učinili, implementirajte skriptu Level Manager koja upravlja promjenom razine kada igrač prijeđe granicu zaslona.

The Upravitelj razine skripta prati broj trenutne razine i veličinu zaslona. Učitava početnu razinu (razina 1) tijekom _spreman(). The razina_opterećenja funkcija uzima broj razine kao ulaz, konstruira put do odgovarajuće datoteke scene i instancira scenu razine.

Dodajte novu razinu kao dijete Upravitelj razine; ovo će učinkovito promijeniti trenutnu razinu.

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

Implementacijom Level Managera, možete neprimjetno prelaziti između razina i održavati podatke o igračima na svim razinama, osiguravajući glatko iskustvo igranja.

Uključujući dodatne značajke

Stvaranje razina omogućuje vam dodavanje raznih značajki vašoj igri, čineći je privlačnijom i uzbudljivijom za igrače.

Kolekcionarstvo

Dodajte kolekcionarske predmete poput novčića, zvjezdica ili ključeva koje igrači mogu prikupiti za otključavanje novih područja ili primanje nagrada. Kolekcionarski predmeti potiču istraživanje i dodaju sloj izazova igranju.

Neprijatelji

Predstavite neprijatelje s različitim ponašanjima i obrascima kretanja. Neprijatelji stvaraju prepreke koje igrač mora savladati, dodajući igri strategiju i uzbuđenje.

pojačanja

Uključite pojačanja koja privremeno povećavaju igračeve sposobnosti, kao što su povećana brzina, nepobjedivost ili poboljšani napadi. Pojačanja pružaju trenutke osnaživanja i mogu pomoći igračima u svladavanju izazovnih dionica.

Zagonetke

Dizajnirajte elemente slagalice koje igrači moraju riješiti kako bi napredovali kroz razinu. Zagonetke dodaju cerebralni aspekt igranju i mogu učiniti da se igrači osjećaju uspješno kada ih shvate.

Uključivanjem ovih dodatnih značajki u svoje razine, možete stvoriti bogato i raznoliko iskustvo igranja koje osvaja igrače i drži ih uronjenima u vaš svijet igre.

Najbolji primjeri iz prakse za stvaranje razina

Prilikom izrade razina, imajući na umu određene najbolje prakse može pomoći u osiguravanju dobro osmišljenog i ugodnog iskustva za igrače:

Poteškoće s ravnotežom

Održavajte glatku krivulju težine kroz svoje razine. Postupno povećavajte izazove kako biste igrače zaokupili, a da ih ne opteretite. Postupno uvodite nove mehanike i izazove, dopuštajući igračima da se prilagode i uče.

Potaknite istraživanje

Dizajnirajte razine sa skrivenim stazama, tajnama i izbornim područjima koje igrači mogu istraživati. Istraživanje nagrađuje igrače bonusima, kolekcionarskim predmetima ili prečacima, dodajući dubinu igrivosti.

Testiranje i ponavljanje

Opširno testirajte svoje razine za prepoznavanje problema, grešaka ili neravnoteža. Ponovite dizajn razine na temelju povratnih informacija igrača kako biste poboljšali cjelokupno iskustvo.

Vizualni i audio sadržaji

Obratite pozornost na vizualne i audio aspekte vaših razina. Zanimljiva grafika i zvučni efekti bez autorskih prava mogu značajno pridonijeti atmosferi i uživljavanju u igru.

Razina protoka

Osigurajte da je tok razine gladak i logičan. Vodite igrače kroz razinu s jasnim vizualnim znakovima i izbjegavajte slijepe ulice ili zbunjujuće rasporede.

Pridržavajući se ovih najboljih praksi, možete stvoriti razine koje nisu samo ugodne za igranje, već su i dobro dizajnirane i koherentne unutar konteksta vaše igre.

Razine čine vaše Godot igre privlačnijim

Razine igraju ključnu ulogu u tome da Godot igre budu privlačnije za igrače. Dobro osmišljene razine daju osjećaj napredovanja, postignuća i istraživanja, mameći igrače da nastave igrati.

Razumijevanjem principa dizajna razina, iskorištavanjem Godotovih mogućnosti i implementacijom dodatne značajke, možete izraditi razine koje će očarati igrače i podići vašu igru ​​na novu razinu visine.