Bagaimana cara menerapkan sistem pemrograman di game saya yang dapat diakses, kuat, dan cepat untuk dikodekan?

15

Saat ini saya sedang mengerjakan game sandbox berbasis ruang yang akan menampilkan banyak fitur untuk memprogram sistem Anda. Saya ingin menerapkan ini dengan cara yang keduanya

  1. dapat diakses,
  2. kuat (minimal akan turing-kelengkapan)
  3. cepat untuk kode masuk

Bahasa berbasis teks umumnya hanya memenuhi dua persyaratan yang terakhir, dan meskipun tidak sulit untuk merancang bahasa visual yang memenuhi dua yang pertama, bahasa visual adalah program yang sulit karena memerlukan penggunaan mouse yang ekstensif. Meskipun ada beberapa bahasa berbasis teks yang sangat mudah diakses, saya ingin yang bukan pemrogram lengkap dapat mempermudah diri mereka dalam pemrograman.

Dimitriye98
sumber
Saya akan terkejut jika ada yang bisa memberi Anda contoh. Karena saya benar-benar berpikir ini membutuhkan penelitian yang luas (seperti bagaimana manusia menerapkan logika dan apa yang tidak, faktor psikologis apa pun dan semua hal yang berpusat pada manusia ini)
Sidar
2
Tidak ada yang menyebutkan Scratch?
Russell
2
Saya tidak akan menyarankan pemungutan suara dekat, tetapi saya ingin menunjukkan bahwa ini cukup mudah masuk ke dalam kategori "Jika Anda bisa membayangkan seluruh buku yang menjawab pertanyaan Anda, Anda terlalu banyak bertanya" untuk tidak bertanya dari FAQ; ini adalah Masalah yang Sangat Sulit, dan sementara orang-orang di sini dapat menawarkan saran, ini adalah masalah yang mungkin di luar batas dari situs SE untuk dipecahkan.
Steven Stadnicki
Perlu dicatat bahwa kelengkapan Turing dapat dicapai dengan permainan Conway tentang kehidupan , Minecraft dan sistem lain yang tidak dirancang untuk pemrograman.
Will

Jawaban:

10

Sungguh, satu-satunya cara untuk memiliki semua fitur adalah dengan mengimplementasikan beberapa antarmuka. Dapat diakses dan kuat seringkali merupakan dua ujung spektrum. Cara termudah untuk melakukan ini adalah menerapkan sistem yang kuat, yang memiliki antarmuka tambahan untuk memungkinkan pemula berinteraksi dengan sistem secara intuitif.

Mengizinkan sistem yang memungkinkan pemula untuk memprogram secara visual, mungkin sesuatu yang mirip dengan alat pemrograman Lego Mindstorms :

masukkan deskripsi gambar di sini

Di mana ada komponen drag / drop. Komponen memiliki input dan output. Komponen dapat berupa hal-hal sederhana seperti AND, atau ORgerbang, atau lebih kompleks seperti ujian untuk musuh di dekatnya.

Idealnya representasi visual harus menyusun skrip bahasa tertulis di latar belakang. Ini menawarkan alat yang ampuh untuk mempelajari bahasa juga. Jika seorang pemula dapat "menulis" program mereka secara visual, maka bacalah kode yang dihasilkannya, mereka jauh lebih mungkin untuk memahaminya dan dapat memodifikasi kode yang dihasilkan. Akhirnya bisa menulis kode yang lebih kuat daripada alat visual saja memungkinkan. Ini memenuhi persyaratan untuk memudahkan pengguna dalam pemrograman.

Tulang punggung sistem, tentu saja, adalah bahasa tertulis. Alat visual hanya untuk memberi pengguna cara cepat memprogram sesuatu yang sederhana, dan memungkinkan pemula untuk memulai.

Bahasa tertulis memungkinkan pengguna tingkat lanjut untuk melakukan hal-hal lanjut. Dan Anda bahkan dapat mengizinkan pengguna untuk membuat komponen mereka sendiri, dengan membuat skrip khusus. Kemudian mereka dapat menggunakan kembali komponen yang mereka buat dalam antarmuka yang cepat dan mudah untuk pemrograman cepat.

Semoga berhasil! Kedengarannya seperti proyek yang menyenangkan.

MichaelHouse
sumber
Terima kasih atas penjelasannya. Saya sebenarnya berpikir untuk melakukan sesuatu seperti NXT-G sendiri, hanya saja saya tahu dari pengalaman betapa sulitnya membuat program yang rumit dalam bahasa seperti itu. Saya suka gagasan mengubah program visual menjadi kode, memungkinkan pemain untuk kembali dan mengedit program mereka secara tekstual ketika mereka lebih berpengalaman, jadi saya kemungkinan akan menggunakannya.
Dimitriye98
1
Berhati-hatilah karena mudah untuk menghasilkan beberapa kode skrip dari representasi grafis tetapi sangat sulit untuk menghasilkan representasi grafis (bermakna dan dapat dibaca) dari skrip. Jadi, Anda mungkin akan berakhir dengan sintaks skrip sendiri yang sangat terbatas.
Imi
1
Tidak mungkin Anda ingin mengimplementasikan script-> visual karena alasan yang tepat. Tetap dengan skrip visual->.
MichaelHouse
Blok makro (blok yang menyediakan input / output dan kemampuan untuk menempatkan blok abitrary di dalam) dapat digunakan untuk menyediakan hierarki, enkapsulasi dan penggunaan kembali untuk memudahkan pembuatan program yang kompleks. Pastikan Anda tidak dapat menempatkan macro di dalam macro atau Anda mendeteksi kasus seperti itu ... Saya tahu setidaknya satu progam yang gagal mendeteksi loop tak terbatas tersebut.
Exilyth
5

Anda mungkin ingin melihat Google secara diam - diam , mereka menggabungkan elemen visual dengan istilah pemrograman yang dapat dikenali sambil mempertahankan tingkat aksesibilitas yang cukup baik.

masukkan deskripsi gambar di sini

Anda dapat melihat demo Labirin untuk mencari inspirasi, banyak teman non-programmer saya mampu mendapatkan sebagian besar jalan melalui teka-teki menggunakannya, memuaskan setidaknya beberapa kriteria Anda yang berlaku.

Quetzalcoatl
sumber
Bahasa yang menarik dari sudut pandang aksesibilitas, namun pemrograman di dalamnya sangat lambat (saya baru saja mencoba) ...
Pasha
@PashaS Memang benar, saya kira itu bagian dari harga yang harus Anda bayar untuk mencoba dan mendapatkan yang terbaik dari kedua dunia.
Quetzalcoatl
4

Saya terkejut ini belum disebutkan sebelumnya, tetapi MIT's Scratch menggunakan antarmuka blok yang cepat untuk kode masuk. Hal ini memungkinkan pengguna untuk membuat fungsi mereka sendiri dan bisa menjadi sangat kompleks untuk bahasa yang dibangun untuk mengajari anak-anak cara kode.

Stencyl adalah contoh lain dari blok coding yang melakukan sesuatu yang lebih mirip dengan apa yang Anda inginkan. Pengkodean dengan blok-blok seperti ini jauh lebih efisien dan kurang memakan waktu daripada antarmuka pemrograman visual seperti yang digunakan oleh Lego NXT. Stencyl memungkinkan pengguna untuk membuat kode dalam Actionscript atau blok.

Saya minta maaf karena kurangnya gambar, saya belum memiliki reputasi yang cukup untuk mengirim gambar.

Flaxbeard
sumber
2

Bahasa pemrograman BPEL memiliki representasi visual dan banyak alat yang bekerja dengannya. Ini adalah bahasa alur kerja, bukan bahasa pemrograman, tetapi itu turing-lengkap. Itu verbose, tetapi mudah untuk menulis baik untuk programmer dan pelaku bisnis dan mudah diterjemahkan dari bentuk visual ke teks. Saya tidak berpikir itu akan menjadi bahasa permainan yang bagus, tetapi bisa berfungsi sebagai sumber inspirasi. Dan mengingat jumlah mesin dan alat BPEL, harus dimungkinkan untuk menggunakan kembali beberapa ide dan / atau kode.

Bahasa seperti BPEL tidak akan terasa seperti pemrograman, lebih seperti routing dan menghubungkan sistem. Jadi Anda dapat memiliki sistem penargetan yang terhubung ke sistem senjata dengan beberapa logika di antaranya.

MartinTeeVarga
sumber
+1: Meskipun saya tidak akan mengadvokasi BPEL sendiri, pendekatannya adalah jawaban yang pasti akan saya berikan. Bahasa yang sangat teratur yang mudah direpresentasikan dalam teks atau visual dan yang lebih berfokus pada acara perutean / respons daripada lebih banyak paradigma pemrograman "normal".
Sean Middleditch
1

Pertimbangkan pendekatan ini:

  1. Pastikan, logika skrip Anda dapat diekspresikan dalam mekanika berbasis aturan sederhana. Misalnya, Anda memiliki "Pemicu" yang terjadi selama permainan yang terkait dengan "Ketentuan" yang harus dipenuhi dan kemudian "Tindakan" dijalankan (tanpa malu-malu dicuri dari Starcraft 2 Editor).
  2. Kemudian sediakan UI tempat Anda dapat menyeret beberapa tindakan / kondisi / pemicu yang telah ditentukan sebelumnya dan karenanya membangun 90% dari kasus penggunaan yang biasanya ingin dilakukan orang.
  3. Sekarang dapatkan beberapa mesin scripting yang kuat dan populer terintegrasi seperti Lua, Python atau C #
  4. Terakhir, tulis beberapa dozend dari Tindakan / Ketentuan / Pemicu ini dalam bahasa tersebut. Pastikan pengguna kustomisasi dapat menyalin-menempel, mengedit, dan mengintegrasikan ini dan Tindakan baru dalam editor drag'n'drop Anda dengan mudah.
  5. Anda mungkin ingin dapat membuat Parametrize dari Pemicu, Ketentuan, dan Tindakan Anda sehingga Anda memerlukan beberapa primitif lebih banyak daripada ketiga pemicu ini, misalnya "GameObject", "Position", "Number" atau "String". Di UI, Anda akan memerlukan beberapa dialog untuk menetapkan parameter ini, tetapi itu masih jauh lebih sedikit daripada jika Anda harus dapat membangun seluruh skrip melalui operasi UI.

Itu tentang cara tercepat yang dapat saya pikirkan untuk mendapatkan semua permen tanpa rasa sakit terlalu banyak. Anda mendapatkan noq click'n'drag serta vim-geeks di papan tulis. Dan jika Anda menjaga mekanika sederhana (mis. Trigger -> Condition -> Action), maka Anda tidak perlu menghabiskan waktu bertahun-tahun dalam mengembangkan UI untuk editor skrip grafis yang kuat dan masih mudah digunakan.

Beberapa contoh untuk menjelaskan apa yang saya maksud:

  • Pemicu dapat berupa: "Kerangka Kerja Game Diinisialisasi", "Game dimuat", "Unit dibuat", "Unit dihancurkan", "Pemain rusak" dan seterusnya. Pemicu biasanya memiliki beberapa parameter (misalnya Unit yang dibuat mendapat GameObject yang telah dibuat)
  • Semua kondisi adalah standar boolean dan kondisi aritmatika dasar (dan / atau / tidak / sama dengan / lebih besar ...) ditambah beberapa kondisi khas yang Anda temukan dalam permainan Anda seperti "Unit dalam kondisi kesehatan penuh" atau "Setidaknya dua Pemain terhubung". Kondisi biasanya memiliki parameter yang harus diisi oleh pengguna (menggunakan UI)
  • Actions adalah skrip yang juga dapat mengambil beberapa parameter sederhana. seperti "Pan kamera ke XXX", "Bunuh Unit Y", "Game over", "Execute Trigger" dan "Call Actions X, Y, Z ... secara berurutan"
I MI
sumber
Perhatikan bahwa pemrograman ini untuk komputer DALAM permainan, bukan untuk plugin. Bagaimanapun juga, terima kasih.
Dimitriye98
Saya mengerti .. itu terdengar seperti pendekatan permainan yang menarik;). Apakah Anda sudah melihat game yang mirip seperti "Code Hero" atau "Garry's Mod" yang mencoba memberikan kemampuan pengkodean tanpa merusak perendaman game? Bagaimanapun, Anda masih dapat menyelamatkan saran dasar saya dan memecah masalah menjadi bagian scripting dan UI. Semoga berhasil dengan gim Anda. :)
Imi
Nah, pengkodean akan dilakukan pada konsol komputer dalam gim, yang seharusnya tidak terlalu merusak perendaman. Meskipun pengguna yang ingin dapat kode keluar dari game kemudian mengimpor kode ke save atau server tempat mereka bermain.
Dimitriye98