Bàn về lập trình game
TIL
720
Male avatar

naphucco viết ngày 22/01/2019

alt text

Lập trình game là gì ?

Lập trình là một ngành rất rộng bao gồm nhiều mảng, trong đó lập trình game được coi là một một nhánh của kỹ thuật phần mềm(software engineering). Về cơ bản, lập trình game sẽ viết code để làm mọi thứ trong trò chơi, từ việc nhận tương tác từ bên ngoài như các phím điều khiển, gamepad ... đến tất cả những gì hiển thị trên màn hình. Bao gồm hoạt động của tất cả mọi thứ. Một số lập trình viên khác sẽ lập trình (code) thứ gì đó ngoài game chẳng hạn như các công cụ mở rộng để tạo trò chơi hoặc kiến trúc mạng …

alt text
Một chương trình làm game khá phổ biến - game maker (nguồn gamemaker.com)

Khác với phần mềm, lập trình game không được dạy một cách rộng rãi. Nhất là ở nước ta, hầu hết mọi lập trình viên game đều tự học qua các video hướng dẫn kiểu “How to” trên mạng, một số qua sách vở cách hạn chế. Tại Việt Nam cũng có một số trường với những khóa học cơ bản, chẳng hạn như Aptech, Itplus … và hầu hết chú trọng vào các chương trình làm game (framework) nổi tiếng hơn là từ cơ bản.

Những yêu cầu trong dev game

Là một người lập trình game. Bạn phải thực sự yêu thích trò chơi, với nhiều căng thẳng tập trung vào các kế hoạch chưa hoàn thành, sử dụng nhiều công nghệ, những ý tưởng chưa từng được thực hiện. Ví dụ bạn lên kế hoạch cho một tính năng phụ thuộc vào một tính năng chưa được phát triển. Đôi khi bạn phụ thuộc vào nhà phát hành. Đôi khi một tính năng sẽ không hoạt động theo lịch trình và bạn sẽ gặp khủng hoảng. Khi bạn hoàn thành trò chơi nó chỉ mới là một phần chặng đường. Bạn phải cập nhật các bản sửa lỗi hoặc các gói nội dung mới cho trò chơi.

alt text
Một lỗi khá phổ biến trong trò chơi Battlefield 1 (nguồn egmnow.com)

Trong tất cả các ngành lập trình, code game có thể là một phần khó khăn và thử thách nhất. Bởi vì chúng ta sẽ cần nhiều kiến thức và các kỹ năng khác nhau như đồ họa, chuyển động, va chạm, thuật toán, lập trình mạng, vật lý, cơ sở dữ liệu, giao diện người dùng, xử lý audio, đầu vào và thậm chí là cả thiết kế game (design) nữa. Giống như chơi game, chúng ta còn cần có niềm đam mê đối với game, chúng ta muốn phát triển những gì, chúng ta có thể làm gì, nếu không chúng ta sẽ gặp rất nhiều vấn đề ngay cả khi bạn chỉ làm theo design của một ai đó (một kinh nghiệm đau thương mà mình đã gặp phải rất nhiều, phải đập đi làm lại rất … rất nhiều lần). Bạn cần có khả năng viết thậm chí là “sao chép” hiệu quả, nhanh chóng và có khả năng sử dụng lại.

alt text
Một minh họa về thuật toán tìm đường (nguồn stackoverflow.com)

Một số kiểu lập trình game

Lập trình viên game được chia ra làm nhiều loại, đối với các công ty càng lớn càng có sự chuyên biệt. Một số loại lập trình viên game là:

  • Game programmer
  • AI programmer
  • Engine programmer
  • Network engineer
  • Graphics programmer

Đối với một nhóm nhỏ (indie studio), chúng ta thường có ít nguồn lực và nhân lực. Do đó chúng tôi thường phải sử dụng một framework có sẵn, mỗi người phải đảm nhận nhiều vào trò, bao gồm tất cả các vai trò trên. Mỗi người phải tự học mọi thứ và thay đổi liên tục.

Trong blog của mình, vừa chú trọng vào framework phổ biến nhất hiện nay đối với các indie studio nhỏ là Unity3D với ngôn ngữ c# với những bài viết từ cơ bản đến nâng cao. Ngoài ra mình cũng sẽ có những bài viết liên quan đến các vấn đề khác của lập trình game, một ít về game design. Và một vài vấn đề linh tinh khác mà mình thấy cần thiết cho một lập trình viên game.

Bài viết có lấy nhiều nguồn từ Wikipedia, Quora và một số trang khác.

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

Male avatar

naphucco

1 bài viết.
0 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Bài viết liên quan
White
0 4
fCC: Technical Documentation Page note So I have finished the HTML part of this exercise and I want to come here to lament about the lengthy HTML ...
HungHayHo viết 1 năm trước
0 4
White
2 0
I used Spring boot, Hibernate few times back then at University, I'v started using it again recently. In this (Link), I want to check how Spring J...
Rey viết 7 tháng trước
2 0
White
22 1
Toán tử XOR có tính chất: + A XOR A = 0 + 0 XOR A = A Với tính chất này, có thể cài đặt bài toán sau với độ phức tạp O(N) về runtime, và với O(1)...
kiennt viết gần 3 năm trước
22 1
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


Male avatar
{{userFollowed ? 'Following' : 'Follow'}}
1 bài viết.
0 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!