Bài viết được dịch từ trang web Makeuseof
Hơn một thập kỷ trước đây, tôi đã tự học những kiến thức cơ bản về lập trình và phát triển game thông qua các nguồn tài nguyên hướng dẫn ít ỏi mà mình có thể tìm thấy trên Internet. Kể từ đó, ngành phát triển game đã thay đổi rất nhiều, và ai cũng có thể bắt đầu tạo ra trò game của riêng họ chỉ trong vòng vài tuần với một số tìm kiếm trên Google. Nhưng nếu bạn muốn bắt đầu phát triển các trò game của riêng mình, nhưng không biết bắt đầu từ đâu. Thì bạn sẽ phải tham khảo kinh nghiệm của ai?
Trong thế giới lập trình, người ta thường nói rằng một khi bạn đã học được một ngôn ngữ lập trình thì bạn có thể học được tất cả những thứ khác. Ý kiến đó cũng có một phần chính xác. Điều khó khăn nhất của lập trình - đặc biệt là đối với lập trình game - thì không phải chỉ là việc viết code, mà phải học về mô hình làm thế nào mà một trò game hoạt động và cách sử dụng những ngôn ngữ để tổ chức và biến những suy nghĩ của bạn thành hiện thực.
Vì vậy, khi tìm kiếm một series hướng dẫn về phát triển game có nội dung tốt, bạn sẽ muốn ai đó sẽ dạy cho bạn về cách thực hành (practices) và cả cách nghĩ (mentality) để lập trình tốt, bởi vì bạn có thể chuyển những thực hành đó sang bất kỳ ngôn ngữ hay nền tảng nào, cho dù đó là C++, C#, Python, Java, hoặc bất cứ ngôn ngữ nào khác mà bạn có ý định sử dụng. Dưới đây là một số các hướng dẫn hữu ích nhất mà tôi đã tìm thấy trong chuyến hành trình tự học của mình.
Các bài hướng dẫn trên Lazy Foo
Trang web Lazy Foo đã tồn tại và phát triển qua rất nhiều năm, và nó là một trong những nguồn tài nguyên chính mà tôi sử dụng khi lần đầu tiên nhảy vào lĩnh vực lập trình game. Anh ta viết rất nhiều bài hướng dẫn trên cả SDL và OpenGL, hai thư viện đồ họa đa nền tảng (cross-platform) và có thể xử lý đồ họa 2D và 3D, tương ứng. Các bài hướng dẫn được viết rất tốt và dễ hiểu sẽ giúp bạn làm quen với cả hai thư viện bằng cách sử dụng ngôn ngữ C++ như là phương tiện lập trình.
Tôi đề xuất bạn nên bắt đầu với các bài viết chung trước, sau đó chuyển sang các bài hướng dẫn SDL, rồi mới sang các bài hướng dẫn OpenGL. Nói đúng ra, đồ họa 2D đòi hỏi kiến thức toán học ít hơn vì vậy sẽ đơn giản để nắm bắt hơn so với 3D, đó là lý do tại sao tôi khuyên bạn nên bắt đầu theo lộ trình trên. Nhưng nếu tự tin, bạn có thể nhảy thẳng vào OpenGL cũng không sao.
Các bài hướng dẫn của Aaron Cox
Các hướng dẫn trên trang web của Aaron Cox là một nguồn tài nguyên quan trọng khác mà tôi sử dụng khi học lập trình video game. Các bài hướng dẫn của anh tập trung vào lập trình game 2D bằng cách sử dụng thư viện đồ họa SDL, vì vậy bạn có thể sử dụng các hướng dẫn này kết hợp với các tài liệu của Lazy Foo ở trên. Aaron cung cấp một cái nhìn tổng quan và nền tảng về SDL, nhưng các bài viết ở đây không sâu sắc như trang Lazy Foo.
Lý do tôi khuyên bạn nên vào trang web của Aaron vì ở đây có một phần chứa toàn bộ các trò game mẫu mà anh ta tạo ra bằng cách sử dụng SDL. Anh có những hướng dẫn đầy đủ để tạo một bản sao của các game nổi tiếng như Tetris, Pong, và Breakout. Đây là những kiến thức quan trọng đối với tôi khi là một lập trình viên mới bước vào lĩnh vực phát triển game, vì chúng đã dạy cho tôi về game logic, draw calls, entity classes, code organization, và nhiều thứ khác nữa. Bạn cần phải có một tư duy và mô hình của một "lập trình viên game", và các hướng dẫn này sẽ giúp bạn đạt được điều đó.
Game Development @ Tuts+
Tuts+ là một nguồn tài nguyên phong phú để học về các kỹ năng liên quan đến máy tính, và phát triển game chỉ là một trong những lĩnh vực mà họ giảng dạy. Phần phát triển game của Tuts+ có một bài giới thiệu "Start Here" rất tuyệt vời, bạn sẽ tìm thấy rất nhiều loại bài viết ở đây và một danh sách liên kết đến những tài liệu học lập trình game khác.
Tuts+ có hàng trăm bài viết về phát triển game bao gồm nhiều chủ đề từ bắt đầu một dự án mới, lập kế hoạch và tổ chức, viết code thực sự, cho đến khi hoàn thành một trò game trước khi chuyển sang dự án tiếp theo của bạn. Trang web này hơi khó điều hướng vì nó được thiết lập dạng blog, nhưng các bài viết ở đây cực kỳ chi tiết và dễ dàng để làm theo.
GameDev.Net
Cuối cùng, chúng ta đến với GameDev, một cộng đồng trực tuyến của các nhà phát triển game từ khắp nơi trên thế giới. Sẽ là một thiếu sót lớn khi nói về các trang web phát triển game mà không nhắc đến GameDev, nơi tập trung cả những nhà phát triển game mới vào nghề cho đến người dày dạn kinh nghiệm. Trang web này đã tồn tại gần 15 năm nay, và nó vẫn đang phát triển ngày càng lớn mạnh.
Tại GameDev, bạn sẽ tìm thấy rất nhiều bài viết dành cho người mới bắt đầu, nhưng cách tốt nhất để hưởng lợi là ghé thăm diễn đàn của họ. Có hàng tá các phần khác nhau bao gồm các chủ đề như "lập trình game từ đầu", những câu hỏi cho người mới bắt đầu, tìm kiếm sự giúp đỡ của các lập trình viên khác, phần kinh doanh và tư vấn pháp lý trong việc phát triển game, và thậm chí cả các workshop để giúp mài giũa kỹ năng của bạn với các ngôn ngữ và engine khác nhau. Bạn sẽ cảm thấy mê mẩn với trang web này. Đây là một nguồn tài nguyên đáng kinh ngạc.
Các công cụ phát triển game
Hầu hết các bài hướng dẫn "lập trình game" bạn tìm thấy trong các trang web ở trên thì bản chất là về phát triển các engine. Họ dạy bạn làm thế nào mà phần đồ họa được vẽ lên màn hình, làm thế nào để nhận được tín hiệu đầu vào từ bàn phím và chuột, làm thế nào để xử lý các network packet, v.v... Nếu bạn có ý định tham gia vào ngành công nghiệp game như là một nhà phát triển engine, thì kiến thức đó sẽ hữu ích, nhưng nếu tất cả bạn muốn làm là tạo ra một trò chơi, thì bạn không thực sự cần phải biết những kiến thức chi tiết đó. Cái bạn cần là một engine đã được xây dựng bởi một ai đó.
Đó là lý do tại sao bạn nghe rất nhiều câu chuyện trong phát triển game là về các "game engine" như Unreal Engine, CryENGINE, Havok Engine, Unity, v.v... Những engine này sẽ xử lý các chi tiết phía sau hậu trường cho bạn, cho phép bạn tập trung vào gameplay và nội dung thực tế. Tôi cũng đã có bài viết về 5 công cụ phát triển game miễn phí tốt nhất hiện nay và bạn cũng nên xem qua, đặc biệt là nếu bạn là một newbie mới tham gia vào lĩnh vực lập trình game.
Kết luận
Phát triển game là công việc rất khó, nhưng với các trang web và tài nguyên trong bài viết này sẽ giúp bạn học một cách nhanh nhất có thể. Hãy chuẩn bị tinh thần để khổ luyện học tập vì nó không hề dễ dàng - nhưng nếu bạn quyết tâm và kiên trì thì sớm muộn gì cũng sẽ gặt hái thành công.
Có những nguồn tài nguyên nào khác dành cho các lập trình viên mới bắt đầu phát triển game? Bạn đã sử dụng các nguồn tài nguyên nào trước đây? Hãy chia sẻ suy nghĩ và kinh nghiệm của bạn với chúng tôi trong phần bình luận phía dưới nhé!
Bình luận