Game programming from scratch