2009-07-30 36 views
44

Tôi khá mới với mô hình lập trình chức năng đó, nhưng cho đến nay tôi thích nó. Kể từ khi tôi phát triển trò chơi, tôi muốn thử nó bằng văn bản một số trò chơi trong phong cách lập trình hoàn toàn chức năng. Tôi không nhớ ngôn ngữ - có thể là Erlang, Haskell, Lisp, hoặc thậm chí Ruby (tôi phát hiện ra nó hỗ trợ các đặc điểm lập trình hàm).Tài nguyên tốt về cách sử dụng lập trình chức năng trong phát triển trò chơi?

Vâng, rõ ràng là để học lập trình chức năng (trên thực tế, bất cứ điều gì), lời khuyên tốt nhất là chỉ học ngôn ngữ chức năng và lập trình rất nhiều trong đó. Nhưng những gì tôi đang tìm kiếm là một số tài nguyên về cách sử dụng lập trình hàm trong trò chơi và công cụ trò chơi (2D hoặc 3D).

Vì vậy, bạn có biết bất kỳ bài viết/sách/blog về lập trình chức năng nào hay thiết kế trò chơi đơn giản với ngôn ngữ lập trình hàm và tất cả tương tác giữa trò chơi và công cụ trò chơi trong chức năng này môi trường?

Xin vui lòng, không đề xuất một cái gì đó như "chỉ cần bắt đầu lập trình công cụ đơn giản trong chức năng và dần dần nó sẽ đến với bạn". Như tôi đã nói trước đó, điều hiển nhiên là những gì tôi hỏi ở đây là một số tài nguyên về chủ đề này, nếu có. Cảm ơn!

+1

Ocaml có thể là một thay thế ngôn ngữ chức năng thú vị. – Christian

Trả lời

23

Vâng, bạn có thể làm tồi tệ hơn việc nghiên cứu mã của một số trong số haskell games này.

Một số trong số này sử dụng FRP (lập trình hoạt động chức năng), mà một số người đang làm việc như một kỹ thuật tinh khiết, cấp cao cho trò chơi và những thứ khác. Nhưng hầu hết là một hỗn hợp điển hình của mã hàm hiệu quả và tinh khiết.

Các blogger có nội dung liên quan bao gồm James Hague.

Lưu ý FunGEn ở liên kết đầu tiên - mặc dù không chủ động duy trì nó là một công cụ trò chơi 2D với các ví dụ làm việc.

Ngoài ra còn có ngôn ngữ Sạch với số game library and nice screenshots.

+0

Cảm ơn, đây chính xác là những gì tôi đang tìm kiếm. – Mikka

+1

Xem thêm [FunGEn on hackage] (http://hackage.haskell.org/package/FunGEn), cần cập nhật. –

2

Wings3D là gói Erlang được sử dụng để vẽ hình dạng khung dây. Tôi nghĩ rằng nó được sử dụng trong các trò chơi, nhưng đó không phải là túi của tôi ...

+1

Thư viện github.com/dgud/esdl/tree/master được sử dụng trong wings3d, nhưng tác giả khuyên bạn nên sử dụng wxerlang để mở rộng. – Christian

1

Vâng, tôi không chắc chắn điều này sẽ giúp ích gì và bạn có thể đã nghe về nó, nhưng có vẻ như một sự khởi đầu rõ ràng: an article trên Jak và Daxter.

+1

Mặc dù GOAL là một Lisp, tôi không nghĩ nó rất chức năng. Tất cả các mẫu mã trông bắt buộc và một nơi nào đó tôi nhớ đọc về cách họ quản lý bộ nhớ bằng tay bởi vì bộ thu gom rác GOAL quá chậm. (Tuy nhiên, bài viết tóm tắt nhiều lợi ích khác của Lisp - macro, đánh giá thời gian chạy, v.v.) –

+0

Một trò chơi khác đã sử dụng Lisp là "Lạm dụng", giờ là miền công cộng. Mặc dù, một lần nữa, có lẽ không phải là cách sử dụng chức năng nhất của Lisp. – Ken

+1

Lisp không phải là một ngôn ngữ lập trình chức năng thuần túy. Thông thường nó là đa mô hình và hỗ trợ bao gồm nhiều mô hình khác (logic, quy tắc, quan hệ, ràng buộc, tác nhân, ...). Vì vậy, bất kỳ chương trình Lisp thực sự nào cũng sẽ kết hợp hài hòa các chức năng bắt buộc, chức năng, hướng đối tượng và các chương trình khác. –

4

Một ít ngày, nhưng this là lần đầu tiên trong một loạt bài đăng về cách sử dụng F # với khung phát triển trò chơi XNA. Bạn cũng có thể tìm thấy blog F# for Game Development có một số tài liệu hữu ích.

7

Vâng tôi chủ yếu là một lập trình viên Haskell vì vậy tôi chỉ có thể đề nghị để thử Haskell thư viện như Gtk2hs. Nó chủ yếu dành cho các ứng dụng 2D và giao diện người dùng nhưng nó tốt để giúp bạn bắt đầu :) Một thư viện dễ dàng hơn là HGL nhưng hơi bị lỗi và lỗi thời. Nếu bạn muốn thử các công cụ lộn xộn (nhưng lạnh hơn) thì hãy đến thư viện OpenGL của Haskell có thể tìm thấy here. Tôi chưa bao giờ thử làm việc với Haskell và OpenGL nhưng nếu bạn kiểm tra câu trả lời được gửi bởi Simon Michael, có các trò chơi ví dụ trong Phần Trò chơi của Hackage sử dụng OpenGL.

Xin lỗi vì không liên kết tất cả thư viện nhưng tôi là người dùng mới và tôi không được phép nhiều hơn một siêu liên kết. Nếu bạn google họ họ nên đi lên một cách dễ dàng mặc dù.

7

Nếu bạn quan tâm đến bên được kết nối mạng của trò chơi, Joel Reymont đã viết về trải nghiệm của mình khi mã hóa trực tuyến Poker server. Tôi nghĩ rằng ông đã làm ít nhất ba triển khai khác nhau (Lisp, Erlang, Haskell). Thật không may, tài liệu của anh nằm rải rác trên Internet. Dưới đây là hai gợi ý bạn có thể tìm thấy hữu ích:

EDIT:

Dưới đây là một số gợi ý theo dõi và liên kết từ các tài liệu trên đó đã thay đổi.

EDIT II:

Joel dường như đã bán đang poker của mình từ đó, vì thế nó không còn có sẵn như là open source.

+0

rằng liên kết cuối cùng dường như đã nhầm lẫn địa ngục ra khỏi trình phân tích cú pháp. hy vọng tôi đã không vít nó lên rằng xấu bằng cách không tham khảo các lưu trữ web. – nlucaroni

+1

Có lẽ bạn có thể vừa sử dụng tinyurl hoặc một cái gì đó như thế :) – Mikka

3

Frag là trò chơi bắn súng người đầu tiên 3D được viết bằng Haskell, bởi Mun Hon Cheong. Nó được cấp phép theo GPL. Thiết kế và thực hiện Frag được mô tả trong luận án đại học của Mun, Lập trình chức năng và Trò chơi 3D.

1

Như Nathan Sanders nêu trên (từ googling của tôi về "trò chơi haskell gc") có một thời gian khi Haskell có (?) Một số vấn đề khá nghiêm trọng với GC ... this old article (6 tuổi, tôi biết), cũng xem this question. Kể từ khi Frag là xung quanh, tôi đoán họ phải đã cố định ít nhất một số điều trong các phiên bản sau của GHC.

Các vấn đề liên quan