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

Ако играта ви включва герои, вероятно ще искате те да разговарят помежду си. Системата за диалог осигурява интерактивни разговори, развитие на историята и развитие на персонажа. Библиотеката Python Arcade улеснява интегрирането на диалогова система в съществуващата ви кодова база.

Със система за диалог можете да създавате разговори между играча и неиграещите герои (NPC). Играчът може да избира отговори или да взема решения, които влияят на разказа или резултата на играта.

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

Създайте проста игра

За да започнете, създайте проста игра, като използвате библиотеката Arcade. Това ще послужи като основа за прилагане на системата за диалог.

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

instagram viewer

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

Ето изхода:

Добавяне на диалогов прозорец

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

Добави диалог_активен флаг към Игра клас, който показва дали диалоговият прозорец трябва да се показва. В on_update метод, проверете за вражески сблъсък, и ако бъде открит, задайте диалог_активен да се Вярно.

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

Създайте нов файл с име dialogue-box.py и добавете кода със следните актуализации:

# Вътре в класа Game

класИгра(аркадна. прозорец):
деф__в него__(себе си):
# ...

self.dialogue_active = Невярно

дефon_update(самостоятелно, делта_време):
ако self.check_enemy_collision():
self.dialogue_active = Вярно

дефon_draw(себе си):
# ...

ако self.dialogue_active:
self.draw_dialogue_box()

дефпроверка_противник_сблъсък(себе си):
играч_радиус = 25
distance_x = abs (self.player_x - self.platform_x)
distance_y = abs (self.player_y - self.platform_y)
комбиниран_радиус = радиус_на_играча + 25

ако разстояние_x < комбиниран_радиус и разстояние_y < комбиниран_радиус:
връщанеВярно
друго:
връщанеНевярно

дефdraw_dialogue_box(себе си):
текст = „Здравей, играч! Как си?"

arcade.draw_rectangle_filled (SCREEN_WIDTH // 2,
SCREEN_HEIGHT // 2, 500, 200, бяло)

arcade.draw_text (текст, SCREEN_WIDTH // 2,
SCREEN_HEIGHT // 2 + 20, черно, font_size=16,
anchor_x="център", anchor_y="център")

По-долу е резултатът:

Показване на диалогов текст

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

# Вътре в класа Game

класИгра(аркадна. прозорец):
деф__в него__(себе си):
# ...

self.dialogue_active = Невярно
self.dialogue_messages = [
„Здравей, играч! Как си?",
— Хубаво време днес, нали?,
"Пазете се от враговете, които дебнат отпред!"
]
self.dialogue_index = 0

дефdraw_dialogue_box(себе си):

arcade.draw_rectangle_filled (SCREEN_WIDTH // 2,
SCREEN_HEIGHT // 2, 500, 200, бяло)

arcade.draw_text (self.dialogue_messages[self.dialogue_index],
SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2 + 20, черно, font_size=16,
anchor_x="център", anchor_y="център")

Въведете три нови променливи: диалогови_съобщения, диалог_индекс, и диалог_активен. Списъкът dialogue_messages съдържа текстовите съобщения, които диалоговият прозорец ще покаже. dialogue_index следи текущото съобщение за показване. Всеки път, когато се появи диалоговият прозорец, можете да увеличите dialogue_index, за да покажете следващото съобщение.

Добавяне на бутон

За да направите системата за диалог по-интерактивна, добавете бутон за промяна на текста на диалога при натискане от играча. Създайте нов файл с име multi-text.py и добавете кода със следните актуализации:

# Вътре в класа Game

класИгра(аркадна. прозорец):
деф__в него__(себе си):
# ...

self.dialogue_active = Невярно

self.dialogue_messages = [
„Здравей, играч! Как си?",
— Хубаво време днес, нали?,
"Пазете се от враговете, които дебнат отпред!"
]

self.dialogue_index = 0

дефon_mouse_press(self, x, y, бутон, модификатори):
индекс = (self.dialogue_index + 1) % len (self.dialogue_messages)

ако self.dialogue_active:
ако бутон == аркада. MOUSE_BUTTON_LEFT:
self.dialogue_index = индекс

дефdraw_dialogue_box(себе си):
# ...

arcade.draw_text("Следващия", SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2 - 50,
черно, font_size=16, anchor_x="център", anchor_y="център")

Добавете on_mouse_press метод към Игра клас. Когато диалоговият прозорец е активен и натиснете левия бутон на мишката, този метод увеличава диалог_индекс за показване на следващото съобщение в диалогови_съобщения списък. The % len (self.dialogue_messages) гарантира, че индексът се обвива в началото на списъка, когато достигне края.

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

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

Множество възможности за избор

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

За да приложите това, можете да промените draw_dialogue_box метод за показване на списък с възможности за избор и съответно обработка на избора на играча.

Портрети на герои

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

Текстова анимация

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

Звукови ефекти

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

Най-добри практики за системата за диалог

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

Изчистен потребителски интерфейс

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

Постоянен глас на героя

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

Съответствие с играта

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

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

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

Направете игрите по-забавни със системата за диалог

Добавянето на система за диалог към вашите игри с помощта на библиотеката Arcade в Python може значително да подобри изживяването на играча. Той позволява интерактивни разговори, разказване на истории и развитие на герои, което прави вашите игри по-потапящи, ангажиращи и забавни за игра.