Cách Soft Crunch Games xây dựng Foxy Dumplings cho mọi nền tảng
Adam Axler - Unity
Senior Content Marketing Manager
Trang web này đã được dịch bằng máy để thuận tiện cho bạn. Chúng tôi không thể đảm bảo tính chính xác hoặc độ tin cậy của nội dung được dịch. Nếu bạn có thắc mắc về tính chính xác của nội dung được dịch, vui lòng tham khảo phiên bản tiếng Anh chính thức của trang web.
Việc chuẩn bị cùng một trò chơi cho PC (Windows, macOS và Linux) thông qua Steam, GOG, Epic Games Store và Microsoft Store với Xbox Play Anywhere, cũng như trên Nintendo Switch™ 2, Nintendo Switch, PlayStation, PlayStation 5, Xbox Series X|S, iOS và Android cùng một lúc là một thách thức kỹ thuật đầy tham vọng đối với bất kỳ studio nào. Đối với nhóm nòng cốt gồm bốn người tại Soft Crunch Games , điều đó có nghĩa là đưa việc phát triển đa nền tảng trở thành một phần kiến trúc của trò chơi ngay từ đầu.
Foxy Dumplings là một trò chơi nấu ăn và quản lý ấm cúng kể về Lisa, một đầu bếp chuyên nghiệp đang hồi phục sau tình trạng kiệt sức bằng cách bắt đầu lại với công thức bánh bao gia truyền và một xe bán đồ ăn lưu động. Người chơi sẽ du hành qua 12 địa điểm lấy cảm hứng từ các nền văn hóa ẩm thực có thật, trồng nguyên liệu, học các công thức nấu ăn vùng miền, điều hành xe bán đồ ăn và sáng tạo ra các món ăn của riêng mình.
Grzegorz Wątroba đảm nhiệm toàn bộ công việc lập trình, chuyển đổi nền tảng, quy trình xây dựng và chứng nhận. Với một lập trình viên chịu trách nhiệm cho nhiều mục tiêu như vậy, dự án được xây dựng dựa trên một nguyên tắc duy nhất: Mọi nền tảng đều nhận được cùng một trò chơi từ cùng một bản cập nhật.

Một dự án, một chi nhánh, một trò chơi.
Trên thực tế, điều đó có nghĩa là không có sự thỏa hiệp nào: Không có các chi nhánh riêng biệt, không có phiên bản di động ra mắt sau nửa năm, và không có phiên bản nào chỉ có một nửa nội dung.
Điều đó đã trở thành một vài quy tắc. Điều đó đã trở thành một vài quy tắc. Mỗi phương thức điều khiển đều phải hoàn chỉnh và độc lập, vì vậy người chơi có thể hoàn thành trò chơi chỉ bằng tay cầm, chỉ bằng màn hình cảm ứng hoặc chỉ bằng chuột – có hoặc không có bàn phím. Tệp lưu trò chơi sử dụng cùng một định dạng nhị phân ở mọi thiết bị, vì vậy việc chuyển tiến trình chơi giữa các thiết bị không yêu cầu chuyển đổi định dạng.
Tệp lưu trò chơi sử dụng cùng một định dạng nhị phân ở mọi thiết bị, vì vậy việc chuyển tiến trình chơi giữa các thiết bị không yêu cầu chuyển đổi định dạng.
“Ngay từ đầu, chúng tôi cũng coi các yêu cầu chứng nhận như những ràng buộc về thiết kế,” Wątroba cho biết. “Ví dụ, Foxy Dumplings không có trường nhập liệu văn bản, vì vậy chúng tôi không bao giờ phải xử lý bàn phím ảo trên màn hình ở nhiều hệ thống khác nhau.” Các bộ công cụ phát triển phần mềm (SDK) dành cho cửa hàng PC như Steamworks sẽ tự động bị loại bỏ khỏi các bản dựng dành cho console và thiết bị di động.”
Anh ấy muốn mọi bản dựng đều được thực hiện từ một menu duy nhất mà không cần ai phải tự tay chỉnh sửa Cài đặt Dự án. Hiện nay, menu đó có hơn 70 mục trải rộng trên nhiều nền tảng, loại bản dựng, bản demo, bản dựng thử nghiệm và cấu hình đầu ra.
Giữ mã nền tảng ở các cạnh
Foxy Dumplings là một dự án Unity và một nhánh duy nhất. Quá trình chơi game luôn được chia sẻ. Mã nền tảng chỉ được phép ở những điểm giao tiếp giữa trò chơi và hệ thống: lưu dữ liệu, tài khoản người dùng, thành tích và danh hiệu, đồng bộ hóa đám mây, kiểm tra DLC, hộp thoại hệ thống và xuất ảnh.
Wątroba nói, “Mỗi hệ thống đều nằm sau một giao diện. Chúng tôi sử dụng mô hình mặt tiền để tạo một điểm truy cập duy nhất cho trò chơi, sau đó một quy trình nhỏ sẽ chọn nhà cung cấp nền tảng phù hợp khi khởi động. Trò chơi có thể hiển thị thông báo "mở khóa thành tích này", nhưng không biết liệu thành tích đó sẽ được hiển thị trên Steam, PlayStation® Network hay không ở bất cứ đâu cả.”
Cấu hình thời gian chạy xử lý hầu hết các khác biệt, chẳng hạn như liệu trình phát có thể thoát ra màn hình chính hay mở liên kết web hay không. Việc lập trình kịch bản định nghĩa các ký hiệu được truyền vào bởi các tập lệnh xây dựng xử lý các trường hợp như loại trừ Steamworks khỏi bản dựng PC không phải Steam. Việc sử dụng định nghĩa nền tảng Unity chỉ là giải pháp cuối cùng, chỉ áp dụng khi mã không thể biên dịch ở nơi khác.
Sự khác biệt về văn bản cũng là dữ liệu. Các mã Localization có các biến thể theo nền tảng, vì vậy "Thành tích" có thể trở thành "Cúp" trên PlayStation® mà không cần thay đổi mã trò chơi.

Foxy Dumplings | Soft Crunch Games
Tự động hóa mọi thứ xảy ra hai lần
Cách mà Wątroba quản lý khối lượng công việc hiệu quả một phần là nhờ kinh nghiệm và một phần là do ông không muốn làm đi làm lại cùng một việc. Bất cứ điều gì được lặp đi lặp lại trên nhiều nền tảng cuối cùng đều trở thành một đoạn mã hoặc mục trong menu.
Việc tạo một bản dựng cụ thể chỉ cần một cú nhấp chuột với các định nghĩa, thư mục đầu ra và cài đặt chính xác. Họ cũng chạy các kiểm tra biên dịch trên khoảng 40 cấu hình nền tảng và cửa hàng khác nhau, phát hiện ra vấn đề kinh điển "biên dịch thành công trên Windows nhưng lại lỗi trên PlayStation" trước khi bộ phận kiểm thử chất lượng phát hiện ra.
Phạm vi cũng rất quan trọng. “Chúng tôi đã từ chối những tính năng làm tăng khối lượng công việc trên nhiều nền tảng: nhập liệu văn bản, các tính năng trực tuyến mà chúng tôi phải tự quản lý hoặc kiểm duyệt, và các giao dịch mua trong game.” "Chúng tôi cũng phát hành một phiên bản PlayStation có thể chạy trên cả PlayStation 4 và PlayStation 5," ông nói.
Các nhà thầu không cần phải lo lắng về nền tảng. Giao diện người dùng được thiết kế một lần trên khung hình 4K và được điều chỉnh kích thước cho phù hợp với từng nền tảng. Nhóm âm thanh làm việc trong một dự án FMOD duy nhất. Nhà thiết kế trò chơi xây dựng nội dung dựa trên cùng một bộ dữ liệu ở mọi nơi. Ông ấy nói, “Sự khác biệt giữa các nền tảng là việc của tôi, không phải của họ.”

Foxy Dumplings | Soft Crunch Games
Thiết kế giao diện người dùng và phương thức nhập liệu trước khi viết mã.
Bước đầu tiên của Wątroba là thiết kế trên giấy với sự hỗ trợ của nhà thiết kế UX từ nhóm Foxy Dumplings .
“Tôi đã chứng kiến nhiều dự án thất bại vì khâu tiếp nhận thông tin và trải nghiệm người dùng không được cân nhắc kỹ lưỡng ngay từ đầu,” Wątroba nói. “Phương pháp tiếp cận của chúng tôi về cơ bản là: Đây là trò chơi của chúng ta, hãy làm cho nó hoạt động trên mọi nền tảng.”
Việc giải quyết các vấn đề đó trên giấy trước khi viết dòng mã đầu tiên đã giúp nhóm tránh được rất nhiều rắc rối về sau.
Sau khi hoàn thiện UX, họ đã xây dựng các điều khiển xung quanh Input System với một bộ thao tác và ba sơ đồ điều khiển: tay cầm chơi game, bàn phím và chuột, và cảm ứng. Trò chơi tự động chuyển đổi các sơ đồ dựa trên sơ đồ mà người chơi sử dụng lần cuối, và giao diện người dùng cũng tự động điều chỉnh theo.
Nhóm đã sử dụng một Prefab dạng nút bấm duy nhất ở gần 200 vị trí. Nó hiểu được dữ liệu đầu vào cho từng nền tảng. “Cầm tay cầm điều khiển lên thì các chỉ dẫn sẽ thay đổi; di chuyển chuột thì chúng lại thay đổi nữa,” anh ấy nói.
Các trò chơi nhỏ về nấu ăn là phần khó nhất vì mỗi trò chơi phải hoạt động với mọi phương thức nhập liệu. Steam Deck đã dạy cho họ một quy tắc quan trọng: Đừng bao giờ hỏi liệu thiết bị có mặt hay không; hãy hỏi liệu nó có thực sự tạo ra được tín hiệu đầu vào bạn cần hay không.
Wątroba giải thích: “Màn hình cảm ứng của nó có thể hiển thị như chuột và nút trái, điều này từng khiến một trò chơi nhỏ yêu cầu sử dụng cả hai nút chuột trở nên bất khả thi. Việc thiết kế dựa trên khả năng thay vì thiết bị cũng giúp ích trên các phần cứng Android cũ hơn.”

Foxy Dumplings | Soft Crunch Games
Ưu tiên đánh giá hiệu năng phần cứng yếu nhất trước.
Foxy Dumplings là một trò chơi 2D với các nhân vật Spine và vật liệu không có ánh sáng, vì vậy khi GPU gặp khó khăn, thường là do quá nhiều lớp toàn màn hình hoặc quá nhiều pixel.
Một ví dụ là nhà bếp. Một số hiệu ứng được kết xuất thành kết cấu kết xuất 4K và ghép chồng lên giao diện người dùng – điều này không cần thiết trên màn hình 1080p hoặc 720p. Watroba đã thay đổi các họa tiết hiển thị để phù hợp với độ phân giải màn hình thực tế và vô hiệu hóa HDR cũng như họa tiết chiều sâu, những thứ mà trò chơi chưa từng sử dụng. Về mặt hình ảnh, không có gì thay đổi, nhưng trên Steam Deck, lớp đó giờ đây chiếm ít hơn khoảng 8 lần số pixel mỗi khung hình, và dung lượng kết cấu hiển thị của nó giảm từ khoảng 32 MB xuống còn khoảng 4 MB.
Quy trình phân tích hồ sơ của Wątroba vẫn giống như quy trình anh đã học được nhiều năm trước: Anh ấy tạo bản dựng phát triển trên thiết bị thực, gắn Unity Profiler , tìm ra những phần tiêu tốn nhiều tài nguyên, đo lường, sửa lỗi và đo lại. Ông ấy nói, "Thiết bị là vua."
Trí nhớ cũng cần được quan tâm. Nhóm hỗ trợ 14 ngôn ngữ, bao gồm tiếng Trung, tiếng Nhật, tiếng Hàn và tiếng Thái, mỗi ngôn ngữ đều có bộ sưu tập phông chữ riêng. Khi nhóm nghiên cứu nhận thấy hiện tượng tăng đột biến bộ nhớ trong quá trình chuyển đổi ngôn ngữ, họ đã phân tích đường dẫn phân bổ và phát hiện ra rằng các ký tự bị thiếu trong các tập bản đồ tĩnh đã được chuyển đổi thành các tập bản đồ dự phòng có kích thước lớn hơn 4096×4096 trong quá trình chạy, với việc tải lại toàn bộ tập bản đồ 16 MB cho mỗi ký tự mới.
Giải pháp là tạo lại các phông chữ dự phòng với kích thước trang 2048×2048 và thêm các ký tự theo từng đợt trước khi chuyển đổi, điều này giúp giảm dung lượng bộ nhớ của tập bản đồ mới dành cho tiếng Nhật từ khoảng 48 MB xuống còn 4–8 MB mỗi phông chữ.
Nhóm đã sử dụng Addressables trong dự án vì Unity Localization được xây dựng dựa trên nền tảng này. Bảng chuỗi và bảng tài nguyên cho cả 14 ngôn ngữ nằm trong các nhóm Addressable và được tải theo từng ngôn ngữ. “Mọi thứ vẫn được vận chuyển nội bộ, nhưng Addressables cung cấp cho chúng tôi một cách thức quản lý dữ liệu và bộ nhớ hiệu quả.”

Foxy Dumplings | Soft Crunch Games
Thử nghiệm lối chơi chung một lần, hành vi của nền tảng nhiều lần.
Nhóm không có bộ kiểm thử tự động quy mô lớn, nhưng họ tự động hóa một số hệ thống, bao gồm cả các mô phỏng kiểm tra xem nền kinh tế trong game có thể sụp đổ hay không.
Điều giúp việc kiểm thử chất lượng trở nên dễ quản lý hơn đối với họ là các nền tảng hầu như chia sẻ toàn bộ mã nguồn của chúng. Lối chơi được thử nghiệm kỹ lưỡng trên PC, nơi quá trình lặp lại diễn ra nhanh nhất. Trên máy chơi game và thiết bị di động, việc thử nghiệm tập trung vào lớp nền tảng: các yêu cầu chứng nhận, lưu và tải, tạm dừng và tiếp tục, chuyển đổi người dùng, ngắt kết nối tay cầm điều khiển, danh hiệu và thành tích, và hết dung lượng lưu trữ.
“Đối tác kiểm thử chất lượng bên ngoài của chúng tôi nhận được bản phát hành, bản gỡ lỗi và bản phát hành ‘mở khóa hoàn toàn’ với các công cụ gỡ lỗi,” Wątroba cho biết. “Người thử nghiệm có thể chuyển đến bất kỳ chương hoặc nhiệm vụ nào và thao tác với tiền, năng lượng hoặc thời gian, vì vậy họ không cần phải chơi lại năm giờ để xác minh một lỗi.”
Buổi trình diễn công khai cũng là một nguồn thử nghiệm quan trọng. Hơn 18.000 người đã chơi trò chơi này, và nhóm phát triển đã nhận được hơn một nghìn phản hồi khảo sát, dẫn đến việc bổ sung các tính năng hỗ trợ người dùng, sửa lỗi, tinh chỉnh và cải thiện trải nghiệm người dùng.
Ưu tiên việc lưu game trên nhiều nền tảng trước tiên.
Việc đồng bộ tiến trình chơi game trên nhiều nền tảng bắt đầu bằng việc cho phép người chơi di chuyển file lưu game sang các nền tảng khác. Progress là một tập tin nhị phân được mã hóa, mỗi byte đều có cùng định dạng trên mọi nền tảng. Nội dung lưu trên điện thoại di động có thể đọc được trên PC.
Sự đồng bộ hóa có hai lớp. Đầu tiên là tính năng lưu trữ đám mây tích hợp sẵn của mỗi nền tảng. Thứ hai là Unity Cloud Save , cho phép đồng bộ tiến trình giữa các hệ sinh thái. Cả hai đều nằm sau cùng một giao diện, với logic hợp nhất nằm phía trên chúng.
Mỗi ô lưu được so sánh dựa trên dấu thời gian cập nhật cuối cùng. Các vị trí đã xóa sẽ để lại dấu vết để chúng không được khôi phục từ đám mây. Việc hợp nhất chỉ diễn ra ở menu chính, không bao giờ xảy ra giữa chừng trong một ngày chơi game, vì Foxy Dumplings tự động lưu khi người chơi đi ngủ. Quá trình tải lên sẽ được thực hiện lại một cách im lặng khi không có kết nối mạng và sẽ được xóa sạch khi trò chơi bị tạm dừng.
Nhóm phát triển liên kết máy chơi game và PC bằng cách sử dụng mã Authentication Unity , do đó người chơi không cần tạo thêm tài khoản khác. Tính năng đồng bộ tiến trình chơi giữa các hệ máy là tùy chọn, và trò chơi vẫn hoàn toàn có thể chơi được ngoại tuyến.
Wątroba nói, “Bài học lớn nhất là lưu trữ dữ liệu là phần dễ; định danh mới là phần khó.” Mỗi hệ sinh thái đều có quan niệm riêng về người chơi, vì vậy Authentication phải tin tưởng vào vé Steam, mã thông báo PlayStation và mã thông báo Xbox một cách riêng biệt.”

Foxy Dumplings | Soft Crunch Games
Xây dựng Foxtagram mà không tạo ra thêm vấn đề về nền tảng khác.
Foxtagram là một ứng dụng trên điện thoại trong game của Lisa, nơi người chơi có thể chụp ảnh các món ăn bằng cách sử dụng đĩa, dụng cụ ăn uống, nguyên liệu, bánh bao, bộ lọc, khung ảnh và nhãn dán, trước khi đăng tải để tăng độ nổi tiếng cho nhà hàng.
Quyết định kiến trúc chính là giữ nguyên trình chỉnh sửa trong Unity UI thông thường mà không có mã dành riêng cho nền tảng nào bên trong. Wątroba giải thích, “50 bộ lọc của nó là các thiết lập sẵn của một sắc độ trên chất liệu ảnh chứ không phải là các lớp phủ. Khi bạn chụp ảnh, một máy ảnh chuyên dụng sẽ xử lý khu vực chụp ảnh thành một kết cấu hình vuông với độ phân giải đầu ra. Chúng tôi đọc lại dữ liệu bằng AsyncGPUReadback và mã hóa kết quả thành ảnh JPG. Khung hình đó trông giống như ánh đèn flash của máy ảnh.”
Độ phân giải đầu ra và chất lượng JPG được thiết lập riêng cho từng nền tảng. Trình chỉnh sửa hỗ trợ chuột, tay cầm chơi game và cảm ứng: kéo và cuộn chuột trên máy tính để bàn; cần điều khiển và nút bấm trên tay cầm; và thao tác chụm và xoay trên màn hình cảm ứng.
Việc chia sẻ bên ngoài trò chơi được thực hiện thông qua các công cụ riêng của từng nền tảng. PC có thể sử dụng thư mục ảnh hoặc thư viện đa phương tiện Steam, máy chơi game sử dụng album hệ thống, còn thiết bị di động sử dụng bảng chia sẻ hệ thống. Đối với một nhóm nhỏ, việc sử dụng các tính năng chia sẻ hiện có của nền tảng giúp loại bỏ rất nhiều công việc chứng nhận và kiểm duyệt.

Foxy Dumplings | Soft Crunch Games
Chuyển sang Unity 6.3 LTS
“Điều giá trị nhất mà Unity 6.3 LTS mang lại là một bản phát hành LTS mà mọi thứ chúng tôi phụ thuộc đều được đồng bộ hóa và thời gian hỗ trợ đáp ứng được nhu cầu ra mắt của chúng tôi,” Wątroba nói.
Nhóm phát triển nhận thấy phiên bản 6.3 ổn định hơn ở một số khía cạnh như chỉnh sửa ScriptableObjects, và các thiết bị Android cũ hơn được hưởng lợi từ các bản vá lỗi Vulkan.
Thời gian xây dựng cũng được cải thiện. “Với IL2CPP, tôi ước tính tốc độ biên dịch của chúng tôi nhanh hơn khoảng 10-15% tùy thuộc vào nền tảng và loại vòng lặp.” Hiệu năng khi chạy cũng được cải thiện vài phần trăm, đặc biệt là trên phần cứng yếu hơn.”
Quá trình nâng cấp nhìn chung diễn ra suôn sẻ. Ban đầu, tất cả các hiệu ứng VFX Graph đều trở nên vô hình vì các tham chiếu shader bị mất trong quá trình chuyển đổi; việc nhập lại các đồ thị đã nhanh chóng khắc phục được vấn đề đó.
Lập kế hoạch cho cảng trước khi cảng được xây dựng.
Quyết định có tác động lớn nhất đối với nhóm là giữ lại một nhánh duy nhất và kiên quyết tuân thủ các quy định về sự khác biệt giữa các nền tảng ngay từ đầu. “Mã lập trình trò chơi không bao giờ hỏi nó đang chạy trên nền tảng nào.” "Nếu có gì khác biệt, đó có thể là do dữ liệu, cài đặt chất lượng hoặc nhà cung cấp đứng sau giao diện," Wątroba nói.
Nhóm đã tạo ra một tài liệu kiến trúc kỹ thuật song song với tài liệu thiết kế trò chơi, cẩm nang nghệ thuật và cẩm nang cốt truyện, và họ khuyến nghị nên làm như vậy. Wątroba nhận xét: “Việc phác thảo các lớp kỹ thuật của trò chơi trước khi sản xuất đã giúp chúng tôi phân tách trách nhiệm và giúp việc bổ sung các nền tảng dễ dàng hơn nhiều.”
Lần tới, nhóm sẽ có thể chạy các bản dựng trên mọi bộ công cụ phát triển sớm hơn nhiều. “Kiến trúc thì ổn, nhưng vẫn còn rất nhiều công việc thực tế liên quan đến phần mềm điều khiển được hoàn thành trong những tháng trước khi nộp bản thảo, và phần cứng luôn tìm ra những thứ mà trình biên tập không thể.”

Foxy Dumplings | Soft Crunch Games
Phân phối một trò chơi duy nhất đến mọi nơi
Foxy Dumplings được xây dựng dựa trên một lời hứa kỹ thuật đơn giản: cùng một trò chơi, từ cùng một mã nguồn, trên PC, máy chơi game và thiết bị di động. Đối với một nhóm nhỏ, điều đó chỉ hiệu quả nếu việc phát triển đa nền tảng được coi là một ràng buộc về kiến trúc chứ không phải là một nhiệm vụ chuyển đổi được để dành đến cuối cùng.
“Bằng cách giữ cho lối chơi được chia sẻ, tách biệt các tích hợp nền tảng, tự động hóa các công việc xây dựng lặp đi lặp lại và thử nghiệm trên các mục tiêu yếu nhất ngay từ đầu, chúng tôi hướng đến việc ra mắt đồng thời không còn là việc duy trì nhiều phiên bản Foxy Dumplings nữa mà là việc phát hành một trò chơi duy nhất ở mọi nơi,” Wątroba nói.
Bánh bao cáo Trò chơi sẽ có mặt trên PC (Windows, macOS và Linux) thông qua Steam, GOG, Epic Games Store và Microsoft Store với Xbox Play Anywhere, cũng như trên Nintendo Switch 2, Nintendo Switch, PlayStation 4, PlayStation 5, Xbox Series X|S, iOS và Android vào năm 2027. Hãy xem thêm các bài viết từ các nhà phát triển Unity trên Blog và Trung tâm Tài nguyên Unity .
*Nintendo Switch là thương hiệu của Nintendo.