Учините своје искуство играња импресивнијим имплементацијом система дијалога.

Имплементација система дијалога у Пигаме-у може у великој мери побољшати интерактивно искуство игре. Систем дијалога омогућава игри да представи разговоре, поруке и изборе играчу, стварајући импресивнији и занимљивији начин игре.

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

Направите једноставну игру

Пре него што почнете, уверите се да имате пип инсталиран на вашем систему. Користите ову команду да бисте инсталирали пигаме библиотека:

пип инсталл пигаме

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

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

Исечак кода испод поставља прозор игре, иницијализује својства играча и непријатеља и покреће петљу игре.

instagram viewer
# Увезите потребне библиотеке
увоз пигаме
из пигаме.лоцалс увоз *

пигаме.инит()

# Подесите прозор игре
сцреен_видтх, сцреен_хеигхт = 800, 600
екран = пигаме.дисплаи.сет_моде((ширина_екрана, висина_екрана))
пигаме.дисплаи.сет_цаптион("Моја игра")

# Дефинишите боје
ЦРНИ = (0, 0, 0)
БЕЛА = (255, 255, 255)
СИВА = (128, 128, 128)

# Својства играча
плаиер_к = 400
плаиер_и = 500
плаиер_спеед = 5

# Непријатељска својства
непријатељ_к = 400
непријатељ_и = 100
непријатељска_брзина = 3

трчање = Истина
сат = пигаме.тиме. сат()

док трчање:
за догађај ин пигаме.евент.гет():
ако евент.типе == НАПУСТИ:
трчање = Фалсе

кључеви = пигаме.кеи.гет_прессед()

# Кретање играча
ако тастери[К_ЛЕФТ] и плаиер_к > 0:
плаиер_к -= плаиер_спеед
ако тастери[К_РИГХТ] и плаиер_к < сцреен_видтх - плаиер_спеед:
плаиер_к += плаиер_спеед

# Ажурирајте позицију непријатеља
непријатељ_и += непријатељска_брзина
ако непријатељ_и > висина_сцреена:
непријатељ_и = -50

# Проверите колизију
ако пигаме. Рецт (плаиер_к, плаиер_и, 50, 50).цоллидерецт (пигаме. Рецт (непријатељ_к, непријатељ_и, 50, 50)):
# Овде имплементирајте оквир за дијалог
проћи

сцреен.филл (ЦРНИ)
пигаме.драв.рецт (екран, БЕЛИ, (плаиер_к, плаиер_и, 50, 50))
пигаме.драв.рецт (екран, БЕЛИ, (непријатељ_к, непријатељ_и, 50, 50))
пигаме.дисплаи.флип()
цлоцк.тицк(60)

пигаме.куит()

Испод је излаз:

Креирајте оквир за дијалог

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

Унутар петље игре, проверите да ли постоји судар између играча и непријатеља, и ако дође до судара, поставите дијалог_бок до Истина. У оквиру услова где дијалог_бок је Истина, нацртајте сиви правоугаоник на екрану користећи пигаме.драв.рецт() да представља оквир за дијалог.

Креирајте нову датотеку под називом дијалог.пи и додајте код са ажурирањима у наставку:

# Својства дијалога
диалог_бок_видтх = 400
диалог_бок_хеигхт = 200
диалогуе_бок_к = (сцреен_видтх - диалогуе_бок_видтх) // 2
диалогуе_бок_и = (сцреен_хеигхт - диалогуе_бок_хеигхт) // 2
диалог_бок = Фалсе
# ...
док трчање:
за догађај ин пигаме.евент.гет():
ако евент.типе == НАПУСТИ:
трчање = Фалсе
кључеви = пигаме.кеи.гет_прессед()
# Кретање играча
ако тастери[К_ЛЕФТ] и плаиер_к > 0:
плаиер_к -= плаиер_спеед
ако тастери[К_РИГХТ] и плаиер_к < сцреен_видтх - плаиер_спеед:
плаиер_к += плаиер_спеед
# Ажурирајте позицију непријатеља
непријатељ_и += непријатељска_брзина
ако непријатељ_и > висина_сцреена:
непријатељ_и = -50
# Проверите колизију
ако пигаме. Рецт (плаиер_к, плаиер_и, 50, 50).цоллидерецт (пигаме. Рецт (непријатељ_к, непријатељ_и, 50, 50)):
диалог_бок = Истина
сцреен.филл (ЦРНИ)
ако оквир за дијалог:
пигаме.драв.рецт (екран, СИВ, (диалогуе_бок_к,
бок_и,
ширина_диалога,
висина_бокса за дијалог))

# Додајте текст дијалога и дугмад овде
друго:
пигаме.драв.рецт (екран, БЕЛИ, (плаиер_к, плаиер_и, 50, 50))
пигаме.драв.рецт (екран, БЕЛИ, (непријатељ_к, непријатељ_и, 50, 50))
пигаме.дисплаи.флип()
цлоцк.тицк(60)
пигаме.куит()

Испод је излаз:

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

Додајте дугмад користећи Питхон ГУИ

Да бисте додали дугмад у оквир за дијалог, можете користити Питхон ГУИ библиотеку као што је Пигаме ГУИ или ПиСимплеГУИ.

Инсталирајте и увезите пигаме_гуи модула, а затим креирајте Пигаме ГУИ менаџер користећи пигаме_гуи. УИМанагер. Након тога, креирајте дугме помоћу УИБуттон класа коју обезбеђује Питхон ГУИ библиотека.

Унутар петље игре додајте манагер.упдате (пигаме.тиме.гет_тицкс() / 1000.0) да ажурирате ГУИ менаџер, и манагер.драв_уи (екран) да нацртате ГУИ елементе на екрану.

Креирајте нову датотеку под називом буттонс.пи и додајте код са ажурирањима у наставку:


увоз пигаме_гуи

# Пигаме ГУИ менаџер
менаџер = пигаме_гуи. УИМанагер((ширина_екрана, висина_екрана))

# Направите дугме
буттон_видтх = 100
буттон_хеигхт = 30
буттон_к = диалогуе_бок_к + (диалогуе_бок_видтх - буттон_видтх) // 2
буттон_и = диалогуе_бок_и + (диалогуе_бок_хеигхт - буттон_хеигхт) // 2
дугме = пигаме_гуи.елементс. УИБуттон (релативе_рецт=пигаме. Рецт (дугме_к, дугме_и, дугме_видтх, дугме_хеигхт),
тект='Кликни ме',
менаџер=менаџер)

трчање = Истина
сат = пигаме.тиме. сат()

док трчање:
за догађај ин пигаме.евент.гет():
ако евент.типе == пигаме. ОДУСТАТИ:
трчање = Фалсе

манагер.процесс_евентс (догађај)

кључеви = пигаме.кеи.гет_прессед()

# Проверите колизију
ако пигаме. Рецт (плаиер_к, плаиер_и, 50, 50).цоллидерецт (пигаме. Рецт (непријатељ_к, непријатељ_и, 50, 50)):
диалог_бок = Истина

сцреен.филл (ЦРНИ)

ако оквир за дијалог:
пигаме.драв.рецт (екран, СИВ, (диалогуе_бок_к,
бок_и,
ширина_диалога,
висина_бокса за дијалог))
манагер.упдате (пигаме.тиме.гет_тицкс() / 1000.0)
манагер.драв_уи (екран)
друго:
пигаме.драв.рецт (екран, БЕЛИ, (плаиер_к, плаиер_и, 50, 50))
пигаме.драв.рецт (екран, БЕЛИ, (непријатељ_к, непријатељ_и, 50, 50))

пигаме.дисплаи.флип()
цлоцк.тицк(60)

пигаме.куит()

Испод је излаз:

Са овим променама, дугме би сада требало да буде видљиво унутар оквира за дијалог када се појави.

Додајте текст користећи Питхон ГУИ

Да бисте приказали прилагођени текст у оквиру за дијалог, можете користити функцију текста коју пружа Питхон ГУИ библиотека.

Дефинишите својства фонта користећи пигаме.фонт. Фонт(). Створити текст променљиву са жељеним садржајем, а затим је рендерујте користећи наведени фонт и боју.

Креирајте нову датотеку под називом тект.пи и додајте код са ажурирањима у наставку:


# Иницијализујте Пигаме ГУИ менаџер
менаџер = пигаме_гуи. УИМанагер((ширина_екрана, висина_екрана))

# Дефинишите својства фонта
фонт = пигаме.фонт. Фонт(Ниједан, 24)
боја_текста = ЦРНА

# ...

док трчање:
# ...

ако оквир за дијалог:
пигаме.драв.рецт (екран, СИВ, (диалогуе_бок_к,
бок_и,
ширина_диалога,
висина_бокса за дијалог))

# Додајте текст у оквир за дијалог
текст = "Здраво, добродошли у игру!"
рендеред_тект = фонт.рендер (текст, Истина, тект_цолор)
тект_рецт = рендеред_тект.гет_рецт (центер=(диалогуе_бок_к + диалогуе_бок_видтх // 2,
диалогуе_бок_и + диалогуе_бок_хеигхт // 2))

сцреен.блит (рендеред_тект, тект_рецт)

Испод је излаз:

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

Поред дугмади и текста, постоји неколико других функција које можете размотрити да додате свом систему дијалога у Пигаме-у. Ево још неколико примера:

Цхарацтер Емотионс

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

Условни дијалози

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

Воицеоверс

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

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

Најбоље праксе за додавање система дијалога

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

Користите дизајн заснован на подацима

Чувајте садржај дијалога, укључујући текст, информације о говорнику и опције дијалога, у спољним датотекама података (нпр. ЈСОН, КСМЛ). Ово омогућава лаку модификацију, локализацију и управљање садржајем дијалога без потребе за изменама кода.

Имплементирајте менаџера дијалога

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

Тестирање и балансирање

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

Подршка за локализацију

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

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

Учините игре привлачнијим са системом дијалога

Додавање система дијалога вашој игри може је учинити привлачнијом тако што омогућава играчима да комуницирају са ликовима који нису играчи (НПЦ), откривају приче, доносе одлуке и добијају драгоцене информације.

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