2010-08-01 12 views
9

Tôi muốn tìm hiểu Ocaml hoặc Haskell và tôi muốn làm điều đó bằng cách viết một trò chơi đơn giản. Rõ ràng, có một vấn đề nhỏ: không ai quan tâm đến Windows và tôi muốn làm điều đó trên Windows, một cách tự nhiên.Haskell hoặc Ocaml với OpenGL và SDL biên dịch sẵn biên dịch cho Windows

Haskell có Cabal, có SDL, nhưng nó không xây dựng do một vấn đề tầm thường không có cách giải quyết (thứ tự các thông số được chuyển đến gcc). Ocaml thậm chí không có, đó là tất cả trong gói nguồn, có thể là GLCaml hoặc OcamlSDL hoặc bất cứ điều gì.

Có nơi nào tôi có thể nhận được SDL hoạt động cho Haskell hoặc Ocaml trên Windows mà không cần chiến đấu với hàng tá phiên bản trình biên dịch không?

+1

Godi và OASIS là hai hệ thống giống như Cabal cho OCaml, nhưng tôi không đề xuất chúng là câu trả lời vì tôi không biết chúng hoạt động tốt như thế nào trong Windows. –

+2

Đó thực sự là một vấn đề, tôi phải đối mặt với cùng một vấn đề một năm trước, nhưng đã từ bỏ và thiết kế trò chơi của tôi dưới Ubuntu với OCamlSDL, đây là liên kết đến trò chơi nếu quan tâm http://web.martani.net/worms – 0xFF

+0

Bắt đầu với Nền tảng Haskell cho Windows: http://haskell.org/platform –

Trả lời

5

Nền tảng Haskell đi kèm với một ràng buộc để OpenGL mà nên làm việc ra khỏi hộp trên Windows.

Liên quan đến gói SDL khi tấn công, bạn có thể sử dụng cabal unpack SDL để nhận mã nguồn và tự khắc phục sự cố. Để cài đặt gói với các thay đổi của bạn, hãy chạy cabal install trong thư mục chưa được đóng gói. Trong mọi trường hợp, hãy thả một dòng cho người bảo trì, tôi chắc chắn anh ta sẽ giúp đỡ.

+0

vấn đề AFAIK không phải là ngay cả trong gói; [đây là giải thích chi tiết hơn] (http://jpmoresmau.blogspot.com/2010/05/haskell-sdl-on-windows-check-hacking.html). – Baczek

+1

Ah, yuck! Vấn đề là thư viện SDL định nghĩa lại hàm 'main' của bạn bằng macro CPP. Hàm 'main' thực tế nằm trong DLL!Đây có lẽ là lý do tại sao các đối số liên kết phải được hoán đổi cho nhau. Trong ngắn hạn, đổ lỗi nằm với libSDL, thiết kế của nó không chơi tốt với bất kỳ loại giao diện nước ngoài nào. –

+0

Tôi đoán rằng bạn chỉ nên cài đặt phiên bản hsc2h tùy chỉnh với sửa chữa của JP Moresau. Hoặc bạn có thể thực sự lén lút và thay thế GCC bằng một chương trình bao bọc mà trao đổi các đối số trước khi chuyển chúng đến GCC thực. –

1

Nó không liên quan đến SDL, nhưng bạn đã đề cập đến OpenGL. Có LablGL ràng buộc cho OpenGL trong OCaml hoạt động ngoài hộp. Ví dụ về Wiki (http://en.wikipedia.org/wiki/Objective_Caml#Triangle_.28graphics.29) biên dịch và hoạt động tốt.

+0

Dường như nó chỉ hỗ trợ phiên bản OpenGL cổ đại - Tôi không thấy các chương trình đỉnh/đoạn, v.v. – Baczek

+0

@Baczek: Như tôi đã nói trong câu trả lời của tôi, các ràng buộc GLCaml hỗ trợ các trình đổ bóng và các đoạn đổ và tôi đã sử dụng chúng . Tuy nhiên, nếu bạn dự định phân phối những gì bạn viết, tôi sẽ khuyên bạn không nên sử dụng OCaml hoặc Haskell cho việc này. –

1

Các hướng dẫn tốt nhất tôi đã tìm thấy để nhận SDL hoạt động trong các cửa sổ có nền tảng Haskell mới nhất có thể tìm thấy tại this blog. Tôi đã làm theo mọi thứ từng bước và nó hoạt động hoàn hảo, mặc dù một số thông báo lỗi cấu hình.

1

Nó không phải là SDL nhưng GLFW hoạt động trên Windows với Haskell thông qua Cabal.

0

Bài viết của tôi High-fidelity graphics with OpenGL 2 (25 tháng 2 năm 2008) giải thích cách kết hợp GLCaml có thể được sử dụng để viết các ứng dụng dựa trên OpenGL trong OCaml sử dụng đổ bóng và đổ bóng (một trình đổ bóng phong cách được đưa ra làm ví dụ). Có trong Tạp chí OCaml trên OpenGL, mặc dù chủ yếu là sử dụng thư viện cũ hơn LablGL cho OpenGL 1.1.

Tôi đã cố gắng và thất bại trong việc OpenGL làm việc từ Haskell dưới Linux vào năm 2007. Haskell Platform có thể đã thay đổi nhưng tôi chưa có thời gian để tự mình thử và chưa bao giờ nghe nói đến bất kỳ ai sử dụng nó. Tuy nhiên, cả OCaml và Haskell đều phải dựa vào các ràng buộc cấp thấp dễ vỡ đối với OpenGL vì chúng là các ngôn ngữ độc lập và không ai quản lý để nhận được bất kỳ phần mềm thương mại quan trọng nào sử dụng chúng để làm việc. Khi bạn đang sử dụng Windows, F # + XNA là một lựa chọn hợp lý hơn nhiều vì XNA đã được thử nghiệm và F # có giao diện cấp cao an toàn với nó. Cuộc chiến của Google mang đến cho bạn ý tưởng hay về việc bạn sẽ là người tiên phong: +haskell +opengl cho 437 lượt truy cập trên Google và +ocaml +opengl chỉ cho 347 lượt truy cập.

+1

Thật không may là câu trả lời thực dụng nhất, đặc biệt là đoạn cuối cùng, được giảm giá. –