Haruskah skrip berinteraksi dengan abstraksi mesin?

10

Saya menggunakan Java dan Jython, dan setelah beberapa penelitian saya menemukan memberikan skrip akses langsung ke antarmuka mesin bisa menjadi kesalahan, karena akan erat pasangan keduanya.

Sepertinya sebagian besar skrip yang memungkinkan mod untuk membuat dan mengelola entitas melakukannya melalui semacam abstraksi. Apakah abstraksi ini ada untuk alasan ini, atau hanya untuk memberikan cara yang lebih intuitif bagi non-programmer untuk mod game?

Vaillancourt
sumber

Jawaban:

7

Keduanya, secara umum. Skrip Anda harus berbicara dengan fungsionalitas yang diabstraksi - atau setidaknya menengah - dan bukan mesin itu sendiri.

Pertama, ini memberi Anda ukuran kontrol dan keamanan ekstra. Ini memungkinkan Anda untuk dengan mudah, dengan jelas mendefinisikan antarmuka yang diizinkan untuk dimiliki oleh sebuah skrip dengan gim Anda dan dengan demikian apa yang dapat dipermainkan, serta memungkinkan Anda untuk menempatkan pemeriksaan keamanan tambahan di perantara nanti yang tidak harus sesuai di lapisan fungsi aktual itu sendiri.

Kedua, ini memungkinkan Anda untuk menyederhanakan antarmuka yang terkena skrip agar lebih ramah non-programmer atau lebih mudah digunakan secara umum.

Itu tidak memberikan sedikit isolasi terhadap coupling antara keduanya, tapi itu sering tidak bahwa kesepakatan besar karena script akan selalu dibarengi dengan interface mereka diizinkan untuk berinteraksi dengan, dengan sifatnya. Dua poin lainnya jauh lebih bermanfaat.


sumber
3

Saya juga berpikir itu membantu Anda jika Anda ingin melakukan modifikasi pada mesin. Anda dapat melakukannya tanpa khawatir harus mengubah semua skrip karena mesin berubah. Anda hanya perlu mengubah layer abstraksi yang disebutkan Josh.

Elie Haddad
sumber
1

Membuat lapisan antara inti permainan dan skrip, yang digunakan untuk membuat modifikasi, menurut pendapat saya, perlu.

Anda mendapatkan beberapa keuntungan dengan menggunakan metode ini:

Lebih mudah untuk modders:
Alasan yang baik untuk melakukan ini adalah, seperti yang Anda sebutkan, cara yang lebih mudah untuk membuat mod. Menulis lebih sedikit baris kode berarti lebih mudah dibaca dan meminimalkan masalah pemahaman untuk pemrograman pemula. Idealnya, API ini harus menjadi kumpulan metode untuk mengubah sesuatu pada level tinggi game . Ini berarti misalnya: Memunculkan entitas tanpa mengetahui bagaimana itu benar-benar muncul , atau menampilkan gambar dengan satu panggilan, yang hanya menggunakan nama gambar sebagai parameter.
Anda, sebagai seorang programmer, juga mendapat manfaat darinya, karena Anda dapat menulis lebih banyak dalam waktu lebih sedikit daripada yang Anda perlukan dengan Java.

Keamanan:
Mencegah orang dari mengendalikan seluruh permainan sangat penting. Saya tidak akan peduli, jika game akan menjadi judul pemain tunggal, tapi saya akan peduli ketika game telah mendapatkan beberapa aksi multi pemain. Bahkan jika itu hanya tabel highscore.
Orang lain selalu frustrasi, ketika seseorang menang karena selingkuh (misalnya: perubahan posisi, lebih spesifik: perubahan posisi dan pembatasan bendera langsung). Untuk mencegah pemain melakukan hal itu adalah tugas utama Anda di sini.
Perlu diingat, bahwa penipu selalu dapat mendekompilasi, mengubah kode, mengkompilasi ulang dan bermain dengan klien ini, jadi tambahkan cek di sisi server. Secara umum, "Keamanan" yang disediakan hanyalah pilihan lain, bukan 100% aman untuk membuat hidup para penipu lebih sulit.

Marco
sumber