I'd like to start off by saying that as far as self-created projects go, I'm new to game development. I'm a seriously hardcore gamer with thousands of hours of game experience behind me and at the ripe old age of 26 I've decided to see what I'm capable of in the world of game development. I've been studying my eyes out in C#, XNA and Visual Studio 2010 Express over the past month or so but I'm definitely still in the "beginner" stage.
I've started this topic because I want some input from more experienced developers/programmers on a few particular areas. The first and arguably most important topic that concerns me is the creation of a game engine that will facilitate the proper design of the game I have in mind. I'll give a brief description of what I need the game to be capable of and if anyone needs me to be more specific, please ask.
The game is a 2D side scroller that focuses heavily on the creation and destruction of objects in the game world. I require a fully dynamic destruction system featuring a particle system and somewhat realistic physics. ALMOST every object in the game will be made up of particles that are connected to each other to form objects like trees, stones, hills of dirt, structures, cities, etc. I imagine the particles to be between 4x4 to 8x8 pixels in size PER particle. My goal is to create a game engine in which each particle registers when damage is done to it via a number of ways, then reacts accordingly. I envision a system where each particle has an "HP" pool that varies in size depending on the "quality" of the particle (dirt, wood, stone, etc.). As the particle sustains certain amounts of damage, it goes through stages. The first stage is a visual representation of damage in the form of cracks(fault lines). The cracks somewhat randomly extend along the adjacent walls of other nearby particles, beginning at the directly damaged particle, to display the visual result. Particles that are adjacent to these cracks will have inherited a portion of the damage done to the particle that spawned the cracks. As damage continues to be dealt, cracks will continue to propagate damage and extend in number, length and overall severity.
Stage 2 of the particle's destruction will occur when particles adjacent to the cracks have sustained damage to the point of actual fracture or separation from each other. At this point, particles that share these cracks and have sustained heavy damage will literally separate from each other resulting in an object or objects of varying sizes being physically removed from the ORIGINAL object. Think of hitting a large stone with a hammer enough times in real life. The stone is made of "particles" per se, but before you start smashing the stone into little particles, chances are some chunks will break off first. The same rules apply in the game engine.
The final stage of particle destruction will occur when the particle sustains damage that takes it below it's HP value. At this point, particles will begin to separate from each other on a PER particle basis. IE: Like hitting the small stone chunks with a hammer and turning it to "dust". Any particle that sustains such heavy damage will break off individually. I wish for objects made of multiple, connected particles as well as individual particles to have physical properties that allow them to interact with and even damage other particles they come into contact with. Individual particles will despawn while collections of particles (objects) will remain. I'm fairly confident that an engine such as the one I have just described would allow for a fairly dynamic (and cool looking) destruction system.
So here are my questions:
What sort of programming difficulty can I expect to come across while creating such an engine?
What sort of programming experience and knowledge would someone need to create such an engine?
Does this engine potentially go beyond what the standard PC is capable of handling? IE: Would frame rates suffer to the point where the game becomes unplayable, even if the engine was coded efficiently?
I suppose that's about it for now.
If anyone is interested in knowing more about this game or even participating in its development please let me know and I would be happy to discuss it with you.
This is pretty long question, but if you're not experienced programmer (or even not programmer at all) than you have two options. Either start learning (it will take a LOT of time), or hire a programmer (this might on the other hand take a LOT of money - as the project you want to create is not as trivial as it seems).
Writing destructible environment with physics is hard, but not impossible (making it 2D simplifies it by an order of magnitude). The actual destruction is mostly done through voronoi fractures (they look very very good). Making it real-time is also possible. Voronoi fracturing is possible in realtime in 3D, so it is also possible to do it in 2D (of course with huge speed gain). Plus today, you can compute physics on GPU, you have # cores in CPU (four, six, ...) - so computational power is large enough (if engine is well written). I bet you could (in case of good optimizations) make it run realtime on notebooks like Core i3 + some RAM + some integrated intel gpu.