My summer break starts in a week so I’ve decided to start a summer programming project. My goal is to create a playable prototype for a 3d game. I’ve programmed simple games for school in java and c++, but never anything 3D or complex. This will be a learning experience.
The prototype I’d like to create is a 3d Pokémon battle game. I loved the Pokémon series, but in gaming I’m not a fan of turn-based or 2d gameplay. You choose the starter Pokémon you want from the menu and then the battle starts. The environment would be just a simple flat arena. Attacks are programmed in (attacks like flamethrower may need a particle system or something). The Pokémon fight until one’s HP goes to zero and then it’s over. I’d also need to program an AI for the opponent. Once the prototype was fleshed out, I’d add networking where you could play a 2nd player.
The problem is I’m not sure what to use to create it. I’d like to do as much myself as possible, so I kind of shy away from using Engines, but I’m wondering if it is necessary. I have the resources (models, sound, etc) but I would need to handle rendering, animations, scripting, and such. Is it feasible to create my own 3d rendering with everything I would need (animation, particles, etc) or use OpenGL/Direct3D instead of using a commercial engine (like UDK)?
No you don't have to use a third party engine, (You can make your own or just hack something together without even worrying about the engine abstraction).
Using one does however save alot of time, (Creating a prototype in Unity3D can be done in a few hours for example) and if your goal is to make a game then using a third party engine is a really good idea. (If your goal is to learn lower level programming then using an engine won't help you, if you want to learn engine design then it doesn't hurt to atleast look at a few different engines to get some ideas)
I don't suffer from insanity, I'm enjoying every minute of it. The voices in my head may not be real, but they have some good ideas!
Thanks. The end goal is a game for sure. I'm not really looking for lower level programming, however I want to have the freedom to do everything. For instance, if I wanted to try my hand at making a server to play the game from, or putting prediction in the game, I don't want to be limited in what I can do.
And if possible I'd like to avoid using commercial software that requires licensing to publish. I have no intentions of ever publishing but it's just something I'd prefer.
You can create your prototype in Unity or Unreal Engine SDK. Both have good video tutorials (for instance, digitaltutors.com (http://www.digitaltutors.com/training/unity-tutorials) and are incredible solid. With this you can focus in the game design without worrying in aspects that are not related with gameplay.
Then, if you want to make a real game of your prototype you can use noncommercial software like an XNA engine. The good part is XNA and C# allow making games easier than C++ plus OpenGL or DirectX and Unity works with C# so that you can port directly part of your code.