Most engines seem to have this. Input subsystem >> Keyboard/Mouse/Game Pad Network Subsystem >> internet or lan update subsystem >> This should not be in the game loop >> Should be a seperate module to begin with >> Pay attention to code organization. display subsystem >> 32 Hardware / Framebuffer Audio Sybsystem >> sound card main loop >> Just a while loop that runs the entire time anywhere from 30 to 60 times per second. Invokes correct routines to gather input from the player and network updates the status of all objects in the game draws the next frame of graphics and produces audio. seperating meu system from main loop is good, but can complicate the code Networking information should usually be grabed first Graphics should be usually grabed last -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -lSDL -lpthread