Створите осећај напредовања и изазова додавањем различитих нивоа својим играма.
Креирање нивоа је кључни аспект дизајна игре који може значајно побољшати укупну привлачност ваше игре. Нивои пружају структуру и изазове који одржавају играче ангажованим и мотивисаним да напредују кроз вашу игру.
Пажљиво креирајући добро дизајниране нивое, можете да створите импресивније и пријатније искуство за своје играче. Било да сте почетник или искусан програмер игара, Годот олакшава креирање задивљујућих нивоа који ће натерати играче да се враћају по још.
Подешавање игре Годо
Пре него што почнете да креирате нивое, неопходно је да подесите свој пројекат 2Д игре Годот Гаме Енгине.
Код који се користи у овом чланку доступан је у овом ГитХуб спремиште и бесплатан је за коришћење под МИТ лиценцом.
Направите нову сцену и додајте а Ноде2Д чвор као коренски чвор. Ово ће служити као контејнер за све остале чворове у вашој сцени. Сада када је ваш пројекат постављен, време је да додате лик играча на сцену.
Направите нову сцену тако што ћете кликнути десним тастером миша на панел Сцене и изабрати
Нова сцена. Додајте а ЦхарацтерБоди2Д чвор који представља лик играча. Тхе ЦхарацтерБоди2Д чвор пружа уграђене функције за детекцију кретања и колизије за 2Д ликове.Унутар ЦхарацтерБоди2Д чвор, додајте а ЦоллисионСхапе2Д чвор са обликом правоугаоника и а Сприте чвор који представља изглед играча.
Са подешеним ликом играча и његовим визуелним приказима, сада се можете фокусирати на креирање свог првог нивоа.
Направите два нивоа
Да бисте креирали нивое у Годоту, можете користити датотеке сцене (.тсцн) да представља сваки ниво посебно. Са два нивоа, можете имплементирати јединствене распореде и покретне платформе.
Код играча
Тхе ЦхарацтерБоди2Д скрипта је одговорна за управљање кретањем играча на основу корисничког уноса. У приложеном ГДСцрипт-у можете израчунати правац кретања на основу притиска на тастере и у складу са тим подесити брзину играча.
Брзина играча одређује колико се брзо крећу, и мове_анд_цоллиде функција брине о детекцији судара.
extends CharacterBody2D
var speed = 300
func _physics_process(delta):
var input_dir = Vector2.ZEROif Input.is_action_pressed("ui_left"):
input_dir.x -= 1if Input.is_action_pressed("ui_right"):
input_dir.x += 1if Input.is_action_pressed("ui_up"):
input_dir.y -= 1if Input.is_action_pressed("ui_down"):
input_dir.y += 1
velocity = input_dir.normalized() * speed
move_and_collide(velocity * delta)
Код платформе
Тхе Платформа скрипта се проширује СтатицБоди2Д, што значи да се платформа неће померити ако на њу не примените покрет. У овом случају, можете користити потез брзина променљива за контролу брзине кретања платформе.
Платформа се креће напред-назад хоризонтално унутар наведеног опсега (100 до 400 јединица у овом примеру). Када стигне до ивице, мења смер кретања.
# Platform Movement
extends StaticBody2Dconst 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
Користећи ове скрипте, можете креирати занимљиве обрасце кретања за платформе и дизајнирати занимљива искуства играња ваше платформске игре.
Повезивање нивоа
У типичној игри, желећете да играчи неометано напредују са једног нивоа на други. Да бисте то урадили, примените скрипту Менаџера нивоа која управља променом нивоа када играч пређе границу екрана.
Тхе Левел Манагер скрипта прати број тренутног нивоа и величину екрана. Учитава почетни ниво (ниво 1) током _реади(). Тхе лоад_левел функција узима број нивоа као улаз, конструише путању до одговарајуће датотеке сцене и инстанцира сцену нивоа.
Додајте нови ниво као дете Левел Манагер; ово ће ефективно променити тренутни ниво.
extends Node2D
var level_number = 1
var screen_size = Vector2()
var is_switching_level = falsefunc _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 = falsefunc switch_level():
if is_switching_level:
returnis_switching_level = true
level_number += 1if 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.positionif 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 = 0get_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()
Имплементацијом Левел Манагер-а, можете неприметно прелазити са једног нивоа на други и одржавати податке о играчима на различитим нивоима, обезбеђујући неометано искуство играња.
Укључујући додатне функције
Креирање нивоа вам омогућава да додате различите функције вашој игри, чинећи је занимљивијом и узбудљивијом за играче.
Колекционарски предмети
Додајте колекционарске предмете као што су новчићи, звездице или кључеви које играчи могу прикупити да откључају нова подручја или добију награде. Колекционарски предмети подстичу истраживање и додају слој изазова игри.
Непријатељи
Представите непријатеље са различитим понашањем и обрасцима кретања. Непријатељи стварају препреке које играч треба да савлада, додајући стратегију и узбуђење игри.
Повер-Упс
Укључите појачања која привремено повећавају способности играча, као што су повећана брзина, непобедивост или побољшани напади. Појачања пружају тренутке оснаживања и могу помоћи играчима да превазиђу изазовне делове.
Загонетке
Дизајнирајте елементе слагалице које играчи морају да реше да би напредовали кроз ниво. Загонетке додају церебрални аспект игри и могу учинити да се играчи осећају оствареним када их схвате.
Укључујући ове додатне функције у своје нивое, можете креирати богато и разнолико искуство играња које плени играче и одржава их уроњенима у ваш свет игре.
Најбоље праксе за прављење нивоа
Приликом креирања нивоа, држање одређених најбољих пракси на уму може помоћи да се обезбеди добро направљено и пријатно искуство за играче:
Потешкоће са равнотежом
Одржавајте глатку криву тежине на свим нивоима. Постепено повећавајте изазове да бисте задржали ангажовање играча, а да их не надмашите. Постепено уводите нове механике и изазове, омогућавајући играчима да се прилагоде и уче.
Охрабрите истраживање
Дизајнирајте нивое са скривеним стазама, тајнама и опционим областима које играчи могу истражити. Истраживање награђује играче бонусима, колекционарским предметима или пречицама, додајући дубину игри.
Тестирање и итерација
Тестирајте своје нивое у великој мери да бисте идентификовали све проблеме, грешке или неравнотеже. Итерирајте дизајн нивоа на основу повратних информација играча да бисте побољшали целокупно искуство.
Визуелни и аудио
Обратите пажњу на визуелне и аудио аспекте ваших нивоа. Занимљива графика и звучни ефекти без ауторских права могу значајно допринети атмосфери и уроњењу у вашу игру.
Левел Флов
Уверите се да је ток нивоа гладак и логичан. Водите играче кроз ниво помоћу јасних визуелних знакова и избегавајте ћорсокаке или збуњујуће распореде.
Придржавајући се ових најбољих пракси, можете креирати нивое који су не само пријатни за играње, већ и добро дизајнирани и кохерентни у контексту ваше игре.
Нивои чине ваше Годот игре занимљивијим
Нивои играју кључну улогу у томе да Годот игре буду привлачније за играче. Добро осмишљени нивои пружају осећај напредовања, постигнућа и истраживања, маме играче да наставе да играју.
Разумевањем принципа дизајна нивоа, коришћењем Годоових могућности и применом додатне функције, можете креирати нивое који очаравају играче и подижу вашу игру на ново висине.