Làm game bằng ngôn ngữ Go dành cho người mới bắt đầu hoàn toàn
(threedots.tech)Tìm lại niềm vui với việc viết code: vượt qua burnout bằng phát triển game
- Một lời than phiền thường thấy trong cộng đồng lập trình viên: mất đi đam mê với việc viết code
- Mẹo để giải tỏa burnout: tự làm game của riêng mình để có thể tận hưởng việc viết code trở lại
- Chia sẻ trải nghiệm cá nhân về việc mê lập trình nhờ phát triển game
- Khuyến nghị phát triển game bằng ngôn ngữ Go và thư viện Ebitengine
Nguyên lý cơ bản của phát triển game
- Tương tự phim ảnh, game là tập hợp các hình ảnh liên tiếp nhanh chóng (frame)
- Game tạo hình ảnh theo thời gian thực và thay đổi frame tiếp theo theo đầu vào của người dùng
- Về cơ bản, game là một vòng lặp vô hạn, lặp lại việc vẽ hình ảnh và cập nhật logic
Thiết lập dự án
- Tạo mô-đun Go và thêm thư viện Ebitengine
- Chạy một cửa sổ trống với phần triển khai tối thiểu của giao diện game
Tải tài nguyên
- Khuyến nghị dùng đồ họa do lập trình viên tự làm hoặc tận dụng tài nguyên miễn phí
- Dùng gói
embedđể tải tài nguyên vào mã
Vẽ hình ảnh
- Thực hiện toàn bộ thao tác vẽ bên trong phương thức
Draw - Dùng phương thức
DrawImagecủaebiten.Imageđể vẽ một hình ảnh lên trên hình ảnh khác - Điều chỉnh vị trí, xoay và thay đổi kích thước của hình ảnh thông qua cấu trúc
DrawImageOptions
Logic game
- Cấu trúc
Gamegiữ trạng thái game và thay đổi trạng thái bằng phương thứcUpdate - Ví dụ, duy trì vị trí của người chơi bằng vector (X, Y)
Chuyển động
- Triển khai chuyển động bằng cách cập nhật vị trí của người chơi trong phương thức
Update - Thay đổi vị trí người chơi theo đầu vào từ bàn phím
Bộ đếm thời gian
- Triển khai timer để thay đổi logic theo thời gian trong game
- Dùng cấu trúc
Timerđể kích hoạt sự kiện theo những khoảng thời gian nhất định
Đối tượng game
- Quản lý bằng cách đóng gói các đối tượng game như người chơi
- Mỗi đối tượng có các phương thức
UpdatevàDrawriêng
Tạo đối tượng
- Tạo đối tượng thiên thạch và spawn ở rìa màn hình
- Cấu trúc
Gametheo dõi các đối tượng thiên thạch
Bắn đạn
- Triển khai logic bắn đạn và timer hồi chiêu
Playertạo đạn cònGametheo dõi chúng
Phát hiện va chạm
- Triển khai cấu trúc
Rectvà phương thứcCollider()để phát hiện va chạm - Kiểm tra va chạm giữa các đối tượng trong
Updatecủa game
Ý kiến của GN⁺
Điểm quan trọng nhất của bài viết này là đưa ra một cách để các lập trình viên vượt qua burnout và tìm lại đam mê với việc viết code. Phát triển game mang đến cơ hội luyện tập kỹ năng lập trình thông qua những dự án sáng tạo và thú vị, đồng thời học thêm ngôn ngữ hoặc thư viện mới. Bài viết này truyền cảm hứng để các lập trình viên có thể một lần nữa tận hưởng việc viết code như một sở thích, đồng thời khơi gợi hứng thú bằng cách giải thích cách tiếp cận cơ bản trong phát triển game với ngôn ngữ Go và thư viện Ebitengine.
1 bình luận
Ý kiến trên Hacker News