Lập trình game đang là một trong những nghề thu hút nhất đối với nhân lực IT trẻ hiện nay. Một vài lý do nổi bật là với nghề này, bạn được thỏa sức sáng tạo và có mức thu nhập hấp dẫn so với mặt bằng chung lương ngành công nghệ thông tin.
Nghề lập trình game, hay còn gọi là Game Developer, có phải chỉ cần “mê chơi game” là đủ? Cũng như bao nghề lập trình viên khác, Game Developer cũng có những câu chuyện “hậu trường” không phải ai cũng biết. Hãy cùng ITviec khám phá nghề lập trình game với anh Trần Mai Nam – Game Developer của AMANOTES, để hiểu thêm về nghề này nhé.
Tham khảo việc làm lập trình game tại ITviec
Lập trình game là làm gì?
Những vị trí trong ngành lập trình game
Anh Nam chia sẻ rằng người lập trình game là người bằng hiểu biết về kỹ thuật của mình, hiện thực hóa ý tưởng/bản thiết kế của Designer thành sản phẩm cụ thể, hoàn chỉnh.
Nghề lập trình game chia làm 2 nhánh chính là front-end và back-end. Cả front-end lẫn back-end đều tham gia phát triển các tính năng cho game. Cụ thể hơn:
- Front-end sẽ đảm nhiệm những tính năng giao tiếp trực tiếp với người dùng.
- Những tính năng này bao gồm hệ thống UI, các hiệu ứng đồ họa, âm thanh, hình ảnh trong game.v.v…
- Các nhánh nhỏ của front-end sẽ gồm UI/UX, graphic, gameplay, tools, engine, script programmer.v.v…
Xem thêm: UI UX là gì?
- Back-end sẽ đảm nhiệm những phần mà người dùng không “nhìn tận mắt, nghe tận tai”.
- Ví dụ như lưu trữ dữ liệu trên các server, quản lý hệ thống mạng.v.v…
- Các nhánh nhỏ của front-end sẽ gồm Database administrator, system engineer, network programmer, custom services developer.v.v…
Cá nhân anh Nam thì chuyên về front-end. Anh chia sẻ rằng bạn nên học các kỹ năng về đồ họa, ví dụ vẽ model 3D, sử dụng photoshop, thiết kế UI UX v.v. điều đó sẽ hỗ trợ tốt hơn rất nhiều cho nghề nghiệp.
Làm front-end cũng vui, vì được làm việc trực tiếp với các họa sĩ. Rồi còn được góp phần tạo ra những hiệu ứng hình ảnh đẹp mắt nữa.
Tuy nhiên, anh cũng chia sẻ rằng hầu hết các game developer sau một thời gian dài làm việc đều tự học hỏi để trở thành Full-stack Developer vì muốn có thể tự phát triển một sản phẩm game của riêng mình.
Bản thân anh đã từng đóng vai trò Full-stack Developer trong một vài dự án, ví dụ như Võ Sĩ Thép của Joombi Games.
Xem thêm: Full-stack Developer là gì?
Lập trình game chỉ có ngồi chơi game cả ngày?
Anh Nam cho rằng một trong những câu hỏi, và cũng là hiểu lầm, anh nghe nhiều nhất chính là “Lập trình game chắc sẽ được chơi game suốt ngày”. Nhiều người thích chơi game đều sẽ chọn theo nghề lập trình game vì họ đều nghĩ như vậy. Tuy nhiên, sự thật không phải vậy.
Trong giờ làm việc, Game Developer chỉ chơi phần tính năng game mà anh ta đang tham gia phát triển, chứ không thể chơi toàn bộ game. Mục đích phục vụ công việc, chứ không để giải trí.
Thử tưởng tượng, cả ngày bạn chỉ ăn mỗi món phở, hết tô này đến tô khác, thì dù có yêu phở đến mấy, đảm bảo cuối ngày bạn cũng sẽ ngán thôi.
Ngành lập trình game ở Việt Nam
Anh Nam đánh giá rằng ngành lập trình game hiện nay ở Việt Nam vẫn khá tốt, với rất nhiều công ty start-up ra đời. Tuy khả năng thất bại vẫn rất cao nhưng chỉ cần 1 sản phẩm thành công là công ty có thể lớn mạnh nhanh chóng.
Ngoài ra, anh cũng chia sẻ rằng mức lương cho Game Developer không cao so với các vị trí lập trình hot khác như AI, Blockchain, Mobile .v.v tuy nhiên so với mặt bằng chung của xã hội thì vẫn tốt, đặc biệt là bạn có thể làm giàu được bằng cách tự mình làm ra sản phẩm.
Bạn có thể tham khảo mức lương lập trình viên ngành Game theo kinh nghiệm ở bảng dưới đây (trích từ “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” do ITviec thực hiện):
Số năm kinh nghiệm |
Mức lương |
Dưới 1 năm |
19.000.000 |
Từ 1 đến dưới 3 năm |
22.000.000 |
Từ 3 đến dưới 5 năm |
28.500.000 |
Từ 5 đến dưới 8 năm |
32.000.000 |
Trên 8 năm |
51.000.000 |
* Mức lương Gross trung vị theo tháng (VNĐ), không bao gồm Thưởng và các phúc lợi khác.
Những kỹ năng cần thiết để trở thành Game Developer
Ngoại trừ những kỹ năng về mặt chuyên môn, theo anh Nam, để theo nghề lập trình game thì bạn cũng cần những kỹ năng mềm khác, cụ thể:
- Kỹ năng phân tích và giải quyết vấn đề một cách logic
Lập trình game cũng giống như giải toán.
Cái bạn nhận được là “đề bài” (ý tưởng, thiết kế). Nhiệm vụ của bạn là sử dụng công cụ/kiến thức để giải quyết vấn đề tốt nhất có thể.
Bạn sẽ nhận được một bản thiết kế UI, trong đó có tính năng user dùng ngón tay để xoay các nhân vật trong game.
Vậy nhiệm vụ của bạn là phân tích xem cần dùng những câu lệnh nào để theo dõi vị trí ngón tay trên điện thoại, câu lệnh nào để xoay nhân vật trong game, cũng như công thức xoay nhanh/chậm ra sao cho hợp lý.
- Kỹ năng “tự giác” học
Anh Nam nhấn mạnh rằng đây là một kỹ năng cần phỉ được đề cao, vì tốc độ thay đổi trong ngành phát triển phần mềm cực kỳ nhanh.
Trong dự án Võ Sĩ Thép, có một tính năng quan trọng là đối kháng trực tiếp qua môi trường Internet.
Anh đã phải tự học lập trình mạng, cách kết nối người chơi với nhau qua Internet và công nghệ Photon server để có thể xây dựng tính năng này.
Ngoài ra, khi một nền tảng bị thoái trào, những kĩ năng, kinh nghiệm mà mình đã tích lũy được trong nền tảng đó sẽ thành vô dụng, bạn phải luôn sẵn sàng để học cái mới.
Kỹ thuật Flash dùng để làm web game từng làm mưa làm gió một thời, giờ gần như đã vắng bóng trên thị trường.
Việc học nhiều, trải qua nhiều công nghệ giúp cho người lập trình game có cơ hội hiểu sâu hơn về các nền tảng toán học cơ bản chung.
Nhờ vậy, mình học hỏi nhanh hơn khi phải tiếp xúc với những công nghệ mới.
Một developer của engine Unity3D khi chuyển sang engine Unreal Engine thì cũng không quá bỡ ngỡ.
- Kỹ năng hợp tác với mọi người
Hẳn bạn đã nghe về việc phải biết cách làm việc với mọi người rất nhiều lần nhưng dù đề cập nhiều đến thế nào cũng không đủ nhấn mạnh rằng đây là một kỹ năng vô cùng quan trọng.
Trừ khi bạn làm việc một mình hoặc làm phần mềm cho mình bạn dùng.
Trong dự án Madzone, có lần QA/QC báo bug nhưng khi kiểm tra thì anh lại không thấy lỗi này xuất hiện. Có thể sẽ có Developer trong tình huống này nghĩ rằng QA/QC cố tình “bới móc” và gây khó khăn cho họ.
Tuy nhiên, anh đã gặp, trao đổi trực tiếp với QA/QC. Hai bên bàn bạc, thống nhất phương án để tái hiện lỗi này với tần suất cao hơn (từ 20% lên 80%). Nhờ vậy mà lỗi được fix sớm.
- Kỹ năng chấp nhận sự khác biệt, chịu thay đổi
Do ngành game khá đặc thù, đòi hỏi sự sáng tạo cao nên theo anh Nam, để làm trong ngành rất cần sự cởi mở, open-minded và chấp nhận sự khác biệt.
Trong một dự án game, bạn sẽ tiếp xúc với rất nhiều kiểu người, đa dạng về tính cách, trình độ, vẻ ngoài cũng như phong cách.
Liệu bạn có gạt bỏ được định kiến ban đầu để thoải mái làm việc với một Designer chỉ học hết lớp 9 và là playboy hạng nặng? Hoặc với một artist tóc vàng hoe, xăm trổ đầy mình? Để có thể nhìn nhận thực sự tài năng/khả năng của họ?
Ngoài ra, sự cởi mở còn thể hiện ở chỗ bạn có khả năng thay đổi để phù hợp hay không.
Anh Nam kể về một người đồng nghiệp của anh, suốt nhiều năm chuyên làm cho các công ty game Âu Mỹ nên có tác phong thoải mái, thường xuyên đi làm với giờ giấc không cố định.
Tuy nhiên, sau này khi làm cho một công ty Nhật, anh ấy đã tự thay đổi để phù hợp. Anh ấy còn chịu khó học thêm tiếng Nhật để giao tiếp trực tiếp với sếp. Và, anh ấy đã thành công! Hiện nay anh ấy là nhân lực chủ chốt của công ty, được đưa sang Nhật để lãnh đạo đội ngũ Developer người Nhật.
Muốn theo nghề lập trình game thì nên bắt đầu từ đâu?
Lập trình game thì cũng là lập trình phần mềm. Để xác định xem mình có phù hợp với nghề lập trình game hay không, trước tiên, theo anh Nam, bạn hãy trả lời 3 câu hỏi sau:
- Bạn có thích trở thành Software Engineer không?
- Có thích chơi game không?
- Bạn đã từng muốn tham gia vào một dự án vừa mang tính thương mại, vừa có tính nghệ thuật (ví dụ như lập nhóm nhạc, làm phim, sáng tác truyện.v.v…) chưa?
Nếu cả ba câu trả lời đều là “có”, thì chúc mừng, bạn đã có thể “một chân” bước vào nghề lập trình game được rồi.
Việc tiếp theo bạn nên trau dồi những kỹ thuật về lập trình, phát triển game:
- Bạn cũng có thể theo học các khóa học lập trình game tại VTC Academy hoặc bộ môn lập trình game của trường Đại học CNTT.
- Các diễn đàn lớn về game như gamedev.net, gamasutra, hay các trang tutorial của các engine nổi tiếng như Unity3D, Unreal… cũng là nguồn resources học lập trình game miễn phí rất tốt.
Tham khảo 30+ tài liệu lập trình game chất nhất
Bạn có thể tham gia vào một vài nhóm nhỏ tự làm game, phát triển những game đơn giản. Sau đó, bạn nên ứng tuyển vào các công ty để có cơ hội làm những dự án lớn hơn.
Game Developer, trong ngành nói gì?
Với hơn 8 năm kinh nghiệm làm trong ngành lập trình game, anh Nam kể về bốn bài học quý giá nhất mà anh nghĩ mọi Game Developer nói riêng, những Developer nói chung, có thể cùng chia sẻ với anh.
- Thứ nhất: Không nên áp đặt suy nghĩ chủ quan của mình lên người dùng
Khi làm game Thuận Thiên Kiếm, nhóm anh Nam đã bỏ rất nhiều công sức để làm những tính năng như dâng hương cúng giỗ vua Hùng, bắt sâu bọ ngày Tết Đoan Ngọ, hoặc tính năng thi cử Trạng Nguyên.
Bọn anh cứ ỷ y là những tính năng này lồng ghép yếu tố lịch sử, văn hóa Việt, rất là hay. Bản thân mình rất thích thì chắc hẳn user cũng sẽ thích.
Nhưng thực tế, khi vận hành game, user không hào hứng và doanh thu do những tính năng này mang lại cũng không khả quan.
Sau này, game được vận hành bởi một nhóm khác. Họ đã nghiên cứu thị hiếu người dùng và đề nghị làm những tính năng khác, phù hợp hơn. Chẳng hạn: Bầu Cua Cá Cọp, quay số may mắn.v.v…
Những tính năng này phù hợp với tâm lý thích may rủi của người Việt. Kết quả là đã đem lại doanh thu lớn cho sản phẩm.
- Thứ hai: Trong một vài trường hợp, vẫn có thể đề cao cá tính của người lập trình game
Suy cho cùng, lập trình game vẫn là sáng tạo. Ngành game luôn có chỗ cho những sản phẩm độc đáo, thể hiện cá tính mạnh của người phát triển.
Game Flappy Bird là một ví dụ. Làm game, ai cũng nằm lòng “chân lý” là gamer không muốn chơi một game quá khó ngay từ đầu. Tuy nhiên, đó lại chính là điểm gây nghiện của game này.
- Thứ ba: Không nên chủ quan
Một trong những sai lầm “nhớ đời” nhất của anh Nam là khi anh làm game Madzone.
Bởi vì nhóm anh đã chủ quan, thay vì phải build và test game cùng lúc trên 2 nền tảng là iOS và Android, nhưng anh chỉ chạy test iOS thôi vì cho rằng game làm bằng engine cocos2dx version 2.x thì sẽ chạy tốt trên mọi nền tảng khác nhau.
Hậu quả là khi phát hành game trên nền tảng Android, game đã không tương thích trên nhiều loại điện thoại khác nhau do cùng OS là Android nhưng mỗi hãng lại thay đổi mã nguồn, UI của OS theo định hướng riêng.
Sau đó, team đã phải giải thích, xin lỗi khách hàng và mất gần 2 tháng, tập trung toàn lực để khắc phục.
Bài học “nhớ đời” mà anh và team rút ra được là luôn luôn không được chủ quan khi làm sản phẩm dạng multiplatform. Cụ thể, nền tảng Android rất đa dạng, và mỗi dòng điện thoại lại rất khác nhau.
Trước khi làm, tốt nhất là nên thống kê những loại điện thoại nào phổ biến nhất trong thị trường mà bạn muốn nhắm đến.
Từ đó, xây dựng kế hoạch build và test thử trên tất cả các devices đó. Bởi vì việc game chạy tốt cho tất cả các điện thoại Android gần như là không thể!
- Thứ tư: Không cần xây dựng một core framework
Nhiều Game Developer muốn thường có xu hướng đề cao tính tái sử dụng (re-usable). Họ luôn muốn xây dựng một framework có thể áp dụng cho nhiều dự án, nhiều quãng thời gian khác nhau.
Tuy nhiên theo cá nhân anh thì việc này có lẽ đúng với các ngành lập trình khác, nhưng không hẳn đúng với ngành lập trình game Việt Nam.
Theo anh, ngành game hiện nay đòi hỏi việc thực hiện các tính năng càng nhanh càng tốt, để có thể thử nghiệm và kiểm tra nhiều ý tưởng khác nhau.
Bên cạnh đó, các công ty Việt Nam cũng thường phải thay đổi business liên tục theo thị hiếu của khách hàng.
Bởi vậy, việc đầu tư thời gian xây dựng một core framework áp dụng chung cho mọi dự án có lẽ không thực sự hiệu quả về mặt chi phí.
Tiểu sử:
Khi vừa tốt nghiệp khoa CNTT Đại học Bách khoa TP. Hồ Chí Minh (2008), anh Trần Mai Nam tình cờ được tuyển vào GSS, bộ phận chuyên làm game của Vinagame (VNG hiện nay) và làm ở đó đến đầu năm 2012, vị trí Senior Game Developer. Sau đó, anh làm dự án mô hình thực tế ảo máy bay F16 cho Singapore Air Force.
Tháng 06/2012, anh quay lại ngành game làm Lead Developer cho Joombi Games. Sau đó, anh đầu quân cho GIANTY Vietnam ở vị trí Game Developer trong suốt hơn 4 năm.
Đến nay, anh vẫn gắn bó với ngành lập trình game và hiện là Game Developer cho AMANOTES.
Nếu bạn nghĩ những chia sẻ này có thể giúp ích cho bạn bè hoặc đồng nghiệp, đừng quên nhấn nút Share bên dưới nhé!
Và đừng quên tham khảo ngay các việc làm lập trình game tại ITviec!