The engine is the interface between the game logic and the hardware (often there's still an API like OpenGL or DirectX between engine and hardware, but we'll ignore that for now). The Hardware gives the engine the user's input, the engine then formats it and forwards it to the game logic. The game logic then interprets the input (e.g. stick up -> walk forward) and tells the engine the result ("Entity 0 just moved forward .25 units and changed it's animation to walk0, frame 1.7") The Engine then determines what that means (i.e. which polygons belong to said entity, how frame 1.7 looks and so on) and forwards that to the hardware ("Okay, draw a poly there, there, there and there, add lights there and there, etc."). Of course, this is a highly simplified version of the processes that are involved in the hardware and software and often parts are mixed and intertwined (e.g. does the engine or game logic handle particles?). If you need it in more detail, ask around on gamedev.net.