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)?
It is certainly possible to do that with OpenGL.
Theoretically, you could code it all by yourself. It'd be a lot of work. OpenGL should satisfy your needs well enough, though.
If you want to code everything yourself using 3D APIs directly, it will likely take you the whole summer just to get an animated character walking around on screen. A fighting game with particle systems, AI and complex animations is too much to do in that time frame, when starting completely from scratch. If you want to build the engine yourself, that's fine and can be quite rewarding - just be aware that you'll spend so much time on "basic" game engine technology that you won't have much or any time to build an actual game.
If the game itself is more interesting to you than the ins and outs of render targets, vertex buffers, input handling, sound mixing and so on, then I'd advise using an engine, of which there are plenty that have a free version.
The problem is I'm not sure what to use to create it. I'd like to do as much myself as possible
When it comes to developing a game, you are still required to do a lot. The question is whether you are more interested in the low level mechanics of game development or if you're more interested in producing a game. You can certainly do both, but it will take longer to complete your project. I think it's a good idea to start with an engine first. Build games while at the same time learning how other people do things. If low level development interests you later, you will at least have some experience to start with. You're still in school by the sounds of it, so you'll want to maintain a work-life balance. Being able to produce something quickly will keep your spirits and motivation high.
How long is your summer? But, I'll pre-judge and go with "No."