Nội dung chính
Unity là gì? Unity là một game engine đa nền tảng mà bất kỳ người Game Developer nào cũng nên biết. Thậm chí, chỉ cần biết sử dụng Unity thì chẳng những đảm bảo bạn không thất nghiệp mà còn sở hữu mức lương vượt trội so với mặt bằng lương IT nói chung.
Để có thể tìm hiểu thêm về cụ thể Unity là gì cũng như các cơ hội để phát triển sự nghiệp Unity Developer tại Việt Nam, ITviec đã có buổi chia sẻ thông tin đầy bổ ích với bạn Trịnh Đức Huy – Tech Manager và CEO tại UniqTech.
Việc làm Unity “chất” nhất toàn quốc trên ITviec
Tổng quan về Unity là gì
Unity là gì?
Unity là một game engine đa nền tảng được phát triển bởi công ty Unity Technologies, chủ yếu được dùng để phát triển video game cho 21 nền tảng bao gồm máy tính, game consoles (như PlayStation) và điện thoại,…
Hơn 50% số lượng game trên thị trường được sản xuất bởi Unity. Một vài tựa game vô cùng nổi tiếng được tạo ra bởi Unity có thể được kể đến như Pokémon Go, Hearthstone, Ori And The Blind Forest, Monument Valley, Axie Infinity,… Độ “phủ sóng” của Unity rất rộng, có thể được áp dụng phổ biến trong nhiều dòng game khác nhau từ game “hạng nặng” Triple A (AAA) cho đến game giáo dục đơn giản cho con nít.
Tính năng cơ bản của Unity là gì?
Unity hỗ trợ mạnh các tính năng sau:
- Tạo giao diện UI của Game như tạo drop bar, textbox,…
- Hiển thị mô hình 3D, 2D – hệ thống vật lý 2D, 3D
- Networking: Hỗ trợ tạo game chơi nhiều người cùng lúc
- Hỗ trợ nền tảng đặc biệt mới: AR – Augmented reality (Thực tế tăng cường), VR – Virtual reality (Thực tế ảo)
- AI – Hỗ trợ con bot trong màn hình game, hỗ trợ package tạo nên bot trong game
- Hỗ trợ hiển thị chữ bằng font đặc biệt
- …
Trong tất cả các tính năng của Unity thì cá nhân Huy đề cao nhất giao diện ứng dụng Editor. Unity Editor, với nhiều công cụ (tool), hỗ trợ các đầu việc phát triển game như tạo mô hình 3D (vật lý, ánh sáng) và viết Script,… chỉ bằng thao tác kéo thả hình ảnh.
Nhờ vào tính năng này, Unity hỗ trợ tốt cho cả những vị trí khác trong quá trình phát triển Game như Game Designer.
Huy chia sẻ thêm:
“Thời gian đầu dùng Unity, mình toàn dùng code, không dùng Editor do không quen. Nhưng sau này thấy Editor rất lợi hại do trong team không chỉ có mỗi người developer mà còn có game designer, game artist cùng tham gia thì họ đều có thể làm trực tiếp trên Unity. Điểm hay của Editor là bạn không cần phải biết code mà vẫn có thể làm game được.
Mình ví dụ: Khi làm game đua xe, designer muốn thay đổi yêu cầu hiển thị số tốc độ km/h trên xe thì nếu là ngày xưa, họ phải liên lạc với developer để điều chỉnh tới lui nhiều lần đến khi nào ổn thì thôi. Còn bây giờ, với Unity thì designer có thể tự test trước trên Unity đến khi nào thỏa mãn rồi thì họ báo Developer đúng một lần để hoàn thiện lại là được.”
Cách sử dụng Editor cũng vô cùng đơn giản, Huy đưa ví dụ:
- Bỏ hình ảnh vào trong Unity.
- Editor hỗ trợ tạo thành từng scene hoặc group lại thành từng folder. Trên mỗi scene viết từng script, mô tả cách hoạt động của đối tượng đó như qua trái qua phải, click đến vị trí nào thì đối tượng di chuyển đến vị trí đó,…
- Khi script hoàn chỉnh thì Developer có thể viết code dựa trên script đó.
Vì sao Huy lại cảm thấy Editor là một điểm “đáng đồng tiền bát gạo” nhất của game engine Unity?
“Dùng những game engine không có Editor thì người lập trình viên phải thủ công đặt từng đối tượng bằng code. Còn một game làm bằng Unity sẽ được tạo ra từ nhiều modules viết sẵn bởi Unity hay bởi Developer khác nên bạn sẽ tiết kiệm được khá nhiều thời gian.
Ví dụ như hỗ trợ việc thiết lập góc nhìn, vị trí đối tượng mà không còn code.
Ngoài ra, khi làm việc, bạn sẽ thiết kế giao diện của Game trên Editor và chỉ cần viết Code (C#) bằng phần mềm thứ 3 như VSCode một lần mà thôi. Chỉ viết code một lần nhưng có thể chạy trên nhiều nền tảng, thiết bị hay hệ điều hành như Android, iOS, Playstation.”
Cộng đồng hỗ trợ Unity
Unity có cộng đồng, forum Unity để hỗ trợ mỗi khi người dùng có thắc mắc về cách sử dụng hoặc về các phiên bản cập nhật, khi gặp lỗi, bug. Huy chia sẻ rằng mỗi khi bạn gặp phải vấn đề, Huy sẽ lên forum của Unity, “Trên cộng đồng có cả đại diện của Unity và những developer khác nên mình sẽ được giải đáp nhiều, nhanh và hiệu quả hơn hẳn Stack Overflow luôn (cười).”
Ngoài ra, Unity còn có “chợ” plug-in vô cùng phong phú. Trên chợ có những gói package do chính Unity hoặc các nhà phát triển khác sản xuất. Thậm chí, có những nhà phát triển đăng tải toàn bộ một trò chơi hoặc một mô hình 3D hoàn chỉnh, bạn chỉ cần tải về và sử dụng. Hầu hết tất cả những plug-in trên chợ đều phải trả phí.
“Chợ” plug-in trên Unity rất tiện lợi cho những ai cần những game đơn giản dùng cho việc giáo dục, quảng cáo,… vì bạn chỉ cần trả phí, tải về và sử dụng ngay liền được, không cần phải tốn thời gian để lập trình hay thiết kế game.”
Không chỉ ở quốc tế mà cộng đồng Unity Developer ở Việt Nam cũng phát triển vô cùng mạnh. Nếu bạn quan tâm thì có thể tham gia các cộng đồng sau:
Ưu điểm và Nhược điểm của Unity là gì?
Trên thị trường game quốc tế và Việt Nam vẫn có những game engine được nhiều developer ưa chuộng như Unreal, CryEngine,…. Mỗi engine sẽ có mỗi ưu nhược điểm khác nhau và vẫn được sử dụng ở nhiều studio game. Xét riêng về sức mạnh tổng quan khi làm game, Huy chia sẻ về ba ưu điểm lớn mà Unity sở hữu:
- Editor: Với Editor, nhà phát triển không cần thiết phải viết Code để sắp đặt các đối tượng trong Game như những Engine khác mà Developer có thể kéo thả, thay đổi vị trí của từng đối tượng trong Game trực tiếp trên Editor.
- Đa nền tảng là lợi ích thứ 2 rất quan trọng với nhiều công ty cũng như developer. Vì với việc bạn tạo ra Game mà Game đó có thể chạy được trên hầu hết những hệ điều hành quan trọng như Desktop (Mac, Window và Linux) hay Mobile (iOS, Android) hoặc Web (WebGL) thì cũng đã tiết kiệm công sức cũng như chi phí rất nhiều cho doanh nghiệp đó.
- Miễn phí: Và yếu tố cuối cùng chính là chi phí. Với Unity, miễn phí là một điểm thu hút rất nhiều Developer chọn làm việc với game engine này. Tuy nhiên, với các game được tạo ra miễn phí thì bắt buộc phải có Logo Unity trong Game.
Tuy sở hữu những ưu điểm tuyệt vời trên nhưng Unity vẫn có những nhược điểm:
1. Dung lượng Unity game bundle khá lớn:
So với những game engine khác, Unity sản xuất game có dung lượng nặng nên đây là một điểm trừ lớn. Theo Huy, một game tốt nhất chỉ nặng dưới 100MB. Thậm chí, game web do Unity sản xuất có thể có dung lượng lên đến cả trăm MB nên web chạy không nổi. Chính vì thế, cũng cùng một game đó thì game mobile lại chạy tốt trong khi game web lại giật, lag.
Lý giải nguyên nhân cho vấn đề này, Huy nhận định rằng: “Về cơ bản, những game engine nhiều tool hỗ trợ để mau ra sản phẩm thì sẽ phải có nhiều layer, structure phức tạp nên khiến cho sản phẩm game nặng, dư thừa nhiều tính năng không cần thiết.”
2. Các phiên bản cập nhật:
Đây là một nhược điểm mà Huy rút ra từ chính kinh nghiệm làm việc với Unity qua nhiều dự án:
“Unity cho ra mắt nhiều phiên bản cập nhật liên tục trong một năm và nhiều năm liên tục. Nếu phiên bản cập nhật được ra mắt trong cùng một năm thì vẫn có thể sử dụng song song nhiều phiên bản cùng năm.
Còn nếu trong trường hợp bản cập nhật khác năm, và trong nội bộ một team, hoặc giữa team phát triển và khách hàng, sử dụng các phiên bản Unity khác năm với nhau thì khi push code, đẩy code lên cho member thì sẽ bị lỗi hình ảnh, script, code,… thậm chí là mất hết tiến độ.
Tuy nhiên, điều khó là nếu như bạn nhận nhiều dự án cùng một lúc mà mỗi khách hàng lại sử dụng một phiên bản Unity khác nhau để phát triển game thì bạn bắt buộc phải thay đổi qua lại.”
Nhìn chung, lời khuyên ở đây là các developer phải cực kỳ thận trọng khi cập nhật các phiên bản mới của Unity.
So sánh Unity và những game engine phổ biến khác trên thị trường
Sau khi đã tìm hiểu rõ về Unity là gì, ắt hẳn bạn đang suy nghĩ mình có nên lựa chọn Unity thay vì các game engine khác để xây dựng game hay không? Đừng lãng phí thời gian, tiền bạc và nhân lực với một game engine mà không phù hợp với bạn hoặc team. Hãy chọn một công cụ đủ mạnh và hiệu quả để thực hiện những gì bạn cần làm để xây dựng trò chơi của mình.
Sau đây là bảng so sánh đơn giản giữa Unity và những game engine phổ biến khác trên thị trường (CryEngine và Unreal):
Unity | CryEngine | Unreal Engine |
|
Ngôn ngữ | C# | Lua, C++ và C# | C++ |
Hạn chế | Performance game chưa tốt bằng những game engine khác. |
– Chỉ dùng được với hệ điều hành Window. – Không phổ biến bằng những game engine khác. |
Phát triển game 2D chưa tốt. |
Chi phí |
– Miễn phí với gói cơ bản. – Nâng cấp lên các gói cao cấp từ $40/tháng. |
Từ $9.90/tháng |
– Miễn phí sử dụng. – Áp dụng 5% phí bản quyền khi doanh thu vượt 1 triệu đô-la. |
Nên sử dụng nếu bạn |
– Chuyên lập trình C# hoặc lập trình với các ngôn ngữ giống C. – Tạo các game mobile thông thường, chẳng hạn như các trò chơi đứng đầu bảng xếp hạng trên App Store hoặc Google Play Store. |
– Mạnh về đồ hoạ môi trường (environment). – Có kinh nghiệm lập trình C ++ và C#. |
– Chuyên về game 3D, game quy mô lớn. – Thích hợp khi lập trình game theo nhóm. |
Tham khảo ngay Việc làm Unity “chất” nhất TP. HCM trên ITviec
Tài liệu Unity tham khảo
Huy chia sẻ những nguồn tài liệu đầy đủ và cơ bản nhất về Unity cho người mới bắt đầu:
- Học trực tiếp với các khóa học từ Unity
- Learn Unity – Beginner’s Game Development Tutorial – freeCodeCamp.org
Ngoài ra, bạn có thể tham khảo 30+ tài liệu học lập trình game “chất” nhất do chính ITviec tổng hợp!
Những lưu ý khi phát triển game với Unity là gì?
Developer cần những kỹ năng, tố chất gì khi phát triển Game trên Unity?
Huy chia sẻ rằng Unity cũng chỉ là một game engine – hay nói rộng ra là công cụ, để phát triển game mà thôi nên điều quan trọng là Developer cần chú trọng hơn đến những kỹ năng, tố chất khi phát triển Game nói chung.
Về tố chất cơ bản của một Game Developer, ngành Game là một ngành nghề khá bay bổng và không có nhiều ràng buộc nguyên tắc như những lĩnh vực khác, như phát triển Web hay ứng dụng Điện thoại di động, nên tùy vào trí tưởng tượng của bạn và đam mê thì bạn có thể bắt đầu tạo ra một thế giới riêng – là nơi mà bạn có thể kiểm soát mọi thứ, vào bất kỳ lúc nào.
“Làm thế nào để bắt đầu? Nếu bạn thích game gì, thì bạn có thể làm thử. Lúc mới bắt đầu làm về game, mình thường nhìn game trên thị trường, chỉ là một vài game đơn giản thôi, rồi tự hỏi xem game đó được làm ra sao, mình viết code thử xem có thể làm được như vậy không.
Tuy không hẳn giống 100% thì mình cũng có thể bắt chước được khoảng 95-99% bằng cách nhìn vào logic, nhìn người ta viết thế nào thì mình cũng bắt chước làm theo.”
Về kỹ thuật, một game developer trước nhất cần nắm vững những nguyên tắc về hình học, vật lý, toán học cấp 3, và nắm vững C#, OOP, các thuật toán, cấu trúc dữ liệu,…
Bạn có thể tập viết Code theo Code Convention của Microsoft cũng như các Design Pattern. Huy cũng chia sẻ thêm nhận định cá nhân về lý do vì sao bạn lại cho rằng hình học, vật lý, toán học cấp 3 lại quan trọng trong việc làm game:
“Đối với Game Developer thì cả 3 đều quan trọng. Hồi xưa đi học không để ý, thấy không xài chứ sau này đi làm Game thì xài thường xuyên. Còn Developer về web thì ít xài lắm. Với game 3D thì yêu cầu vật lý, cảm quan hình học cao. Thậm chí, với game 3D thì còn có những vị trí chuyên phát triển hệ thống vật lý gọi là Physics Developer.
Nhưng khi làm việc với Unity thì họ có sẵn một thư viện vật lý, mình chỉ cần áp dụng thôi. Còn với game 2D, ví dụ như game Hayday, thì yếu tố vật lý, hình học lại không quan trọng. Với những game đó thì Toán học lại quan trọng hơn.”
Ngoài ra, tiếng Anh luôn quan trọng với Developer, dù bạn học ngôn ngữ hay lập trình ngành nào.
Hầu hết các tài liệu về Unity hiện nay đều được viết bằng tiếng Anh, cũng như cộng đồng quốc tế Dev hỗ trợ với ngôn ngữ chính là tiếng Anh. Khi bạn gặp phải một vấn đề gì đó, để tìm kiếm đúng keyword nói về vấn đề đó hoặc tên gọi của lỗi đó, tìm được đúng giải pháp cho vấn đề thì bạn cần phải nắm đúng từ vựng tiếng Anh để dễ giải quyết hơn.
Đồng thời, khi làm game với team nước ngoài thì bắt buộc phải cải thiện kỹ năng tiếng Anh để có thể dễ dàng giao tiếp với họ.
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 Unity là gì và cách khắc phục/phòng ngừa
Đối với những developer nặng về code, các bạn thường mắc một sai lầm đó là không khai thác những resource có sẵn của Unity.
Thay vì tìm hiểu sử dụng những tool sẵn có, tìm hiểu cách sử dụng Editor của Unity (điểm mạnh nhất của Unity) thì các developer hay viết code from scratch để làm những việc đó. Một ví dụ điển hình là các bạn hay bỏ qua tool Animator/Animation của Unity.
Huy ví dụ: “Khi bạn cần làm scene chuyển cảnh 5 giây, ghép bằng 120 tấm hình chỉ khác nhau chút chút. Thông thường, mọi người sẽ phải tự viết code để làm những cảnh chuyển như vậy, rất tốn thời gian. Trong khi đó, Unity có hỗ trợ tool animation này và bạn chỉ cần kéo và thả hình ảnh thôi.”
Cơ hội việc làm Game Unity Developer ở Việt Nam
Mức độ yêu cầu Unity của các công ty game ở Việt Nam
Các game studio ở Việt yêu cầu kỹ năng Unity đa dạng, từ đơn giản tới phức tạp, nâng cao:
- Điều kiện cần: Nắm vững lập trình C# hoặc ít nhất ở mức cơ bản, và cách sử dụng Unity. Yêu cầu hiểu Unity là gì ở mức độ cơ bản, không phức tạp do tự game engine đã rất đầy đủ, một người không biết code cũng có tạo ra game với Unity nếu biết cách tối ưu Editor của Unity.
- Nâng cao: Nắm vững OOP, thuật toán và cấu trúc dữ liệu. Nếu yêu cầu cao hơn nữa thì sẽ cần developer hiểu biết thêm về vật lý, cảm quan hình học.
- Yêu cầu 3D tùy công ty.
Tham khảo ngay Việc làm Unity “chất” nhất Hà Nội trên ITviec
Cơ hội nghề nghiệp cho Game Unity Developer ở Việt Nam
Việc sử dụng Unity ở các Studio Game ở Việt Nam đang là một xu hướng vì với sự phát triển mạnh mẽ cũng như nhu cầu cải thiện hiệu năng hiệu suất của team phát triển Game thì Unity có thể hỗ trợ hết tất cả những vấn đề đó. Chính vì thế, những công việc yêu cầu Unity sẽ luôn luôn cần trên thị trường.
Theo quan sát cá nhân, Huy nhận định rằng hiện tại, nhu cầu tuyển dụng Unity Developer ở Việt Nam rất là cao, nhất là trong những năm 2021 và 2022. Lý giải nguyên nhân, Huy cho rằng: “Một phần do xu hướng gamefi (blockchain) tăng cao. Thách thức lớn nhất để tìm được việc trên thị trường đó là kỹ năng của bạn đến đâu. Bạn phải làm chủ được những công nghệ như Unity với đa dạng những thành phần như vật lý, editor, C#.”
Tham khảo: Bạn có muốn trở thành một Game Developer thành công?
Tuy Unity vẫn là game engine phổ biến nhưng không phải tất cả công ty, studio Game ở Việt Nam đều yêu cầu Unity. Vẫn có một số công ty ở Việt Nam sử dụng những engine khác như Cocos2D-X, Unreal, hoặc sử dụng internal engine.
Ngoài ra, bạn có thể tham khảo mức lương dành cho ngành Game Developer năm 2023 sau đây:
Vị trí |
Số năm kinh nghiệm |
Mức lương trung vị |
Game Developer |
Từ 1 đến dưới 3 năm |
22 triệu đồng |
Từ 3 đến dưới 5 năm |
28.5 triệu đồng |
|
Từ 5 năm đến dưới 8 năm |
32 triệu đồng |
|
Trên 8 năm |
51 triệu đồng |
Ngành |
Tỉnh thành |
Mức lương trung bình |
Game |
Hà Nội |
27.3 triệu đồng |
Đà Nẵng |
33 triệu đồng |
|
TP. HCM |
28.2 triệu đồng |
Thông tin trên do chính ITviec tiến hành khảo sát và tổng hợp lại thành “Báo cáo Lương IT: Mức Lương & Mong Đợi Nghề Nghiệp Của Các Chuyên Gia IT 2022-2023”. Tham khảo đầy đủ tất cả mức lương ngành công nghệ thông tin ngay nào!
Game Unity Developer trong ngành IT nói gì?
Điều gì quan trọng nhất khi phát triển game multi-player?
Trong suốt nhiều năm làm Unity Game Developer, Huy chia sẻ về một trong những sai lầm “để đời” nhất của bản thân khi làm game multi-player – game nhiều người chơi:
“Để làm game nhiều người chơi, có nhiều cách để làm, cách đơn giản nhất là tạo server như một trạm trung chuyển. Người chơi A muốn di chuyển thì gửi tín hiệu lên server rồi server forward tín hiệu qua cho người chơi B để người chơi B biết về A.
Đối với mô hình này, server chỉ đóng vai trò là nhận tín hiệu rồi gửi đi, không tính toán gì, nên nếu khi có nhiều người chơi cùng tính, cùng gửi tín hiệu đi, thì hậu quả là màn hình chơi không giống nhau. Có nghĩa là ví dụ như người A thấy người B hết máu rồi nhưng người C không thấy. Thế là người chơi C lại tiếp tục tấn công người B. Như vậy dẫn đến nhiều vấn đề hơn.
Tuy nhiên, khi chơi game multiplayer, việc đồng bộ giữa các người chơi (tất cả người chơi đều thấy chung một thế giới) là yêu cầu vô cùng quan trọng nên mô hình này không hiệu quả.
Ban đầu mình làm theo mô hình đó vì đơn giản, dễ làm. Sau này, khi nhận ra vấn đề, mình phải xây dựng mô hình mới. Ở mô hình mới, người chơi chỉ gửi tín hiệu lên trên server và yêu cầu server tính toán, nếu server thấy ổn thì mới đưa ra kết quả cho tất cả người chơi. Mô hình này chỉ có 1 bên tính (chính là server) thì kết quả sẽ đồng bộ, tất cả người chơi đều thấy như nhau. Hồi trước mình không chọn cách này vì mình thấy quá trình phát triển phức tạp (cười).”
Xã hội nghĩ gì về Game Developer?
Một trong những “định kiến” lớn nhất mà Game Developer phải đối mặt từ xã hội chính là câu hỏi: “Học cái gì mà không có lợi ích gì cho xã hội vậy?”.
Theo lời Huy kể thì cả Huy và những người bạn nghe những câu hỏi thế này nhiều đến mức mà “thấy chuyện đó cũng bình thường nên không lấy làm buồn nữa”. Tuy nhiên, đây cũng là trăn trở khiến cho nhiều sinh viên, hay Fresher/Junior nản lòng trong những ngày đầu của nghiệp. Vậy thì làm thế nào để “đương đầu” với những định kiến như vậy? Huy chia sẻ một cách đầy tích cực về nghề nghiệp:
“Mình cũng xác định game là giải trí, là vui mà cái gì vui thì dễ nghiện. Tuy nhiên, khi game có thể áp dụng vào trong giáo dục được thì cũng là ích lợi tích cực của game. Đồng thời, ngày càng có ít người nghiện game hơn ngày xưa nên mình tin rằng xã hội sẽ có góc nhìn tích cực hơn đối với game và người làm game (cười).”
Cảm ơn Huy đã chia sẻ với ITviec cũng như bạn đọc những thông tin vô cùng bổ ích và thú vị về Unity là gì, cơ hội phát triển nghề nghiệp Unity Game Developer nói riêng ở Việt Nam và những chia sẻ của một Game Developer nói chung với nhiều kinh nghiệm.
Thông tin Trịnh Đức Huy
Trịnh Đức Huy có hơn kinh nghiệm 8 năm lập trình game với Unity trong các agency của studio game nước ngoài như Antler Interactive, Stylinkz GmbH & Co. KG.
Một số tựa game Huy đã tham gia lập trình và chịu trách nhiệm chính như: My Neighbour Alice, Island Rumble.
Hiện tại, Huy đang giữ chức vụ là Tech Manager và CEO của UniqTech.
Bạn thấy bài viết hay và cần thiết với nhiều người? Đừng ngại nhấn nút Share bên dưới nhé.
Và đừng quên tham khảo việc làm IT trên ITviec!