My first exposure to actual programming began when I was about 10. My father had bought me an electronics kit. With it I was able to build an analog computer circuit known as a logic gate. Without killing you with the highly technical uses of a logic gate, it was basically an on off switch that had rules.
I continued to be fascinated with the logical way in which a computer program is able to use information. That is not to say that the answers the logic provided was always correct, but the logic was always...logical. Logic is a huge misnomer. You can think of something logically and still get the wrong answer. I am getting into the weeds on this one, so I will just leave it there. For now.
Many of the things I would program in my spare time were simulations. Things like a ball dropping and bouncing, or a ball flying through the air. This all required that I build an environment that took all of the properties of physics into account. To do this required a great deal of programming which in turn made the process of building a game even more of a challenge. I did manage to make a few game-like simulations, but nothing that was astounding.
Game Engines remove some of the tedious aspects of building an environment that seems realistic by providing a framework that includes the physics required for many game routines. Game Engines also provide the framework for getting user input, translating that input into graphical output, and handling the many sub-routines that a programmer had to put together from scratch. The question becomes, can you do what a Game Engine does from scratch? Of course you can. You can also build your own Operating System, but why?
There are many Game Engines on the market. I have chosen Unity for two reasons. Reason one...Until I make $100k with Unit, it is free....reason 2...see reason 1.