I've always been a gamer and over the years I had in my "drawer" ideas for about 30 games, 10 of them were quite thought thru (not just name + rough idea) and 5 of them even had a story and everything, so I started making them, but after a while failed miserably.
My programming skills are enough for apps, but not for games, and having bad experience with strangers developers I didn't search for anybody with these skills. I got my two cents by Ants (Mravenci) remake, which is a card game and doesn't really need a game engine. I created a primitive Dungeon Master-ish engine, but it didn't have a potential. I made it as a WinForms app, with game viewport consisting of 17 image holders. 8 larger (60x60) for close-up walls and 9 smaller (20x20) for more distant walls. Controller logic relied on a map, where I checked rotation of the character and his field of view.
After a decade of tries and fails in different programming languages (BASIC, Pascal, C++, web) I decided to make just one game (but finish it) and cherry-pick all suitable ideas and good parts from all these games and put them into a single game. Therefore Quly for me is the Ultimate game and therefore it's open world and cross-genre.
I didn't want to use some bloated single-purpose "game maker", that is nothing like stuff I know and will offer 90 % of features I'll never use, with bad optimization for low end computers.
So I settled for 2D with two modes: top-down view outside, plus side view inside or during missions. I'm still quite happy with this idea and I'll use it in a "lightweight Quly" called Qulyo [Coolio], e.g. for browsers and mobile devices, because it's easier to control.
I thought about a perfect main character and decided to go with a simple sphere. It will be easy to make, with lower polygon count than a person or a creature (although a nice sphere is often quite hi-poly) and it can roll really fast, which can alter as a car ride. NPCs will be spheres too.
I also thought about a name for the game, which will reflect the main character decision. All stuff I do somehow start with "Q" and many, many years ago I felt in love with name of an old Czech game "Koules" (for UNIX, OS/2 and Linux). It's Czenglish plural of "koule", which means "sphere" in Czech. I like the fusion of a Czech word with English grammar. After many variations I ended up with "Quly" (and "Qule" for the spheres).
About two years after my tries with XNA my younger brother showed Unity. It was quite funny, when I described my idea of the game to him and he put the RollerBall Character into the scene, which was pretty much it :-)
My first tries was OK, but I was lost. I was otherwise engaged at that time, so I decided to continue when Unity 5 is out.
The release happened few months later. My brother gave me a nice jump-start and I started to build a learning version of Quly. I always do it this way, so I'm not affraid to mess it up, because for the real thing I'll start again from scratch.
I really appreciated YouTube tutorials, especially those from Unity team itself. Unfortunately, some of them still used legacy features, which has been often replaced by newer approaches in Unity 5. Later I often followed the tutorial and spend few hours of fiddling and tweaking, but ultimately (and often accidentally) found out it's legacy and therefore not recommended for a new game. Damn!
But I realized how foolish I was for rejecting pre-made 3D engines. I'll never be good enough to make an optimized game engine by myself. In Unity I simply make a short script, attach it to a GameObject and test it. It's really fast, straight forward and I love it! It allows me to focus on gameplay and game features only, without coding collision detection, physics, vector maths and tons and tons of other stuff I'd have to make e.g. in XNA.
Also I don't feel Unity is pushing anything, it's basically "just" a 3D engine with scripting. If I'd like to make program like Google Earth or 3D draw, instead of a game, I can with no problem. What amazes me are all those built-in functions, which makes coding much quicker. I always wrote tons of util methods, in Unity I have only "playSoundAtPoint" (built-in doesn't work as expected) and then serializable classes, that are not serializable in UnityEngine (like Color or Transform/Vector3).
Also, C# is my favorite programming language and the system of scripts and stuff in Unity really suits me. And cooperation with my favorite 3D software of all times, Trimble SketchUp Make, puts me on cloud nine! :-)