Cố gắng giữ điều này đơn giản nhất có thể và các giao diện được xác định rõ ràng và được ghi lại. Duy trì và gỡ lỗi một hệ thống phức tạp trong sản xuất dễ dàng biến thành địa ngục. Vì vậy, nếu có một cách tiếp cận đơn giản và phức tạp, hãy suy nghĩ kỹ trước khi bạn thực hiện phương pháp phức tạp.
Dịch vụ xác định
Tôi nghĩ bước đầu tiên là xác định các dịch vụ và sự phụ thuộc của chúng : Nội dung tĩnh, Xác thực, Trò chuyện địa phương, Kênh trò chuyện toàn cầu, Kênh trò chuyện khu vực, Danh sách bạn bè, Bang hội, Túi / Kho, Nhà đấu giá, Bản đồ toàn cầu, Thế giới, ...
Sau đó, cho mỗi dịch vụ này quyết định nếu khách hàng có thể nói chuyện trực tiếp với họ. Ví dụ, khá dễ dàng để cho phép khách hàng nói chuyện trực tiếp với các máy chủ chịu trách nhiệm về Kênh trò chuyện toàn cầu. Các máy chủ thế giới hoàn toàn không phải tham gia vào các tin nhắn trò chuyện. Trò chuyện khu vực có thể được thực hiện theo cách tương tự, nhưng các máy chủ thế giới phải thông báo cho các máy chủ trò chuyện khi người chơi thay đổi khu vực. Một lần nữa, họ không phải quan tâm đến các tin nhắn.
Bước thứ ba là suy nghĩ về cân bằng tải trong một dịch vụ . Ví dụ, các kênh trò chuyện toàn cầu và khu vực có thể được phân chia trên nhiều máy chủ dựa trên tên của họ. Có lẽ là một ý tưởng tốt để không cứng mã này tách thành máy khách, nhưng cung cấp một dịch vụ tra cứu.
Máy chủ thế giới
Phần khó nhất thường là các máy chủ thế giới , vì vậy tôi bắt đầu với một cách tiếp cận đơn giản. Có lẽ là một ý tưởng tốt để cho khách hàng nói chuyện trực tiếp với máy chủ chịu trách nhiệm về khu vực anh ta đang ở. Vì vậy, khi đăng nhập hoặc khu vực đi qua máy khách phải được thông báo cho máy chủ nào để kết nối.
Cách tiếp cận đơn giản là chia thế giới thành các khu vực độc lập . Với các khu vực độc lập, ý tôi là người chơi không thể nhìn từ bộ phận này sang bộ phận khác và quái vật không thể giao nhau. Các khu vực đó khác với các khu vực người chơi nhìn thấy dựa trên phong cảnh và câu chuyện của thế giới bên ngoài. Thông thường hầu hết các quái vật đều ở trong ngục tối và người chơi có xu hướng chấp nhận rằng họ phải đi bộ qua một cổng để vào ngục tối. Đặc biệt là nếu những dungeon đó được khởi tạo trên cơ sở mỗi nhóm người chơi. Các ví dụ khác về thế giới bên ngoài là các lục địa và thung lũng khác nhau được bao quanh bởi những ngọn núi cao.
Một cách tiếp cận thế giới liên tục trở nên phức tạp thực sự nhanh chóng, vì vậy thật hợp lý khi lên kế hoạch cho nó: khách hàng cần thông tin gì? Những thông tin nào các máy chủ phải chia sẻ? Người chơi sẽ chủ yếu chỉ tương tác với các đối tượng (bao gồm cả quái vật và NPC) trong cùng khu vực. Bạn có thể gian lận bằng cách đặt các đối tượng ra khỏi phạm vi nhấp từ đường viền khu vực. Điều này có nghĩa là khách hàng chủ yếu quan tâm đến việc chỉ đọc thông tin cho các khu vực lân cận. Đối với những trường hợp này, các máy chủ khu vực không phải phối hợp bất cứ thứ gì ngoại trừ kiểm tra quyền cho phép người chơi đủ gần để kết nối với khu vực lân cận.
Điều này chỉ để lại một số lượng rất nhỏ các trường hợp khó khăn trong đó các đối tượng hoặc hành động phải vượt qua biên giới máy chủ. Đó là một điều tốt bởi vì những trường hợp như mũi tên và phép thuật là hiệu suất quan trọng. Nó có thể là một ý tưởng tốt để phân chia chiến đấu thành tấn công và phòng thủ. Vì vậy, máy chủ của một caster chính tả sẽ xác định các tham số tấn công bao gồm cả vị trí của caster. Máy chủ của hậu vệ sẽ nhận được thông báo về cuộc tấn công và tính toán tác động. Máy chủ của kẻ tấn công không cần biết về tác động; khách hàng sẽ tìm hiểu về nó bằng cách sử dụng kết nối chỉ đọc của mình.
Tùy thuộc vào mức độ phức tạp của mô hình trình phát của bạn, có thể mất vài giây để chuyển nó sang máy chủ khác (Cuộc sống thứ hai có vấn đề rất lớn với việc này). Vấn đề có thể được giảm thiểu bằng cách chuẩn bị chuyển khoản trước khi người chơi đến gần biên giới ảo. Vì vậy, hầu hết dữ liệu người chơi đã được lưu trữ trên máy chủ đích khi việc chuyển giao thực tế xảy ra.
Tóm lược
Phân chia vấn đề bằng cách xác định các dịch vụ khác nhau có thể được phân chia trên các máy chủ với ít sự phụ thuộc. Bước tiếp theo hãy xem làm thế nào để cân bằng tải trong các dịch vụ quan trọng. Đại biểu cân bằng công việc cho khách hàng bằng cách hướng dẫn nó kết nối trực tiếp với các máy chủ có liên quan (rõ ràng các máy chủ phải kiểm tra quyền). Giữ nó đơn giản nhất có thể, ghi lại trách nhiệm của các dịch vụ và máy chủ khác nhau, cung cấp tùy chọn để bật đầu ra gỡ lỗi.
PS: Một số kỹ thuật này có thể được sử dụng để cải thiện độ tin cậy. Và bạn nên ghi nhớ điều đó bởi vì sử dụng nhiều máy chủ tiềm ẩn nguy cơ phá vỡ mọi thứ cao hơn nhiều; không chỉ ở phần mềm mà còn ở cấp độ phần cứng.