Any time you do a similar project again you generally do it more efficiently, correct? That's pretty much my sole point regarding this project and Jacobs.
Only if you are self-critical enough to learn lessons. In theory you could do it more efficiently, but usually what seems to happen is you just make a whole new set of mistakes. I just have little to no faith in Jacobs.
DAOC used a flat file 'database' and mostly old MUD code, a la EQ. While I'd guess CU won't go that far, I'll be amazed if most new games are not reusing a good chunk of code, as that is what development people do on any project I've worked with. I'm not sure why game development would be any different. It's not like IP technology has changed, and there's a lot of very good baseline code for Client/Server out there already. The same holds true for databases.
There are several problems with "reusing" DAoC code.
Firstly, Jacobs doesn't own it, Mythic does. Secondly, the tech is absolutely ancient. Like you said, it used flat files as a database, which is just a crude Object Database. You would never do that unless you didn't have the time, money, and/or knowledge to use a proper object database because it scales terribly. Later, games upgraded to using proper object databases like SQL. I think even eventually DAoC converted to using MySQL, but I could be wrong.
If you were building an MMO database today, right now, you wouldn't use an object database at all, you would instead use a
Document-oriented databases. For games they are superior in all the important ways.
Game development can be very different than normal business software development. Certainly you reuse stuff when you can but it isn't just databases that have changed so drastically, but also the way the servers and therefore game logic is constructed and programmed. All if the back end tech used for games has changed immensely in the last few years.
For example, servers and like 90% of the game code is no longer written in C++, but instead in
concurrent programming languageslike Erlang. These are languages designed for extremely heavy parallelization and multi-core multi-proccessor scaling. C++ is no longer used to construct entire servers, the network code and all the game logic, but is now relegated to the low level tasks it does well like physics, collision, and pathfinding. To take advantage of this new and powerful tech, programmers need to completely rethink and redesign the way a back-end is built. Other people are doing it and reaping the rewards, if you want to stay competitive you better as well.
Things are VERY different now and it has only changed in the past few years. SOE saw this coming and spent a bucket load of money (rumor is like 30 programmers for a couple of years) on the NEXT engine. They knew the tech their other games are built on wouldn't cut it, so they assembled a new engine from the ground up. Now, there they absolutely reuse tons code, but their entire engine is built for that purpose and most importantly it is a MODERN engine. DAoC, WAR, and anything else Jacobs publicly worked on do not function even remotely this way.
I'm not an expert, but I'd be surprised if building a back end solution in this age of gigE, Linux clusters, and cable is not far easier than 12 years ago. Heck, with Kickstarter you don't even need funding.
I understand what you are getting at, but the revolution was both incredibly recent for gaming and not terribly transparent to outsiders. It isn't the hardware, but way game code and server logic is constructed for those types of large scale multi-tasking systems. Frankly, I am glad I am not a programmer, because I spent about 4 weeks trying to learn Erlang and let me tell you, concurrent programming is a complete mind fuck. I think I will stick to just being a good scripter and leave the server/network code up to the experts.