इसे कई परतों में विभाजित करें।
सबसे निचली परत पर आपके पास OS से कच्चे इनपुट ईवेंट हैं। SDL कीबोर्ड इनपुट, माउस इनपुट, जॉयस्टिक इनपुट, आदि आपके पास कई प्लेटफ़ॉर्म हो सकते हैं (उदाहरण के लिए SDL कम से कम सामान्य-भाजक है, जिसमें कई इनपुट फॉर्म होते हैं, जिन्हें आप बाद में देख सकते हैं)।
आप इन्हें बहुत ही निम्न-स्तरीय कस्टम इवेंट प्रकार के साथ सार कर सकते हैं, जैसे "कीबोर्ड बटन डाउन" या जैसे। जब आपके प्लेटफ़ॉर्म की परत (SDL गेम लूप) इनपुट प्राप्त करता है, तो उसे इन निम्न-स्तरीय घटनाओं को बनाना चाहिए और फिर उन्हें इनपुट मैनेजर पर अग्रेषित करना चाहिए। यह सरल विधि कॉल, कॉलबैक फ़ंक्शंस, एक जटिल घटना प्रणाली, जो भी आपको सबसे अच्छा लगता है, के साथ कर सकते हैं।
इनपुट सिस्टम में अब निम्न-स्तरीय इनपुट को उच्च-स्तरीय तार्किक घटनाओं में बदलने का काम है। खेल तर्क बिल्कुल ध्यान नहीं देता है कि SPACE दबाया गया था। यह परवाह करता है कि JUMP को दबाया गया था। इनपुट प्रबंधक का काम इन निम्न-स्तरीय इनपुट घटनाओं को इकट्ठा करना और उच्च-स्तरीय इनपुट घटनाओं को उत्पन्न करना है। यह जानने के लिए जिम्मेदार है कि तार्किक कमांड जंप के लिए स्पेसबार और 'ए' गेमपैड बटन दोनों मैप करते हैं। यह गेमपैड बनाम माउस लुक कंट्रोल आदि से संबंधित है। यह उच्च-स्तरीय तार्किक घटनाओं का उत्सर्जन करता है जो निम्न-स्तर के नियंत्रणों से जितना संभव हो उतना सार है (यहां कुछ सीमाएं हैं, लेकिन आप चीजों को पूरी तरह से सामान्य मामले में दूर कर सकते हैं)।
आपका चरित्र नियंत्रक तब इन घटनाओं को प्राप्त करता है और वास्तव में प्रतिक्रिया देने के लिए इन उच्च-स्तरीय इनपुट घटनाओं को संसाधित करता है। प्लेटफ़ॉर्म की परत ने घटना को "कुंजी डाउन स्पेसबार" भेजा। प्राप्त इनपुट प्रणाली, इसकी मैपिंग टेबल / तर्क को देखती है, और फिर घटना को "दबाया कूद" भेजती है। खेल तर्क / चरित्र नियंत्रक उस घटना को प्राप्त करता है, जाँचता है कि खिलाड़ी को वास्तव में कूदने की अनुमति है, और फिर "खिलाड़ी कूद गया" घटना का उत्सर्जन करता है (या बस सीधे कूदने का कारण बनता है), जो बाकी खेल तर्क का उपयोग करता है जो कुछ भी करने के लिए ।
खेल तर्क पर निर्भर कुछ भी खिलाड़ी नियंत्रक में चला जाता है। कुछ भी ओएस आश्रित प्लेटफॉर्म परत में चला जाता है। बाकी सब इनपुट मैनेजमेंट लेयर में चला जाता है।
इसका वर्णन करने के लिए यहां कुछ शौकिया ASCII कला है:
-----------------------------------------------------------------------
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
-----------------------------------------------------------------------