First of all, we have CPU issues. Everyone gets FPS issues at a high level of dwarves, with the amount of pathing going on. This, coupled with the fact that it would also be having to render the 3D animations, would mean that it would be EXTREMELY hard to do without crashing most computers.
Analysis: CPU issues will be a major issue with a 3D version. Maybe if it is optimized, but not until then.
3D animation is mainly a graphics card issue, not a CPU issue. Yes, there is some CPU processing going on, but correctly done animation places the load on the GPU, not CPU.
Second, we have the current Z-levels, which number in to the hundreds. This will also cause a slowdown, especially when moving between Z levels, as the game would have to render every single item in sight with the 3D interface.
Analysis: Another CPU hog, and another reason no.
Again, rendering != CPU load. Also, no modern game that uses polygons renders everything, seen or not. There are some very powerful occlusion tools available that handle, very well and very fast, what should be seen and not be seen.
Third and finally, we have the issues of enemies and monsters. As everyone knows, we have HUNDREDS of different monsters and titans and sentients, randing rom the simple dwarf to the massive, randomly-generated forgotten beasts. The amount of time and CPU issues this would cause when the game tries to load a single mob would be astronomical, and probably crash all but the highest class computers. For instance... what happens when a forgotten beast made of water and six horns appears? The game would have to find the 3D sprite for horns, then find the sprite for water skin, and then, depending on how the monster looks, would have to warp the skin to make it look like the description- all in a matter of seconds after you see the message pop up.
Analysis: Yet another CPU issue. The amount of sprites required for the different animals and beasts in DF would probably be around 10-15 gigs, if I am thinking correctly.
Spore. No seriously, the game Spore. While the monsters aren't randomly generated, it wouldn't be a large stretch to randomly generate critters. Also design patterns (probably the fly wieght pattern), disk caching, in-memory compression, occlusion (again), and a whole host of other well known programming techniques makes this a manageable problem.
Conclusive Analysis:Non-Programer's Flawed Analysis
Currently, with the system Dwarf Fortress uses today, it is impossible for it to have a 3D engine; the graphics requirements would be much too great. Even the best computers would keel over and die when explosed to the amount of items and generated terrain and beasts in dwwarf fortress. Personally, I am surprised it can even handle it as ASCII art. Toady is just awesome like that I guess.
Fixed that for ya
About the only thing we agree on is that Toady is awesome. I think the biggest disconnect here other than lack of knowledge on game programming techniques is that it sounds like you're analyzing this in terms of something like the Unreal or CryEngine. That would be problematic, and in that case yes the game probably would require enough RAM that it would only be playable on a 64bit system. And I feel that would be a bad decision. Part of the charm of DF is the retro feel, which I feel both the tilesets and the original ascii art captures wonderfully. Nothing would be added to the enjoyment of DF if it were rendered in the same quality as Crysis. But other than interface issues,
almost nothing changes going to 3D.
Pathing? It's currently 3D. Level data? In 3D format already. Monster/creature/dwarf data? Already all there. 3D physics allowing things to fall? Yep, that's in. The only information that isn't there already is geometry data and texture data. If you keep with the block representation, geometry is easy. In most cases, a block will only have 2 triangles showing at any time. A properly done 3D engine should be able to show 80,000 triangles at 30fps. Hell, I can write code that does that, and I'm not an engine programmer. For the dwarfs/critters/ect, simple very low-res models should be enough. To keep the feel DF has, you could even go sprites rendered in the 3d scene. That way you have the choice of traditional ascii art or the tileset art for critters and such.
Toady could do it. If he froze all feature development for a year so he could:
- Refactor/optimize the code
- Add multi-thread support
- Implement basic 3D rendering
Will he? No. Do I want him to? Oh
HELL no. Can the community do it? That's a separate kettle of fish. Currently I don't think so, because we have to use memory hacks to get at the information, and that is many orders of magnitude slower that if we had access to the source. Possible I suppose. It would be easier to create an off-line DF viewer that ripped the info out of memory, then compiled it into properly optimized 3D mesh data. Could also make it look purdy then, if you had the art talent.