Apakah ada mesin game yang menggunakan bahasa pemrograman fungsional? [Tutup]


10

Apakah ada mesin permainan yang menggunakan bahasa pemrograman fungsional yang mirip dengan Skema, Common Lisp, Clojure atau JavaScript?

Saya sudah mencoba Unity3D tetapi "JavaScript" mereka sebenarnya bukan JavaScript, sangat diketik dan tidak berfungsi.


2
Saya menggunakan ThreeJS, tetapi, meskipun penuh kehebatan, kurangnya komunitas yang aktif dan dokumentasi adalah masalah serius.
MaiaVictor

5
Mengapa Anda ingin memprogram dalam bahasa pemrograman fungsional? Apa masalah yang Anda hadapi? Harap lebih spesifik. Seperti berdiri, pertanyaan ini terlalu umum untuk menghasilkan satu jawaban yang benar dan cenderung menghasilkan daftar (semua sama "benar") jawaban seperti ini: - Bagaimana Clojure dikombinasikan dengan mesin game Java? - Bagaimana dengan mengadopsi gaya pemrograman fungsional dalam bahasa yang tidak fungsional per se? (Baca Pemrograman Fungsional dalam C ++ oleh Carmack.) - dll.
Eric

2
Unity3D's Javascript berfungsi seperti Javascript biasa , Anda hanya perlu menggunakan tipe C # 4.0, sesuatu seperti:var add : Func<int, int, int> = ...
fableal

2
Lihat FAQ tentang "Teknologi mana yang harus digunakan" pertanyaan. Pertanyaan ini, seperti yang ditunjukkan oleh jawabannya, hanya menghasilkan daftar. Itu tidak konstruktif karena tidak ada jawaban yang benar (selain "Ya ada"). Ini bukan tempat untuk menyusun daftar.
MichaelHouse

2
Ini semacam masalah "alat yang tepat untuk pekerjaan yang tepat". Pemrograman fungsional sangat terfokus pada meminimalkan, dan menghilangkan sedapat mungkin, keadaan bisa berubah. Itu mungkin bekerja dengan baik untuk kelas aplikasi tertentu, tetapi itu benar-benar bertentangan dengan cara kerja permainan apa pun.
Mason Wheeler

Jawaban:


7

Ada LambdaCube yang ditulis dalam Haskell (ini bukan mesin game tetapi lebih mirip mesin grafis).


2
Ini mungkin juga menarik bagi Anda (comentary umum dari Tim Sweeney dari Epic)
tumdum

Tautan menarik, ada ppt di sini
bobobobo


2

Saya tidak memiliki jawaban untuk pertanyaan yang ditulis, tetapi saya yakin Anda mungkin mencoba bertanya "mengapa tidak ada lebih banyak mesin permainan yang fungsional" daripada mencari yang spesifik untuk digunakan. Jika itu benar, Anda harus mengulangi pertanyaannya. Jika tidak ... abaikan aku. :)

Pendekatan fungsional murni tidak cocok untuk game. Game (dan grafik, dan fisika, dan AI) dan pada dasarnya semua tentang perubahan keadaan. Pendekatan fungsional yang benar untuk masalah-masalah ini adalah untuk menghitung seluruh keadaan baru sekali per loop, yang akan memiliki penalti kinerja yang sangat parah dibandingkan dengan pengkodean lebih langsung ke cara kerja perangkat keras yang sebenarnya.

Karena alasan itulah Anda tidak melihat adanya mesin permainan gaya fungsional dalam produksi. Ini hanyalah paradigma pemrograman yang salah untuk sebagian besar masalah yang ingin diselesaikan oleh mesin game. Ini adalah paradigma pemrograman yang salah untuk sebagian besar masalah yang perlu dipecahkan dalam skrip tingkat tinggi dan kode logika permainan juga. Meskipun hampir pasti mungkin untuk membuat mesin permainan fungsional, itu akan lambat, sulit dan rumit untuk digunakan, dan tidak akan melayani tujuan nyata selain menjadi demo / mainan yang rapi untuk dipamerkan.

Itu tidak berarti bahwa pemrograman fungsional tidak memiliki tempat di suatu tempat dalam permainan. Saya menggunakan gaya pengkodean yang sangat fungsional (jika perlu) di C #, Unity JavaScript, dan bahkan C ++ 11. Beberapa masalah yang sangat spesifik adalah yang terbaik atau paling tidak paling mudah dipecahkan dengan gaya fungsional, dan sebagian besar bahasa populer saat ini mendukung bentuk pemrograman itu, meskipun dengan cara yang lebih rumit daripada bahasa fungsional "nyata". Biasanya masalah ini diselesaikan dengan pendekatan fungsional tidak dalam kode mesin inti, atau dalam kode yang berjalan di dalam game itu sendiri. Pengkodean fungsional dapat sangat bermanfaat untuk alat dan pemrosesan data offline (misalnya memanggang model dan aset lainnya). Juga dapat diperdebatkan bahwa pemrograman GPU berfungsi samar-samar dalam bagaimana algoritma ditulis,

Tentu saja masih bisa menjadi yang terbaik untuk menghindari pendekatan fungsional di luar keadaan yang sangat spesifik karena Anda ingin alat offline ini secepat mungkin. Bahasa fungsional unggul pada paralelisme, yang bagus untuk beberapa masalah, tetapi abstraksi dari perangkat keras cenderung mengarah pada kinerja single-threaded yang sangat tidak efisien. (Bahasa seperti LISP bekerja dengan baik di sini karena mereka tidak fungsional murni, dan pada kenyataannya Common LISP adalah multi-paradigma.) Satu hal terburuk mutlak untuk mesin game atau toolkit terkait adalah menjadi hambatan untuk pengulangan konten. Mesin mewah dengan banyak fitur yang membuat artis atau desainer level berjam-jam untuk melakukan apa yang bisa dilakukan dalam 5 menit (atau idealnya, hampir instan) hanya akan mengarah ke permainan berkualitas rendah atau pembatalan karena eskalasi anggaran.


1
Lihat: Perpustakaan Game Bersihkan (Bersihkan) dan Nikki dan Robot (Haskell).
Andres F.

1
Jawaban ini sebagian besar salah dan tampaknya didasarkan pada pemahaman yang sangat buruk tentang bahasa fungsional yang sebenarnya.
CA McCann

1
Apakah Anda memiliki poin penghitung yang sebenarnya?
Sean Middleditch

4
... Berapa banyak pengalaman yang Anda miliki dalam pengiriman game berkualitas industri dalam bahasa fungsional? Jika Anda memiliki pengalaman, bagikan. Buat pernyataan dengan penjelasan dan justifikasi, bukan banding ke keahlian atau otoritas, atau tuduhan pribadi. Kemungkinan pertengkaran dan pertengkaran pribadi semacam ini adalah persis mengapa pertanyaan ini ditutup.
Sean Middleditch

4
Anda menaruh kata-kata di mulut saya. Saya tidak menyatakan tingkat pengalaman saya karena pendapat Anda tentang keahlian saya sama sekali tidak relevan dengan topik tersebut. Jangan mengklaim Anda tidak punya waktu untuk menyatakan fakta sambil memiliki waktu untuk menyerang tingkat keterampilan pribadi. Anda mungkin memiliki koreksi nyata, tetapi Anda harus menyatakannya. "Orang itu salah," bukan umpan balik jawaban yang berharga bagi siapa pun. Saya hanya bisa mengklaim bahwa Anda salah, dan kemudian kita memiliki siklus pertengkaran yang tak ada habisnya dan tidak ada gunanya. Tolong katakan mengapa sebuah jawaban salah.
Sean Middleditch

0

Perusahaan Anjing Naugthy menggunakan Daftar pada Mesin Game dan itu disebut Lisp Majelis Berorientasi Game.

Beberapa informasi dapat ditemukan di sini: http://en.wikipedia.org/wiki/Game_Oriented_Assembly_Lisp

Beberapa contoh kode: http://web.archive.org/web/20070127022728/http://lists.midnightryder.com/pipermail/sweng-gamedev-midnightryder.com/2005-August/003804.html

Ini tidak tersedia untuk penggunaan umum.


Jika Anda melihat deskripsi Wikipedia, dengan cepat menjadi jelas bahwa GOAL bukanlah bahasa fungsional, leluhur LISP.
Mason Wheeler
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.