2009-12-04 33 views
8

Tôi đã từng chơi MUD dựa trên số Smaug Codebase. Nó được tùy biến cao, nhưng cũng giống nhau ở cốt lõi. Tôi có mã nguồn cho MUD này, và tôi thích viết bài của riêng tôi (Chỉ dành cho một dự án thú vị). Tôi đã có một số câu hỏi mặc dù, chủ yếu là về khía cạnh thiết kế. Có lẽ ai đó có thể cho tôi một tay?Câu hỏi lập trình MUD

  1. Tôi nên sử dụng ngôn ngữ nào? Giải thích hoặc biên soạn? Liệu nó có làm cho một sự khác biệt? SMAUG được viết bằng C. Tôi cảm thấy thoải mái với nhiều ngôn ngữ và không có vấn đề gì khi học thêm.
  2. Có cách tiếp cận cụ thể nào tôi nên tuân theo để không cản trở hiệu suất không? Đối tượng định hướng, chức năng, vv?
  3. Tôi nên sử dụng phương tiện gì để lưu trữ dữ liệu? Tệp phẳng (Đây là những gì SMAUG sử dụng), hoặc một cái gì đó như SQLite. Ưu điểm/khuyết điểm hiệu suất của cả hai là gì?
  4. Có bất kỳ hướng dẫn nào mà bất kỳ ai biết về cách bắt đầu một dự án như thế này không?

Tôi muốn quy mô để cho phép 50 người chơi trực tuyến cùng một lúc mà không giảm hiệu suất. Nếu tôi sử dụng Ruby 1.8 (rất chậm), nó sẽ tạo sự khác biệt so với sử dụng Python 3.1 (Nhanh hơn), hoặc biên dịch C/C++?

Nếu có ai có thể cho mượn tay và đưa ra một số thông tin hoặc lời khuyên, tôi sẽ luôn biết ơn.

Trả lời

11

tôi sẽ cung cấp này một shot:

  1. Năm 2009, trong một trận đấu 50 người chơi, nó không quan trọng. Bạn có thể muốn chọn một ngôn ngữ mà bạn quen thuộc với các công cụ lược tả, nếu bạn muốn phát triển nó hơn nữa, nhưng vì RAM ngày nay rẻ đến vậy, những khó khăn thúc đẩy LPMUD đầu tiên (mà tôi có kinh nghiệm) và DikuMUD (mà Smaug của bạn có nguồn gốc từ) không áp dụng. (LPMUD có thể xử lý ~ 10-15 người chơi trên máy có RAM 8MB)
  2. Kiểu lập trình không nhất thiết dẫn đến khó khăn về hiệu suất, các trang web lớn như Amazon's 'obidos' webserver được viết bằng C, nhưng các trang web lớn như bản gốc Các cửa hàng của Yahoo được viết bằng Lisp, StackOverflow được viết bằng ASP.NET, v.v. Tôi/cá nhân/sử dụng C nhưng nhiều người sẽ gọi tôi là một kẻ tàn bạo.
  3. Tệp phẳng là loại vô nghĩa trong ngày và tuổi ngày nay cho nhiều lưu trữ dữ liệu, có trường hợp ngoại lệ cụ thể (Đôi khi, các máy chủ email lớn sử dụng 'maildir' được cấu trúc tệp phẳng). Kích thước của trò chơi của bạn có thể có nghĩa là bạn sẽ không gặp phải sự chậm chạp lớn do sự chậm trễ truy xuất dữ liệu, nhưng tính toàn vẹn dữ liệu trong trường hợp có thể sẽ làm cho lập luận thuyết phục nhất.
  4. Không biết bất kỳ hướng dẫn nào, nhưng điều tôi muốn làm là bắt đầu trò chơi như một máy chủ trò chuyện câm để bắt đầu, đảm bảo người dùng có thể đăng nhập và thực hiện điều gì đó người dùng khác), sau đó xây dựng lên để cho phép đăng nhập cụ thể, vì vậy bạn sẽ bắt đầu phải đối mặt với thách thức về xử lý tên người dùng/mật khẩu và cài đặt/lưu trữ/truy xuất tùy chọn của người dùng ... sau đó bắt đầu thêm các yếu tố gamedriver (nhận các trò chơi toe tic làm việc trong game), sau đó đi phức tạp hơn một chút (có được thiết lập 5 phòng làm việc với các đối tượng bạn có thể chọn/thả/đập lẫn nhau), sau đó thêm một số ký tự không phải người chơi và THEN lo lắng về việc bỏ qua trong Diku -những ngôi mộ smaug-được lưu trữ/etc và làm việc với chúng. :)

Đây là một chút ngoài dải, tôi chắc chắn có những ý kiến ​​bất đồng ý kiến. :) Chúc may mắn!

+0

Ah, LPMUD ... mang lại rất nhiều kỷ niệm. LPC thực sự khá phù hợp để phát triển các vật phẩm và sinh vật. – Fredrik

+0

Câu trả lời rất chắc chắn Jon !! Tôi đã đề cập đến để bắt đầu chương trình trò chuyện câm với async communication.It sẽ là một nỗi đau để quay trở lại và cắm vào. –

1

Đây là trò chơi dựa trên văn bản, phải không? Trong trường hợp đó, với phần cứng hiện tại, có vẻ như tất cả những gì bạn phải lo lắng là không vô tình tạo thuật toán O (n ** 2). Thậm chí điều đó có lẽ sẽ không quá tệ với 50 người dùng.