Как да създадете нива в Godot Games

Създаването на нива е решаващ аспект от дизайна на играта, който може значително да подобри цялостната привлекателност на вашата игра. Нивата предоставят структурата и предизвикателствата, които поддържат играчите ангажирани и мотивирани да напредват в играта ви.

Чрез внимателно изработване на добре проектирани нива можете да създадете по-завладяващо и приятно изживяване за вашите играчи. Независимо дали сте начинаещ или опитен разработчик на игри, Godot улеснява създаването на завладяващи нива, които ще накарат играчите да се връщат за още.

Настройване на играта Godot

Преди да започнете да създавате нива, важно е да настроите своя проект за 2D игра в Godot Game Engine.

Кодът, използван в тази статия, е достъпен в това GitHub хранилище и е безплатен за използване под лиценза на MIT.

Създайте нова сцена и добавете възел Node2D като основен възел. Това ще служи като контейнер за всички други възли във вашата сцена. Сега, когато вашият проект е настроен, е време да добавите героя на играча към сцената.

Създайте нова сцена, като щракнете с десния бутон върху панела Scene и изберете New Scene. Добавете възел CharacterBody2D, за да представите героя на играча. Възелът CharacterBody2D предоставя вградени функции за откриване на движение и сблъсък за 2D герои.

Вътре във възела CharacterBody2D добавете възел CollisionShape2D с правоъгълна форма и възел Sprite, за да представите външния вид на играча.

С настроения герой на играча и неговите визуални ефекти вече можете да се съсредоточите върху създаването на вашето първо ниво.

Създайте две нива

За да създадете нива в Godot, можете да използвате файлове със сцени (.tscn), за да представите всяко ниво поотделно. С две нива можете да реализирате уникални оформления и движещи се платформи.

  Как да инсталирате разширения във VLC Player

Код на играча

Скриптът CharacterBody2D е отговорен за обработката на движението на играча въз основа на въвеждане от потребителя. В предоставения GDScript можете да изчислите посоката на движение въз основа на натискания на клавиши и съответно да зададете скоростта на играча.

Скоростта на играча определя колко бързо се движи, а функцията 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)

Код на платформата

Скриптът Platform разширява StaticBody2D, което означава, че платформата няма да се движи, освен ако не приложите движение към нея. В този случай можете да използвате променливата move_speed, за да контролирате колко бързо се движи платформата.

Платформата се движи напред-назад хоризонтално в рамките на определения диапазон (100 до 400 единици в този пример). Когато достигне ръба, той обръща посоката на движение.

 
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

Използвайки тези скриптове, можете да създавате интересни модели на движение за платформи и да проектирате ангажиращи геймплей изживявания във вашите платформинг игри.

Свързващи нива

В една типична игра ще искате играчите да преминават от едно ниво на друго безпроблемно. За да направите това, имплементирайте скрипт на Level Manager, който управлява превключването на нива, когато играчът пресече границата на екрана.

Скриптът Level Manager следи номера на текущото ниво и размера на екрана. Зарежда първоначалното ниво (ниво 1) по време на _ready(). Функцията load_level приема номер на ниво като вход, конструира пътя до съответния файл на сцената и инстанцира сцената на нивото.

  Не, не е нужно да деинсталирате VLC

Добавете новото ниво като дъщерно на мениджъра на нивата; това ефективно ще превключи текущото ниво.

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

Чрез внедряване на Level Manager можете безпроблемно да превключвате между нива и да поддържате данни за играчите през нивата, осигурявайки безпроблемно игрово изживяване.

Включително допълнителни функции

Създаването на нива ви позволява да добавяте различни функции към вашата игра, което я прави по-ангажираща и вълнуваща за играчите.

Колекционерски предмети

Добавете колекционерски предмети като монети, звезди или ключове, които играчите могат да събират, за да отключват нови области или да получават награди. Колекционерските предмети насърчават изследването и добавят ниво на предизвикателство към геймплея.

Врагове

Представете врагове с различно поведение и модели на движение. Враговете създават препятствия, които играчът да преодолее, добавяйки стратегия и вълнение към играта.

Усилвания

Включете бонуси, които временно повишават способностите на играча, като например повишена скорост, непобедимост или подобрени атаки. Усилванията осигуряват моменти на овластяване и могат да помогнат на играчите да преодолеят трудни секции.

Пъзели

Проектирайте елементи на пъзел, които играчите трябва да решат, за да преминат през нивото. Пъзелите добавят умствен аспект към играта и могат да накарат играчите да се почувстват завършени, когато ги решат.

  Топ 16 AAA игри, които привличат цялата игрална общност –

Като включите тези допълнителни функции във вашите нива, можете да създадете богато и разнообразно игрово изживяване, което завладява играчите и ги държи потопени във вашия свят на игри.

Най-добри практики за създаване на нива

Когато създавате нива, спазването на определени най-добри практики може да помогне да се осигури добре изработено и приятно изживяване за играчите:

Трудност на баланса

Поддържайте плавна крива на трудност през вашите нива. Постепенно увеличавайте предизвикателствата, за да държите играчите ангажирани, без да ги претоварвате. Въвеждайте постепенно нови механики и предизвикателства, позволявайки на играчите да се адаптират и учат.

Насърчавайте изследването

Проектирайте нива със скрити пътеки, тайни и зони по избор, които играчите да изследват. Exploration награждава играчите с бонуси, колекционерски предмети или преки пътища, добавяйки дълбочина към играта.

Тестване и итерация

Тествайте обстойно нивата си, за да идентифицирате всякакви проблеми, грешки или дисбаланси. Повторете дизайна на ниво въз основа на отзивите на играчите, за да подобрите цялостното изживяване.

Визуални и аудио

Обърнете внимание на визуалните и аудио аспектите на вашите нива. Ангажиращите графики и звуковите ефекти без авторски права могат значително да допринесат за атмосферата и потапянето във вашата игра.

Ниво на потока

Уверете се, че потокът на нивото е плавен и логичен. Водете играчите през нивото с ясни визуални подсказки и избягвайте задънени улици или объркващи оформления.

Като се придържате към тези най-добри практики, можете да създадете нива, които са не само приятни за игра, но и добре проектирани и съгласувани в контекста на вашата игра.

Нивата правят вашите игри Godot по-ангажиращи

Нивата играят ключова роля в това да направят игрите Godot по-ангажиращи за играчите. Добре проектираните нива осигуряват усещане за напредък, постижение и изследване, примамвайки играчите да продължат да играят.

Чрез разбиране на принципите на проектиране на нива, използване на възможностите на Godot и внедряване на допълнителни функции, можете да създавате нива, които завладяват играчите и издигат играта ви до нови висоти.