1. Vòng lặp game (Game Loop)
- Hầu hết mọi game đều được tạo ra bằng 1 vòng lặp vì vậy việc hiểu được vòng lặp game giúp cho việc xây dựng game một cách trơn tru và tiện lợi hơn. Nhiều bạn hay nhầm lẫn vòng lặp game (Game Loop) và vòng đời game (Game Lifecycle). Thì ở đây Game Loop là 1 vòng lặp while để thự hiện việc update và vẽ liên tục và kết thúc khi cửa sổ game bị tắt. Còn Game Lifecycle ám chỉ việc vòng đời của game từ lúc được phát triển cho đến lúc không còn được phát triển nữa, vòng đời game có thể dài vài tháng vài năm đôi khi chỉ được vài ngày.- Dưới đây là Diagram về Game Loop và đây cũng là trình tự vòng lặp của framework mình sẽ dựng trong chủ đề này:
- (1) Init window, device: vì chúng ta xây dựng 1 game bằng DirectX chạy trên nền window nên chúng ta sẽ dựng trên win32 và bằng Visual Studio. Chúng ta sẽ init windows win32, các sự kiện và sẽ sử dụng những thư viện của DirectX để hỗ trợ việc vẽ hình ảnh lên màn hình, device ở đây chính là device của DirectX.
- (2) Update: đây sẽ là 1 vòng lặp white true để thực hiện vẽ, ở đây sẽ update các thông tin cần thiết trước khi vẽ.
- (3) Draw: sau khi update xong thì sẽ thực hiện việc vẽ hình ảnh lên màn hình thông qua các thư viện được hỗ trợ bởi DirectX. Sau khi vẽ xong thì sẽ quay lại gọi hàm update thì quá trình từ update rồi draw được gọi là 1 frame, và chỉ số FPS (Frame per Second) chính là quá trình
update và draw như 60 FPS tương ứng việc update và draw được thực hiện 60 lần trong 1 giây.
- (4) Exit: thoát khỏi cửa sổ game có rất nhiều cách để exit như đóng cửa sổ, kết thúc vòng whilte, hay thậm chí là game bị crash.
2. Game Framework
- Dưới đây là sơ đồ Diagram về framework mình sẽ xây dựng. đây là sơ đồ tổng quát và mình sẽ nói chi tiết hơn vào những bài sau, về cấu trúc game này thì có rất nhiều cách chia và cách làm và mình làm theo hướng đơn giản, nếu bạn muốn tìm hiểu thêm các kiểu kiến trúc game khác thì có thể google search về Game Architeture.- Trong framework của mình thì 1 game sẽ có bao gồm nhiều Scene mà được quản lý bởi SceneManager. SceneManager có SceneTrainsition giúp việc chuyển đổi Scene và Shader Programe dùng để tạo các hiệu ứng chuyển Scene đơn giản.
- Scene chính là nơi thể hiện màn hình của game, có nhiều Scene như PlayScene, TutorialScene, HighScoreScene,… có thể hiểu mỗi Scene là một màn hình của game
- Input: sẽ sử lý Input từ bàn phím và chuột sau đó gọi đến Input của Scene để có thể xử lý input.
- Graphic Device: device để vẽ các hình ảnh từ scene lên màn hình.
- Map: map của game chứa thông tin về vẽ map lên màn hình cũng như các body trong việc xác định các vật thể va chạm. Trong map sẽ sử dụng kĩ thuật Quadtree để quản lý các object tối ưu năng xuất trong việc xét va chạm.
- Camera: camera của Scene giúp trong việc chiếu map từ World sang màn hình windows. Thật ra sử dụng thuật toán dời hình ở Camera để vẽ các object lên màn hình.
- Output: xuất ra âm thanh để tạo tính hấp dẫn cho game.
- Collision: là hệ thống xác định và xử lý va chạm của các object trong map
- Effect: sử dụng HLSL để tạo ra các effect truyền các vertex data xuống card đồ họa và xử lý hình ảnh để tạo nên các effect. ở đây sử dụng cho 2D còn đúng là phải dùng cho 3D mới chuẩn.
Lạm dụng tiếng Anh quá bác
ReplyDelete