Muốn làm game với njin thì cần đọc được C++, biết CMake dựng ra chương trình, và hiểu shader là gì. Nhóm 13 bài này dạy đúng những phần đó, từ con số không, theo một mạch duy nhất. Không cần chọn "mức" nào: bạn bắt đầu ở bài đầu, và bài nào đã biết thì bỏ qua.
Mọi thứ trong đây đúc kết từ chính njin: các ví dụ lấy hình dạng từ code của engine (handle, context &, CMake của repo, shader hậu kỳ), cộng những pattern game nào cũng gặp. Không bài nào cần njin: chỉ cần trình biên dịch, và CMake ở phần cuối. Cài chúng theo Cài môi trường.
C: nền tảng của mọi thứ (raylib viết bằng C, và API của njin vẫn giữ dáng C ở const char * và printf)
| Bài | Nội dung |
|---|---|
| Bài 1: Chương trình C đầu tiên | Viết, biên dịch, chạy một chương trình C: kiểu dữ liệu, printf, vòng lặp, hàm |
| Bài 2: Bộ nhớ, con trỏ và chuỗi | Con trỏ, mảng, struct, chuỗi C, stack và heap, năm lỗi bộ nhớ kinh điển và cách bắt chúng |
| Bài 3: Nhiều file, preprocessor và liên kết | Nhiều file, header, preprocessor, bốn giai đoạn từ code tới file chạy, lỗi undefined reference |
C++: phần njin dùng hằng ngày
| Bài | Nội dung |
|---|---|
| Bài 4: C++ hơn C ở những gì | Tham chiếu, const, namespace, std::string, std::vector, struct có hàm, nạp chồng, tham số mặc định |
| Bài 5: Giá trị, tham chiếu và quyền sở hữu | Giá trị và tham chiếu, sao chép và di chuyển, RAII, quyền sở hữu, và vì sao njin dùng handle và context & |
| Bài 6: C++ hiện đại trong code njin | auto, structured binding, lambda, khởi tạo chỉ định, initializer_list, constexpr, enum class, template để dùng |
| Bài 7: Đọc lỗi biên dịch và lỗi liên kết | Đọc lỗi biên dịch, lỗi liên kết và lỗi lúc chạy, và quy trình gỡ lỗi với -Wall, printf, gdb |
CMake: dựng và quản lý dự án
| Bài | Nội dung |
|---|---|
| Bài 8: CMake cơ bản | CMakeLists.txt cho chương trình và thư viện, PRIVATE/PUBLIC/INTERFACE, kiểu build, bộ nhớ đệm (cache) |
| Bài 9: CMake cho dự án thật | FetchContent, preset, nhiều thư mục, sao chép assets, và một cửa sổ raylib dựng bằng CMake |
Shader: chương trình chạy trên GPU
| Bài | Nội dung |
|---|---|
| Bài 10: Shader: làm quen với GLSL | Shader là gì, GLSL đủ dùng, một "sân chơi" raylib để viết và sửa fragment shader |
| Bài 11: SDF: vẽ hình bằng khoảng cách | SDF: vẽ hình bằng khoảng cách. Hình tròn, hộp, ghép hình, quầng sáng, bóng đổ, thanh máu không cần ảnh |
| Bài 12: Các mẫu shader hay gặp | Viền tối, sọc CRT, làm mờ, nháy trắng, đổi bảng màu, tan biến, viền, pixel art sắc nét, sóng gợn |
Pattern của game
| Bài | Nội dung |
|---|---|
| Bài 13: Các pattern của game | Bước vật lý cố định, ECS, máy trạng thái, hẹn giờ, event, action thay cho phím |
Không phải mọi người cần đọc hết. Nếu bạn đã biết:
Trang nào cũng nói rõ chuyện này, nhưng tóm lại: mọi ví dụ được chạy trên Windows với GCC 15.2. Các trình dò lỗi bộ nhớ (AddressSanitizer) chạy trong Ubuntu (WSL) vì GCC của Windows ở đây không có. Shader chạy thật trên một card Intel Iris Xe; thông báo lỗi biên dịch shader do driver viết nên sẽ khác chữ trên card khác. MSVC, Clang và macOS chưa thử.
Bạn đủ nền để bắt đầu njin: