top of page
Tìm kiếm

THỬ NGHIỆM: GAME ENGINE GODOT

Đã cập nhật: 25 thg 2



Trải qua hơn 3 năm thực hiện Hogvalord bằng Unity, tôi đã học được nhiều kinh nghiệm cũng như kiến thức quý giá về một trong những game engine tiêu chuẩn chuyên nghiệp trong ngành công nghiệp game. Các chính sách ưu đãi về chi phí của Unity đối với các đội ngũ phát triển game nhỏ lẻ rất tốt. Tôi còn mong là có một ngày nào đó game mình làm ra đủ hay được nhiều người đón nhận để giúp tôi đủ chi phí trang trải cuộc sống và trả tiền bản quyền sử dụng cho Unity. Dự án đầu tiên Hogvalord không tạo được thành công tài chính nào, ngoại trừ tăng vốn kiến thức và kinh nghiệm trong việc phát triển game. Trong quá trình thực hiện dự án số hai Hogvalord: The Ranch, tôi đọc được tin Unity thay đổi chính sách giá mới (11/2023) cũng may là họ đã phải ngưng quyết định đó lại vì vấp phải sự phản đối của rất nhiều nhà phát triển game trên thế giới. Sự kiện này khiến tôi một lần nữa phải suy nghĩ về việc có nên quá lệ thuộc vào một game engine nào đó cho việc phát triển game của mình hay không. Đó cũng là lúc nhiều nhà phát triển game trên thế giới đổ xô đi tìm những sự thay thế khác cho Unity. Mặc dù CEO của Unity vào thời điểm đó đã bị sa thải, tuy nhiên sự lo lắng về việc chính sách giá thay đổi của Unity trong tương lai sẽ ảnh hưởng tới chi phí phát triển game của nhiều người vẫn không hề giảm xuống. Cá nhân tôi tuy không bị ảnh hưởng gì nhiều bởi chính sách giá của Unity, nhưng tôi cảm thấy mình vẫn cần một phương án dự phòng, cho nên tôi quyết định sẽ tìm hiểu các game engine khác ngoài Unity.


Lựa chọn đầu tiên là Godot, game engine miễn phí, mã nguồn mở được rất nhiều người ưa chuộng. Trở ngại duy nhất là không hỗ trợ C#, mà phải sử dụng loại script riêng là GDScript. Điều này khiến tôi nhớ lại khi Unity lần đầu xuất hiện, nó cũng hỗ trợ một loại script riêng có tên là Boo và sau này còn hỗ trợ Javacript, tuy nhiên về sau này C# trở thành ngôn ngữ chính được sử dụng lập trình game trong Unity. Game engine Godot từ phiên bản 4.0 trở lên cũng có hỗ trợ C#, nhưng so với GDScript thì vẫn chưa được tốt bằng.


Lựa chọn số hai là Unreal Engine, tuy nhiên trở ngại khá lớn đó là Unreal Engine 5 đòi hỏi cấu hình thiết bị để làm game khá cao, chi phí trang bị máy móc là một đòn đánh mạnh vào ngân sách eo hẹp của một người phát triển game cá nhân như tôi. Unreal Engine 4 có vẻ khả thi hơn, và một điều thuận lợi đó là nếu dùng Unreal Engine thì tôi sẽ phải học C++, một trong những ngôn ngữ lập trình phổ biến trên thế giới. Nếu tôi có đổi ý không làm game nữa thì với khả năng lập trình C++ việc kiếm được một công việc khác chắc không đến nỗi quá khó khăn.


Tôi đã suy nghĩ nhiều giữa hai lựa chọn này và quyết định sẽ thử nghiệm cả hai. Tuy nhiên tôi sẽ bắt đầu với Godot. Điểm đầu tiên tôi thích là dung lượng nhẹ, gói tải về là 47MB, chỉ chiếm khoảng 100MB trong ổ cứng khi giải nén. Trong khi Unity khá nặng, chiếm khoảng 4.8GB trên ổ cứng, điều này cũng dễ hiểu, vì Unity là hỗ trợ rất nhiều thứ trong đó có nhiều tính năng mà Godot không có.


Tôi đánh giá cao tốc độ khởi động của Godot khi mở lên khá nhanh. Với Unity tôi phải thông qua Unity Hub tốn khoảng 1 phút để đợi nó tải lên, rồi mới mở được project Unity (tốn khoảng 7 phút chờ đợi đối với project hiện tại). Tôi nghĩ Unity Hub tốn nhiều thời gian để load các service mà tôi không cần đến. Trong Godot thì nó đơn giản là hiện một cái Launcher nhỏ gọn để mở project chứ không mở thêm bất cứ cái gì khác.


Một ưu điểm khác là Godot không dùng nhiều RAM, tôi thử test một project mẫu thì nó chỉ chiếm khoảng 780MB khi chạy, trong khi Unity sẽ chiếm khoảng 1GB đến 2GB tùy vào nội dung trong Editor. Điều này cũng dễ hiểu vì Unity hỗ trợ Debug rất tốt, Godot không thể so sánh với Unity về mặt này. Unity hỗ trợ lập trình viên xem được danh sách và chi tiết các thông số của các vật thể trong Editor khi Runtime. Godot cũng có cho xem thông số, nhưng không hỗ trợ cho xem các game object được tạo ra trong Editor như Unity. Đây là một điểm trừ đối với Godot, dù sao Unity Engine cũng là một game engine trưởng thành có tuổi đời trên mười năm. Khả năng hỗ trợ Debug rất quan trọng đối với lập trình viên, đặc biệt là với một sản phẩm có nhiều tương tác diễn ra trong thời gian thực như các phần mềm game.


Godot có hỗ trợ script Editor bên trong game engine này nếu lập trình viên sử dụng GDScript. Điều này cũng giúp tiết kiệm được tài nguyên máy (RAM), đối với các lập trình viên không có điều kiện sở hữu một thiết bị có cấu hình phần cứng cao. Tôi cũng có làm thử một game 3D nhỏ theo bài hướng dẫn trên website của Godot để tìm hiểu game engine này. Tôi chọn sử dụng GDScript để kiểm tra khả năng thích ứng với ngôn ngữ mới của mình đến đâu, đồng thời tiếp cận với ngôn ngữ mới giúp đầu óc tôi linh hoạt hơn, tránh sự nhàm chán và lối mòn đối với ngôn ngữ C# mà tôi đã quá quen thuộc.


Nói về GDScript, tôi thấy nó khá dễ sử dụng, tương tự như javascript hoặc python. Chỉ cần làm ví dụ theo bài hướng dẫn thời gian khoảng 4-6 tiếng là tôi đã nắm được các cấu trúc cũng như ngôn ngữ GDScript. Đương nhiên tôi vẫn cần thêm nhiều thời gian làm việc với ngôn ngữ này hơn mới có thể thành thạo được. Nhưng nếu so sánh với C++ thì nó dễ như ăn bánh. Ngoài ra các khái niệm về 3D và các thành phần vật lý, đèn đóm trong Godot cũng không khác lắm so với Unity, người dùng chỉ cần chịu khó nắm bắt tên gọi mới là được.


Godot không hỗ trợ công cụ visual scripting như Unity, để lập trình game thì bạn phải chịu khó học GDScript và phương pháp lập trình. Godot có khá nhiều phiên bản khác nhau, phiên bản 4.0 trở đi nó có nhiều khác biệt so với 3.5, một số chức năng cũng bị thay đổi trong khi tài liệu hướng dẫn vẫn chưa có nhiều cập nhật. Nên khi sử dụng phải dựa nhiều vào sự hỗ trợ của các thành viên trên diễn đàn.


Hỗ trợ về Animation trong Godot chưa được tốt như Unity. Trong Unity bạn đơn giản chỉ cần kéo thả các animation sẵn có để dùng lại, trong Godot bạn phải sử dụng thao tác Copy/Paste và còn phải biết tìm kiếm đúng chỗ để Paste, nói chung còn nhiều bất tiện. Godot hỗ trợ mạnh các model 3D có định dạng glTF, đối với Blender và FBX thì phải cần làm một số thao tác thủ công theo hướng dẫn chứ không có quá trình tự động như Unity. Hy vọng trong tương lai sẽ dễ dàng hơn.

KẾT LUẬN

Cá nhân tôi thấy Godot là một game engine khá dễ tiếp cận và sử dụng, thích hợp để làm một số mini-game hoặc prototype. Có nhiều người cũng dùng Godot để làm game quy mô trung bình, nhưng bản thân tôi thấy tôi cần phải bỏ thêm nhiều thời gian hơn để tìm hiểu trước khi quyết định sử dụng Godot cho một dự án nghiêm túc. Trong thời điểm hiện tại tôi vẫn sẽ dùng Unity, và sẽ tìm hiểu thêm các game engine khác.

Bài đăng gần đây

Xem tất cả

CẢM ƠN BẠN!

bottom of page