I've learned to hate my game engine. Struggling with the technology has been by far the single most time consuming element of developing Twisty's Asylum Escapades. Of course it didn't help that we had quite a lot to learn about all of the tools that we were working with and neither one of us had any previous game development experience.
We used the Torque Game Engine to develop the game. Long before Unity was a viable option as a game engine, Torque was one of, if not the first 3D engine that was commercially available to indies. If I recall correctly my associate and I bought our first copy of Torque back in 2002, when we were just beginning to discuss the idea of making a game and we've been working with it ever since.
Fortunately it has been upgraded since then. Unfortunately it hasn't been upgraded enough and we've seen it fall into relative obscurity over the years in the face of the other, more currently popular engines. Despite this we continued using it because, as we learned from Duke Nukem Forever, it can be a monumental setback to change engines in the middle of a project. Indie gaming projects are delicate things as it is, and we were far along enough that we knew it would be a bad idea to do that.
Game engines can be tricky things, and the one that you choose will have a lot to do with determining how your game comes out, or even what type of game you will make. The engine that you use to create your game will also have a great influence on what platforms your game can be ported to.
Although it is possible to create your own game engine, for indie developers this is not very practical. From what I've seen, publicly available game engines seem to be getting better and better and the practice of programming your own is falling out of favor even among the larger studios.
When it comes to certain types of essential software such as game engines, I would encourage all indie developers to try to outsource this type of thing as much as possible and save yourselves some hassle. Think about it this way, if you have the programming skills to write your own engine or other piece of essential game creation software, then you probably have the skills to properly modify a preexisting one, use it as a starting point and still get it to do what you need it to do.