top of page
Tìm kiếm

THỬ NGHIỆM: Game engine Unreal Engine 4

Đã cập nhật: 3 ngày trước



Sau khi thử nghiệm Godot, tôi chuyển qua tìm hiểu Unreal Engine 4. Mục tiêu là tạo một game 3D nhỏ giống trong bài hướng dẫn của Godot trong vòng bốn đến tám tiếng. Thành thực mục tiêu này đã thất bại. Trải nghiệm của tôi đối với game engine này quả thực rất vất vả. Unreal Engine là một game engine có tuổi đời khá lâu, có thể nói là lão làng trong ngành công nghiệp game. Nó có tất cả những công cụ được xem là tiêu chuẩn đối với một game engine chuyên nghiệp. Điều này dường như vừa là điểm mạnh cũng như điểm yếu của Unreal Engine.


Unreal Engine hỗ trợ sẵn một số dạng mẫu game phổ biến khác nhau như: FPS, Third Person Controller, Top Down, Side Scrolling. Và có rất nhiều hỗ trợ để làm game online, dịch vụ trực tuyến. Chính vì sự tự động hỗ trợ này nên có rất nhiều rắc rối phát sinh khi tiếp cận game engine cho người mới bắt đầu. Bạn phải tốn rất nhiều thời gian để tìm hiểu hết những thứ linh tinh tự nhiên xuất hiện mà không phải do mình tạo ra. Bạn phải học cấu hình rất nhiều thứ, mà hầu như là không có sẵn bài hướng dẫn nào ra hồn như Godot hay Unity, bạn phải tự tìm video để học trên Youtube hoặc vào các diễn đàn để tìm câu trả lời cho mình.


Tôi lấy một ví dụ đơn giản mà tôi gặp phải đó là để thay đổi thiết lập góc nhìn camera theo ý mình, nó không đơn giản là tạo ra một camera object rồi điểu chỉnh vị trí. Bởi vì camera sẽ luôn hiện lên theo như template mà bạn đã chọn lúc đầu. Tôi đã phải tốn khoảng hai tiếng đồng hồ chỉ để hiểu ra là camera đã bị ghi đè trong thiết lập World Setting, và mình phải tạo ra một cái GameModeBase riêng cho nó, và phải chỉnh CameraActor trong Level cho nó tự hiển thị bằng cách thiết lập AutoPlayerActivation với giá trị Player0 hoặc là tạo ra một Character có chứa CameraActor component. Cho dù đã hiểu được vấn đề này, thì cũng có quá nhiều thứ phải làm chỉ để thiết lập góc nhìn cho camera, đó là một sự khó khăn không cần thiết. Tất cả những thứ hỗ trợ sẵn cho dòng game AAA trở thành gánh nặng đối với ai chỉ muốn làm game nhỏ và vừa. Nhìn chung để tạo ra một thiết lập theo ý muốn của mình, bạn phải hiểu cặn kẽ Actor, Pawn, Character.


Cơn ác mộng số hai có tên là Blueprint, kẻ tiên phong trong làng visual scripting, giúp lập trình tương tác bằng cách kéo thả các đơn vị lập trình gọi là Node. Tuy nhiên tài liệu để giải thích về tất các tính năng hay tên gọi cho các node hay function của component rất sơ sài. Hầu như tôi muốn làm gì đều phải tự mình mò và đoán tên node mình cần trong muôn vàn thứ. Quy cách đặt tên (naming convention) của các node function này cũng rất rối và khó nhớ. Tôi đã phải xem qua ba project template của Unreal Engine chỉ để làm cho nhân vật di chuyển bằng keyboard và phải đầu hàng ở bước làm cho Character nhìn về hướng mà nó đang di chuyển. Lý do là có function tồn tại trong template A thì không kiếm ra được trong template B. Muốn làm điều tương tự như A trong B, bạn phải từ mò mẫm với đống Node trong Blueprint. Cảm giác đối với một lập trình viên đã quen làm việc với các ngôn ngữ lập trình khi sử dụng visual scripting phải nói là rất ức chế vì quá tốn thời gian. Có lẽ chính vì có quá nhiều khó khăn như vậy nên mới có những khóa học dạy lập trình game bằng Unreal Engine nở rộ tràn lan trên internet. Ngược lại, tôi chỉ cần bỏ ra từ bốn đến sáu tiếng là có thể hiểu được Godot hay Unity.


Sau khi đầu hàng Blueprint, tôi đã thử tạo một project khác và thử với C++ thì editor thông báo phải cài thêm Window SDK. Bởi vì đã quá nản, nên tôi quyết định dừng, để không sa lầy với Unreal Engine. Tôi có thể thoải mái làm game với Godot mà không cần phải cài thêm bất cứ gì. Trong khi Unreal Engine cũng như Unity chiếm khá nhiều tài nguyên của thiết bị từ RAM cho đến HDD. Trước khi thử nghiệm Unreal Engine tôi còn nghĩ là khi sử dụng engine này tôi sẽ thành thạo thêm được C++. Tuy nhiên khi dùng C++ trong Unreal Engine, bạn phải xài các thư viện trong đó nó sẽ khác với các quy chuẩn thông thường trong C++. Cho nên tôi nghĩ nếu muốn học C++ tôi sẽ theo hướng khác có thể là Ogre3D hoặc Irrlicht hay raylib.


Cá nhân tôi nghĩ Unreal Engine sẽ thích hợp cho ai muốn làm game AAA hoặc những dạng game phổ biến sẵn có và các game trực tuyến. Unreal Engine không phù hợp cho các tựa game nhỏ, khi dùng game engine này bạn sẽ có cảm giác như mình được cho một ngôi biệt thự, nhưng phải tốn công đập bỏ những thứ sẵn có để giữ lại những gì thực sự mình cần. Unreal Engine là một game engine lão làng, có nhiều tính năng và kỹ thuật tiêu biểu trong thời đại của mình, nhờ học hỏi từ nó mà các game engine thế hệ sau như Unity hay Godot, v.v... trở nên dễ dàng tiếp cận hơn cho các lập trình viên mới vào nghề vì tránh được vết xe đổ của đàn anh trong việc giảm thiểu độ phức tạp không cần thiết. Tài liệu hướng dẫn của Unreal Engine rất thiếu chi tiết và không đầy đủ, nó cho bạn biết nhiều về các tính năng đao to búa lớn nhưng lại không đề cập nhiều đến những component căn bản mà bạn hay dùng để lập trình. Bởi vì có những thứ đã được Unreal Engine làm sẵn, và làm thay cho bạn nên phần lớn thời gian là bạn phải học cách thiết lập cấu hình cài đặt cho các thành phần có sẵn để đạt được điều mình muốn.


Trái ngược hoàn toàn với Unreal Engine là Unity và Godot. Đặc biệt với Godot chỉ cần làm qua bài hướng dẫn là bạn đã đủ tiếp cận được với các thành phần, chức năng cần thiết để làm được một mini-game đơn giản và nắm bắt được những gì mình cần, tài liệu về các API tuy không được như Unity nhưng vẫn đầy đủ hơn Unreal Engine. Tôi thấy đội ngũ phát triển Unreal Engine nên chú ý về vấn đề này nếu muốn có nhiều lập trình viên mới sử dụng, bởi vì những lão làng có nhiều kinh nghiệm với game engine này rồi cũng sẽ đến tuổi nghỉ hưu, mà việc tiếp cận ban đầu đã là một trở ngại lớn đối với những người chưa có kinh nghiệm cũng sẽ khiến họ quay sang sử dụng Unity, Godot hay một số game engine khác.

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

Xem tất cả

CẢM ƠN BẠN!

bottom of page