Hội thảo của kỹ sư: Người đồng hành WoW

Xưởng kỹ sư

Một trong những cải tiến kỹ thuật quan trọng nhất mà chúng tôi đã thực hiện trong ứng dụng WoW Companion cho Shadowlands đó là khả năng tương thích của nó với các bản mở rộng khác nhau. Chúng tôi biết rằng đây là một tính năng mà nhiều người chơi đã yêu cầu và hôm nay chúng tôi muốn nói về những thách thức và quyết định liên quan đến việc thực hiện loại thay đổi công nghệ này trên quy mô lớn.

Một chút lịch sử

Ứng dụng WoW Companion ban đầu được thiết kế cho một bản mở rộng cụ thể: Vô số. Đối mặt với Trận chiến cho Azeroth, chúng tôi đã đưa ra quyết định ưu tiên một số cải tiến lớn đối với phụ trợ, chẳng hạn như khả năng ứng dụng có thể chia sẻ mã với máy khách PC, cho phép chúng tôi tận dụng nhiều tính năng và công cụ có sẵn trong giao diện người dùng (UI) của trò chơi chính mà ứng dụng trước đây không có. truy cập. Nhược điểm là chúng tôi không thể xây dựng cơ sở hạ tầng cần thiết để hỗ trợ nhiều hơn một bản mở rộng cùng một lúc, vì vậy ứng dụng không còn được hỗ trợ Vô số và tình cờ chỉ hoạt động với bản mở rộng mới nhất, Trận chiến cho Azeroth.

Chúng tôi biết rằng người chơi đã rất thất vọng khi mất quyền truy cập vào nội dung từ Vô số sau khi thay đổi, vì vậy với Shadowlands chúng tôi cam kết hỗ trợ nhiều hơn một bản mở rộng cùng một lúc. Ngoài ra, nhóm di động rất mong muốn cung cấp cho cộng đồng những gì họ muốn và khôi phục nội dung của Vô số.

Đôi khi, chúng tôi đã xem xét tùy chọn chỉ cung cấp một phần chức năng từ các bản mở rộng trước đó để cống hiến hoàn toàn cho nội dung của Shadowlands, nhưng chúng tôi sớm quyết định rằng những gì chúng tôi muốn là khôi phục tất cả các chức năng có thể có. Chúng tôi cũng biết điều đó với sự xuất hiện của Shadowlands, người chơi sẽ có tùy chọn để thăng cấp cho các nhân vật thay thế của họ bằng cách Vô số thông qua Chiến dịch Đi bộ thời gian và chúng tôi muốn đảm bảo rằng những người chơi đó có khả năng tương thích với thiết bị di động hoàn toàn khi họ lên cấp.

Xưởng kỹ sư

Ứng dụng WoW Companion sẽ cho phép người chơi lựa chọn giữa Vô số y Trận chiến cho Azeroth từ bản vá sơ bộ của Shadowlandsvà nội dung của Shadowlands sẽ có sẵn khi phát hành bản mở rộng.

Trong những gì hóa ra ít nhiều là một lợi thế, hầu hết các mã trong Vô số vẫn tồn tại trong ứng dụng và chúng tôi vẫn có các tệp gốc từ Vô số trong việc kiểm soát mã nguồn, để kết hợp lại nội dung của Vô số đó là thử nghiệm hoàn hảo cho cơ sở hạ tầng đa mở rộng mới của chúng tôi. Mặc dù không còn nhiều việc để thực hiện, nhưng công việc phải được thực hiện để tách Vô số y Trận chiến cho Azeroth.

Việc tạo ra một cơ sở hạ tầng đa mở rộng yêu cầu ba yếu tố chính:

  1. Ứng dụng phải xóa dữ liệu nội dung của bản mở rộng đang hoạt động và yêu cầu dữ liệu của bản mở rộng mới từ máy chủ.
  2. Bạn phải tách mã giao diện người dùng cho từng bản mở rộng để tách biệt chức năng.
  3. Các tệp cho mỗi bản mở rộng phải được tách biệt để giảm thiểu việc sử dụng tài nguyên ứng dụng.

Dữ liệu mở rộng

Khi ứng dụng Legion Companion được phát triển ban đầu, hầu hết mã máy chủ xử lý các yêu cầu ứng dụng được thiết kế để chỉ trả về dữ liệu từ Vô số. Khi đến lúc chuyển sang Trận chiến cho Azeroth, chúng tôi đã thay đổi các chức năng đó để trả về dữ liệu từ Trận chiến cho Azeroth. Lần này, thay vào đó, chúng tôi phải truy xuất dữ liệu từ bất kỳ mở rộng đã chọn, liên quan đến việc xem xét tất cả các vai trò máy chủ phản hồi các yêu cầu của máy chủ và thay đổi chúng để chấp nhận các tham số chỉ định mở rộng để truy xuất dữ liệu. Ví dụ: yêu cầu dữ liệu người theo dõi bắt buộc phải chỉ định loại người theo dõi (người theo dõi của Vô số hoặc một người theo dõi Trận chiến cho Azeroth) và yêu cầu nhiệm vụ thế giới bắt buộc bao gồm các khu vực mà bạn muốn có dữ liệu nhiệm vụ.

Bản thân ứng dụng cũng chứa một số thứ đã được mở rộng rõ ràng để tương thích với Trận chiến cho Azeroth. Trong Vô số, ứng dụng yêu cầu các nguồn lực của trụ sở chính; trên Trận chiến cho AzerothChúng tôi chỉ cần thêm tài nguyên chiến tranh vào thông điệp đó. Thay vì tiếp tục thêm nhiều xu hơn vào cùng một tin nhắn trong Shadowlands, chúng tôi đã chọn chuyển toàn bộ hệ thống tiền xu từ máy khách PC sang cơ sở hạ tầng chia sẻ mã mới được phát triển để Trận chiến cho Azeroth. Bằng cách này, giờ đây, tất cả các bản mở rộng có thể tự động yêu cầu đơn vị tiền tệ của họ thay vì phải chỉ định thủ công loại tiền nào chúng tôi muốn.

Truy vấn trước dữ liệu tiền tệ

Trước đây: ứng dụng đã yêu cầu số tiền cụ thể từ máy chủ.
tên-hình-ảnh-thay-thế

Sau: Mỗi bản mở rộng có thể yêu cầu số tiền riêng của nó. Mã này có thể quen thuộc với bạn nếu bạn nhìn vào addons sử dụng hệ thống tiền tệ trong Shadowlands. Điều này là do cơ sở hạ tầng chia sẻ mã cho phép ứng dụng WoW Companion chia sẻ các tính năng với trò chơi chính.

Mã giao diện người dùng

Phần lớn mã được tạo để tương thích với Trận chiến cho Azeroth đã được thực hiện trên mã hiện có của Vô số, điều này gây khó khăn cho việc phân biệt mã nào đang hoạt động. Ví dụ: danh sách những người theo dõi Trận chiến cho Azeroth anh ta vẫn có thể trưng bày vũ khí; tuy nhiên, nút vũ khí đã bị ẩn, vì vậy mã đó không bao giờ cần thiết. Các chức năng trong Vô sốTrận chiến cho Azeroth tương tự đến mức đây không phải là vấn đề lớn, nhưng chúng tôi biết rằng với các tính năng mới của Shadowlands, nó sẽ không khả thi để duy trì kiểu kiến ​​trúc đó. Nếu đột nhiên mã được chia sẻ bởi Vô số y Trận chiến cho Azeroth Nó phải tương thích với những thứ như ràng buộc linh hồn và curiae, mọi thứ sẽ trở nên khó khăn hơn.

Vì vậy, chúng tôi kiểm tra từng kịch bản để tìm hiểu chức năng nào đã được chia sẻ và chức năng cụ thể cho bản mở rộng. Chúng tôi đã tách mã cụ thể của mỗi bản mở rộng thành các lớp con hoặc các thành phần hoàn toàn mới, chỉ để lại chức năng cơ sở được chia sẻ trong các lớp cao hơn và tạo các đối tượng trò chơi mới cho mỗi bản mở rộng bằng cách sử dụng các lớp con mới đó. Bây giờ, mặc dù chúng được hỗ trợ bởi cùng một hệ thống và chia sẻ hầu hết các chức năng của nó, danh sách các nhiệm vụ của Vô số Đây là người duy nhất cần có nút "Đồng minh chiến đấu" và danh sách cuộc phiêu lưu của Shadowlands bạn có thể làm những việc như loại bỏ bố cục hai tab mà họ đã sử dụng Vô số y Trận chiến cho Azeroth và hiển thị chân dung kẻ thù thay vì các biểu tượng loại nhiệm vụ.

Xưởng kỹ sư

So sánh giữa danh sách các nhiệm vụ của Vô số và danh sách các cuộc phiêu lưu của Shadowlands.

Một thay đổi hậu trường lớn khác mà chúng tôi đã triển khai trong ứng dụng để Shadowlands đó là cách chúng tôi tạo các tệp cơ sở dữ liệu; WoW Companion hiện xây dựng mã cơ sở dữ liệu và các tệp dữ liệu bằng quy trình tương tự như trên PC. Một nơi mà điều này hữu ích là mã xác định bản đồ mà mỗi nhiệm vụ thế giới được hiển thị trên. Ban đầu, ứng dụng đưa ra quyết định đó bằng cách sử dụng logic thủ công cho mỗi ID bản đồ, đây không phải là vấn đề khi nó chỉ hoạt động với Argus và Broken Isles. Tuy nhiên, khi chúng tôi thêm nhiều khu vực hơn vào Trận chiến cho Azeroth, mọi thứ trở nên cồng kềnh hơn. Thay vì giữ mã này để Shadowlands, chúng tôi có thể triển khai các bảng cơ sở dữ liệu bản đồ giao diện người dùng mà chúng tôi cần để làm cho hệ thống hoàn toàn năng động, chuyển đổi một phần mã tốt mà chúng tôi đã sử dụng cho các vùng của ba bản mở rộng thành một chức năng duy nhất tự động thực hiện bất kỳ nhiệm vụ nào của thế giới mà không tuân theo logic cụ thể của từng bản mở rộng.

Tệp tài nguyên

Một điểm khác biệt quan trọng giữa phát triển cho di động và phát triển cho PC là trên di động, chúng ta phải lưu ý rằng game thủ có thể truy cập ứng dụng bằng kết nối với dữ liệu hạn chế hoặc kết nối yếu. Chúng tôi phải đảm bảo rằng người chơi có thời gian vui vẻ và không cảm thấy bực bội khi sử dụng ứng dụng, bất kể kết nối internet của họ là gì và một trong những cách để làm điều này là giới hạn lượng dữ liệu họ phải tải xuống để sử dụng ứng dụng.

Mỗi bản mở rộng có một loạt các tệp tài nguyên có thể tích lũy rất nhanh, bắt nguồn từ việc mở rộng ứng dụng trong quá trình Vô số y Trận chiến cho Azeroth đến ba lần mở rộng trong Shadowlands điều đó có nghĩa là ứng dụng sẽ cần lượng dữ liệu nhiều gấp ba lần. Tuy nhiên, nhiều tệp chỉ được sử dụng bởi một bản mở rộng, chẳng hạn như kết cấu bản đồ thế giới có độ phân giải cao, hình nền vị trí nhiệm vụ hoặc chân dung của những người theo dõi và kẻ thù, vì vậy chúng tôi quyết định tách các tệp đó thành các gói khác nhau cho mỗi bản mở rộng. Bằng cách này, ứng dụng chỉ cần tải vào bộ nhớ các tệp mà phần mở rộng đang hoạt động sử dụng, do đó giảm tệp mà ứng dụng sử dụng.

Chúng tôi cũng đã sớm quyết định phân chia từng bản mở rộng dựa trên những gì người chơi cần, cho phép chúng tôi duy trì sự tách biệt rõ ràng giữa chức năng mở rộng. Những người chơi của Vô số không cần trang kêu gọi curiae và những người của Shadowlands họ không có cửa sổ điều động quân đội. Giống như những thay đổi mà chúng tôi áp dụng cho mã, điều này giúp bạn dễ dàng biết những gì đang xảy ra trong ứng dụng vào bất kỳ thời điểm nào. Tách cả tệp và cộng đồng theo cách này có nghĩa là mỗi bản mở rộng là độc lập, mở đường cho các tùy chọn tải xuống mô tả hơn.

Chúng tôi muốn cung cấp cho người chơi nhiều quyền kiểm soát hơn khi tải xuống các tệp cho ứng dụng. Bạn có thể chọn tải xuống mọi thứ cùng một lúc khi bạn có kết nối ổn định hoặc tải xuống các tệp từ phần còn lại của bản mở rộng sau đó để bạn có thể sử dụng ứng dụng sớm hơn. Và nếu bạn không muốn tương tác với một bản mở rộng cụ thể, bạn không cần phải tải xuống các tệp của nó. Mỗi lần mở rộng chiếm khoảng 30-40MB, vì vậy bạn có thể bỏ qua việc tải xuống một lượng dữ liệu đáng kể!

Xưởng kỹ sư

Bằng cách tách từng bản mở rộng, bạn sẽ có thời gian tải xuống ngắn hơn, vì vậy bạn có thể bắt đầu chơi sớm hơn!

Những thay đổi trong quy trình

Việc tách các tệp khỏi mỗi bản mở rộng yêu cầu các thay đổi đối với hai yếu tố của quy trình: công cụ bảo quản kho lưu trữ phải biết tệp nào thuộc về mỗi bản mở rộng và công cụ tạo gói lưu trữ của chúng tôi phải nhóm các tệp này lại với nhau khi tạo gói cuối cùng. Công cụ bảo quản tệp là một khía cạnh khác mà chúng tôi thiết kế đặc biệt cho Vô số và sau đó, để Trận chiến cho Azeroth, vì vậy chúng tôi đã phải viết lại nó để làm cho nó hoạt động với các bản mở rộng khác. Phiên bản mới của công cụ này xem xét danh sách các bản mở rộng có nội dung mà WoW Companion có thể quan tâm (bằng cách lặp qua liệt kê GarrisonType) và tạo tệp cho mỗi bản mở rộng trong các thư mục khác nhau. Việc sửa đổi công cụ bảo quản để nó sử dụng danh sách mở rộng đầy đủ cũng ngụ ý rằng nó sẽ tự động sử dụng các giá trị được thêm vào danh sách đó trong tương lai, tạo điều kiện thuận lợi cho việc triển khai nội dung mới cho ứng dụng mà không cần cập nhật công cụ.

Việc tạo tệp tài nguyên và tải thời gian chạy sử dụng nhiều biến thể AssetBundle của Unity, cho phép ứng dụng coi các phiên bản khác nhau của tệp gói là một gói. Quá trình tạo gói tạo ra một biến thể khác nhau của mỗi gói cho mỗi phần mở rộng, dựa trên các thư mục cụ thể cho mỗi phần mở rộng được tạo bởi công cụ bảo quản. Các gói tệp đó được trao đổi trong thời gian chạy khi bạn chuyển đổi phần mở rộng trong ứng dụng. Vì tất cả các biến thể của một gói có thể được xử lý như nhau, ví dụ: mã được sử dụng để truy xuất ảnh chân dung của người hâm mộ có thể làm như vậy mà không cần lo lắng về bộ ảnh chân dung cụ thể của người hâm mộ hiện đang được tải. Vì vậy, mã không chú ý đến các yếu tố cơ bản của tải lên và tải xuống tệp; mỗi phần mở rộng có thể hoạt động như thể đó là phần mở rộng duy nhất của ứng dụng.

Đến Shadowlands

Cho dù bạn chơi những cuộc phiêu lưu mới của Shadowlands như thể bạn tăng cấp cho một nhân vật thay thế thông qua Vô số, chúng tôi rất vui khi cung cấp nhiều nội dung di động hơn cho bạn từ World of Warcraft. Chúng tôi hy vọng rằng luận văn nhỏ này đã cho bạn biết thêm một chút về công việc chúng tôi làm và một số quyết định chúng tôi đưa ra khi thiết kế cơ sở hạ tầng có thể tương thích không chỉ với nội dung hiện tại mà còn với những gì được triển khai trong tương lai. World of Warcraft.


Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: Miguel Ángel Gatón
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.