Đây là một bài dịch từ bài viết của Shin
một core contributor của TrinityCore
một mã nguồn mở mô phỏng lại máy chủ game MMORPG đình đám World of Warcraft (WOW).
Giới thiệu
Tôi đã bị mê hoặc bởi tính năng mô phỏng WoW từ khi tôi 14 tuổi. Tôi nhớ rằng lần đầu tiên tôi tham gia một trong những lĩnh vực đặc biệt này, có rất nhiều lỗi, nhưng ít nhất bạn có thể chơi miễn phí. Bạn biết đấy, tôi không có red cent vào thời điểm đó, vì vậy tôi không có lựa chọn nào khác.
Năm 15 tuổi, tôi bắt đầu tự hỏi làm thế nào các máy chủ private thực sự hoạt động và có thể tồn tại, đặc biệt là từ góc độ kỹ thuật. Có thể ai đó đã đánh cắp mã từ Blizzard? Tôi không biết - lúc đó tôi còn quá trẻ và thiếu kinh nghiệm! Mặc dù vậy, tôi đã bắt đầu bối rối và với sự giúp đỡ của một người bạn cũ của tôi (Fabio), cuối cùng tôi đã cài đặt được một máy chủ WoW trên PC của riêng mình.
Hồi đó, tôi thậm chí không thể tưởng tượng được mức độ hài lòng và bao nhiêu điều tôi sẽ học được nhờ vào thế giới kỳ diệu này.
Nghe có vẻ kỳ lạ, nhưng thế giới này vẫn cuốn hút tôi. Bây giờ, khi trưởng thành, ở thời điểm tôi đã dành toàn bộ luận văn Thạc sĩ về Khoa học Máy tính cho chủ đề này.
Vài thuật ngữ kỹ thuật
Để làm cho bạn hiểu quan điểm của tôi, tôi cần đi sâu vào kỹ thuật nhỏ về các quy trình làm việc của WoW, mà tôi sẽ cố gắng diễn đạt bằng những từ đơn giản.
Cách hoạt động của World of Warcraft ban đầu
Ở cấp độ phần mềm, có hai chương trình có thể được coi là tác nhân chính của trò chơi này:
- CLIENT APPLICATION - là chương trình "World of Warcraft" thực tế được cài đặt bởi mọi người chơi trên máy tính của họ để truy cập trò chơi.
- SERVER APPLICATION: là chương trình chạy trên máy chủ.
Quá trình này rất đơn giản: tất cả các Khách hàng (người chơi) kết nối với một Máy chủ để tương tác với nhau. Ứng dụng khách biết địa chỉ máy chủ, vì nó được lưu trữ trong tệp "domainslist.wtf" nổi tiếng (đó là lý do tại sao bạn phải sửa đổi tệp này để chuyển sang máy chủ khác).
Cách các máy chủ private của WoW hoạt động
Khi chơi trên các máy chủ riêng, nguyên tắc hoàn toàn giống nhau. Sự khác biệt nằm ở phần mềm bạn sử dụng.
CLIENT. Mọi người đều có quyền truy cập vào ứng dụng World of Warcraft ban đầu. Bạn có thể dễ dàng nhận được nó bằng cách mua nó hoặc tải xuống trực tuyến. Chương trình này chính xác là chương trình mà bạn sẽ sử dụng để chơi trên máy chủ chính thức. Rõ ràng là các máy chủ private khác nhau có các phiên bản máy khách khác nhau, nhưng chúng luôn tham chiếu đến máy khách gốc. Bạn chỉ cần thực hiện một thay đổi nhỏ đối với tệp "domainslist.wtf", thay thế địa chỉ của địa chỉ máy chủ bằng địa chỉ của máy chủ private. là nó.
SERVER. Điều này là hoàn toàn khác nhau. Không ai bên ngoài Blizzard có quyền truy cập vào phần mềm gốc chạy các máy chủ chính thức của World of Warcraft. Vì vậy, các ứng dụng này hoàn toàn khác so với ứng dụng gốc.
Kỹ thuật đảo ngược
Mọi phần mềm chạy các máy chủ riêng đều được tạo ra thông qua kỹ thuật "thiết kế ngược", nói một cách đơn giản, có nghĩa là "tôi cố gắng viết một chương trình bắt chước hành vi của một chương trình khác mà không cần nhìn vào mã gốc".
Câu hỏi bây giờ là: ai đã triển khai phần mềm này và nó xảy ra khi nào?
Suy nghĩ về bản quyền
Toàn bộ tài liệu có bản quyền (hình ảnh, âm thanh, mô hình 3D, logo, v.v.) nằm bên trong ứng dụng khách. Ứng dụng máy chủ chỉ chứa số và văn bản. Vì vậy, nó hoàn toàn hợp pháp nếu bạn sử dụng nó cho mục đích giáo dục.
Các ứng dụng máy chủ WoW không chính thức
Ai tạo ra các ứng dụng phần mềm chạy các máy chủ riêng của WoW (thường được gọi là "trình giả lập")? Và họ đã làm điều đó như thế nào
Sự phức tạp
Bạn không cần phải là một chuyên gia để hiểu rằng việc viết một ứng dụng máy chủ cho một MMORPG có phạm vi lớn như World of Warcraft chắc chắn không phải là trò chơi trẻ con.
Blizzard là một công ty lớn với hàng nghìn nhân viên. Việc viết một chương trình "bắt chước" hoạt động của ứng dụng máy chủ của họ chắc chắn không hề tầm thường hoặc khả thi đối với một cá nhân (hoặc một nhóm nhỏ lập trình viên).
Và nó không chỉ là một vấn đề phức tạp. Hãy nghĩ về những nhiệm vụ rất tầm thường nhưng lặp đi lặp lại, chẳng hạn như thêm từng NPC vào thế giới, bao gồm mọi vật phẩm trong chiến lợi phẩm của họ với tỷ lệ rơi riêng, v.v. Một công việc tuyệt vời về cơ bản. Chưa kể đến tất cả các nhiệm vụ rất phức tạp đòi hỏi hàng giờ nghiên cứu và thử nghiệm, chẳng hạn như cơ chế phép thuật, cơ chế boss, v.v.
Tóm lại .... không phải lập trình viên giỏi nhất trên thế giới cũng có thể tự mình làm tất cả công việc này.
Tuy nhiên, có những máy chủ private và phần mềm làm cho chúng chạy. Và một số máy chủ riêng hiện đã có thể cung cấp chất lượng trò chơi không khác xa so với máy chủ gốc.
Làm thế nào là điều đó có thể?
MaNGOS và mô hình phát triển mã nguồn mở
Nếu bạn có một quả táo và tôi có một quả táo và chúng ta đổi những quả táo này thì bạn và tôi vẫn sẽ có một quả táo. Nhưng nếu bạn có một ý tưởng và tôi có một ý tưởng và chúng ta trao đổi những ý tưởng này, thì mỗi người chúng ta sẽ có hai ý tưởng. (George Bernard Shaw)
Nói một cách đơn giản: một chương trình mã nguồn mở là một chương trình có mã là công khai.
Trong bối cảnh của các máy chủ riêng, mã nguồn mở đóng một vai trò cơ bản.
Một số game thủ kỳ cựu có thể nhớ rằng từng có thời chất lượng trò chơi trên các máy chủ riêng thực sự rất tệ. Hầu như không có gì hoạt động. Ví dụ, nếu bạn là một kẻ lừa đảo trong khả năng tàng hình, bạn có thể bị nhắm mục tiêu bởi bất kỳ ai viết /target yourname
. Đoán xem tôi đã chọn class nào cho nhân vật đầu tiên của mình.
Cuộc cách mạng thực sự là MaNGOS, một dự án mã nguồn mở được tạo ra vào năm 2005, với mục đích là cung cấp một ứng dụng máy chủ cho World of Warcraft. Tin tốt về MaNGOS, cũng như sức mạnh của nó, là thực tế là với tư cách là một ứng dụng nguồn mở, mã của nó hoàn toàn công khai và bất kỳ người dùng nào từ khắp nơi trên thế giới đều có thể nghiên cứu nó và đưa ra đóng góp của riêng họ (cả về mặt bổ sung hoặc sửa chữa cơ chế trò chơi)
Chỉ bằng cách này, nhờ sự đóng góp của nhiều tình nguyện viên thuộc các quốc tịch khác nhau, người ta đã có thể phát triển một ứng dụng máy chủ có khả năng mô phỏng World of Warcraft với chất lượng trò chơi cao hơn.
Năm 2009, một dự án quan trọng khác ra đời TrinityCore, dựa trên MaNGOS.
Cho đến nay, phần lớn các máy chủ riêng chạy trên các ứng dụng dựa trên MaNGOS / TrinityCore.
Qua nhiều năm, các dự án khác nhau đã ra đời và chúng dựa trên mã MaNGOS / TrinityCore, chủ yếu thay đổi theo phiên bản WoW được hỗ trợ. Ví dụ AzerothCore cho 3.3.5, OregonCore cho 2.4.3, SkyFire cho 5.4.8, CMaNGOS cho Classic / TBC / WOTLK và nhiều cái khác ... Tất cả chúng đều dựa trên MaNGOS và / hoặc TrinityCore.
Tóm tắt lại
các máy chủ riêng đạt được chất lượng như vậy chỉ nhờ vào rất nhiều người đóng góp đã triển khai ngày càng nhiều tính năng trò chơi trong nhiều năm (từ 2005 đến nay).
Ngày nay, bất kỳ người dùng PC có kinh nghiệm nào cũng có thể dễ dàng cài đặt một máy chủ WoW mà không cần phải là một lập trình viên.
Open source vs private servers
Giả sử rằng Alice và Bob mỗi người có một máy chủ riêng và giả sử họ ở cùng một phiên bản trò chơi. Cả Alice và Bob đều muốn phát hành một nội dung mới cho người chơi của họ, nội dung này đã bị đóng vì các ông boss A, B, C và D khá lỗi
- Alice là một nhà phát triển rất giỏi và có thể khắc phục được cả boss A và B
- Bob vẫn là một người mới bắt đầu và chỉ sửa chữa boss C
Trong một thế giới lý tưởng
Alice và Bob làm việc cùng nhau và trao đổi các bản sửa lỗi của họ. Do đó, cả hai máy chủ của họ sẽ có các con trùm A, B và C. Được sửa lỗi hoàn hảo. Ngoài ra, Alice và Bob cũng sẽ hợp lực để làm việc trên D.
Kết quả là người chơi ở cả hai máy chủ đều rất hài lòng vì được chơi một nội dung được fix lỗi.
Trong thế giới thực
Alice và Bob là đối thủ của nhau và vì vậy họ gây chiến với nhau. Trong máy chủ của Alice, chỉ có trùm A và B hoạt động. Trong khi trong máy chủ của Bob chỉ có C hoạt động. Một số người chơi chuyển từ máy chủ của Bob sang máy chủ của Alice. Máy chủ của Bob đóng sau một lúc. Một số người chơi máy chủ của Alice ngừng chơi vì họ cảm thấy mệt mỏi khi luôn chỉ làm A và B vì C và D không hoạt động.
Do đó, người chơi ở cả hai máy chủ đều kém vui hơn so với kịch bản trước đó. Alice đã kiếm được nhiều tiền hơn nhờ sự đóng góp của người chơi so với Bob.
Giấy phép của trình giả lập WoW
Trên thực tế, mã MaNGOS / TrinityCore (và các dự án dẫn xuất của chúng) được phát hành theo giấy phép GNU GPL.
Nói một cách dễ hiểu, giấy phép này có nội dung như sau: sử dụng mã để làm bất cứ điều gì bạn muốn mà không phải trả bất cứ thứ gì, miễn là bất kỳ sửa đổi nào đối với mã gốc cũng được phát hành theo cùng một giấy phép. Về cơ bản, giấy phép của các dự án này yêu cầu những người sử dụng chúng phải công bố bất kỳ thay đổi nào cho công chúng.
Tất nhiên, hầu hết các máy chủ riêng đều sử dụng giấy phép này làm giấy vệ sinh. Nếu không, sẽ không có máy chủ riêng nào được sửa chữa tốt hơn những máy chủ khác.
Những lời nói dối về các máy chủ riêng
Đây là danh sách những lời nói dối mà quản trị viên của nhiều máy chủ riêng của WoW luôn nói với người chơi của họ:
Chúng tôi đã viết core này
Fake new. Không quan trọng "bạn" đã thực hiện bao nhiêu thay đổi. Tuy nhiên, bạn đã bắt đầu với một dự án dựa trên MaNGOS. Có thể bạn đã thực hiện một số cải tiến, nhưng hầu hết mã vẫn là của MaNGOS / TrinityCore.
Có thể bạn thực sự giỏi và bạn đã viết lại hầu hết các đoạn mã trong nhiều năm. Tuy nhiên, bạn đã bắt đầu từ MaNGOS. Nếu không có nó, vào ngày đầu tiên, bạn thậm chí sẽ không có tính năng đăng nhập hoạt động.
Chúng tôi đã sửa X
Trong phần lớn các trường hợp, không ai trong số họ thực sự sửa chữa bất cứ điều gì. Họ vừa tải xuống các bản sửa lỗi đến từ cộng đồng nguồn mở và áp dụng chúng cho code của họ. Họ vẫn nhận tất cả tiền.
Chúng tôi (thực sự) đã sửa X
Một số máy chủ riêng thực sự tự sửa chữa mọi thứ. Họ thường có các nhóm phát triển chuyên dụng được trả bằng tiền đến từ sự đóng góp của người chơi.
Hầu hết trong số họ không chia sẻ các bản sửa lỗi này với cộng đồng phát triển.
Chà, cộng đồng đã cung cấp (miễn phí) phần mềm bạn đang sử dụng để chạy máy chủ của mình đang yêu cầu bạn chia sẻ chúng, nhưng bạn vẫn giữ nó ở chế độ riêng tư. Vì vậy, tôi ghét bạn anyway.
Điều này ảnh hưởng đến người chơi như thế nào
Tôi hoàn toàn hiểu rằng toàn bộ câu chuyện về đạo đức và giấy phép này rất ít quan trọng đối với người chơi World of Warcraft bình thường. Người chơi chỉ muốn chơi trên một máy chủ ổn định và cố định tốt, họ không quan tâm lắm đến việc máy chủ này có hợp tác với mã nguồn mở hay không. Nhưng ... hãy thử một chút để nhìn nó từ một góc độ khác.
Các nhà phát triển của các dự án mã nguồn mở (MaNGOS, TrinityCore, AzerothCore, v.v.) về cơ bản không quan tâm nhiều đến những gì máy chủ riêng làm. Tất nhiên, với tư cách là một nhà phát triển, bạn sẽ khó chịu khi thấy một số quản trị viên máy chủ ngẫu nhiên nào đó nhận tiền cho công việc của bạn, nhưng cuối cùng điều đó không thay đổi cuộc đời bạn. Nhiều nhà phát triển mã nguồn mở chỉ làm điều đó vì mục đích vui vẻ và giáo dục.
Trên thực tế, nếu TẤT CẢ các máy chủ riêng hợp tác với mã nguồn mở, cuộc sống của người chơi sẽ thay đổi hoàn toàn! Bạn biết đấy, trong trường hợp đó, mọi máy chủ sẽ cung cấp trải nghiệm trò chơi tốt hơn nhiều cho bất kỳ bản mở rộng nào. Ví dụ về Alice và Bob được đề cập trước đây cũng có thể được áp dụng cho trường hợp này.
Tuy nhiên, thực tế chỉ là vậy: có rất nhiều máy chủ riêng trên khắp thế giới, mỗi máy chủ luôn hoạt động trên những thứ giống nhau, chạy đua để làm chúng sớm hơn và tốt hơn. Thay vào đó, nếu họ hợp tác với nhau, họ sẽ tránh làm những công việc không cần thiết và sẽ có nhiều thời gian và lực lượng lao động hơn. Vì vậy, họ chắc chắn sẽ có thể đạt được nhiều hơn nữa.
Nếu một máy chủ riêng đóng cửa và các nhà phát triển của nó không chia sẻ công việc của họ, công việc đó sẽ bị mất vĩnh viễn.