Subbab : Bagian Game Logika (The game Logic Section)
Ini blok pertama yang membuat simulator
tetap berjalan. Untuk tujuan global dalam kerangka kerja, kami akan membaginya
menjadi tiga blok utama: memperbarui pemain, memperbarui dunia, dan memperbarui
karakter nonplaying (NPC).
Laporan Pemain
Sebuah permainan harus menjalankan
rutinitas yang membuat snapshot terbaru dari setiap pemain. Sebagai langkah
pertama dalam kegiatan, permintaan interaksi oleh pemain harus diperiksa. Hal
ini dicapai secara berbeda dari segi mengontrol mekanisme seperti joystick,
keyboard, dan mouse. Tapi hasil akhirnya adalah sama yaitu serangkaian nomor
yang dapat dimengerti oleh kode permainan yang menunjukkan keadaan dari kontrol
pemain. Ini adalah ide baik untuk menggunakan kontroler perangkat abstrak
sehingga kode permainan tidak benar-benar berinteraksi dengan fisik. Sebuah device
controller abstrak menggunakan joystick dan keyboard sehingga menggunakan
antarmuka umum aplikasi tidak diperlukan. Kita akan berbicara tentang pengolahan
input dan perangkat abstraksi pada Bab 5, "User Input."
Kami tidak akan langsung memetakan
keputusan kontrol untuk tindakan pemain karena ada beberapa item yang dapat membatasi
tindakan pemainan. Pemain mungkin menunjukkan bahwa ia ingin bergerak maju,
tapi dinding mungkin menghalangi jalannya. Jadi, kegiatan kedua harus dirancang
untuk menerapkan dalam membatasi interaksi pemain. Misalnya, pemain dapat
menekan tombol "open door" kontrol tetapi karena pengguna tidak
memegang kunci yang tepat, pintu tidak akan terbuka. Ingat bahwa kita berbicara
tentang prinsip-prinsip umum di sini, itu membutuhkan kode-kode.
Setelah menggunkan controller pemain dan
kemudian diperiksa untuk pembatasan pembaruan pemain merupakan kegiatan yang harus
diimplementasikan sehingga pemain melihat hasil dari interaksi mereka. Mari
kita lihat dua contoh untuk lebih memahami internal dari tiga komponen.
Bayangkan sebuah game seperti Nintendo
klasik The Legend of Zelda. Terdapat tiga aturan sebagai berikut:
- “Memasukan pemain” merupakan cara yang secara efektif yang akan membaca game controller menggunakan panggilan tertentu, dan kemudian mengkonversi data mentah ke data permainan dunia yang masuk akal. Misalnya, data seperti "kiri adalah mendorong dan tombol A untuk memindahkan karakter kiri.
- "Pembatasan pemain" cara ini akan mengakses struktur dunia permainan karena kita perlu tahu tingkatan para pemain dalam dan pemain lain yang berada disekitarnya. Dengan cara ini kita dapat menghitung dengan baik pembatasan geometris, juga dikenal sebagai tabrakan, dan pembatasan logis, yang pada dasarnya kesepakatan antar pemain untuk dapat melakukan interaksi tertentu. Ini merupakan aturan kedua yang biasanya paling sulit, terutama karena kompleksitas permainan meningkat.
- "Perbarui pemain" aturan ini akan membatasi interaksi dan menghasilkan aturan yang sama di setiap negara. Jika pemain itu menekan kiri dan tidak ada halangan ke arah itu, kita harus memicu supaya animasi bergerak dan memperbarui posisinya, dan sebagainya.
Beberapa game,
seperti Tetris, tidak memiliki karakter yang jelas pada layar, tapi aturan ini masih
berlaku. Sebagai aturan sederhana, menggerakan karakter pada layar Anda sebagai
sesuatu yang membuat anda dapat berinteraksi hanya dengan menekan kontrol. Di Tetris,
hanya mengacu pada batu bata jatuh dari atas layar. Mereka bukan karakter dalam
arti kata sebenarnya, tetapi prinsipnya sama. Dimana akan memeriksa masukan
pemain di tahap pertama, dalam tahap kedua, kita akan menguji pembatasan bata,
dan kemudian kita akan mengeksekusi pembaruan pemain. Pembatasan sangat mudah
dilakukan yaitu Batu bata tidak bisa bergerak di luar area layar, tidak dapat
jatuh di bawah permukaan tanah, dan tidak bisa terus jatuh jika bata saat ini
langsung di atas yang lain sebelumnya jatuh bata. Pada bagian pembaruan pemain,
kita hanya memindahkan atau memutar batu bata sesuai dengan input dan pemain
dengan menambahkan perilaku default untuk persamaan, yaitu bahwa batu bata dapat
terus jatuh terlepas.
Dunia Pembaruan
(World Update)
Gagasan tentang
dunia permainan yang menampilkan perilaku aktif telah hadir sejak diterbitkan
game yang pertama, seperti Pong dan Space Invaders. Selain tindakan pemain,
dunia harus menunjukkan aktivitas yang umumnya sehingga pengguna dapat merespon.
Sebagai contoh, pengguna mencoba untuk menghindari sebuah batuan yang masuk
dalam Asteroid, berusaha mengembalikan bola di Arkanoid, dan sebagainya.
Permainan update dunia menerapkan secara efektif gameplay dan membuat permainan
menyenangkan. Hal ini tidak mengherankan kemudian bahwa ini bagian dari
permainan. Kode merupakan bagian yang sangat penting dalam permainan modern,
kompleks.
Untuk memulai harus
dibuat menjadi dua entitas yang luas di dunia game. Di satu sisi, kita memiliki
entitas pasif, seperti dinding dan sebagian besar item skenario. Untuk
memberikan definisi yang lebih formal, ini adalah item yang termasuk ke dalam
dunia permainan tetapi tidak memiliki perilaku yang terpasang. Item ini
memainkan peran kunci dalam bagian pembatasan pemain, tetapi tidak sangat
penting demi memperbarui dunia. Dalam beberapa permainan dengan game skala
besar, dunia pembaruan merupakan rutinitas preselect subbagian dari dunia game,
sehingga pemain dapat fokus pada elemen-elemen, dan dengan demikian menjadi
lebih efisien. Hal inis seperti grafis petualangan. Entah bagaimana, kita harus
menyimpan pointer ke ruang pemain dalam, jadi pengguna dapat memeriksa colliders
di ruangan itu saja.
Tapi sebagian
besar waktu dalam bagian update dunia harus memeriksa jenis lain dari entitas,
Dari unsur-unsur
dekoratif seperti burung-burung terbang ke musuh atau pintu yang terbuka dari dekat,
ini adalah item yang harus diperiksa untuk menjaga konsisten, makna dalam pengalaman
bermain. Beberapa game akan membagi elemen aktif menjadi sederhana logis
item-seperti pintu, elevator, atau memindahkan platform dan musuh yang nyata
dengan perilaku khas. Berikut berasal dari kompleksitas dari coding. Elemen-elemen
logis dapat diselesaikan dalam beberapa baris kode, sedangkan musuh yang nyata
membutuhkan kecerdasan buatan dengan kompleksitas yang lebih tinggi dan biaya
komputasi.
Dalam kerangka
permainan akan menganggap ada sejumlah besar unsur-unsur aktif, baik logika dan
AI. Jadi, proses memperbarui mereka akan terdiri dari empat langkah. Pertama, memfilter
untuk memilih orang-orang sebagai elemen yang relevan dengan gameplay. Seorang
musuh 10 mil jauhnya dari pemain yang tidak tampak merupakan bagian yang sangat
penting dari sudut pandang pemain, juga merupakan gerbang ditempatkan dalam
tingkat permainan yang berbeda sama sekali. Beberapa game (seperti judul
strategi real-time, misalnya) masih akan perlu menghitung perilaku semua
entitas. Tapi berkali-kali tingkat-of-detail (LOD) teknik akan digunakan untuk
barang-barang jauh, sehingga memiliki mereka diurutkan berdasarkan relevansi yang
selalu diinginkan.
Kedua, elemen
aktif harus diperbarui. Berikut perbedaan antara logis dan entitas cerdas akan
dibuat secara jelas. Yang terakhir akan memerlukan proses yang lebih rumit
untuk memperbarui mereka.
Umumnya, dalam
kerangka permainan secara keseluruhan, sistem AI akan mengikuti proses empat
langkah juga. Pertama, tujuan dan negara saat ini harus dianalisis. Untuk
simulator penerbangan, ini berarti mendapatkan posisi dan pos, keadaan sistem
senjata, dan berkelanjutan kerusakan untuk kedua AI-dikontrol dan pemain yang
dikendalikan pesawat. Tujuan dalam hal ini adalah cukup sederhana: Menembak
jatuh pemain. Kedua, pembatasan harus dirasakan. Ini melibatkan kedua
pembatasan logis dan geometris untuk pemain. Untuk contoh simulator penerbangan,
pembatasan utama adalah menghindari tabrakan dengan pemain dan mengawasi tanah,
sehingga kita tidak menabrak bukit di dekatnya. Setelah kedua langkah, kita
tahu segala sesuatu tentang kami sebagai entitas AI, negara pemain, tujuan
untuk mencapai, dan pembatasan keseluruhan yang berlaku.
Kembali ke
kerangka keseluruhan, langkah ketiga mensyaratkan bahwa pengambilan keputusan /
rencana harus diimplementasikan secara efektif sehingga menghasilkan aturan
perilaku. Pesawat akan membuat giliran, kemudian mencoba untuk menembak, dan seterusnya.
Beberapa game melaksanakan rencana sesaat, yang menghitung ulang setiap frame.
Ambil kasus sangat sederhana yang mengejar pemain sekitar. Untuk setiap frame,
itu harus menghasilkan yang lintasan yang optimal untuk akhirnya meledakkan
pemain. Sebuah simulator penerbangan mungkin membuat keputusan yang rentang
beberapa detik atau bahkan menit gameplay, dan siklus AI selanjutnya fokus
hanya pada memperbaiki rencana untuk beradaptasi dengan perubahan kondisi.
Keempat, kita
perlu memperbarui negara dunia sesuai. Kita harus menyimpan data, seperti jika
musuh bergerak, atau menghilangkannya dari struktur data jika ditembak jatuh
oleh pemain. Seperti yang melihat ketika kita mempelajari AI secara detail, ini
proses empat langkah memadukan luar biasa baik dengan sebagian besar permainan
AI.
Dalam melengkapi
kerangka logika permainan. Sebagai ringkasan dari struktur yang baru di sini
adalah pseudocode untuk pendekatan:
Player update
Sense Player input
Compute restrictions
Update player state
World update
Passive elements
Pre-select active zone for engine use
Logic-based elements
Sort according to relevance
Execute control mechanism
Update state
AI based elements
Sort according to relevance
Sense internal state and goals
Sense restrictions
Decision engine
Update world
End
Sumber : Terjemahan dari Core Algorithm In Game Technology
Tidak ada komentar:
Posting Komentar