Những ngôn ngữ nào được sử dụng để phát triển MMORPG như EVE Online và WOW? [đóng cửa]


22

Theo tôi hiểu, MMORPG là các trò chơi chạy trên máy tính của bạn giống như bất kỳ trò chơi video 3d bình thường nào khác, nhưng với mỗi hành động xảy ra trong trò chơi, các thay đổi được thực hiện cho vũ trụ thông qua các cuộc gọi HTTP đến máy chủ. Vì vậy, máy tính của người chơi thực hiện tất cả các công việc nặng nề về mặt kết xuất đồ họa và hoạt hình, nhưng, các khung web thực hiện giao tiếp trực tuyến.

  • Vì vậy, tôi tự hỏi những khung web, máy chủ web và cơ sở dữ liệu nào đang được sử dụng để tạo MMORPG như EVE Online và WOW?

  • Ngoài ra, ngôn ngữ lập trình và công cụ trò chơi 3d nào đang được sử dụng để làm cho phía máy khách (đồ họa / hoạt hình / âm thanh 3d) trở thành một phần của trò chơi?


Tôi nghĩ rằng gần như mọi MMO đều bắt đầu với các công nghệ sẵn có và sau đó tùy chỉnh nó ra khỏi nó một khi chúng phát triển đến một kích thước nhất định và bắt đầu thực sự chuyên môn hóa các công cụ của chúng. I / O không có ngăn xếp
Michael Stum

Bạn có nghĩa là các cuộc gọi TCP đến máy chủ? HTTP (Giao thức truyền siêu văn bản) được sử dụng bởi các máy chủ web và trình duyệt cho các trang web và không liên quan gì đến MMO trừ khi bạn có nghĩa là một trò chơi dựa trên trình duyệt như urbandead.
ném đá

Michael Stum, I / O không có ngăn xếp được tạo bằng Stackless Python?

@Adam không biết hai cái này có liên quan hay không.
Michael Stum

@Michael Stum Chỉ cần phát hiện ra rằng đó là từ video này us.pycon.org/2009/conference/schedule/event/91

Câu trả lời:


30

Hầu hết các công ty sử dụng C ++. Eve là một ngoại lệ, công cụ đồ họa cốt lõi là trong C ++, trong khi logic trò chơi là, như những người khác đã lưu ý, trong Python. ĐCSTQ cũng có rất nhiều đóng góp cho chính Stackless, phần lớn nằm trong C. WoW là C ++ cho chính trò chơi, mặc dù UI được viết theo kịch bản trong Lua. Tiền điện tử (Champions Online, Star Trek Online) sử dụng đồng bằng C, nhưng điều đó hơi hiếm trong ngành. Java bật lên mọi lúc, ví dụ. Runescape, nhưng tôi không thể nghĩ gì về AAA. Disney đã sử dụng Panda3D (một công cụ dựa trên Python được viết bằng C) cho một số MMO của họ, nhưng như với Eve thì không phổ biến.

Nhìn chung, nó có vẻ giống như C ++ cho logic trò chơi và công cụ, với Lua cho kịch bản máy khách là thứ gần nhất bạn sẽ tìm thấy theo một tiêu chuẩn.

Đối với các trang web, nó là tất cả hơn. Chúng tôi (Tiền điện tử) sử dụng hỗn hợp PHP, C và Python (Django) cho các bit khác nhau. ĐCSTQ sử dụng ASP cho chính trang web và Python để cung cấp năng lượng cho phần phụ trợ (mặc dù từ từ trôi cùng nhau). Cả WAR và LOTRO đều sử dụng PHP cho trang web của họ, mặc dù không rõ họ đang sử dụng các khung cụ thể nào (nếu có).

Bạn đã đề cập rằng MMO hoạt động thông qua các lệnh gọi API web, tuy nhiên không phải vậy. Một giao thức dựa trên HTTP sẽ quá kém hiệu quả và HTTP không được thiết kế cho các kết nối chạy dài. Khá nhiều tất cả các MMO (không dựa trên web như Kingdom of Loathing hoặc Urban Dead) sử dụng các máy chủ tùy chỉnh và giao thức tùy chỉnh. Các máy khách rất có trạng thái, làm một việc gì đó như đưa ra một giao diện người dùng kiểm kê sẽ không thực hiện yêu cầu đến máy chủ vì tất cả thông tin đó được lưu trong máy khách.


coderanger vì vậy khi bạn nói 'khách hàng có trạng thái cao', bạn có nghĩa là ứng dụng khách đang lưu trữ tất cả dữ liệu ở đó và không phải lúc nào cũng gửi yêu cầu đến máy chủ? Ngoài ra, làm thế nào để tìm hiểu về việc phát triển các máy chủ tùy chỉnh và các giao thức tùy chỉnh?

2
Có, để giảm lưu lượng mạng, máy khách lưu trữ rất nhiều thông tin cục bộ (không giống như trong trò chơi web, nơi mọi thứ thường trực tiếp đến từ máy chủ). Các máy chủ vẫn có thẩm quyền mặc dù, để ngăn chặn gian lận. Đối với việc tìm hiểu về cách phát triển loại điều này. Tôi sẽ tìm một cuốn sách về "lập trình mạng". Có rất nhiều công cụ hiện có có thể giúp đỡ, Twisted, Bộ đệm giao thức, v.v ... Rất nhiều phụ thuộc vào ngôn ngữ và khung công tác nào bạn cảm thấy thoải mái nhất.
coderanger

3
Panda3d được lập trình trong C ++, không phải C.
jokoon

5

Một vài liên kết cho EVE Online:

Về cơ bản, EVE Online chạy trên SQL Server 2005 và một số phần mềm khác của Microsoft. Xương sống của khách hàng chủ yếu được viết bằng Python (chính xác là Stackless Python, từ những gì tôi có thể nhớ) và một số C ++ rất có thể.

Đối với World of Warcraft, tôi biết họ sử dụng Lua cho tất cả các công cụ GUI của khách hàng, nhưng ngoài ra tôi không nghĩ họ sử dụng Lua cho bất cứ điều gì khác. C ++ có khả năng là những gì được sử dụng. WoW, tôi nghĩ cũng sẽ sử dụng một số hộp Windows nhưng có vẻ như họ sẽ có một số loại hộp khác dành riêng cho một số tác vụ nhất định có thể không dựa trên Windows.

Không có nhiều thông tin, nhưng hy vọng nó sẽ giúp.

Rất nhiều trò chơi này phân tách các máy chủ dựa trên chức năng, vì vậy chúng sẽ có một máy chủ cơ sở dữ liệu chỉ chịu trách nhiệm lưu trữ các đối tượng / bất cứ thứ gì và các máy chủ thực sự chạy thế giới trò chơi (xác thực hành động của người chơi, v.v.).


3

Tôi không chắc lắm về EVE và WoW, nhưng tôi đã thấy các game MMO sử dụng C ++, C #, Java và thậm chí PHP cho máy chủ (mặc dù sau này chỉ dành cho các trò chơi dựa trên trình duyệt đơn giản).

Máy khách thường được viết bằng C ++ (hoặc Flash nếu đó là trò chơi dựa trên trình duyệt); Tôi đã từng làm việc với một máy khách dựa trên .NET một lần (C # trộn với C ++ / CLI).

Và hầu như luôn luôn một số loại ngôn ngữ kịch bản động được sử dụng để tạo điều kiện phát triển nội dung "nhà thiết kế" - ví dụ: khả năng, nhiệm vụ, v.v. - những thứ thay đổi thường xuyên và có thể được thay đổi bởi các nhà thiết kế trò chơi so với lập trình viên.


3

Đầu tiên, MMORPG hoặc bất kỳ trò chơi trực tuyến nào không sử dụng HTTP hoặc "khung web" ở vị trí đầu tiên.

Một máy chủ được lập trình giống như trò chơi, trong C ++ và giao tiếp đạt được bằng cách sử dụng các ổ cắm để truyền gói qua mạng.

Máy chủ thường chạy một hệ điều hành khác và chỉ bao gồm mã trò chơi, vì vậy rất nhiều người chơi có thể chơi trên một máy chủ một cách trơn tru.

Tôi không biết Blizzard quản lý máy chủ của họ như thế nào, tôi không biết họ có sử dụng cụm hay không.

Tất nhiên khi tôi nói "socket" và "C ++", tôi đang nói về trò chơi thời gian thực, chứ không phải các dịch vụ khác mà trò chơi có thể cung cấp, như kho vũ khí với WoW chẳng hạn. Họ có thể chỉ sử dụng một cơ sở dữ liệu có thể được đọc từ nhiều dịch vụ, như diễn đàn, kho vũ khí, trò chơi, quản trị tài khoản, v.v., nhưng tôi nghĩ rằng họ có cơ sở dữ liệu phụ thuộc, tìm kiếm các mục mới, v.v. lên độc đáo

Tôi nghĩ anh chàng phụ trách phần mạng của WoW có thể là một kẻ xấu thực sự.


3
"Tôi nghĩ rằng người phụ trách phần mạng của WoW có thể là một kẻ xấu thực sự." Theo tôi, dân số máy chủ nhỏ và phong trào phía khách hàng không thực sự tạo ra sự giả mạo xấu. Mặc dù nhận thức muộn cũng là 20/20.


0

Có hàng tá công cụ trò chơi ngoài kia. Hai thứ xuất hiện trong tâm trí tôi là Unreal engine và Source.

Đối với ngôn ngữ, điều đó phụ thuộc vào nhiệm vụ. Kết xuất và các phần quan trọng hiệu suất khác thường được thực hiện bằng một trong các ngôn ngữ bản địa. C ++ chẳng hạn. Nhưng thông thường sử dụng một số ngôn ngữ động để xác định tập lệnh bởi vì mã này có nhiều khả năng thay đổi và thường được viết bởi các lập trình viên ít 'khó tính' :-) Lua, Python, Ruby - tất cả đều có thể được sử dụng ở đây.


0

WoW cũng sử dụng Lua cho tất cả các kịch bản nội bộ của họ. Tôi không chắc liệu họ có tự sửa đổi ngôn ngữ không, nhưng tôi sẽ không nghi ngờ vì vậy nó có thể phù hợp với nhu cầu của họ. Bạn có thể đặt cược họ có các công cụ khác nhau giúp các nhà thiết kế của họ dễ dàng sửa đổi / chỉnh sửa các tập lệnh. Đây là thông tin nội bộ từ những người bạn của tôi đã / từng là nhà phát triển WoW.


Khi một người sửa đổi một ngôn ngữ như Lua, bạn có nghĩa là họ đang tạo khung cá nhân của riêng họ dựa trên Lua. Chính xác? Nếu vậy, điều này có làm giảm hiệu suất / tốc độ của các chương trình được phát triển không?

@ J3M7OR3 - Theo hiểu biết của tôi, họ đã tạo ra khung nội bộ của riêng họ dựa trên Lua, nhưng tôi không thể nói về hiệu suất / tốc độ.
Kyle C
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.