Jak tworzyć poziomy w grach Godot

Tworzenie poziomów to kluczowy aspekt projektowania gry, który może znacznie poprawić ogólną atrakcyjność gry. Poziomy zapewniają strukturę i wyzwania, które utrzymują zaangażowanie graczy i motywację do robienia postępów w grze.

Starannie opracowując dobrze zaprojektowane poziomy, możesz stworzyć bardziej wciągające i przyjemniejsze wrażenia dla swoich graczy. Niezależnie od tego, czy jesteś początkującym, czy doświadczonym twórcą gier, Godot ułatwia tworzenie urzekających poziomów, które sprawią, że gracze będą wracać po więcej.

Przygotowanie gry Godot

Zanim zaczniesz tworzyć poziomy, konieczne jest skonfigurowanie projektu gry 2D w Godot Game Engine.

Kod użyty w tym artykule jest dostępny w this Repozytorium GitHub i jest darmowy do użytku na licencji MIT.

Utwórz nową scenę i dodaj węzeł Node2D jako węzeł główny. Będzie to służyć jako kontener dla wszystkich innych węzłów w twojej scenie. Teraz, gdy twój projekt jest skonfigurowany, nadszedł czas, aby dodać postać gracza do sceny.

Utwórz nową scenę, klikając prawym przyciskiem myszy panel Scena i wybierając opcję Nowa scena. Dodaj węzeł CharacterBody2D, aby reprezentować postać gracza. Węzeł CharacterBody2D zapewnia wbudowane funkcje wykrywania ruchu i kolizji dla znaków 2D.

W węźle CharacterBody2D dodaj węzeł CollisionShape2D o kształcie prostokąta i węzeł Sprite reprezentujący wygląd gracza.

Po skonfigurowaniu postaci gracza i jej grafiki możesz teraz skupić się na tworzeniu pierwszego poziomu.

Utwórz dwa poziomy

Aby utworzyć poziomy w Godot, możesz użyć plików scen (.tscn) do osobnego przedstawienia każdego poziomu. Dzięki dwóm poziomom możesz zaimplementować unikalne układy i ruchome platformy.

Kod gracza

Skrypt CharacterBody2D jest odpowiedzialny za obsługę ruchu gracza na podstawie danych wprowadzonych przez użytkownika. W dostarczonym GDScript możesz obliczyć kierunek ruchu na podstawie naciśnięć klawiszy i odpowiednio ustawić prędkość gracza.

Szybkość gracza określa, jak szybko się porusza, a funkcja move_and_collide zajmuje się wykrywaniem kolizji.

 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 platformy

Skrypt platformy rozszerza StaticBody2D, co oznacza, że ​​platforma nie poruszy się, dopóki nie zastosujesz do niej ruchu. W takim przypadku możesz użyć zmiennej move_speed, aby kontrolować szybkość poruszania się platformy.

Platforma porusza się poziomo w przód iw tył w określonym zakresie (w tym przykładzie od 100 do 400 jednostek). Po dotarciu do krawędzi odwraca kierunek ruchu.

 
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

Korzystając z tych skryptów, możesz tworzyć ciekawe wzorce ruchu dla platform i projektować wciągającą rozgrywkę w grach platformowych.

Łączenie poziomów

W typowej grze chcesz, aby gracze płynnie przechodzili z jednego poziomu na drugi. Aby to zrobić, zaimplementuj skrypt Menedżera poziomów, który obsługuje przełączanie poziomów, gdy gracz przekracza granicę ekranu.

Skrypt Menedżera poziomów śledzi bieżący numer poziomu i rozmiar ekranu. Ładuje poziom początkowy (poziom 1) podczas _ready(). Funkcja load_level pobiera numer poziomu jako dane wejściowe, tworzy ścieżkę do odpowiedniego pliku sceny i tworzy instancję sceny poziomu.

Dodaj nowy poziom jako element potomny Menedżera poziomów; spowoduje to skuteczną zmianę bieżącego poziomu.

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

Wdrażając Menedżera poziomów, możesz płynnie przechodzić między poziomami i przechowywać dane graczy na różnych poziomach, zapewniając płynną rozgrywkę.

W tym dodatkowe funkcje

Tworzenie poziomów pozwala dodawać różne funkcje do gry, czyniąc ją bardziej wciągającą i ekscytującą dla graczy.

Artykuły kolekcjonerskie

Dodaj przedmioty kolekcjonerskie, takie jak monety, gwiazdki lub klucze, które gracze mogą zebrać, aby odblokować nowe obszary lub otrzymać nagrody. Przedmioty kolekcjonerskie zachęcają do eksploracji i dodają poziom wyzwań do rozgrywki.

Wrogowie

Wprowadź wrogów o różnych zachowaniach i wzorcach poruszania się. Wrogowie tworzą przeszkody, które gracz musi pokonać, dodając strategię i ekscytację do gry.

Dopalacze

Dołącz ulepszenia, które tymczasowo zwiększają umiejętności gracza, takie jak zwiększona prędkość, niezwyciężoność lub ulepszone ataki. Wzmocnienia zapewniają chwile wzmocnienia i mogą pomóc graczom pokonać trudne sekcje.

Puzzle

Zaprojektuj elementy puzzli, które gracze muszą rozwiązać, aby przejść przez poziom. Łamigłówki dodają mózgowego aspektu rozgrywce i mogą sprawić, że gracze poczują się spełnieni, gdy je rozgryzą.

Włączając te dodatkowe funkcje do swoich poziomów, możesz stworzyć bogatą i zróżnicowaną rozgrywkę, która zniewoli graczy i pozwoli im zanurzyć się w świecie gry.

Najlepsze praktyki tworzenia poziomów

Podczas tworzenia poziomów pamiętanie o pewnych najlepszych praktykach może zapewnić graczom dobrze przygotowane i przyjemne wrażenia:

Trudność równowagi

Zachowaj płynną krzywą trudności na wszystkich poziomach. Stopniowo zwiększaj wyzwania, aby utrzymać zaangażowanie graczy bez ich przytłaczania. Stopniowo wprowadzaj nowe mechaniki i wyzwania, pozwalając graczom na dostosowanie się i naukę.

Zachęcaj do eksploracji

Projektuj poziomy z ukrytymi ścieżkami, sekretami i opcjonalnymi obszarami do eksploracji przez graczy. Eksploracja nagradza graczy bonusami, przedmiotami kolekcjonerskimi lub skrótami, dodając głębi rozgrywce.

Testowanie i iteracja

Przetestuj swoje poziomy w dużym stopniu, aby zidentyfikować wszelkie problemy, błędy lub brak równowagi. Powtarzaj projekt poziomów w oparciu o opinie graczy, aby poprawić ogólne wrażenia.

Wizualne i dźwiękowe

Zwróć uwagę na wizualne i dźwiękowe aspekty swoich poziomów. Wciągająca grafika i wolne od praw autorskich efekty dźwiękowe mogą znacząco przyczynić się do atmosfery i immersji w Twojej grze.

Przepływ poziomu

Upewnij się, że przepływ poziomu jest płynny i logiczny. Prowadź graczy przez poziom za pomocą wyraźnych wskazówek wizualnych i unikaj ślepych zaułków lub mylących układów.

Stosując się do tych najlepszych praktyk, możesz tworzyć poziomy, które są nie tylko przyjemne w grze, ale także dobrze zaprojektowane i spójne w kontekście twojej gry.

Poziomy Spraw, aby Twoje gry Godot były bardziej wciągające

Poziomy odgrywają kluczową rolę w tworzeniu gier Godot bardziej wciągających dla graczy. Dobrze zaprojektowane poziomy zapewniają poczucie postępu, osiągnięć i eksploracji, zachęcając graczy do kontynuowania gry.

Dzięki zrozumieniu zasad projektowania poziomów, wykorzystaniu możliwości Godota i wdrożeniu dodatkowych funkcji, możesz tworzyć poziomy, które zniewolą graczy i wyniosą Twoją grę na nowy poziom.