Personajele realiste interacționează, de obicei, vorbind între ele. Asigurați-vă că vă prezentați dialogul într-un mod accesibil și complementar.

Dacă jocul tău prezintă personaje, probabil vei dori ca acestea să converseze între ele. Un sistem de dialog oferă conversații interactive, progresia poveștii și dezvoltarea caracterului. Biblioteca Python Arcade facilitează integrarea unui sistem de dialog în baza de cod existentă.

Cu un sistem de dialog, puteți crea conversații între jucător și personaje non-player (NPC). Jucătorul poate alege răspunsuri sau poate lua decizii care afectează narațiunea sau rezultatul jocului.

Acest sistem vă permite să creați povești captivante și să creați interacțiuni dinamice, oferind o experiență de joc mai captivantă.

Creați un joc simplu

Pentru a începe, creați un joc simplu folosind biblioteca Arcade. Acesta va servi drept bază pentru implementarea sistemului de dialog.

Codul folosit în acest articol este disponibil în acest articol Depozitul GitHub și este gratuit pentru utilizare sub licența MIT.

instagram viewer

Creați un fișier nou numit joc simplu.py și definiți a Joc clasa care mosteneste de la arcadă. Fereastră. Setați dimensiunile ecranului, inițializați pozițiile playerului și platformei și implementați funcționalitatea de bază de desen. The jucătorul se poate deplasa la stânga și la dreapta folosind tastele săgeți.

Iată rezultatul:

Adăugarea unei casete de dialog

Acum că aveți o structură de bază a jocului, adăugați o casetă de dialog care apare atunci când jucătorul se ciocnește de un inamic. Puteți crea o casetă de dialog folosind forme simple și o puteți afișa pe ecran.

Adauga o dialog_activ steag la Joc clasa, care indică dacă caseta de dialog ar trebui să fie afișată. În on_update metodă, verificați coliziunea inamicului, iar dacă este detectat, setați dialog_activ la Adevărat.

În on_draw metoda, apelați draw_dialogue_box metoda dacă dialogul este activ. The draw_dialogue_box metoda desenează un dreptunghi ca fundal al casetei de dialog și afișează un mesaj text.

Creați un fișier nou numit dialog-box.py și adăugați codul cu actualizările de mai jos:

# În cadrul clasei Joc

clasăJoc(arcadă. Fereastră):
def__init__(de sine):
# ...

self.dialogue_active = Fals

defon_update(self, delta_time):
dacă self.check_enemy_collision():
self.dialogue_active = Adevărat

defon_draw(de sine):
# ...

dacă self.dialogue_active:
self.draw_dialogue_box()

defcheck_enemy_colision(de sine):
player_radius = 25
distanta_x = abs (self.player_x - self.platform_x)
distanta_y = abs (self.player_y - self.platform_y)
raza_combinată = raza_jucătorului + 25

dacă distanta_x < raza_combinata și distanta_y < raza_combinata:
întoarcereAdevărat
altfel:
întoarcereFals

defdraw_dialogue_box(de sine):
text = „Bună, jucător! Ce mai faci?"

arcade.draw_rectangle_filled (SCREEN_WIDTH // 2,
SCREEN_HEIGHT // 2, 500, 200, alb)

arcade.draw_text (text, SCREEN_WIDTH // 2,
SCREEN_HEIGHT // 2 + 20, negru, font_size=16,
ancora_x="centru", anchor_y="centru")

Mai jos este rezultatul:

Afișarea textului dialogului

Acum, vă puteți îmbunătăți sistemul de dialog afișând mesaje text dinamice. Creați o listă de șiruri de dialog și repetați-le pentru a simula o conversație. De fiecare dată când apare caseta de dialog, va afișa un nou mesaj.

# În cadrul clasei Joc

clasăJoc(arcadă. Fereastră):
def__init__(de sine):
# ...

self.dialogue_active = Fals
self.dialogue_messages = [
„Bună, jucător! Ce mai faci?",
— Vreme frumoasă azi, nu-i așa?,
„Feriți-vă de inamicii care pândesc înainte!”
]
self.dialogue_index = 0

defdraw_dialogue_box(de sine):

arcade.draw_rectangle_filled (SCREEN_WIDTH // 2,
SCREEN_HEIGHT // 2, 500, 200, alb)

arcade.draw_text (self.dialogue_messages[self.dialogue_index],
SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2 + 20, negru, font_size=16,
ancora_x="centru", anchor_y="centru")

Introduceți trei variabile noi: mesaje_dialog, dialog_index, și dialog_activ. Lista dialog_messages conține mesajele text pe care le va afișa caseta de dialog. Dialog_index ține evidența mesajului curent de afișat. De fiecare dată când apare caseta de dialog, puteți crește dialog_index pentru a afișa următorul mesaj.

Adăugarea unui buton

Pentru a face sistemul de dialog mai interactiv, adăugați un buton pentru a schimba textul dialogului atunci când este apăsat de jucător. Creați un fișier nou numit multi-text.py și adăugați codul cu actualizările de mai jos:

# În cadrul clasei Joc

clasăJoc(arcadă. Fereastră):
def__init__(de sine):
# ...

self.dialogue_active = Fals

self.dialogue_messages = [
„Bună, jucător! Ce mai faci?",
— Vreme frumoasă azi, nu-i așa?,
„Feriți-vă de inamicii care pândesc înainte!”
]

self.dialogue_index = 0

defon_mouse_press(self, x, y, buton, modificatori):
index = (self.dialogue_index + 1) % len (self.dialogue_messages)

dacă self.dialogue_active:
dacă butonul == arcade. MOUSE_BUTTON_LEFT:
self.dialogue_index = index

defdraw_dialogue_box(de sine):
# ...

arcade.draw_text("Următorul", SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2 - 50,
negru, font_size=16, ancora_x="centru", anchor_y="centru")

Adaugă on_mouse_press metoda la Joc clasă. Când dialogul este activ și apăsați butonul stâng al mouse-ului, această metodă crește dialog_index pentru a afișa următorul mesaj în mesaje_dialog listă. The % len (self.dialogue_messages) se asigură că indexul se înfășoară până la începutul listei când ajunge la sfârșit.

Inclusiv caracteristici suplimentare

Pentru a îmbunătăți și mai mult sistemul de dialog, puteți lua în considerare adăugarea următoarelor caracteristici suplimentare:

Alegeri multiple

În loc de un singur mesaj, puteți oferi mai multe opțiuni pentru ca jucătorul să aleagă. Acest lucru permite jucătorului să influențeze rezultatul conversației sau să ia decizii care afectează progresul jocului.

Pentru a implementa acest lucru, puteți modifica draw_dialogue_box metodă de a afișa o listă de opțiuni și de a gestiona selecția jucătorului în consecință.

Portrete de personaje

Pentru a adăuga fler vizual sistemului dvs. de dialog, puteți încorpora portrete de personaje alături de text. Fiecare personaj poate avea o imagine corespunzătoare sau un sprite care îl reprezintă în timpul conversației. Afișarea portretelor personajelor poate ajuta jucătorii să identifice vorbitorul și să adauge profunzime experienței de povestire.

Animație text

Puteți anima textul pentru a-l face mai atrăgător din punct de vedere vizual. De exemplu, puteți face textul să apară treptat, câte un caracter, pentru a simula tastarea. Acest lucru creează un sentiment de anticipare și poate face dialogul mai antrenant pentru jucător.

Efecte sonore

Adăugarea de efecte sonore la sistemul dvs. de dialog poate îmbunătăți atmosfera generală a jocului. De exemplu, puteți reda efecte sonore când apare caseta de dialog sau când jucătorul selectează o opțiune de dialog. Aceste indicii audio pot face conversația să se simtă mai captivantă și mai de impact.

Cele mai bune practici pentru sistemul de dialog

Când implementați un sistem de dialog, țineți cont de următoarele bune practici:

Ștergeți interfața utilizator

Asigurați-vă că caseta de dialog și textul sunt lizibile și poziționate corect pe ecran. Utilizați fonturi, culori și dimensiuni adecvate pentru a face textul ușor de citit.

Voce consistentă a caracterului

Păstrați consecvența felului în care vorbesc personajele și a tonului pe care îl folosesc pe parcursul dialogului. Acest lucru ajută la crearea unor conversații credibile și captivante.

Relevanța pentru joc

Asigurați-vă că dialogul contribuie semnificativ la narațiunea jocului sau oferă jucătorului informații relevante. Evitați conversațiile excesive sau irelevante care pot perturba fluxul jocului.

Testare și iterație

Playtestați-vă sistemul de dialog cu atenție pentru a identifica orice probleme sau inconsecvențe. Repetați dialogul pe baza feedback-ului jucătorilor pentru a îmbunătăți calitatea generală și impactul conversațiilor.

Faceți jocurile mai distractive cu sistemul de dialog

Adăugarea unui sistem de dialog la jocurile dvs. folosind biblioteca Arcade în Python poate îmbunătăți considerabil experiența jucătorului. Permite conversații interactive, povestiri și dezvoltarea caracterului, făcând jocurile tale mai captivante, captivante și distractive de jucat.