2010-01-20 11 views
7

Tôi đang xây dựng một trang web có nhiều điểm chung với trang web cờ vua cá nhân. Tôi đã nghĩ đến việc sử dụng Rails cho front-end (User Registration, Navigation, vv) và một cái gì đó giống như Scala hoặc Erlang cho động cơ (Game state và AI AI). Tôi đã tự hỏi -Xây dựng một trang web trò chơi mutliplayer

  1. Đây có phải là tình huống tốt để sử dụng loại thiết kế đó không?
  2. Làm cách nào để phân chia chức năng giữa các thành phần chính xác nhất?
  3. Họ sẽ liên lạc tốt nhất với nhau bằng cách nào?

Tôi đang mở cho bất kỳ công nghệ hoặc ý tưởng nào.

+1

Bạn muốn gì từ Rails?Nếu bạn muốn sử dụng nó để tạo tài khoản người dùng và tìm kiếm người chơi với v.v. Tôi có thể hiểu, nhưng nếu bằng 'front end' bạn có nghĩa là chơi cờ, tôi không thấy nó sẽ giúp bạn như thế nào. Giống như, nếu tôi đang phát triển một ứng dụng web dựa trên cơ sở dữ liệu CRUD-ish, thì ORM của Rails sẽ nhảy vào tôi và hét lên "Tôi LỢI ÍCH BẠN VÀ DỰ ÁN CỦA BẠN" ... cho một thứ như 'thời gian thực' như cờ vua, tôi không Tôi cảm thấy như tôi thấy những gì Rails sẽ làm cho bạn. Sau đó, một lần nữa, tôi đã chỉ đọc về Rails rộng rãi, vì vậy tôi đang nói ra ass của tôi và mong được chứng minh là sai;) –

+0

Định nghĩa của bạn về "front-end" và "engine" là gì? Câu hỏi của bạn là loại mơ hồ. –

+0

Những câu hỏi này không có ý nghĩa nhiều. Bạn có muốn xây dựng một ứng dụng, không có vấn đề gì, với thiết kế đó, hay bạn đặc biệt muốn xây dựng một ứng dụng cờ vua? –

Trả lời

7

Nếu bạn đang sử dụng Rails cho giao diện người dùng, tại sao không sử dụng Ruby?

Nếu bạn thích ý tưởng sử dụng Scala, tại sao không sử dụng Lift cho giao diện người dùng?

2

Tôi sẽ bắt đầu bằng cách đọc http://www.htdp.org/ Cách thiết kế chương trình. Các câu hỏi bạn đã hỏi rất rộng và khó trả lời mà không có tiền tố báo cáo với "Tôi tin rằng ..."

Tôi sẽ viết mã bằng clojure (nhưng đó chỉ là tôi).

+0

Bạn chắc chắn có thể làm tồi tệ hơn nhiều so với clojure. Tôi thích lập trình chức năng nhưng không thực sự thành lisp. Nhưng nếu lisp nói với bạn, clojure cung cấp cho bạn một lisp hiện đại w/dễ dàng sử dụng các thư viện chuẩn công nghiệp. Nếu bạn không muốn mặc các phím 9 và 0, scala có nhiều tính năng giống như clojure, với một hương vị khá khác. Nhưng có, xin vui lòng cho tình yêu của Thiên Chúa sử dụng một ngôn ngữ hiện đại. –

3

Cờ vua theo lượt, và có một bảng rất đơn giản có thể được xử lý với các cải tiến HTML và/hoặc Javascript - vì vậy mô hình cơ bản truyền khá độc đáo với các khung công tác web hiện có.

Với ý nghĩ này, Rails là lựa chọn tuyệt vời để tạo ứng dụng dựa trên web. Rails không chỉ giới hạn trong các ứng dụng crud, và trên thực tế tôi nghĩ rằng có thể viết toàn bộ ứng dụng của bạn trong Rails/Ruby - bạn không thực sự cần phải có một công cụ bên ngoài.

Trong không gian trình duyệt, bỏ phiếu cho các cập nhật lần lượt có thể được thực hiện bằng cách sử dụng XMLHttpRequest và cơ sở dữ liệu có thể duy trì trò chơi hiện tại và chuyển trạng thái.

3

Có vẻ như một ứng dụng Nâng đơn giản cho tôi. Tôi không có kinh nghiệm với Lift, tâm trí bạn, nhưng nó không có vẻ đặc biệt phức tạp hơn so với các ứng dụng trò chuyện đó là quá thường xuyên demoed.

1

Tôi hiện đang phát triển một bộ trò chơi trực tuyến, sử dụng Scala. Nó hoàn toàn tuyệt vời - logic trò chơi của tôi dễ dàng hơn nhiều để có được quyền gõ tĩnh, và xử lý giao thức máy chủ/máy khách (ứng dụng flash) trong trường hợp này được thực hiện đơn giản hơn thông qua việc sử dụng Bộ đệm giao thức của Google.

Nếu bạn là một fan hâm mộ lớn của RoR, bằng mọi cách, hãy sử dụng điều đó. Tôi nghĩ rằng hầu hết các ngôn ngữ gõ tĩnh là khủng khiếp để lập trình các trang web trong (Java, tôi đang nhìn bạn ở đây), nhưng Scala thoát khỏi 90% của cơn đau, và cung cấp cho an toàn hơn.

Tất nhiên, đó có thể không phải là tách trà của bạn. Nhưng tôi sẽ thử làm toàn bộ điều trong Scala, và thêm một lớp khác nếu điều đó không hoàn toàn làm điều đó cho bạn.

+0

Ngoài ra, tùy thuộc vào những gì bạn đang làm, bạn có thể thích Sun's Project Darkstar. Bất kỳ ngôn ngữ JVM nào cũng có thể sử dụng nó và nó làm cho các trò chơi trực tuyến nhiều người phát triển. –

1

Đối với câu hỏi 1 Có Và đối với 2 và 3, bạn cần cung cấp thêm thông tin để nhận câu trả lời có thể giúp bạn.

Bây giờ tôi đang làm một cái gì đó như bạn nhưng đối với giao diện người dùng, tôi sẽ sử dụng Grails. Lý do rất đơn giản: Tôi thích Grails, Scala và tôi muốn trộn chúng :)