Khởi Đầu Mã Nguồn Mở Ant Engine - nói dối e blog

Khởi Đầu Mã Nguồn Mở Ant Engine

Tôi đã dành 6 năm trời phát triển từ đầu một động cơ game độc lập. Chính vào cuối năm 2017, tôi đã phác thảo những ý tưởng đầu tiên cho động cơ mới này. Đến giờ nhìn lại, thật bất ngờ khi hầu hết những ý tưởng ban đầu đều đã được hiện thực hóa, chỉ trừ một chi tiết nhỏ: chúng tôi đã quyết định chuyển đổi hệ thống editor từ IUP sang ImGUI giữa chừng.

Năm 2022, chúng tôi bắt đầu dự án game đầu tiên sử dụng động cơ này - một tựa game hành động hợp tác với một công ty Nhật Bản. Dù vậy, dự án sớm dừng lại do nhiều lý do khách quan. Sau đó, vì cả nhóm phát triển đều say mê tựa game Factorio, chúng tôi quyết định dùng chính động cơ của mình để xây dựng một phiên bản “Factorio mobile” hoàn toàn mới. Dự án này đã ngốn hơn một năm ròng rã.

Hiện tại, phần kỹ thuật của game đã hoàn tất, đủ để chứng minh động cơ có thể vận hành trơn tru (đủ tính năng, đạt chuẩn hiệu năng). Tuy nhiên, trải nghiệm gameplay vẫn cần nhiều cải thiện để trở nên hấp dẫn hơn. Từ đầu tôi đã ấp ủ ý tưởng mở nguồn động cơ này, nhưng luôn cho rằng chưa phù hợp khi chưa có sản phẩm thực tế chứng minh giá trị. Giờ đây khi động cơ đã sẵn sàng, đây chính là thời điểm thích hợp để thực hiện quyết định này.

Vấn đề không đơn giản vì động cơ là tài sản công ty. Trước đây tôi là người sáng lập và điều hành công ty, nhưng hiện tại công ty đã được Alibaba mua lại. Việc mở nguồn không thể là quyết định cá nhân. May mắn thay, gần đây tôi đã thuyết phục thành công ban lãnh đạo. Thậm chí, công ty không chỉ đồng ý mở nguồn toàn bộ động cơ mà còn sẵn sàng hiến tặng mã nguồn và tài nguyên mỹ thuật của tựa game đang phát triển cùng với nó. Điều này sẽ giúp cộng đồng dễ dàng tiếp cận và học hỏi.

Có rất nhiều điều đáng nói về động cơ mở nguồn này. Dưới đây là những điểm chính trích từ báo cáo tôi đã trình lên công ty khi xin phép mở nguồn. Văn phong có phần cường điệu và chứa nhận định chưa kiểm chứng, nhưng phản ánh chân thực góc nhìn cá nhân tôi:

Tại sao lại cần một động cơ game mới?

Thị trường hiện tại bị thống trị bởi hai “ông lớn” là Unity và Unreal. Vậy tại sao vẫn có chỗ cho một động cơ tự phát triển? Dù cả hai đều mở nguồn, nhưng việc tiếp cận mã gốc không phải yếu tố quyết định.

Các dự án game mạng của chúng tôi có bản chất khác biệt so với các game AAA sử dụng Unity/Unreal. Đa phần game online đều ở trạng thái bảo trì dài hạn thay vì tập trung vào sáng tạo nhanh. Các động cơ thương mại giúp xây dựng prototype nhanh, nhưng lại gây khó khăn khi bảo trì lâu dài. Khi sản phẩm ổn định, yêu cầu chủ yếu là tinh chỉnh liên tục và tái sử dụng tài nguyên phi lập trình để tạo sản phẩm衍生. Một động cơ dễ bảo trì sẽ giảm dần chi phí theo thời gian, điều mà cả Unity và Unreal đều không đáp ứng được. Chúng tôi thậm chí đã từ bỏ việc bảo trì Unreal, tập trung vào Unity nhưng chi phí vẫn rất cao.

Không chỉ riêng chúng tôi, các công ty game lớn tại Trung Quốc đều phải đầu tư nhân lực khổng lồ cho việc “độ chế” Unity. Các tựa game đình đám như Vương Giả Vinh Diệu, Nguyên Thần đều công bố đã thay thế toàn bộ các thành phần cốt lõi của Unity. Lý do là bởi một động cơ toàn năng luôn chứa nhiều tính năng thừa thãi, trở thành gánh nặng khi vận hành dài hạn.

Unity không được thiết kế dành riêng cho game mạng, dẫn đến nhiều điểm yếu: hệ thống cập nhật tài nguyên, tối ưu di động, tích hợp ngôn ngữ kịch bản (Lua)… Các công ty đều mua mã nguồn Unity nhưng chỉ dừng lại ở các bản vá tạm thời thay vì cải tiến căn bản.

ANT Engine có gì vượt trội?

Cộng đồng mã nguồn mở đã có những động cơ như Godot, nhưng điểm khác biệt là chúng tôi hiểu rõ nhu cầu game của mình và có thể định hướng phát triển phù hợp, thay vì sao chép mô hình Unity như Godot.

Từ năm 2000, chúng tôi đã phát triển các game online tựa Tây Du Ký, Momo Đại Chiến, Tam Quốc Chí… đều sử dụng động cơ tự xây dựng. Các dự án này chủ yếu 2D (dần bổ sung một số yếu tố 3D), một phần vì ngưỡng công nghệ 3D quá cao.

Các động cơ lâu đời thường mang theo nhiều “gánh nặng lịch sử”, khiến việc cải tiến trở nên khó khăn. Ví dụ như DOTS của Unity dù ra đời đã lâu vẫn chưa thể thay thế kiến trúc cũ. Trong khi đó, ANT được xây dựng từ đầu với tư duy hiện đại, kết hợp 20 năm kinh nghiệm nhưng không bị ràng buộc bởi di sản kỹ thuật.

Vì sao chọn mô hình mã nguồn mở?

Động cơ game là hạ tầng cơ bản của ngành. Thời đại mà doanh nghiệp giữ bí mật hạ tầng để cạnh tranh đã qua. Các hệ điều hành phục vụ công cộng đều dựa trên nhân mã nguồn mở. Hạ tầng càng quan trọng càng cần chất lượng cao và hiệu năng tốt.

Việc cải thiện chất lượng không chỉ dựa vào số lượng lập trình viên, mà cần các chuyên gia đầu ngành - nhóm người cực kỳ khan hiếm. Một dự án mã nguồn mở chất lượng sẽ tự thu hút họ.

Dù có cạnh tranh, nhưng các động cơ mã nguồn mở (đặc biệt 3D) vẫn còn ít. Tại Trung Quốc, đây gần như là khoảng trống. Việc ra mắt sớm sẽ tạo lợi thế dẫn đầu.

Skynet là ví dụ thành công của chúng tôi. Khởi đầu từ năm 2012, Skynet đã trở thành framework nền tảng cho game online với 12.4K sao trên GitHub, 123 contributor (phần lớn ngoài công ty). Skynet không chỉ phục vụ game, mà còn được ứng dụng trong video streaming, quản lý router…

Đặc trưng nổi bật của ANT Engine

ANT Engine tập trung vào nền tảng di động, tối ưu cả hiệu năng lẫn tiết kiệm năng lượng. Kiến trúc được thiết kế để luôn chạy thử nghiệm trực tiếp trên thiết bị thật - yếu tố then chốt để tạo trải nghiệm tương tác tốt.

Dựa trên Lua, ANT có độ dễ tiếp cận cao và khả năng tùy biến linh hoạt. Chúng tôi đã giải quyết triệt để bài toán hiệu năng vốn là điểm yếu của Lua. Game thử nghiệm chạy trên iPhone 12 đạt hiệu năng dưới 10ms/frame trong cảnh phức tạp nhất - điều mà Unity khó có thể đạt được.

ANT được thiết kế để dễ tùy chỉnh: các tính năng không dùng có thể gỡ bỏ dễ dàng, pipeline render có thể viết lại nhanh chóng. Ngay cả các ứng dụng phi game cũng có thể tận dụng ANT. Ví dụ: Tencent tích hợp Unreal vào QQ khiến ứng dụng nặng thêm hàng chục MB, trong khi ANT chỉ cần

0%