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.
functional
Viktor Maia
sumber
sumber
var add : Func<int, int, int> = ...
Jawaban:
Ada LambdaCube yang ditulis dalam Haskell (ini bukan mesin game tetapi lebih mirip mesin grafis).
sumber
Anda selalu dapat menggunakan f # atau besi python (ya saya tahu, python tidak berfungsi) atau bahasa .netified lainnya dengan XNA pada platform .net.
http://fsharpgamedev.codeplex.com/ http://www.ironpython.info/index.php/XNA_Example_with_a_Bouncing_Sprite
sunting: Satu lagi mesin, ditulis dalam Lisp: http://code.google.com/p/blackthorn-engine/
sumber
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.
sumber
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.
sumber