Membagi ini menjadi beberapa lapisan.
Pada lapisan terendah Anda memiliki peristiwa input mentah dari OS. Input keyboard SDL, input mouse, input joystick, dll. Anda mungkin memiliki beberapa platform (SDL adalah penyebut yang paling tidak umum yang tidak memiliki beberapa bentuk input, misalnya, yang mungkin nanti Anda pedulikan).
Anda dapat mengabstraksi ini dengan jenis acara khusus tingkat sangat rendah, seperti "tombol keyboard bawah" atau sejenisnya. Ketika lapisan platform Anda (loop game SDL) menerima input, itu harus membuat acara tingkat rendah ini dan kemudian meneruskannya ke manajer input. Hal ini dapat dilakukan dengan panggilan metode sederhana, fungsi panggilan balik, sistem acara yang rumit, apa pun yang paling Anda sukai.
Sistem input sekarang memiliki tugas menerjemahkan input tingkat rendah ke peristiwa logis tingkat tinggi. Logika game sama sekali tidak peduli bahwa SPACE ditekan. Itu peduli bahwa JUMP ditekan. Tugas manajer input adalah mengumpulkan acara input tingkat rendah ini dan menghasilkan acara input tingkat tinggi. Ini bertanggung jawab untuk mengetahui bahwa spasi dan tombol gamepad 'A' keduanya memetakan ke perintah logis Jump. Ini berkaitan dengan kontrol tampilan gamepad vs mouse dan sebagainya. Ini memancarkan peristiwa logis tingkat tinggi yang seabstrak mungkin dari kontrol tingkat rendah (ada beberapa batasan di sini, tetapi Anda bisa mengabstraksi berbagai hal secara menyeluruh dalam kasus umum).
Pengontrol karakter Anda kemudian menerima peristiwa ini dan memproses peristiwa input tingkat tinggi ini untuk benar-benar merespons. Lapisan platform mengirim acara "Key down spacebar." Sistem input menerima itu, melihat tabel pemetaan / logikanya, dan kemudian mengirimkan acara "Lompatan yang ditekan." Kontroler logika / karakter permainan menerima peristiwa itu, memeriksa apakah pemain benar-benar diizinkan untuk melompat, dan kemudian memancarkan peristiwa "Pemain melompat" (atau hanya secara langsung menyebabkan lompatan terjadi), yang digunakan oleh sisa logika permainan untuk melakukan apa pun .
Apa pun yang bergantung pada logika game masuk ke pengontrol pemain. Apa pun yang bergantung pada OS berlaku di lapisan platform. Semua sisanya masuk ke lapisan manajemen input.
Inilah beberapa seni ASCII amatir untuk menggambarkan ini:
-----------------------------------------------------------------------
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
-----------------------------------------------------------------------