Како направити нивое у Годот играма

Креирање нивоа је кључни аспект дизајна игре који може значајно побољшати укупну привлачност ваше игре. Нивои пружају структуру и изазове који одржавају играче ангажованим и мотивисаним да напредују кроз вашу игру.

Пажљиво креирајући добро дизајниране нивое, можете да створите импресивније и пријатније искуство за своје играче. Било да сте почетник или искусан програмер игара, Годот олакшава креирање задивљујућих нивоа који ће натерати играче да се враћају по још.

Подешавање игре Годот

Пре него што почнете да креирате нивое, неопходно је да подесите свој пројекат 2Д игре у Годот Гаме Енгине-у.

Код који се користи у овом чланку доступан је у овом ГитХуб спремиште и бесплатан је за коришћење под МИТ лиценцом.

Направите нову сцену и додајте Ноде2Д чвор као основни чвор. Ово ће служити као контејнер за све остале чворове у вашој сцени. Сада када је ваш пројекат постављен, време је да додате лик играча на сцену.

Направите нову сцену тако што ћете десним тастером миша кликнути на панел Сцене и изабрати Нова сцена. Додајте ЦхарацтерБоди2Д чвор који представља лик играча. ЦхарацтерБоди2Д чвор пружа уграђене функције за детекцију кретања и судара за 2Д ликове.

Унутар чвора ЦхарацтерБоди2Д додајте чвор ЦоллисионСхапе2Д са обликом правоугаоника и чвор Сприте који ће представљати изглед играча.

Са подешеним ликом играча и његовим визуелним приказима, сада се можете фокусирати на креирање свог првог нивоа.

  Шта је ВПС ВиФи заштићено подешавање и да ли је опасно?

Направите два нивоа

Да бисте креирали нивое у Годоту, можете користити датотеке сцене (.тсцн) да бисте сваки ниво посебно представљали. Са два нивоа, можете имплементирати јединствене распореде и покретне платформе.

Код играча

Скрипта ЦхарацтерБоди2Д је одговорна за руковање кретањем играча на основу корисничког уноса. У приложеном ГДСцрипт-у можете израчунати правац кретања на основу притиска на тастере и у складу са тим подесити брзину играча.

Брзина играча одређује колико се брзо крећу, а функција мове_анд_цоллиде се брине за детекцију судара.

 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)

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

Платформска скрипта проширује СтатицБоди2Д, што значи да се платформа неће померити ако на њу не примените покрет. У овом случају, можете користити променљиву мове_спеед да контролишете колико се брзо платформа креће.

Платформа се креће напред-назад хоризонтално унутар наведеног опсега (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

Користећи ове скрипте, можете креирати занимљиве обрасце кретања за платформе и дизајнирати привлачна искуства играња у вашим платформским играма.

Повезивање нивоа

У типичној игри, желећете да играчи неометано напредују са једног нивоа на други. Да бисте то урадили, примените скрипту Менаџера нивоа која управља променом нивоа када играч пређе границу екрана.

Скрипта Левел Манагер прати број тренутног нивоа и величину екрана. Учитава почетни ниво (ниво 1) током _реади(). Функција лоад_левел узима број нивоа као улаз, конструише путању до одговарајуће датотеке сцене и инстанцира сцену нивоа.

  5 вештина које сваки ДевОпс инжењер треба да има

Додајте нови ниво као подређени ниво менаџера; ово ће ефективно променити тренутни ниво.

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

Имплементацијом Левел Манагер-а, можете неприметно прелазити са једног нивоа на други и одржавати податке о играчима на различитим нивоима, обезбеђујући глатко искуство играња.

Укључујући додатне функције

Креирање нивоа вам омогућава да додате различите функције вашој игри, чинећи је занимљивијом и узбудљивијом за играче.

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

Додајте колекционарске предмете као што су новчићи, звездице или кључеви које играчи могу прикупити да откључају нова подручја или добију награде. Колекционарски предмети подстичу истраживање и додају слој изазова игри.

Непријатељи

Представите непријатеље са различитим понашањем и обрасцима кретања. Непријатељи стварају препреке које играч треба да савлада, додајући стратегију и узбуђење игри.

Повер-Упс

Укључите појачања која привремено повећавају способности играча, као што су повећана брзина, непобедивост или побољшани напади. Појачања пружају тренутке оснаживања и могу помоћи играчима да превазиђу изазовне делове.

  7 најбољих софтвера за надгледање ваше веб апликације [Self-hosted and Cloud-based]

Загонетке

Дизајнирајте елементе слагалице које играчи морају да реше да би напредовали кроз ниво. Загонетке додају церебрални аспект игри и могу учинити да се играчи осећају оствареним када их схвате.

Укључујући ове додатне функције у своје нивое, можете створити богато и разнолико искуство играња које плени играче и одржава их уроњенима у ваш свет игре.

Најбоље праксе за прављење нивоа

Приликом креирања нивоа, држање одређених најбољих пракси на уму може помоћи да се обезбеди добро направљено и пријатно искуство за играче:

Потешкоће са равнотежом

Одржавајте глатку криву тежине на свим нивоима. Постепено повећавајте изазове да бисте задржали ангажовање играча, а да их не надмашите. Постепено уводите нове механике и изазове, омогућавајући играчима да се прилагоде и уче.

Охрабрите истраживање

Дизајнирајте нивое са скривеним стазама, тајнама и опционим областима које играчи могу истражити. Истраживање награђује играче бонусима, колекционарским предметима или пречицама, додајући дубину игри.

Тестирање и итерација

Опсежно тестирајте своје нивое да бисте идентификовали проблеме, грешке или неравнотеже. Итерирајте дизајн нивоа на основу повратних информација играча да бисте побољшали целокупно искуство.

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

Обратите пажњу на визуелне и аудио аспекте ваших нивоа. Занимљива графика и звучни ефекти без ауторских права могу значајно допринети атмосфери и уроњењу у вашу игру.

Левел Флов

Уверите се да је ток нивоа гладак и логичан. Водите играче кроз ниво помоћу јасних визуелних знакова и избегавајте ћорсокаке или збуњујуће распореде.

Придржавајући се ових најбољих пракси, можете креирати нивое који нису само пријатни за играње, већ су и добро дизајнирани и кохерентни у контексту ваше игре.

Нивои чине ваше Годот игре занимљивијим

Нивои играју кључну улогу у томе да Годот игре буду привлачније за играче. Добро осмишљени нивои пружају осећај напредовања, постигнућа и истраживања, маме играче да наставе да играју.

Разумевањем принципа дизајна нивоа, коришћењем Годоових могућности и применом додатних функција, можете да креирате нивое који ће очарати играче и подићи своју игру на нове висине.