Menerapkan Sistem Dialog di Python Arcade Games
Table of content:
Jika game Anda menampilkan karakter, Anda mungkin ingin mereka berkomunikasi satu sama lain. Sistem dialog menyediakan percakapan interaktif, perkembangan cerita, dan pengembangan karakter. Pustaka Python Arcade memudahkan untuk mengintegrasikan sistem dialog ke dalam basis kode yang ada.
Dengan sistem dialog, Anda dapat membuat percakapan antara karakter pemain dan non-pemain (NPC). Pemain dapat memilih respons atau membuat keputusan yang memengaruhi narasi atau hasil game.
Sistem ini memungkinkan Anda membuat cerita yang menarik dan membuat interaksi yang dinamis, memberikan pengalaman gameplay yang lebih imersif.
Buat Game Sederhana
Untuk memulai, buat game sederhana menggunakan perpustakaan Arcade. Ini akan menjadi dasar untuk menerapkan sistem dialog.
Kode yang digunakan dalam artikel ini tersedia di sini repositori GitHub dan gratis untuk Anda gunakan di bawah lisensi MIT.
Buat file baru bernama simple-game.py dan tentukan a Permainan kelas yang mewarisi dari arcade.Jendela. Tetapkan dimensi layar, inisialisasi posisi pemain dan platform, dan terapkan fungsi menggambar dasar. Pemain dapat bergerak ke kiri dan ke kanan menggunakan tombol panah.
Inilah hasilnya:
Menambahkan Kotak Dialog
Sekarang setelah Anda memiliki struktur permainan dasar, tambahkan kotak dialog yang muncul saat pemain bertabrakan dengan musuh. Anda dapat membuat kotak dialog menggunakan bentuk sederhana dan menampilkannya di layar.
Tambah sebuah dialog_aktif bendera ke Permainan class, yang menunjukkan apakah kotak dialog harus ditampilkan. Dalam on_update metode, periksa tabrakan musuh, dan jika terdeteksi, atur dialog_aktif ke BENAR.
Dalam on_draw metode, panggil draw_dialogue_box metode jika dialog aktif. Itu draw_dialogue_box metode menggambar persegi panjang sebagai latar belakang kotak dialog dan menampilkan pesan teks.
Buat file baru bernama dialog-box.py dan tambahkan kode dengan pembaruan di bawah ini:
class Game(arcade.Window):
def __init__(self):
self.dialogue_active = False
def on_update(self, delta_time):
if self.check_enemy_collision():
self.dialogue_active = True
def on_draw(self):
if self.dialogue_active:
self.draw_dialogue_box()
def check_enemy_collision(self):
player_radius = 25
distance_x = abs(self.player_x - self.platform_x)
distance_y = abs(self.player_y - self.platform_y)
combined_radius = player_radius + 25
if distance_x < combined_radius and distance_y < combined_radius:
return True
else:
return False
def draw_dialogue_box(self):
text = "Hello, player! How are you?"
arcade.draw_rectangle_filled(SCREEN_WIDTH // 2,
SCREEN_HEIGHT // 2, 500, 200, white)
arcade.draw_text(text, SCREEN_WIDTH // 2,
SCREEN_HEIGHT // 2 + 20, black, font_size=16,
anchor_x="center", anchor_y="center")
Di bawah ini adalah outputnya:
Menampilkan Teks Dialog
Sekarang, Anda dapat menyempurnakan sistem dialog Anda dengan menampilkan pesan teks dinamis. Buat daftar string dialog dan ulangi untuk mensimulasikan percakapan. Setiap kali kotak dialog muncul, itu akan menampilkan pesan baru.
class Game(arcade.Window):
def __init__(self):
self.dialogue_active = False
self.dialogue_messages = [
"Hello, player! How are you?",
"Nice weather today, isn't it?",
"Beware of the enemies lurking ahead!"
]
self.dialogue_index = 0
def draw_dialogue_box(self):
arcade.draw_rectangle_filled(SCREEN_WIDTH // 2,
SCREEN_HEIGHT // 2, 500, 200, white)
arcade.draw_text(self.dialogue_messages[self.dialogue_index],
SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2 + 20, black, font_size=16,
anchor_x="center", anchor_y="center")
Perkenalkan tiga variabel baru: dialog_messages, dialog_indexDan dialog_aktif. Daftar Dialog_messages berisi pesan teks yang akan ditampilkan oleh kotak dialog. Dialog_index melacak pesan saat ini untuk ditampilkan. Setiap kali kotak dialog muncul, Anda dapat menaikkan indeks_dialog untuk menampilkan pesan berikutnya.
Menambahkan Tombol
Untuk membuat sistem dialog lebih interaktif, tambahkan tombol untuk mengubah teks dialog saat ditekan oleh pemain. Buat file baru bernama multi-teks.py dan tambahkan kode dengan pembaruan di bawah ini:
class Game(arcade.Window):
def __init__(self):
self.dialogue_active = False
self.dialogue_messages = [
"Hello, player! How are you?",
"Nice weather today, isn't it?",
"Beware of the enemies lurking ahead!"
]
self.dialogue_index = 0
def on_mouse_press(self, x, y, button, modifiers):
index = (self.dialogue_index + 1) % len(self.dialogue_messages)
if self.dialogue_active:
if button == arcade.MOUSE_BUTTON_LEFT:
self.dialogue_index = index
def draw_dialogue_box(self):
arcade.draw_text("Next", SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2 - 50,
black, font_size=16, anchor_x="center", anchor_y="center")
Tambahkan on_mouse_press metode ke Permainan kelas. Saat dialog aktif dan Anda menekan tombol kiri mouse, metode ini menambah dialog_index untuk menampilkan pesan berikutnya di dialog_messages daftar. Itu % len(self.dialogue_messages) memastikan bahwa indeks membungkus ke awal daftar saat mencapai akhir.
Termasuk Fitur Tambahan
Untuk meningkatkan sistem dialog lebih lanjut, Anda dapat mempertimbangkan untuk menambahkan fitur tambahan berikut:
Pilihan ganda
Alih-alih satu pesan, Anda dapat memberikan beberapa pilihan untuk dipilih pemain. Ini memungkinkan pemain untuk memengaruhi hasil percakapan atau membuat keputusan yang memengaruhi perkembangan game.
Untuk menerapkan ini, Anda dapat memodifikasi draw_dialogue_box metode untuk menampilkan daftar pilihan dan menangani pilihan pemain yang sesuai.
Potret Karakter
Untuk menambahkan bakat visual pada sistem dialog Anda, Anda dapat memasukkan potret karakter di samping teks. Setiap karakter dapat memiliki gambar atau sprite yang sesuai yang mewakili mereka selama percakapan. Menampilkan potret karakter dapat membantu pemain mengidentifikasi pembicara dan menambah kedalaman pengalaman mendongeng.
Animasi Teks
Anda dapat menganimasikan teks untuk membuatnya lebih menarik secara visual. Misalnya, Anda dapat membuat teks muncul secara bertahap, satu karakter dalam satu waktu, untuk mensimulasikan pengetikan. Ini menciptakan rasa antisipasi dan dapat membuat dialog lebih menarik bagi pemain.
Efek suara
Menambahkan efek suara ke sistem dialog Anda dapat meningkatkan suasana permainan secara keseluruhan. Misalnya, Anda dapat memutar efek suara saat kotak dialog muncul atau saat pemain memilih opsi dialog. Isyarat audio ini dapat membuat percakapan terasa lebih imersif dan berdampak.
Praktik Terbaik untuk Sistem Dialog
Saat menerapkan sistem dialog, ingatlah praktik terbaik berikut:
Hapus Antarmuka Pengguna
Pastikan kotak dialog dan teks dapat dibaca dan diposisikan dengan benar di layar. Gunakan font, warna, dan ukuran yang sesuai agar teks mudah dibaca.
Suara Karakter yang Konsisten
Pertahankan konsistensi dalam cara karakter berbicara dan nada yang mereka gunakan sepanjang dialog. Ini membantu dalam menciptakan percakapan yang dapat dipercaya dan menarik.
Relevansi dengan Gameplay
Pastikan bahwa dialog memberikan kontribusi yang berarti bagi narasi permainan atau memberikan informasi yang relevan kepada pemain. Hindari percakapan berlebihan atau tidak relevan yang dapat mengganggu alur permainan.
Pengujian dan Iterasi
Mainkan sistem dialog Anda secara menyeluruh untuk mengidentifikasi masalah atau ketidakkonsistenan apa pun. Ulangi dialog Anda berdasarkan umpan balik pemain untuk meningkatkan kualitas dan dampak percakapan secara keseluruhan.
Jadikan Game Lebih Menyenangkan Dengan Sistem Dialog
Menambahkan sistem dialog ke game Anda menggunakan perpustakaan Arcade di Python dapat sangat meningkatkan pengalaman pemain. Ini memungkinkan percakapan interaktif, penceritaan, dan pengembangan karakter, menjadikan game Anda lebih imersif, menarik, dan menyenangkan untuk dimainkan.