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

Если в вашей игре есть персонажи, вы, вероятно, захотите, чтобы они общались друг с другом. Система диалогов обеспечивает интерактивные беседы, развитие сюжета и развитие персонажей. Библиотека Python Arcade позволяет легко интегрировать диалоговую систему в существующую кодовую базу.

С помощью диалоговой системы вы можете создавать разговоры между игроком и неигровыми персонажами (NPC). Игрок может выбирать ответы или принимать решения, влияющие на повествование или исход игры.

Эта система позволяет создавать захватывающие истории и создавать динамичные взаимодействия, обеспечивая более захватывающий игровой процесс.

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

Для начала создайте простую игру, используя библиотеку Arcade. Это послужит основой для внедрения диалоговой системы.

Код, используемый в этой статье, доступен в этом Репозиторий GitHub и вы можете использовать его бесплатно по лицензии MIT.

instagram viewer

Создайте новый файл с именем простая-game.py и определить Игра класс, который наследуется от аркада. Окно. Задайте размеры экрана, инициализируйте позиции игрока и платформы и реализуйте основные функции рисования. игрок может двигаться влево и вправо с помощью клавиш со стрелками.

Вот результат:

Добавление диалогового окна

Теперь, когда у вас есть базовая структура игры, добавьте диалоговое окно, которое появляется, когда игрок сталкивается с врагом. Вы можете создать диалоговое окно, используя простые формы, и отобразить его на экране.

Добавить диалог_активный флаг на Игра class, который указывает, должно ли отображаться диалоговое окно. в on_update метод, проверить на столкновение с противником, и если обнаружено, установить диалог_активный к Истинный.

в on_draw метод, вызовите draw_dialogue_box метод, если диалог активен. draw_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()

дефcheck_enemy_collision(себя):
player_radius = 25
Distance_x = abs (self.player_x - self.platform_x)
Distance_y = abs (self.player_y - self.platform_y)
комбинированный_радиус = player_radius + 25

если Distance_x < комбинированный_радиус и расстояние_у < комбинированный_радиус:
возвращатьсяИстинный
еще:
возвращатьсяЛОЖЬ

деф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,
якорь_х ="центр", якорь_у ="центр")

Ниже приведен вывод:

Отображение текста диалога

Теперь вы можете улучшить свою диалоговую систему, отображая динамические текстовые сообщения. Создайте список строк диалога и повторите их, чтобы имитировать разговор. Каждый раз, когда появляется диалоговое окно, в нем будет отображаться новое сообщение.

# Внутри класса 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],
ЭКРАН_ШИРИНА // 2, SCREEN_HEIGHT // 2 + 20, черный, font_size=16,
якорь_х ="центр", якорь_у ="центр")

Введите три новые переменные: dialog_messages, dialog_index, и диалог_активный. Список dialog_messages содержит текстовые сообщения, которые будут отображаться в диалоговом окне. Диалог_индекс отслеживает текущее сообщение для отображения. Каждый раз, когда появляется диалоговое окно, вы можете увеличивать значение dialog_index для отображения следующего сообщения.

Добавление кнопки

Чтобы сделать диалоговую систему более интерактивной, добавьте кнопку смены текста диалога при нажатии игроком. Создайте новый файл с именем мультитекст.py и добавьте код со следующими обновлениями:

# Внутри класса Game

сортИгра(аркада. Окно):
деф__в этом__(себя):
# ...

self.dialogue_active = ЛОЖЬ

self.dialogue_messages = [
«Здравствуй, игрок! Как вы?",
"Хорошая погода сегодня, не так ли?",
«Остерегайтесь врагов, скрывающихся впереди!»
]

self.dialogue_index = 0

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

если self.dialogue_active:
если кнопка == аркада. MOUSE_BUTTON_LEFT:
self.dialogue_index = индекс

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

аркада.draw_text("Следующий", ШИРИНА_ЭКРАНА // 2, SCREEN_HEIGHT // 2 - 50,
черный, font_size=16, якорь_х ="центр", якорь_у ="центр")

Добавить on_mouse_press метод к Игра сорт. Когда диалог активен и вы нажимаете левую кнопку мыши, этот метод увеличивает dialog_index для отображения следующего сообщения в dialog_messages список. % len (self.dialogue_messages) гарантирует, что индекс переходит к началу списка при достижении конца.

Включая дополнительные функции

Чтобы еще больше улучшить диалоговую систему, вы можете рассмотреть возможность добавления следующих дополнительных функций:

Множественный выбор

Вместо одного сообщения вы можете предоставить игроку несколько вариантов для выбора. Это позволяет игроку влиять на исход разговора или принимать решения, влияющие на ход игры.

Для реализации этого можно изменить draw_dialogue_box метод для отображения списка вариантов и соответствующей обработки выбора игрока.

Портреты персонажей

Чтобы добавить визуальную изюминку в вашу диалоговую систему, вы можете включить портреты персонажей рядом с текстом. У каждого персонажа может быть соответствующее изображение или спрайт, который представляет их во время разговора. Отображение портретов персонажей может помочь игрокам идентифицировать говорящего и добавить глубины повествованию.

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

Вы можете анимировать текст, чтобы сделать его более привлекательным. Например, вы можете сделать так, чтобы текст появлялся постепенно, по одному символу за раз, чтобы имитировать набор текста. Это создает ощущение предвкушения и может сделать диалог более увлекательным для игрока.

Звуковые эффекты

Добавление звуковых эффектов к вашей диалоговой системе может улучшить общую атмосферу игры. Например, вы можете воспроизводить звуковые эффекты, когда появляется диалоговое окно или когда игрок выбирает вариант диалога. Эти звуковые сигналы могут сделать разговор более захватывающим и впечатляющим.

Лучшие практики для диалоговой системы

При внедрении диалоговой системы помните о следующих передовых методах:

Четкий пользовательский интерфейс

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

Постоянный голос персонажа

Сохраняйте последовательность в том, как говорят персонажи, и в тоне, который они используют на протяжении всего диалога. Это помогает создавать правдоподобные и увлекательные разговоры.

Актуальность для игрового процесса

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

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

Тщательно протестируйте свою диалоговую систему, чтобы выявить любые проблемы или несоответствия. Повторяйте свой диалог, основываясь на отзывах игроков, чтобы улучшить общее качество и влияние разговоров.

Сделайте игры более увлекательными с помощью диалоговой системы

Добавление диалоговой системы в ваши игры с использованием библиотеки Arcade на Python может значительно улучшить впечатления игрока. Это позволяет вести интерактивные беседы, рассказывать истории и развивать персонажей, делая ваши игры более захватывающими, увлекательными и увлекательными.