Creating Game Engine From Scratch