Realistyczne postacie wchodzą w interakcje, zwykle rozmawiając ze sobą. Upewnij się, że przedstawiasz swój dialog w przystępny i komplementarny sposób.

Jeśli Twoja gra zawiera postacie, prawdopodobnie będziesz chciał, aby ze sobą rozmawiały. System dialogów zapewnia interaktywne rozmowy, postępy w fabule i rozwój postaci. Biblioteka Python Arcade ułatwia integrację systemu dialogowego z istniejącą bazą kodu.

Dzięki systemowi dialogowemu możesz tworzyć rozmowy między graczem a postaciami niezależnymi (NPC). Gracz może wybierać odpowiedzi lub podejmować decyzje, które wpływają na narrację lub wynik gry.

Ten system pozwala tworzyć fascynujące historie i tworzyć dynamiczne interakcje, zapewniając bardziej wciągającą rozgrywkę.

Stwórz prostą grę

Na początek utwórz prostą grę, korzystając z biblioteki Arcade. Będzie to podstawą do wdrożenia systemu dialogu.

Kod użyty w tym artykule jest dostępny w this Repozytorium GitHub i jest darmowy do użytku na licencji MIT.

Utwórz nowy plik o nazwie prosta gra.py

instagram viewer
i zdefiniuj A Gra klasa, która dziedziczy po arkada. Okno. Ustaw wymiary ekranu, zainicjuj pozycje odtwarzacza i platformy oraz zaimplementuj podstawowe funkcje rysowania. The gracz może poruszać się w lewo i prawo za pomocą klawiszy strzałek.

Oto dane wyjściowe:

Dodanie okna dialogowego

Teraz, gdy masz już podstawową strukturę gry, dodaj okno dialogowe, które pojawia się, gdy gracz zderza się z wrogiem. Możesz stworzyć okno dialogowe używając prostych kształtów i wyświetlić je na ekranie.

Dodać dialog_aktywny flaga do Gra class, która wskazuje, czy okno dialogowe powinno się wyświetlać. w w dniu_aktualizacji metoda, sprawdź kolizję wroga, a jeśli zostanie wykryty, ustaw dialog_aktywny Do PRAWDA.

w on_draw metoda, wywołaj remis_dialog_box metoda, jeśli dialog jest aktywny. The remis_dialog_box Metoda rysuje prostokąt jako tło okna dialogowego i wyświetla komunikat tekstowy.

Utwórz nowy plik o nazwie dialog-box.py i dodaj kod z poniższymi aktualizacjami:

# Wewnątrz klasy Game

klasaGra(arkada. Okno):
pok__w tym__(samego siebie):
# ...

self.dialog_aktywny = FAŁSZ

pokw dniu_aktualizacji(ja, delta_czas):
Jeśli self.check_enemy_collision():
self.dialog_aktywny = PRAWDA

pokon_draw(samego siebie):
# ...

Jeśli self.dialogue_active:
self.draw_dialogue_box()

pokcheck_enemy_collision(samego siebie):
promień_gracza = 25
odległość_x = abs (self.player_x - self.platform_x)
odległość_y = abs (self.player_y - self.platform_y)
połączony_promień = promień_gracza + 25

Jeśli odległość_x < połączony_promień I odległość_y < połączony_promień:
powrótPRAWDA
w przeciwnym razie:
powrótFAŁSZ

pokremis_dialog_box(samego siebie):
tekst = „Witaj, graczu! Jak się masz?"

arcade.draw_rectangle_filled (SCREEN_WIDTH // 2,
SCREEN_HEIGHT // 2, 500, 200, biały)

arcade.draw_text (tekst, SCREEN_WIDTH // 2,
SCREEN_HEIGHT // 2 + 20, czarny, rozmiar_czcionki=16,
kotwica_x="Centrum", kotwica_y="Centrum")

Poniżej znajduje się wyjście:

Wyświetlanie tekstu dialogu

Teraz możesz ulepszyć swój system dialogowy, wyświetlając dynamiczne wiadomości tekstowe. Utwórz listę ciągów dialogowych i przeglądaj je, aby zasymulować rozmowę. Za każdym razem, gdy pojawi się okno dialogowe, wyświetli się nowa wiadomość.

# Wewnątrz klasy Game

klasaGra(arkada. Okno):
pok__w tym__(samego siebie):
# ...

self.dialog_aktywny = FAŁSZ
self.dialogue_messages = [
„Witaj, graczu! Jak się masz?",
– Ładna dziś pogoda, prawda?,
"Uważaj na wrogów czających się przed tobą!"
]
self.dialogue_index = 0

pokremis_dialog_box(samego siebie):

arcade.draw_rectangle_filled (SCREEN_WIDTH // 2,
SCREEN_HEIGHT // 2, 500, 200, biały)

arcade.draw_text (self.dialogue_messages[self.dialogue_index],
SCREEN_WIDTH // 2, WYSOKOŚĆ_EKRANU // 2 + 20, czarny, rozmiar_czcionki=16,
kotwica_x="Centrum", kotwica_y="Centrum")

Wprowadź trzy nowe zmienne: wiadomości_dialogowe, indeks_dialogu, I dialog_aktywny. Lista dialog_wiadomości zawiera wiadomości tekstowe, które będą wyświetlane w oknie dialogowym. Dialog_index śledzi bieżącą wiadomość do wyświetlenia. Za każdym razem, gdy pojawi się okno dialogowe, możesz zwiększyć parametr dialog_index, aby wyświetlić następny komunikat.

Dodanie przycisku

Aby uczynić system dialogów bardziej interaktywnym, dodaj przycisk do zmiany tekstu dialogu po naciśnięciu przez gracza. Utwórz nowy plik o nazwie multi-text.py i dodaj kod z poniższymi aktualizacjami:

# Wewnątrz klasy Game

klasaGra(arkada. Okno):
pok__w tym__(samego siebie):
# ...

self.dialog_aktywny = FAŁSZ

self.dialogue_messages = [
„Witaj, graczu! Jak się masz?",
– Ładna dziś pogoda, prawda?,
"Uważaj na wrogów czających się przed tobą!"
]

self.dialogue_index = 0

pokon_mouse_press(ja, x, y, przycisk, modyfikatory):
indeks = (self.dialog_index + 1) % len (self.dialogue_messages)

Jeśli self.dialogue_active:
Jeśli przycisk == zręcznościowa. MOUSE_BUTTON_LEFT:
self.dialogue_index = indeks

pokremis_dialog_box(samego siebie):
# ...

arcade.draw_text("Następny", SZEROKOŚĆ_EKRANU // 2, WYSOKOŚĆ_EKRANU // 2 - 50,
czarny, rozmiar_czcionki=16, kotwica_x="Centrum", kotwica_y="Centrum")

Dodaj on_mouse_press metoda do Gra klasa. Gdy dialog jest aktywny i naciśniesz lewy przycisk myszy, ta metoda zwiększa wartość indeks_dialogu aby wyświetlić następną wiadomość w wiadomości_dialogowe lista. The % len (self.dialogue_messages) zapewnia, że ​​indeks zawija się do początku listy po dotarciu do końca.

W tym dodatkowe funkcje

Aby jeszcze bardziej ulepszyć system dialogowy, możesz rozważyć dodanie następujących dodatkowych funkcji:

Wiele wyborów

Zamiast pojedynczej wiadomości możesz podać graczowi kilka opcji do wyboru. Pozwala to graczowi wpływać na wynik rozmowy lub podejmować decyzje, które wpływają na przebieg gry.

Aby to zaimplementować, możesz zmodyfikować plik remis_dialog_box metoda wyświetlania listy wyborów i odpowiedniej obsługi wyboru gracza.

Portrety postaci

Aby dodać wizualny styl do swojego systemu dialogowego, możesz dołączyć portrety postaci obok tekstu. Każda postać może mieć odpowiedni obrazek lub duszka, który reprezentuje ją podczas rozmowy. Wyświetlanie portretów postaci może pomóc graczom zidentyfikować mówcę i dodać głębi do opowiadanej historii.

Animacja tekstu

Możesz animować tekst, aby był bardziej atrakcyjny wizualnie. Możesz na przykład sprawić, by tekst pojawiał się stopniowo, po jednym znaku na raz, aby symulować pisanie. Stwarza to poczucie oczekiwania i może sprawić, że dialog będzie bardziej wciągający dla gracza.

Efekty dźwiękowe

Dodanie efektów dźwiękowych do twojego systemu dialogowego może poprawić ogólną atmosferę gry. Na przykład możesz odtwarzać efekty dźwiękowe, gdy pojawi się okno dialogowe lub gdy gracz wybierze opcję dialogową. Te wskazówki dźwiękowe mogą sprawić, że rozmowa będzie bardziej wciągająca i efektowna.

Najlepsze praktyki systemu dialogu

Wdrażając system dialogu, pamiętaj o następujących najlepszych praktykach:

Przejrzysty interfejs użytkownika

Upewnij się, że okno dialogowe i tekst są czytelne i prawidłowo umieszczone na ekranie. Używaj odpowiednich czcionek, kolorów i rozmiarów, aby tekst był łatwy do odczytania.

Spójny głos postaci

Zachowaj spójność w sposobie, w jaki postacie mówią i tonie, którego używają podczas dialogu. Pomaga to w tworzeniu wiarygodnych i wciągających rozmów.

Związek z rozgrywką

Upewnij się, że dialog wnosi znaczący wkład do narracji gry lub dostarcza graczowi odpowiednich informacji. Unikaj nadmiernych lub nieistotnych rozmów, które mogą zakłócić płynność rozgrywki.

Testowanie i iteracja

Dokładnie przetestuj swój system dialogowy, aby zidentyfikować wszelkie problemy lub niespójności. Powtarzaj swoje dialogi w oparciu o opinie graczy, aby poprawić ogólną jakość i wpływ rozmów.

Spraw, by gry były przyjemniejsze dzięki systemowi dialogów

Dodanie systemu dialogowego do gier przy użyciu biblioteki Arcade w Pythonie może znacznie poprawić wrażenia gracza. Umożliwia interaktywne rozmowy, opowiadanie historii i rozwój postaci, dzięki czemu Twoje gry są bardziej wciągające, wciągające i zabawne.