Tại sao MMORPG vẫn sử dụng nhiều máy chủ?


18

MMORPG, một số MOBA như Liên minh huyền thoại hay thậm chí là StarCraft 2 thường buộc bạn phải chọn máy chủ. Thông thường họ là Mỹ, EU và BIỂN, trong các game MMORPG nhiều trên mỗi địa điểm. Tôi có thể thấy rằng điều đó là cần thiết một vài năm trước đây, nhưng bây giờ với sự ra đời của AWS và các dịch vụ tương tự cho phép bạn mở rộng quy mô "sức mạnh máy chủ" của mình, tại sao vẫn có các máy chủ riêng biệt?

Hành trình suy nghĩ của tôi là như thế này (sử dụng Star Wars: The Old Republic làm ví dụ): - Bạn luôn ở trên một hành tinh, một "trường hợp" bị cô lập từ các hành tinh khác. - Nếu có quá nhiều người trên một hành tinh, SW: TOR tạo ra một thể hiện mới của thế giới và đưa người chơi vào đó. - Nếu bạn rời khỏi thế giới / trường hợp chuyển đổi, bạn có màn hình tải

Vậy tại sao trò chơi không thể tạo ra một ví dụ cho hành tinh này. Trường hợp này (và chỉ có trường hợp này) có dữ liệu hiện tại của bạn trong cơ sở dữ liệu của nó và quản lý x người chơi. Ngay khi người chơi x-50 có mặt trong trường hợp này, một máy chủ mới sẽ khởi động và những người mới sẽ sinh ra trong trường hợp đó. 50 điểm được dành riêng để chuyển sang nhóm của bạn, v.v.

Có thể có một ví dụ cho cả ba khu vực chính để giữ độ trễ thấp, nhưng nó sẽ cho phép bạn vẫn chơi với những người chơi khác từ BIỂN nếu bạn có thể sống với độ trễ 140ms (vẫn không có gì là imho).

Bất cứ khi nào bạn chuyển đổi một cá thể hoặc đi đến một thế giới khác, máy chủ hiện tại của bạn sẽ cung cấp tất cả dữ liệu của bạn cho máy chủ tiếp theo, đảm bảo bạn không cần một cơ sở dữ liệu tập trung lớn. Bạn vẫn có thể có một bản cập nhật định kỳ cho mục đích phân tích.

Khi bạn đăng xuất hoặc máy chủ mất kết nối, dữ liệu sau đó có thể được chuyển vào cơ sở dữ liệu lớn được tối ưu hóa để lưu trữ dữ liệu. Các máy chủ cá thể sau đó có thể được tối ưu hóa cho thông lượng cao.

Có bất kỳ lý do cụ thể này sẽ không hoạt động? Có vấn đề nào khác tôi đang thiếu?


Điều gì về thực tế là nhiều trò chơi trong số đó sẽ phải viết lại các phần vừa phải đến lớn của động cơ để hỗ trợ điều đó? Và thời gian và tiền bạc có thể được chi tiêu tốt hơn để thêm nhiều nội dung.
Xavon_Wrentaile

Tôi không đề xuất thay đổi các trò chơi hiện có nhưng nhiều hơn nữa lý do tại sao thiết kế được chọn theo cách bắt đầu.
mmlac

Câu trả lời:


12

MMORPG, một số MOBA như Liên minh huyền thoại hay thậm chí là StarCraft 2 thường buộc bạn phải chọn máy chủ. Thông thường họ là Mỹ, EU và BIỂN, trong các game MMORPG nhiều trên mỗi địa điểm. Tôi có thể thấy rằng điều đó là cần thiết một vài năm trước đây, nhưng bây giờ với sự ra đời của AWS và các dịch vụ tương tự cho phép bạn mở rộng quy mô "sức mạnh máy chủ" của mình, tại sao vẫn có các máy chủ riêng biệt?

AWS không phải là một giải pháp rõ ràng như nó có vẻ. Nó có thể tốn kém, trong một số trường hợp nhiều hơn so với việc sử dụng các trung tâm dữ liệu nội bộ (ví dụ, đối với nhà xuất bản, chi phí này có thể được khấu hao trên nhiều sản phẩm chẳng hạn). Ngoài ra, có thể có mối quan tâm về việc lưu trữ các tệp nhị phân và nhật ký nhạy cảm trên phần cứng ngoài tầm kiểm soát của một người. Cuối cùng, sức mạnh tính toán thực tế không phải lúc nào cũng là lý do để phân tách dân số "máy chủ" trong MMO.

Hành trình suy nghĩ của tôi là như thế này (sử dụng Star Wars: The Old Republic làm ví dụ): - Bạn luôn ở trên một hành tinh, một "trường hợp" bị cô lập từ các hành tinh khác. - Nếu có quá nhiều người trên một hành tinh, SW: TOR tạo ra một thể hiện mới của thế giới và đưa người chơi vào đó. - Nếu bạn rời khỏi thế giới / trường hợp chuyển đổi, bạn có màn hình tải

Guild Wars 2, trên thực tế, làm một cái gì đó rất giống với điều này. Bản đồ được mô phỏng theo các quy trình máy chủ riêng lẻ và các trường hợp tràn được tạo khi cần dựa trên giới hạn dân số bản đồ và một số phương pháp phỏng đoán cho hiệu suất của bản đồ.

Guild Wars 2 có hai trung tâm dữ liệu lớn, một ở Mỹ và một ở châu Âu - có một số cuộc trò chuyện chéo giữa các trung tâm dữ liệu đó (chủ yếu dành cho hệ thống giao dịch và thương mại) nhưng nói chung chúng tồn tại trong cấu hình đó để người chơi tham gia Đức, Pháp, et cetera không phải chịu độ trễ cao hơn cho các máy chủ trò chơi Hoa Kỳ. Trong trung tâm dữ liệu, người chơi được sắp xếp vào "thế giới gia đình" (hoặc "mảnh vỡ" theo thuật ngữ địa phương); nhưng một trong những lý do điều này được thực hiện là để giảm thiểu số lượng người chơi mà khách hàng có thể nhìn thấy và cần báo cáo cho họ. Khía cạnh phía máy khách của vấn đề đó sẽ không được giải quyết bằng cách nhân rộng ra nhiều phần cứng máy chủ hơn. Sự bùng nổ tổ hợp phía máy chủ của các đường dẫn báo cáo bổ sung có thể là,

Có bất kỳ lý do cụ thể này sẽ không hoạt động? Có vấn đề nào khác tôi đang thiếu?

Bạn đang thiếu khá nhiều thứ, nhưng chúng chủ yếu là chi tiết (và tôi sẽ không giải thích cách chúng tôi xử lý chúng bằng mọi cách vì chúng được coi là bí mật thương mại) không liên quan đến loại câu hỏi tổng quan, cấp cao như vậy. Tôi nghĩ lỗ hổng lớn nhất trong đề xuất của bạn là cố gắng chuyển dữ liệu người chơi sang máy chủ mới khi người chơi chuyển. Đó là một vấn đề phức tạp sẽ không có quy mô tốt, có lẽ thực tế sẽ tốt hơn khi thực sự có dữ liệu người chơi đó trên một hệ thống máy chủ tập trung. Hoàn toàn có thể thực hiện được nếu bạn không sử dụng các cơ sở dữ liệu đó và kho lưu trữ bản ghi thời gian chạy chính cho dữ liệu.


@Josh, bạn có nói rằng quyền phân phối cũng là một yếu tố lớn trong quyết định tạo và duy trì các máy chủ riêng biệt cho các khu vực riêng biệt trên thế giới không?
Trevor Powell

Tôi không chắc ý của bạn là gì, bạn đang nói về việc trình bày phiên bản EU với tư cách là một SKU khác cho mục đích điều chỉnh giá (và do đó muốn giữ cho phần phụ trợ của máy chủ cũng khác biệt?).

7

Chủ yếu là về độ trễ.

Thứ nhất, có một máy chủ về mặt địa lý gần bạn sẽ giảm độ trễ. Nếu máy chủ ở bên kia thế giới thì bạn sẽ thấy độ trễ nhiều hơn nếu máy chủ chỉ cách đó vài bước.

Thứ hai, các dịch vụ như AWS không được thiết kế cho công việc thời gian thực. Chúng được thiết kế cho thông lượng cao với chi phí của một chút độ trễ. Nếu trang web của bạn mất 250ms lâu hơn bình thường để tải trong một lần, không ai quan tâm, nhưng nếu trò chơi của bạn mất 250ms lâu hơn bình thường để xử lý tin nhắn, trò chơi có thể bị ảnh hưởng nghiêm trọng. Đây là lý do tại sao MMO hầu như luôn được lưu trữ trên phần cứng chuyên dụng.

Nhưng đó cũng là về thiết kế trò chơi. Nếu bạn làm cho mọi người có vẻ như ở cùng một thế giới nhưng phải chia một khu vực khi nó quá đầy, mọi người sẽ thất vọng vì họ không thể tìm thấy bạn bè của mình trong các điểm gặp gỡ được chỉ định. Loại vấn đề này sẽ mở rộng đến các bang hội, các trận chiến PvP lớn, v.v. Người chơi được sử dụng để thể hiện những ngày này nhưng có một số khu vực nhất định sẽ được chia sẻ. Nếu bạn có máy chủ hoàn toàn riêng biệt thì ít nhất không có bất ngờ nào ở đây.

Cuối cùng, có những vấn đề công nghệ khác để xem xét. Ngay cả khi mỗi trường hợp khá tách biệt với các trường hợp khác, vẫn thường có nhiều dịch vụ khác nhau cần liên lạc qua chúng. Giao tiếp giữa các máy chủ rất khó thực hiện tốt trong phần mềm thời gian thực và đã dẫn đến nhiều khai thác và lỗi khác nhau trên MMO trong quá khứ. Cụ thể, việc chuyển dữ liệu người chơi có thẩm quyền từ người này sang người khác là rủi ro. Do đó, các nhà phát triển thường nhầm lẫn về mặt thận trọng và có ranh giới phân định rõ ràng giữa các máy chủ, giảm lượng lưu lượng cần phải vượt qua chúng.


"Nếu bạn có máy chủ hoàn toàn riêng biệt thì ít nhất không có bất ngờ nào ở đây." Chà, bạn không thể chơi với bạn bè của bạn sau đó. Trong SW: TOR, nó cho bạn biết nhóm trưởng là trường hợp nào và bạn có thể chuyển ngay sang nó. Tôi (cá nhân) nghĩ rằng điều này là đủ. Cảm ơn những hiểu biết kỹ thuật, điều này thực sự giúp tôi hiểu các vấn đề trong tay!
mmlac

1
Chắc chắn một số trò chơi có thể cho phép bạn chuyển đổi ví dụ như vậy, nhưng điều đó hoạt động tốt hơn rất nhiều cho ngục tối và khu vực nhiệm vụ so với các cuộc họp và khu vực xã hội được chia sẻ. Cuối cùng, mặc dù các vấn đề kỹ thuật là quan trọng hơn.
Kylotan

Và như đã đề cập trong bình luận của tôi với Philipp, tôi không nghĩ bạn có thể điều hành thủ đô và các thành phố chính mà không có trường hợp nào.
mmlac

3

Thật ra tôi tin rằng câu trả lời không liên quan đến mạng hay kiến ​​trúc mà là liên quan đến trò chơi, thông thường trong loại trò chơi này có các sự kiện và những sự kiện này được tính thời gian theo các khung thời gian thoải mái nhất cho những người chơi trên máy chủ, và đó thường là liên quan đến múi giờ nơi con người sinh sống, do đó EU và Hoa Kỳ, v.v.

Một lý do khác là tạo ra sự tách biệt giữa các thế giới để nếu có một nhóm quá mạnh, họ sẽ không làm rối trò chơi cho mọi người chơi và bạn luôn có thể chuyển đến một thế giới ít "thách thức" hơn.

Về mặt khả năng CPU của máy chủ, mặc dù các máy ngày nay khá mạnh, luôn có giới hạn đối với những gì một máy có thể xử lý và do đó, việc tạo ra sự tách biệt giữa các thế giới là cần thiết để bảo vệ trò chơi khỏi quá tải và cho phép mọi người chọn thế giới nào họ muốn chơi trong để họ có thể chơi với bạn bè của họ. Chia tỷ lệ theo chiều ngang không chỉ là vấn đề có máy móc, bạn cần ứng dụng của mình có thể hoạt động theo kiến ​​trúc được chia tỷ lệ theo chiều ngang và điều đó không dễ dàng khi bạn có hàng ngàn "hành động" diễn ra đồng thời có thể ảnh hưởng đến nhau và cần đồng bộ hóa mọi thứ. Tôi nghĩ rằng sẽ rất khó để làm điều đó trên một số máy.


Ít nhất là trong SW: TOR chỉ có những ảnh hưởng đến trường hợp hiện tại bạn đang làm. Điều đó có nghĩa là các ông chủ thế giới mà bạn giết trong trường hợp một, vẫn sẽ không bị tổn thương / sinh ra trong ví dụ 2. Vì vậy, sự phân tách đã được thực hiện. Tôi có thể thấy lý do cho các máy chủ khác nhau ở phía quyền lực, nhưng theo vành đai, chúng cũng có thể mở rộng quy mô như vậy, vì vậy bạn không có giới hạn dân số nhân tạo. Thời gian không nên quan tâm, bởi vì các sự kiện địa phương có sự tham gia của người dân địa phương. Nếu bạn tình cờ trực tuyến, tại sao bạn không được phép tham gia? Nó chỉ không phù hợp với múi giờ của bạn.
mmlac

Tôi đã từng chơi Lineage2 trên máy chủ Hoa Kỳ khi đang ở múi giờ EU (trước khi họ tạo máy chủ EU) và tôi có thể nói với bạn rằng đó là một con chó cái! Tôi phải thức dậy lúc 3 giờ sáng nếu tôi muốn tham gia vào các cuộc đột kích và bao vây lâu đài bởi vì đó là khi tất cả diễn ra. Vì vậy, thời gian chắc chắn là một mối quan tâm.

Vâng, thời gian là một mối quan tâm khi bạn chỉ có một máy chủ ở múi giờ sai. Với ý tưởng của tôi, bạn có người trực tuyến trên toàn thế giới. Nếu bạn muốn tham gia vào cuộc đột kích 3 giờ sáng, hãy tiếp tục! Ngay bây giờ, bạn là SOL và phải đợi cho đến khi "các cuộc đột kích máy chủ" của bạn kết thúc - có thể là vào mỗi thứ Bảy lúc 10 giờ tối - nơi bạn không có thời gian. Vì vậy, đi cho các cuộc tấn công của EU vào lúc 3 giờ chiều. Điều đó có ý nghĩa?
mmlac

2

Có gì sai với tự động? Khi một vị trí quá đông dân cư, bạn chỉ cần đặt 1000 người chơi vào 10 trường hợp khác nhau.

Vấn đề với đó là các trò chơi trực tuyến là tất cả về cộng đồng. Hãy tưởng tượng bạn đã sắp xếp một cuộc họp với những người bạn đã gặp trước đây và khi bạn ở đó vào thời điểm nhất định bạn không gặp nhau vì tất cả các bạn đều ở trong những trường hợp khác nhau? Điều đó thật khó chịu và nó phá vỡ sự chìm đắm.

điều này có thể được ngăn ngừa bằng cách nào? Điều này có thể được thực hiện bằng cách đặt từng người chơi trong cùng một trường hợp, để khi bạn gặp một người chơi khác một lần, bạn có thể chắc chắn gặp lại người chơi này khi cả hai bạn ở cùng một vị trí. Bạn sẽ không bao giờ gặp những người chơi được chỉ định cho các trường hợp khác.

Nhưng những gì khi bạn muốn gặp một người từ bên ngoài trò chơi? Giống như một người bạn ngoài đời thực mà bạn mời chơi trò chơi với bạn? Để cho phép điều đó xảy ra, bạn sẽ cần khả năng chọn thể hiện khi tạo nhân vật của mình. Giống như từ một danh sách các trường hợp dễ nhớ tên. Thật không may, tên "dụ" có vẻ khó hiểu với người dùng trung bình. Họ không quen với từ đó. Sẽ không tốt hơn nếu sử dụng một thuật ngữ mà họ đã quen? Một thuật ngữ như ... Máy chủ ?


1
Đừng nhầm lẫn giữa thuật ngữ và máy chủ. Trường hợp cho phép bạn chuyển đổi lẫn nhau. Máy chủ thường là nguyên tử. Không vào và ra. Để gặp gỡ mọi người: Đặt mọi người trong một trường hợp và thủ đô của bạn sẽ có 20.000 người trong đó. Cùng một lúc. Điều đó sẽ không hoạt động cũng không được mong muốn, đó là lý do tại sao bạn phải tạo ra các trường hợp. Hành trình tư duy của tôi là biến những trường hợp này thành toàn cầu thay vì giới hạn ở một máy chủ.
mmlac

Nhưng tôi nghĩ vấn đề là bạn thường muốn mọi người có trải nghiệm có thể dự đoán được trong các khu vực được chia sẻ có chủ ý. Bạn phải phân vùng chúng vì lý do hiệu suất, nhưng chúng được cho là được chia sẻ với 'mọi người', vì vậy lý tưởng nhất là bạn có một phân vùng cố định (ví dụ: máy chủ) thay vì biến (ví dụ: ví dụ). Rất ít MMO mà tôi biết sẽ ví dụ loại hình này, bởi vì nó được coi là quan trọng đối với các lý do cộng đồng và nhóm mà mọi người đều có thể thấy mọi người ở đó.
Kylotan
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.