So, I've been delving into the idea of making a game like League of Legends, DOTA 2, Champions of Newerth (etc, etc) for the XBox/PC using XNA/C# framework. Obviously, the first thing needed will be the game engine so I've come to you, oh wise and benevolent gurus of technology and programming, to ask you this:

Do you think I should take the massive amount of time and energy to build my own game engine, or should I simply purchase my own?

This is a big deal and it's something that I know I will ultimately need to decide for myself. The catch is that I want to get down to creating my game, but I don't know that any game engines with Warcraft 3 / Starcraft 2 styles that fit within the XNA framework. This is a huge bummer. I've looked at engines like FlatRedBall (2.5D seems a little less than cutting edge), Kochol Engine (I don't think works with XNA) and a few others but found nothing that comes near to Blizzards engine style. Finding an engine like that will not be easy, as I'm aware that Blizz creates their own engines from scratch but the thing is, so did League of Legends!

So that leads me to wonder: should I just make my own? The caveats to that are numerous. First off, I'm working on this game alone. As much as I'd like to find help, I've found no one willing to work with me without expecting cash up front which I really don't have. In working alone, I have a limited amount of wisdom, knowledge and experience to draw from. Point being: I've never made a game engine before. As much as I know I would learn a lot from it, I don't think I'd make a good one (first of all), and second, it would take me a year or more to do, I think. Taking that long just to get down to creating a game that I've already mapped out on paper seems frustrating at best.

So, why am I posting this blithering rant on your forums? Because, frankly, I'm at a loss. I don't want to get caught up this early on, but I don't know where else to go to find advice, suggestions or support. Do you think I could find an engine (free or cheaply) that can do what games like League, Warcraft 3 or Starcraft 2 do? Should I just take the year or more and build my own?

What do you think?

Also I was wondering (to save myself from posting a separate thread); how exactly do game engines "hook up" to XNA? To clarify, say that I purchased a game engine. I open that engine and begin making a map. How exactly does that map communicate with any code that I would create in, say, Visual Studio?

Based on your post, it sounds like you're a complete beginner to programming. This response is based on that assumption. It should not be taken as a harsh criticism, but as an attempt to convey the information someone in your position needs to start on the path to success. These points are not necessarily in order of importance.

You don't need an "engine" to write a game. Sure it can make it easier, but you can certainly write a game without a pre-built engine. One of the most common words of wisdom you'll see on this forum is "don't write an engine, write a game." You can then take the reusable bits of your game code and start building your own framework library for the next game.

It's great that you have a specific goal in mind, but you need to understand that you won't be able to reach that goal without several years' experience in game development. A lot of different factors go into a game like you've described, and each can be very complex in its own right. Very few people can start on such an ambitious project and succeed the first time. If you start small with a very basic game (like Pong, Breakout, etc) you'll be much more likely to finish a project (and make sure you finish it). That project will give a huge boost to your motivation and skill, as well as some reusable code like I mentioned above. For the next project tackle something a little more difficult, finish it, take out and refactor the reusable bits to keep building up your personal library. Rinse and repeat.

Above all, don't give up! Game programming is very complicated, and almost all of us lose motivation at some point. In my experience, the hardest part is just getting started every day. But once I push past the getting started part I can keep going for a while.