Chia cái này thành nhiều lớp
Ở lớp thấp nhất, bạn có các sự kiện đầu vào thô từ HĐH. Đầu vào bàn phím SDL, đầu vào chuột, đầu vào cần điều khiển, v.v. Bạn có thể có một số nền tảng (SDL là mẫu số ít phổ biến nhất, thiếu một số biểu mẫu đầu vào, ví dụ, sau này bạn có thể quan tâm).
Bạn có thể trừu tượng những thứ này bằng một loại sự kiện tùy chỉnh ở mức độ rất thấp, như "nút bàn phím xuống" hoặc tương tự. Khi lớp nền tảng của bạn (vòng lặp trò chơi SDL) nhận đầu vào, nó sẽ tạo các sự kiện cấp thấp này và sau đó chuyển tiếp chúng đến trình quản lý đầu vào. Nó có thể thực hiện những điều này với các cuộc gọi phương thức đơn giản, các hàm gọi lại, một hệ thống sự kiện phức tạp, bất cứ điều gì bạn thích nhất.
Hệ thống đầu vào hiện có công việc dịch đầu vào cấp thấp thành các sự kiện logic cấp cao. Logic trò chơi hoàn toàn không quan tâm rằng SPACE đã được nhấn. Nó quan tâm rằng JUMP đã được nhấn. Công việc của người quản lý đầu vào là thu thập các sự kiện đầu vào cấp thấp này và tạo các sự kiện đầu vào cấp cao. Có trách nhiệm biết rằng phím cách và nút gamepad 'A' đều ánh xạ tới lệnh logic Nhảy. Nó liên quan đến điều khiển gamepad vs chuột và vân vân. Nó phát ra các sự kiện logic cấp cao càng trừu tượng càng tốt từ các điều khiển cấp thấp (có một số hạn chế ở đây, nhưng bạn có thể trừu tượng hóa mọi thứ hoàn toàn trong trường hợp phổ biến).
Bộ điều khiển nhân vật của bạn sau đó nhận các sự kiện này và xử lý các sự kiện đầu vào cấp cao này để thực sự phản hồi. Lớp nền tảng đã gửi sự kiện "Phím xuống phím cách." Hệ thống đầu vào nhận được điều đó, xem xét các bảng / logic ánh xạ của nó và sau đó gửi sự kiện "Nhấn nút nhảy". Bộ điều khiển logic / nhân vật trong trò chơi nhận được sự kiện đó, kiểm tra xem người chơi có thực sự được phép nhảy hay không, và sau đó phát ra sự kiện "Người chơi nhảy" (hoặc chỉ trực tiếp gây ra một cú nhảy), phần còn lại của logic trò chơi sử dụng để làm bất cứ điều gì .
Bất cứ điều gì phụ thuộc vào logic trò chơi đi vào bộ điều khiển người chơi. Bất cứ điều gì phụ thuộc hệ điều hành đi trong lớp nền tảng. Tất cả phần còn lại đi vào lớp quản lý đầu vào.
Đây là một số nghệ thuật ASCII nghiệp dư để mô tả điều này:
-----------------------------------------------------------------------
Platform Abstraction | Collect and forward OS input events
-----------------------------------------------------------------------
| |
| |
\ /
\_/
-----------------------------------------------------------------------
Input Manager | Translate OS input events into logical events
-----------------------------------------------------------------------
| |
| |
\ /
\_/
-----------------------------------------------------------------------
Character Controller | React to logical events and affect game play
-----------------------------------------------------------------------
| |
| |
\ /
\_/
-----------------------------------------------------------------------
Game Logic | React to player actions and provides feedback
-----------------------------------------------------------------------