1 game theo mình có thể chia ra nhiều phần:
level 1: Core engine: vẽ (renderer), bắt events/inputs (chuột nhấn, phím nhấn), xử lý game logic, v.v…
level 2: Basic game engine: animation, physics, xử lý input, state engines, v.v… Animation sẽ cần phần vẽ ở level 1 để vẽ từng frame, phần xử lý input ở level để chuyển từ ví dụ đi_bộ
sang nhảy
; Physics ví dụ như lực tác động khi bắn 1 viên đạn, rồi viên đạn bắn trúng vật X thì X sẽ ra sao, rồi lực ma sát, v.v… phần này cần xử lý logic ở level 1.
level 3: Game engine: sử dụng những thứ căn bản ở level 2, cung cấp thêm những thứ cần thiết như animation frames, 3d objects (gọi chung những thứ này là sprites), tùy chỉnh trọng lực lớn mạnh thế nào, ma sát của từng material thế nào, mỗi quái có mỗi skill khác nhau, main char có skill gì, v.v… để tạo ra engine riêng cho game mình.
level 4: Game design: sử dụng game engine có từ level 3, tạo ra từng level hay map cho game, tùy chỉnh độ khó của boss, chỉ số của quái, của người chơi, v.v…
SDL2 dừng ở mức level 1. Tức là bạn phải viết level 2, 3, 4 để viết 1 game hoàn chỉnh.
Cocos2D/Unity/Unreal, v.v… dừng ở mức level 2. Muốn viết game hoàn chỉnh thì bạn phải cung cấp sprites, tùy chỉnh các thông số để tạo ra cái game engine riêng, rồi từ game engine này tạo ra game hoàn chỉnh. (level 3, 4)
level càng thấp thì càng mất công phát triển, nhưng bù lại mình có quyền tùy chỉnh nhiều hơn. Vd level 2 có thể có nhiều thứ bạn ko cần (ví dụ bạn viết game 2D thì ko cần phần 3D trong level 2 (Unreal engine sử dụng vẽ 3D cho 2D), hay game bạn là game đơn giản ko cần physics thì ko cần phần physics trong level 2, v.v…) thì khi viết từ level 1 lên bạn có thể bỏ qua những thứ đó, sản phẩm cuối cùng sẽ nhẹ hơn rất nhiều.