Echo Weaver: Xây dựng một metroidbrainia vòng lặp thời gian trong Unity 6

Oct 8, 2026|8 Phút
Fergus Baird
Fergus Baird - Unity Technologies
Senior Content Marketing Manager
Made with UnityGame design
Ảnh nghệ thuật chính từ Echo Weaver của Moonlight Kids và Akupara Games, Made with Unity. Hình ảnh hoạt hình ngập trong ánh đèn neon của một nhân vật tóc trắng, mắt trắng từ vai trở lên. Họ được bao quanh bởi một số nhân vật bao gồm (theo chiều kim đồng hồ) một con mèo cầm pizza, một người tóc xanh, một người da thằn lằn, một côn trùng bộ xương, một bà lão tóc xám và kính bảo hộ, một nhân vật đeo mặt nạ và một người ngoài hành tinh với bộ não lộ ra.

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.

Echo Weaver, tựa game metroidvania được mong đợi từ Moonlight Kids và Akupara Games, ra mắt hôm nay trên PC và các hệ máy console. Chúng tôi đã phỏng vấn nhà thiết kế trò chơi Chris Sumsky và lập trình viên Ankit Trivedi để thảo luận về thiết kế cổng kiến thức, kiến trúc vòng lặp-reset và những bài học họ sẽ truyền đạt cho các đội nhỏ khác làm game với Unity.

Khi studio độc lập ba người Moonlight Kids bắt tay vào làm Echo Weaver, họ nghĩ rằng họ đã tìm ra một kẽ hở trong một trong những hệ thống khét tiếng nhất của ngành phát triển trò chơi: trạng thái lưu.

"Nếu ai đó mất bản lưu, bạn sẽ trở thành kẻ thù số một của họ," Chris nói. Đội đã vật lộn với lỗi lưu trạng thái trong lần ra mắt, bộ sưu tập sinh vật The Wild at Heart, vì vậy tiền đề vòng lặp thời gian cho Echo Weaver có vẻ như một giấc mơ trở thành sự thật: Chúng tôi kiểu như, không cứu được! Du hành thời gian! Mọi thứ được đặt lại!

Tất nhiên, mọi thứ trong phát triển game hiếm khi đơn giản như vậy. Echo Weaver truyền phát thế giới kết nối của nó mà không có màn hình tải, điều này có nghĩa là trò chơi phải liên tục tải và dỡ các khối của bản đồ khi người chơi điều hướng trong thế giới. Điều này tạo ra những tình huống như: Người chơi có phá bức tường đường tắt trong vòng lặp này không? Họ có nói chuyện với NPC đó không? Thế giới của Echo Weaver phải duy trì một mức độ bền vững nào đó, ít nhất cho đến khi người chơi hết thời gian và vòng lặp bắt đầu lại. "Thế là hóa ra chúng ta chỉ cần cứu mọi thứ thôi," Chris nói. "Nhưng nó ít gây hại hơn khi có điều gì đó sai sót, bởi vì người chơi luôn có thể đặt lại vòng lặp."

Echo Weaver

Trò chơi trinh thám parkour không gian

Trong Echo Weaver, không có cổng khả năng. Thế giới hoàn toàn mở ngay từ phút đầu tiên chơi, nhưng người chơi phải tự tìm ra cách khám phá nó một cách trọn vẹn. "Bài thuyết trình nội bộ của chúng tôi là 'thám tử parkour không gian'," Ankit nói.

"Hãy tưởng tượng bạn phải tạo một trò chơi mà không có gì được lưu lại," Chris nói. Mọi cảm giác tiến bộ mà người chơi cần cảm nhận đều đã có sẵn, nó chỉ bị chôn vùi dưới các lớp bí mật. Đây là điều lớn, kỳ lạ mà chúng tôi đang làm với Echo Weaver. Nó vừa là điều tuyệt vời nhất đối với tôi vừa là thử thách lớn nhất, bởi vì bất kỳ ai cũng có thể tình cờ sở hữu bất kỳ khả năng nào vào bất kỳ lúc nào.

Trong các giai đoạn đầu phát triển, nhóm đã định vị dự án như một phản ứng có chủ ý đối với The Wild at Heart. "Vào thời điểm đó, nó chưa bán chạy – may mắn là điều này đã thay đổi sau này – và vì vậy chúng tôi đã cố gắng làm mọi thứ trái ngược với dự án đó." "Chúng tôi nghĩ mình sẽ làm cho nó tối hơn một chút, khó hơn một chút," Chris nói. "Tất nhiên, điều này có nghĩa là chúng tôi đang đi ngược lại với những gì chúng tôi giỏi – và chúng tôi nhanh chóng nhận ra sai lầm của mình!"

Echo Weaver | Moonlight Kids | Akupara Games

Nhiều yếu tố kế thừa của Echo Weaver từ The Wild at Heart là nền tảng cho bản sắc của Moonlight Kids với tư cách là một studio, từ phong cách vẽ tay của đồng sáng lập và giám đốc sáng tạo Justin Baldwin (“từ cùng những cây cọ và bảng màu”) đến những không gian lớn, kết nối với nhau chứa đầy bí mật, và cam kết kể những câu chuyện tinh tế trong những thể loại mà điều đó không thường là trọng tâm.

Về mặt kỹ thuật, thư viện công cụ nội bộ của nhóm cũng đã chuyển từ The Wild at Heart, bao gồm hệ thống hội thoại, lớp giao diện FMOD, mã bộ điều khiển và biểu tượng đầu vào động, và rung màn hình.

Echo Weaver | Moonlight Kids | Akupara Games

Các nguyên tắc thiết kế cốt lõi: Người Dệt nhớ lại

Với không có các cổng khả năng và một thế giới tự đặt lại sau mỗi vòng lặp, Moonlight Kids cần thiết lập các quy tắc về những gì tồn tại giữa các lần chạy. Họ đã đi đến một giải pháp tường thuật sẽ không phá vỡ sự nhập vai: Nhân vật người chơi, Người Dệt, giữ lại ký ức của mình qua các vòng lặp. "Bất cứ điều gì họ nhớ trong bộ não của mình, chúng ta được phép đưa vào vòng lặp." "Nếu Thợ Dệt nhìn thấy nó, người chơi cũng nên nhìn thấy nó," Chris giải thích. "Điều đó không phá vỡ quy tắc metroidbrainia."

Quyết định này ảnh hưởng đến toàn bộ trò chơi, từ màn hình tiến trình theo dõi kiến thức mà người chơi đã mở khóa, đến cách trình bày cấp độ. Khi một khu vực ẩn được mở ra, tác phẩm nghệ thuật tiền cảnh sẽ mờ đi. Trong quá trình thử nghiệm chơi, điều này không duy trì qua các vòng lặp, nhưng đội ngũ nhận thấy người chơi cứ quên các phím tắt mà họ đã khám phá, vì vậy họ đã nhượng bộ và làm mờ vĩnh viễn tiền cảnh ở những khu vực người chơi ghé thăm thường xuyên nhất.

Echo Weaver | Moonlight Kids | Unity

Thiết kế cấp độ không có lối tắt cố định

Việc chọn khóa tiến trình bằng kiến thức của người chơi thay vì các nâng cấp cụ thể loại bỏ một công cụ quan trọng khỏi bộ dụng cụ của nhà thiết kế cấp độ tiêu chuẩn. Các game Metroidvania thường dựa vào các bức tường một chiều và các lối tắt vĩnh viễn – phá một bức tường và con đường đó sẽ mở cho phần còn lại của trò chơi. “Trong một trò chơi vòng lặp thời gian như Echo Weaver, khi bạn phá một bức tường và đặt lại vòng lặp, bức tường đó chỉ đơn giản là xuất hiện trở lại,” Chris nói. "Điều đó không nhất thiết có trong bộ công cụ của tôi."

Giải pháp của nhóm cho vấn đề này hoạt động ở hai quy mô. Trong một vòng lặp duy nhất – có thể chạy trong vài phút tùy thuộc vào lượng thời gian người chơi đã thu thập – Chris đã thực hiện được các thủ thuật thiết kế metroidvania truyền thống, bởi vì bất cứ thứ gì nằm trong một vòng lặp đều có thể mang lại lợi ích trong chính vòng lặp đó. Đội ngũ đã thiết kế từng nhánh và khu vực của trò chơi với ràng buộc này trong tâm trí.

Đối với các phím tắt lớn hơn và phức tạp hơn – "Hãy nghĩ đến Đền Lửa ở Dark Souls," Ankit nói – lựa chọn thực sự duy nhất là che giấu. Một lối đi có thể được đặt phía sau tác phẩm nghệ thuật tiền cảnh ở một đầu và được đặt ở tiền cảnh ở đầu kia, tạo ra một bí mật ẩn giấu ngay trước mắt. “Những trò chơi như Tunic làm điều này rất tốt với góc nhìn,” anh nói thêm.

Echo Weaver | Moonlight Kids | Akupara Games

Quản lý thời gian của người chơi

Đồng hồ của Echo Weaver là hệ thống nổi bật nhất và luôn hiển thị cho người chơi. Mỗi vòng lặp bắt đầu với 1 phút thời gian trên đồng hồ. Người chơi có thể tìm kiếm tinh thể thời gian để kéo dài nó, hoặc họ có thể hy sinh tinh thể để hồi máu; việc tìm ra sự cân bằng phù hợp ở đây là rất quan trọng để thành công.

Trong các phiên bản đầu của trò chơi, đồng hồ sẽ đếm ngược từng giây, nhưng những người thử nghiệm đã ghét nó. "Nó đã tạo ra rất nhiều căng thẳng," Chris nói. Một ngày nọ chúng tôi kiểu, nếu chúng ta cất đồng hồ đi thì sao nhỉ? Bạn không thực sự cần giây – tất cả những gì bạn cần biết là phút.

HUD cuối cùng là một hàng các khối thời gian, mỗi khối đại diện cho một phút – trong trò chơi, chúng được gọi là "chuông" vì các NPC nói những điều như, "Hãy quay lại vào phút thứ 8" đã phá vỡ sự nhập vai. Hầu như mọi thứ trên thế giới đều được tính toán cẩn thận xung quanh những nhịp đập dài một phút này. Những người thử nghiệm đã phản hồi tích cực về hệ thống mới này, và chẳng bao lâu sau họ đã phát minh ra các "Sequences khởi động" – những tuyến đường mở đầu được tối ưu hóa cao, giúp tiết kiệm một lượng thời gian khổng lồ trong vài giây đầu tiên của một vòng lặp.

Echo Weaver | Moonlight Kids | Akupara Games

Vòng lặp thời gian hoạt động như thế nào

Vậy điều gì xảy ra khi một vòng lặp thời gian được đặt lại trong Echo Weaver? Kiến trúc của Ankit chia thế giới trò chơi thành các khối, mỗi khối được gắn thẻ bằng một tập lệnh khối, với quy trình xây dựng tùy chỉnh loại bỏ nội dung tốn kém trước.

Lớp nặng, không thay đổi – tất cả hình học thế giới và các điểm đánh dấu chuyển tiếp – được nướng vào các cảnh và được tải vĩnh viễn. Một cảnh "thiết yếu" nhẹ giữ trạng thái dễ bay hơi: trình quản lý trò chơi, người chơi và dữ liệu cụ thể cho lần chạy. Khi khởi động lại, trò chơi sẽ dỡ tải các khối đang hoạt động, loại bỏ hoàn toàn cảnh thiết yếu và tải lại nó, chỉ truyền phát trở lại các khối cần thiết cho chuỗi mở đầu của vòng lặp.

"Đó là một cách lớn để chúng tôi giảm thiểu những gì còn sót lại và những gì không nên – chúng tôi chỉ vứt nó đi và làm lại," Ankit nói. "Dù sao thì đó cũng là một cảnh rất nhẹ nên việc phá bỏ và làm lại nó không phải là một mối lo ngại lớn."

Trạng thái cụ thể của lần chạy nằm trong một từ điển bộ nhớ của các khóa chuỗi; việc xóa từ điển đó là một phần của việc đặt lại. Bất cứ thứ gì phải tồn tại qua các vòng lặp – số lần lặp, các khả năng chúng đã thấy, các nhân vật chúng đã nói chuyện – đều được tuần tự hóa ra đĩa. Mỗi đối tượng kiểm tra khóa của chính nó khi khối của nó được truyền vào, thường chỉ đọc một giá trị bool hoặc một số nguyên.

Cách tiếp cận này chưa hoàn toàn không có lỗi. Ankit phát hiện ra rằng các cửa chuyển tiếp dai dẳng không đặt lại trạng thái giao diện người dùng của chúng hoàn toàn giữa các vòng lặp, vì vậy anh ấy đơn giản là ngừng duy trì chúng. Bây giờ, thành phần tương tác của mỗi cánh cửa là một bản sao được khởi tạo lại trên mỗi lần đặt lại. "Đối với khoảng 20 đối tượng, điều đó không quan trọng – nó không ảnh hưởng đến hiệu suất," anh ấy giải thích.

Các vật phẩm có thể mang theo như chìa khóa đặt ra một vấn đề tinh vi hơn: một vật phẩm tồn tại trong một khối có thể được di chuyển đến bất cứ đâu trong thế giới trò chơi, và quyền sở hữu cấp khối có nghĩa là những đối tượng này hoặc biến mất khỏi kho đồ của người chơi hoặc bị nhân đôi. Để khắc phục điều này, nhóm đã di chuyển các mục sang lớp cảnh bền vững.

Các tài sản môi trường phân lớp của Echo Weaver trong Trình chỉnh sửa

Tối ưu hóa một thế giới chi tiết, vẽ tay

Giống như The Wild at Heart, Echo Weaver chứa đầy các tác phẩm nghệ thuật vẽ tay độc đáo – mặc dù đẹp mắt, nhưng có thể tốn kém để tải và hiển thị. Đội đã thực hiện một số bản sửa lỗi để tối đa hóa hiệu suất.

Nén tài nguyên

Giải pháp cho trở ngại biểu diễn lớn đầu tiên của họ thật không có gì đáng kể. "Không có Atlas nào của chúng tôi có nén," Ankit cười. Bật compression đã đưa mọi thứ trong bộ nhớ xuống còn khoảng 1 GB.

Một cái nhìn về các hoạt ảnh của Weaver trong Unity Editor

Đang tải cảnh

Tải trò chơi đưa ra một vấn đề khó hơn. Việc khởi tạo diễn ra trên luồng chính một cách đồng bộ, vì vậy các tài sản trang trí được loại bỏ khỏi các khối tại thời điểm xây dựng (với ManualOverrides cho kích thước, xoay và cài đặt sprite được bảo toàn) và được khởi tạo lại một cách bất đồng bộ, được nhóm theo một vài đối tượng mỗi khung hình. Kết hợp với hệ thống lân cận luôn giữ các khối liền kề được tải, hiện tượng xuất hiện đột ngột vẫn nằm ngoài tầm nhìn.

Xử dụng theo lô

Vì tác phẩm nghệ thuật vẽ tay của Justin tránh các mẫu lặp lại, các cơ hội gộp lô rất hiếm, vì vậy Ankit đã viết một công cụ làm phẳng các nhóm sprite thành một hình ảnh duy nhất (và một lệnh vẽ duy nhất). Ví dụ, bầu trời trong một trong các hệ sinh thái của Echo Weaver được xây dựng từ hàng chục bệ gần như giống hệt nhau; bằng cách sử dụng công cụ, họ đã làm sập nó thành hai hình ảnh ghép cùng với một số điểm nhấn độc đáo.

Ánh sáng

Thiết lập ánh sáng ban đầu của Echo Weaver rất đắt đỏ. Các sprite ban đầu mang theo tối đa bốn loại ánh sáng khác nhau (biến thể nền, người chơi, vật phẩm và sàn), và có một thời điểm, 16 kết cấu ánh sáng riêng biệt được hiển thị cùng một lúc. "Gộp sáu lớp sáng thành ba đường cắt làm giảm đáng kể, và tôi không nghĩ hình ảnh bị ảnh hưởng bởi điều đó," Ankit nói.

Hiệu ứng nước

Nước đến từ Unity Asset Store: Bộ dụng cụ Water2D, chạy trên Universal Render Pipeline. “Rất linh hoạt, tạo ra kết quả thực sự tốt,” Ankit nói – nhưng mỗi vùng nước lại kết xuất lại camera, và chi phí tăng theo số lượng nhóm lớp khúc xạ bên dưới bề mặt. Đội ngũ đã hợp nhất các lớp dưới nước, và đội ngũ chuyển đổi nội bộ của nhà xuất bản Akupara Games đã đi xa hơn cho phần cứng cấp thấp, tách hiệu ứng góc nhìn vào bề mặt giả của plugin khỏi cài đặt khúc xạ để các thiết bị yếu hơn giữ được giao diện mà không cần vẽ lại.

Echo Weaver | Moonlight Kids | Akupara Games

Gỡ lỗi

Frame Debugger của Unity đã đóng vai trò trung tâm trong phần lớn công việc tối ưu hóa này, cho phép Ankit duyệt qua lệnh gọi vẽ khung hình theo từng lệnh gọi và xem chính xác nơi việc gộp lô bị lỗi – và tại sao. Từ đó, công việc là hợp nhất: thống nhất các tài liệu, chuyển đổi các sprite lạc, và kiểm tra lại cho đến khi càng nhiều khung hình được gộp lại càng tốt. "Bạn vẫn có thể thấy việc phân lô bị gián đoạn ở đây và ở đó," anh ấy nói, "Nhưng nó ít hơn nhiều so với trước đây." Lời khuyên của Ankit dành cho các đội khác rất đơn giản: "Hãy bắt đầu sử dụng Frame Debugger một cách triệt để, ngay lập tức!"

Echo Weaver | Moonlight Kids | Akupara Games

Từ Unity 2021 LTS đến Unity 6

The Wild at Heart được phát hành trên Unity 2021; Echo Weaver sẽ phát hành trên Unity 6, bị khóa vào một phiên bản ngay trước khi phát hành. Hỏi về những thay đổi hàng ngày giữa các phiên bản, Chris không ngần ngại: “Nested Prefabs và chế độ chỉnh sửa – đó là những thứ thay đổi cuộc đời.”

Ankit nói rằng đội đã sử dụng Composite Collider 2D rất nhiều, và bộ quản lý đối tượng gốc của Unity, điều đó có nghĩa là anh ấy cuối cùng có thể ngừng duy trì bộ quản lý đối tượng tùy chỉnh mà anh ấy đã viết cho The Wild at Heart. "Thật tốt khi sử dụng các tính năng tích hợp ở bất cứ nơi nào có thể," anh ấy lưu ý.

Echo Weaver | Moonlight Kids | Akupara Games

Lời khuyên chia tay cho các nhóm nhỏ

Kết thúc buổi phỏng vấn, chúng tôi đã hỏi Chris và Ankit những lời khuyên mà họ muốn chia sẻ với các nhà phát triển khác đang tìm cách làm game với Unity.

"Tôi có lẽ sẽ bị chê cười vì điều này," Ankit mở lời, "Nhưng lẽ thường nói rằng đừng tối ưu hóa sớm." Tôi không nghĩ điều đó nhất thiết là đúng. Bạn có thể thiết kế theo cách hiệu suất cao ngay từ đầu, và điều đó thực sự có thể giúp bạn tiết kiệm rất nhiều thời gian sau này."

Đội ngũ đã triển khai hệ thống truyền luồng khối Echo Weaver sớm trong dự án. Các hạt đã được thu thập từ ngày đầu tiên. Ankit luôn cố gắng cẩn thận với sự tiện lợi của C#, vì áp lực thu gom rác có thể tích tụ nhanh chóng. Nếu bạn đang cố gắng phát hành một trò chơi, nó phải có hiệu suất tốt ở cuối. Tại sao lại tự đẩy mình vào thế bí mà có vẻ như là không thể? Làm cho mọi thứ hoạt động hiệu quả hơn sau này có nghĩa là những thay đổi lớn phá vỡ.

Chris đã đưa ra một số lời khuyên về thiết kế và tầm quan trọng của việc dựa vào bản sắc sáng tạo của studio. "Việc tạo ra một trò chơi bị giới hạn kiến thức như thế này phụ thuộc rất nhiều vào bức tranh toàn cảnh," anh ấy nói. Chúng tôi đã dành nhiều năm để lặp lại các phần mà chúng tôi chỉ có thể hoàn thành khi toàn bộ dự án hoàn thành. Rất nhiều điều này có thể được viết kịch bản từ sớm, theo kiểu điện ảnh, trong khi vẫn để lại nhiều không gian cho việc lặp lại.

Nhưng điều duy nhất anh ấy sẽ làm khác đi là tin vào trực giác của mình và kiên trì làm những thứ quen thuộc và cảm thấy đúng đắn. Nhìn lại, chúng tôi đã sai khi nói, à, không ai muốn The Wild at Heart, nên chúng tôi sẽ làm một cái gì đó hoàn toàn khác. Mọi người muốn gì? Không – hãy chơi theo thế mạnh của bạn, thực sự. Chúng tôi đã lãng phí rất nhiều thời gian để tìm ra cách chơi theo thị trường. Cuối cùng chúng tôi chỉ như kiểu, chúng ta đang làm gì vậy? Làm những gì bạn giỏi. Hãy tạo ra trò chơi bạn muốn tạo.

Echo Weaver ra mắt hôm nay trên Steam, PlayStation®5, Nintendo Switch™ 2, Nintendo Switch và Xbox Series X|S. Khám phá thêm các trò chơi Made with Unity trên trang Steam Curator page của chúng tôi, và xem thêm các câu chuyện từ các nhà phát triển Unity trên Unity Blog và Resource Hub.


Nintendo Switch là nhãn hiệu đã đăng ký của Nintendo.