Unreal Engine là gì? Unreal Engine là một trong những game engine phổ biến và mạnh mẽ nhất trong giới làm game hiện nay. Nhưng điều gì mới thực sự giúp Unreal Engine trở thành một game engine không thể bị thay thế?
Bài viết được thực hiện với thông tin và chia sẻ từ anh Khoa Phạm – Game Developer & Tech Lead @ Dreamchaser Interactive.
Song song với Unity, Unreal Engine là một trong những game engine được quan tâm và sử dụng nhiều nhất hiện tại, nhất là sau đợt cập nhật Unreal Engine 5 cùng với sự ra mắt của hai tính năng Nanite, Lumen – mà theo anh Khoa Phạm chia sẻ “là hai cánh cửa mở ra vô vàn khả năng mà đó giờ người làm game chỉ dám “mơ” thôi”.
Việc làm Game Developer toàn quốc trên ITviec!
Unreal Engine là gì?
Được phát triển bởi Epic Games, Unreal Engine là một game engine gồm nhiều tool set, framework, libraries,… tất cả hỗ trợ tạo nên một trải nghiệm làm game tiện lợi. Unreal Engine giúp đơn giản hóa các bước làm game để đội ngũ phát triển game không nhất thiết phải lập trình chuyên sâu, không cần xử lý âm thanh/ đồ họa mà chỉ cần tập trung làm nội dung cho game.
Ngoài làm game, Unreal Engine còn được ứng dụng trong làm phim, virtual, metaverse,… nên có thể nói Unreal Engine là real-time engine/ interactive engine hơn chỉ là game engine.
Unreal Engine hỗ trợ hệ điều hành Android, iOS,… và những nền tảng lớn. Tuy nhiên, Unreal Engine đã ngừng hỗ trợ nền tảng web do:
- Chất lượng của game dành cho web khác với chất lượng độ hiển thị giao diện của điện thoại, laptop mà điện thoại, laptop gần như đã có API chung rồi.
- Công nghệ phát triển web vẫn còn nhiều bất cập, chưa phù hợp với hướng phát triển của Unreal Engine là hướng photo realistic, đồ họa đẹp với chất lượng cao.
Một trong những tựa game nổi nhất của Unreal Engine chính là Fortnite. Fortnite không chỉ mang đến sự chú ý cho Unreal mà còn mang về rất nhiều lợi nhuận giúp Unreal có thể xây dựng nhiều tính năng và được chú ý như bây giờ. Chính vì vậy, có thể nói nhờ Fortnite mà Unreal Engine… “đổi đời”. Ngoài ra, các game nổi tiếng khác do Unreal phát triển có thể kể đến như Kena: Bridge Of Spirits, Tekken, Mortal Kombat, hầu hết các game Marvel.
6 tính năng nổi bật của Unreal Engine 5
Nanite – Hệ thống hình học ảo hóa
Trong quá trình làm 3D thì người artist có khi phải vẽ lên đến hàng triệu, hàng tỷ polygon. Càng nhiều polygon thì máy tính càng chậm chính vì thế thông thường khi làm game, artist phải giới hạn số lượng polygon để game chạy nhanh hơn.
Trước đây, artist hay game developer phải tính thủ công xem mình còn được vẽ bao nhiêu polygon nữa, rồi cân đối, vẽ đi vẽ lại, nhất là đối với những mô hình 3D chi tiết, để đạt tới đúng giới hạn số polygon được đề ra. Đây là quá trình rất tốn thời gian.
Bây giờ, Unreal Engine 5 ra mắt Nanite – tính năng có thể tính toán số lượng polygon cần vẽ mà vẫn chi tiết nhất, chất lượng tối đa so với khả năng hiển thị của màn hình. Điều đó có nghĩa là artist hay game developer không cần phải tính số lượng polygon phù hợp thủ công như trước đây nữa mà Nanite sẽ làm chuyện đó.
Anh Khoa đưa ví dụ: Có những chi tiết quá nhỏ, mắt thường không nhìn thấy được nhưng máy tính vẫn tính những polygon tạo nên chi tiết đó và làm chậm máy khi chạy game. Nanite sẽ tự động phân tích và loại bỏ những polygon dư thừa đó để phù hợp với màn hình hiển thị.
Bây giờ, artist chỉ cần đưa khối 3D chi tiết nhất của họ vào cho Nanite tính toán. Kết quả là họ vẫn sẽ có một khối 3D nhìn vẫn rất chi tiết nhưng giảm được số lượng polygon. Có thể nói, Nanite là câu trả lời cho câu hỏi “Tính năng làm tỏa sáng Unreal Engine là gì?”.
Lumen – Hệ thống chiếu sáng và phản xạ
Tính năng này được xây dựng từ một vấn đề thường gặp của game developer:
Mình có một căn phòng và một nguồn sáng. Trong vật lý thực tế, khi nguồn sáng chiếu vào một bức tường trong căn phòng thì tùy vào màu tường mà ánh sáng sẽ phản ciếu lại màu đó vào không gian căn phòng.
Tuy nhiên, đó giờ máy tính không tính được “sự phản chiếu”, mà chỉ là chiếu điểm nào thì sáng điểm đó chứ không tính được đường ánh sáng đi từ đâu qua đâu, để tạo ánh sáng cho khoảng không gian.
Để tính được đường đi của ánh sáng một cách đẹp và mượt nhất, game developer phải tốn rất nhiều thời gian để “tính ánh sáng” thủ công đúng và đẹp rồi mới đem vào trong game được.
Bây giờ đã có tính năng Lumen giải quyết được bài toán rất lớn này. Lumen có thể vừa chạy nhanh, vừa đưa ra cách đánh ánh sáng mượt mà.
Niagara – Hệ thống hiệu ứng video (VFX)
Niagara có thể tự động tạo ra nhiều hiệu ứng video như nổ cháy, nước chảy, khói,… đa dạng và chất lượng tốt.
Bình thường để tạo ra hiệu ứng như vậy, game developer có thể lập trình theo cách truyền thống và chạy trên CPU (không phải GPU). Cách tiếp cận này rất chậm.
Chính vì thế, Niagara được thiết kế với hệ thống Blueprint và đơn giản hóa cách set up logic, lập trình VFX trên GPU. Niagara là tính năng đầu tiên mở ra cách đơn giản hoá Compute Shader. Với Niagara, game developer có thể tính ánh sáng, nước chảy, người hoạt động,… tất cả những thứ mình muốn mà không chỉ mỗi VFX.
Chaos/ Chaos Physics – Hệ thống tính vật lý
Chaos Physics là hệ thống tính vật lý mới của Unreal. Game developer có thể tăng tính chính xác của tương tác vật lý hơn, tính được nhiều loại vật lý hơn so với hệ thống tính vật lý cũ.
Bằng cách xây dựng công cụ vật lý của riêng mình, Unreal Engine sử dụng Chaos để mở ra nhiều cơ hội mới để kiểm soát nhiều hơn và đóng vai trò là nền tảng cho:
- Chaos Destruction: Mô phỏng các cảnh hủy diệt lớn trong thời gian thực, chẳng hạn như một tòa nhà sụp đổ
- Chaos hỗ trợ các trò chơi nhiều người chơi/ nối mạng rất tốt nhờ vào khả năng kiểm soát lớn hơn.
Control Rig – Hệ thống điều khiển rối
Mục đích chính của Control Rig là cho phép điều khiển các nhân vật theo thủ tục một cách chính xác. Thủ tục có nghĩa là sử dụng lập trình Blueprint để thực hiện các phép tính trong thời gian thực nhằm kiểm soát các bộ phận của nhân vật dựa trên đầu vào.
Ví dụ: Một nhân vật, với các bộ phận bổ sung gắn vào anh ta như kiếm hoặc vũ khí, có animation đang chạy nhưng những vật thể bổ sung này có thể không di chuyển chính xác với animation từ cánh tay. Từ đó, bạn có thể sử dụng Control Rig để đọc dữ liệu animation và dễ dàng tính toán chính xác vị trí cho các bộ phận bổ sung đó.
Do tính linh hoạt của Control Rig, tính năng cũng có thể được sử dụng để tạo ra animation mới dựa trên các phép tính thủ tục này bằng cách baking các phép tính thành các animation.
Meta Sounds – Hệ thống kết nối và tạo ra hiệu ứng âm thanh trong thời gian thực
Meta Sounds có thể tạo ra âm thanh thực tùy thuộc theo hoàn cảnh, tùy thuộc vào tương tác trong game. Dựa vào âm thanh đầu vào do mình thu, Meta Sounds sẽ tự tính được độ lớn nhỏ, độ vang âm thanh, nếu có con vật thì tiếng thế nào,… trong từng không gian khác nhau.
Theo cách làm truyền thống thì mình phải tự thu âm thanh trong nhiều môi trường khác nhau, nếu âm thanh đó mình không thu thì mình sẽ không làm cho phù hợp với môi trường được.
Ví dụ: Meta Sounds sẽ dựa vào âm thanh tiếng bước chân mình đã thu từ trước để tạo ra âm thanh khi đi trên gỗ trong một căn phòng nhỏ sẽ khác với khi đi trên gỗ trong một căn phòng lớn hơn. Meta Sound có khả năng tính toán âm thanh dựa trên kích cỡ không gian,…
Ngoài ra, Meta Sounds còn có thể tự tạo âm thanh luôn như nhạc beat nên được nhiều nhà làm phim, làm âm thanh ưa chuộng.
Ưu và nhược điểm của Unreal Engine là gì?
Lợi ích của việc sử dụng Unreal Engine là gì so với các công cụ phát triển game khác?
- Quy trình làm việc linh hoạt, tiết kiệm thời gian:
Với tất cả những dụng cụ hỗ trợ có sẵn trong Unreal Engine, người làm game, làm phim có thể dễ dàng tự tạo workflow, pipeline riêng, linh hoạt và phù hợp với công việc của họ.
Unreal Engine đi theo hướng lập trình kéo – thả nhằm mục đích giảm thời gian lập trình, phù hợp với những game developer muốn nhìn thấy thành quả sau khi code lập tức. Game developer có thể dùng tính năng kéo thả của Unreal Engine – được hỗ trợ bởi hệ thống Blueprint, để test logic cho đến khi ổn, nếu logic đúng thì viết lại bằng C++. Tuy nhiên, có những việc thì viết code sẽ nhanh hơn là kéo thả.
- Phù hợp với người dùng không giỏi code:
Unreal Engine có giao diện và cách sử dụng thân thiện với người mới, hoặc người chuyên làm nội dung game, không giỏi code như game artist, game designer,… nhờ vào hệ thống Blueprint.
Hệ thống Blueprint, hay gọi tắt là “Blueprint”, là một hệ thống cho phép các game artist, game designer sử dụng gần như đầy đủ các khái niệm và công cụ thường chỉ dành cho developer. Cũng nhờ vào Blueprint mà game artist, game designer có thể mở rộng nội dung cho những class mà developer đã phát triển mà không cần viết code.
- “Đồ dùng” miễn phí:
Một ưu điểm lớn của Unreal Engine là game engine này thường xuyên phát hành đồ dùng miễn phí. Nhờ vào việc mang đến nhiều đồ miễn phí và có sẵn nên Unreal Engine thu hút rất nhiều người dùng mới. Khi người dùng đã quen rồi thì có thể bỏ tiền ra mua thêm nếu cảm thấy cần thiết.
Unreal Engine thường phát hành các mô hình 3D miễn phí do Quixel – một công ty chuyên tạo ra các mô hình 3D chất lượng cao, làm ra. Người dùng chỉ cần vào Unreal Engine 5 và tải Quixel Bridge để lấy asset miễn phí là đã có thể tự tạo ra khung cảnh mới và đẹp.
- Cộng đồng Unreal Engine lớn mạnh và thân thiện, khả năng kết nối cao:
Cộng đồng Unreal Engine lớn nhất hiện nay là Unreal Slackers – một cộng đồng trên discord. Đây là nơi tổng hợp rất nhiều tên tuổi lớn trong cộng đồng Unreal trên thế giới, những người làm việc tại Epic Games cũng tham gia discord này.
Ngoài ra, trên Twitter cũng có rất nhiều Unreal Engine Evangelist (người quảng bá và hỗ trợ về Unreal Engine) như: Chris Murphy; Asher Zhu (chuyên về Tech Art);…
Ở Việt Nam có nhóm Facebook Cộng đồng Unreal Engine VN – chuyên về những video Arch Viz (Architectural Visualisation – trực quan hoá kiến trúc). Tuy rằng mọi người trong nhóm không phải chuyên sâu về Unreal Engine nhưng sẽ là một nơi khá tốt để tìm hiểu thêm về Arch Viz trong giới 3D.
Việc làm Game Developer toàn quốc trên ITviec!
Nhược điểm của Unreal Engine là gì?
- Không hỗ trợ dạng game nhiều người chơi/ multi-player game:
Unreal Engine có nhiều asset có sẵn hỗ trợ mạnh game một người, game đi cảnh hơn là MMORPG (Massive Multiplayer Online Role Playing Games – Tạm dịch: Trò chơi nhập vai trực tuyến nhiều người chơi) và tạo ra thế giới cho cả ngàn người hoạt động như World Of Warcraft, Võ Lâm Truyền Kỳ, Thiên Long Bát Bộ,…
Để phát triển game multi-player thì cần mua thêm giải pháp từ bên thứ 3 như Spatial OS, hệ thống Cloud,…
Tuy nhiên, với những game multi-player từ 100 người chơi đổ xuống, Unreal Engine vẫn có thể hỗ trợ phát triển.
- Hỗ trợ quá nhiều workflow:
Đây là một ưu điểm mà cũng là một nhược điểm của Unreal Engine. Đối với những người mới sử dụng, người tự học sẽ dễ bị rối, không biết nên chọn workflow nào.
- Documentation không đầy đủ và chưa được cập nhật:
Documentation không đầy đủ là nhược điểm chung của nhiều game engine. Trong quá trình làm việc, ta sẽ phát hiện có vài điều mà documentation chưa cập nhật so với phiên bản mới nhất của engine, viết không đủ. Nguyên nhân chủ yếu là do tốc độ phát triển của game engine nhanh hơn tốc độ viết document.
Thậm chí là những vấn đề liên quan đến lập trình thường không được đề cập đến trong Unreal Engine documentation. Nếu game developer gặp vấn đề, họ phải vào source code của Unreal Engine để tự tìm hiểu chứ document không hướng dẫn nữa. Chính vì thế, người game developer đòi hỏi phải có khả năng tự học cao.
Những lưu ý quan trọng khi làm việc với Unreal Engine là gì?
Ngôn ngữ lập trình cần dùng khi lập trình game với Unreal Engine?
Khi lập trình với Unreal, game developer cần sử dụng ngôn ngữ lập trình C++. Unreal Engine được quảng cáo là thân thiện với artist, nhà làm phim,… và những vị trí không chuyên về kỹ thuật khác nhưng để thực sự tối ưu hết ưu điểm của Unreal, người dùng vẫn cần phải biết về lập trình.
Tuy nhiên, kiến thức C++ phổ thông không áp dụng được ngay trong Unreal Engine vì Unreal có những nguyên tắc riêng về lập trình.
Ví dụ như: Khi phát triển game với Unreal, game developer không nên tự xóa class khi không còn dùng đến như lập trình C++ bình thường. Với Unreal, mọi class được tạo và lưu với UObject. Unreal Engine sẽ sử dụng Reflection System để xóa class khi cần thiết, game developer không nên tự xóa vì sẽ xóa nhầm.
Developer cần kỹ năng, tố chất gì khi phát triển Game sử dụng Unreal Engine?
- Nắm vững toán hình học:
Quá trình làm game vận dụng kiến thức tính toán hình học cơ bản rất nhiều nên sẽ rất dễ sai nếu không nắm vững toán hình học cơ bản.
- Lập trình theo Programming Paradigm/ Programming Pattern:
Lập trình theo Programming Paradigm – Mẫu hình lập trình là một cách lập trình có hệ thống, hiểu giải pháp để dễ thay đổi sau này.
Ví dụ: Game developer khi cần tính nhân vật di chuyển từ điểm A sang B, gặp điểm C giữa đường thì nếu như mình có hệ thống quản lý mình sẽ có công thức chung dễ tính toán, dễ thay đổi hơn, thay vì phải tính từng điểm.
Đặc biệt, với những bạn lập trình game chưa quen, nếu phải tự thay đổi những điểm liên quan sẽ dễ làm sai, làm thiếu, nhưng khi có Programming Paradigm do cộng đồng xác nhận thì mình có thể chỉ cần sửa một chỗ này thì hệ thống sẽ thay đổi luôn những cái có liên quan, mình không cần tự đi mày mò.
- Comment khi lập trình:
Lập trình là phải biết comment. Anh Khoa chia sẻ rằng trong công ty lớn thì developer chắc chắn phải comment còn công ty nhỏ nhiều khi không bắt buộc nhưng mình nên học thói quen comment giải thích mục tiêu từng đoạn code để dễ review, dễ hiểu được tính năng của từng đoạn code.
Anh Khoa chia sẻ thêm: “Comment rất quan trọng, đặc biệt khi làm việc với team. Tự bản thân mình code mấy ngàn dòng mà mình không comment thì khi rời đi một thời gian, mình còn quên nữa nói chi là người khác đọc lần đầu mà hiểu được“.
- Khả năng tự học cao:
Như đã chia sẻ ở phần trước, khuyết điểm của Unreal Engine nói riêng và các game engine nói chung đó là document không đầy đủ. Chính vì thế, khi gặp vấn đề thì mình phải tự tìm tòi, hỏi han người có kinh nghiệm.
- Test liên tục:
Game engine rất hữu ích nhưng không phải lúc nào engine cũng đúng. Mình nên học cách “nghi ngờ”, không mặc định, không chủ quan quá tin tưởng vào engine.
Tham khảo: Làm lập trình game có dễ dàng như bạn tưởng?
Các lỗi thường gặp khi làm việc với Unreal Engine là gì và cách khắc phục/phòng ngừa
- Lỗi phân tích:
Chia sẻ từ chính kinh nghiệm làm việc của mình, anh Khoa cho rằng có rất nhiều bạn chưa có nhiều kinh nghiệm phạm phải lỗi phân tích này. Mà lỗi này lại xuất phát từ “niềm tin tuyệt đối” với Unreal Engine mà anh đã có chia sẻ ở trên:
“Khi các bạn gặp lỗi, các bạn thường đặt nghi vấn là lỗi từ đâu và dùng nghi vấn đó để đặt câu hỏi với anh. Tuy nhiên, lỗi lớn là khi dùng nghi vấn thì bạn chưa test nhưng đã mặc định có những chỗ là đúng rồi (do Unreal Engine nói vậy) nên không phải lỗi chỗ này mà là lỗi chỗ khác. Và anh không đồng ý với cách phân tích như vậy vì mình phải test tất cả mọi thứ, kể cả trong engine vì engine vẫn có thể sai chứ không phải do mình.”
Bài học anh rút ra là khi phân tích, phải phân tích cho kỹ, không được mặc định đúng – sai bất kỳ chỗ nào.
- Lỗi tính toán:
“Chủ yếu là tính hình học”, anh Khoa nhấn mạnh. Khi mình lập trình cho nhân vật, đồ vật hoạt động thì nếu tính sai định vị, phương hướng thì nhìn nhân vật sẽ không đúng với thực tế.
Để yên tâm khi tính toán thì game developer nên có thói quen test thường xuyên, đừng đợi làm xong hết mới test một lần.
Tài liệu Unreal Engine tham khảo
- Để tự học nhanh nhất về nhập môn “Unreal Engine là gì?” thì bạn chỉ cần tìm một hoặc nhiều khóa học Udemy được đánh giá cao và bắt đầu thôi!
- Epic Developer Community: Cộng đồng chính thức chia sẻ hướng dẫn và kiến thức dành cho lập trình viên game.
- Unreal Youtube channel: Đây là một kênh tuyệt vời để tìm hiểu về tất cả các tính năng mới nhất cũng như các video hướng dẫn trực tiếp từ chính Epic Games.
Ngoài ra, bạn có thể tham khảo thêm những tổ chức, cộng đồng Unreal Engine đã giới thiệu ở trên để học hỏi thêm về những tips làm việc với Unreal Engine và để được hỗ trợ khi cần thiết.
Tổng kết
Bạn không chỉ sử dụng một game engine, mà bạn phải đào tạo một team, xây dựng các công cụ và quy trình xung quanh engine đó trong một khoảng thời gian để làm quen. Trong thời gian dài, bạn cần phải sửa đổi công cụ và quy trình làm việc theo từng trò chơi bạn phát triển. Chính vì thế, việc chọn game engine nào để sử dụng đều phải mang tính cam kết và gắn bó lâu dài. Dù là Unity hay Unreal Engine, bạn nên sử dụng thử trước khi chọn cho mình một game engine phù hợp.
Thông tin chuyên gia:
Khoa Phạm là nhà phát triển Unreal Engine với hơn 5 năm kinh nghiệm sử dụng công cụ này. Anh đặc biệt yêu thích Tech Art và Tech Animation – Lĩnh vực tạo ra các công cụ mới hoặc tìm ra một cách mới để đạt được một kết quả hình ảnh nhất định. Nhưng anh cũng thích thú với những khía cạnh truyền thống hơn của ngành công nghiệp game như game nhiều người chơi và kết nối mạng khi tạo trò chơi, chẳng hạn như chọn giao thức kết nối mạng phù hợp và/hoặc xây dựng và triển khai các máy chủ nhiều người chơi trên AWS Cloud.
Bên cạnh làm việc trong lĩnh vực công nghệ trò chơi, Khoa Phạm còn có bằng Thạc sĩ về Khoa học Thông tin với luận án về Phát triển mạng lưới thần kinh bằng cách sử dụng các thuật toán metaheuristic như thuật toán di truyền. Vì điều này, Khoa Phạm không ngừng nhận thức và nghiên cứu về các công nghệ dựa trên AI mới để tìm ra cách có thể kết hợp những công nghệ đó vào quy trình làm việc.
Tại Dreamchasers Interactive, Khoa Phạm cùng team chuyên kết hợp Công nghệ Thị giác máy tính (computer vision technology) với Unreal Engine để tạo ra những trải nghiệm tương tác thú vị và đẹp mắt. Trong khi thực hiện những dự án này, anh cũng phải “chạm tay” vào lĩnh vực điện tử và thiết kế cơ khí, sau đó kết hợp tất cả những điều đó thành các sản phẩm hoàn thiện.
Bạn thấy bài viết hay và hữu ích? Đừng ngại Share với bạn bè và đồng nghiệp nhé.
Và nhanh tay tham khảo việc làm IT “chất” trên ITviec!