<p><a href="http://en.wikipedia.org/wiki/Project_Darkstar" rel="nofollow noreferrer">Project Darkstar</a> was the topic of the monthly <a href="http://www.javasig.com/meeting/home.xhtml" rel="nofollow noreferrer">JavaSIG</a> meeting down at the Google offices in NYC last night.  For those that don't know (probably everyone), Project Darkstar is a framework for massively multiplayer online games that attempts to take care of all of the "hard stuff."  The basic idea is that you write your game server logic in such a way that all operations are broken up into tiny tasks.  You pass these tasks to the Project Darkstar framework which handles distributing them to a specific node in the cluster, any concurrency issues, and finally persisting the data.</p>

<p>Apparently doing this kind of thing is a much different problem for video games than it is for enterprise applications.  Jim Waldo, who gave the lecture, claims that MMO games have a DB read/write ratio of 50/50, whereas enterprise apps are more like 90% read, 10% write.  He also claims that most existing MMOs keep everything in memory exlcusively, and only dump to a DB every 6 hours of so.  This means if a server goes down, you would lose all of the work since the last DB dump.</p>

<p>Now, the project itself sounds really cool, but I don't think the industry will accept it.  First, you have to write your server code in Java.  The client code can be written in anything (Jim claims ActionScript 3 is the most popular, follow by C++), but the server stuff has to be Java.  Sounds good to me, but I really get the impression that everyone in the games industry hates Java.</p>

<p>Second, unlike other industries where developers prefer to use existing frameworks and libraries, the guys in the games industry seem to like to write everything themselves.  Not only that, they like to rewrite everything for every new game they produce.  Things are starting to change where developers are using Havok for physics, Unreal Engine 3 as their platform, etc., but for the most part it looks like everything is still proprietary.</p>

<p>So, are the guys at Project Darkstar just wasting their time?  Can a general framework like this really work for complex games with the performance that is required?  Even if it does work, are game companies willing to use it?</p>

[{'answer_id': 21240, 'author': 'icco', 'author_id': 1063, 'author_profile': 'https://Stackoverflow.com/users/1063', 'pm_score': -1, 'selected': False, 'text': "<p>I don't work in the games industry, but it sounds to me like this will do the same thing for video games as the Quake and Half-Life engines did. That is they will promote getting young developers interested in the industry and promote development of indie games. </p>\n\n<p>From what I can tell, video game companies do not reuse most of their code, because if they do it implies that their new game is just a rehash of an old one. Everyone wants a cool new physics engine, better graphics, new ways to play the game. Most video game engines and frameworks are made for a specific scenario and thus are not very bendable to other situations. </p>\n\n<p>Maybe Darkstar will get it right though, but I kinda doubt it, since generalizing only works for so much.</p>\n"}, {'answer_id': 21263, 'author': 'Mat Noguchi', 'author_id': 1799, 'author_profile': 'https://Stackoverflow.com/users/1799', 'pm_score': 2, 'selected': False, 'text': "<blockquote>\n  <p>From what I can tell, video game companies do not reuse most of their code, because if they do it implies that their new game is just a rehash of an old one.</p>\n</blockquote>\n\n<p>Um... if you're referring to the long tail of video game companies, maybe. Within a company that has had a series of successful games, there is usually some modicum of reuse. Major hardware changes can result in ditching a lot of work, but it really depends on the company.</p>\n"}, {'answer_id': 151218, 'author': 'postfuturist', 'author_id': 1892, 'author_profile': 'https://Stackoverflow.com/users/1892', 'pm_score': 2, 'selected': False, 'text': '<p>Sounds like useless tech to me. The MMO world is controlled by a few big game companies that already have their own tech in place. Indie game developers love trying to build MMO\'s and sometimes they do, but those games rarely gain traction. Larger companies breaking into the MMO world would probably license "proven" technology, or extend their own.</p>\n\n<p>Game companies reuse vast quantities of code from game to game. Most/many game companies have developed their own tech internally, and use it on every game they produce. Occasionally, they will do something like replace their physics code with a 3rd party physics engine. If their internal code base (game engine, design tools, internal pipeline) starts to age too much, or become unwieldy, they might switch to one of the big game engines like Unreal. Even then, major chunks of code will continue to be re-used from game to game.</p>\n'}, {'answer_id': 159845, 'author': 'Tom Ritter', 'author_id': 8435, 'author_profile': 'https://Stackoverflow.com/users/8435', 'pm_score': 1, 'selected': False, 'text': '<p>It sounds like fun to design and code, but I think it ultimately comes down to <a href="http://www.joelonsoftware.com/articles/fog0000000018.html" rel="nofollow noreferrer">useless abstractions</a> (to steal from Joel).</p>\n'}, {'answer_id': 160228, 'author': 'erickson', 'author_id': 3474, 'author_profile': 'https://Stackoverflow.com/users/3474', 'pm_score': 1, 'selected': False, 'text': '<p>It\'s very common for games to reuse "game engines," even those from third-parties. This sounds like another step in that direction.</p>\n'}, {'answer_id': 485304, 'author': 'Michael Stum', 'author_id': 91, 'author_profile': 'https://Stackoverflow.com/users/91', 'pm_score': 6, 'selected': True, 'text': '<p><strong>Edit: This was written before Oracle bought Sun and started a rampage to kill everything that does not make them a billion $ per day. See the comments for an OSS Fork.</strong> <em>I still stand by my opinion that stuff like that (MMO Middleware) is realistic, you just need a company that doesn\'t suck behind it.</em></p>\n\n<p>The Market may be dominated by few large games, but that does not mean that there is not a lot of room for more niche games. Lets face it: If you want to reach 100.000+ players, you\'re ending up building your own technology stack, at least for the critical core. That\'s what CCP did for EVE Online (<a href="http://myeve.eve-online.com/devblog.asp?a=blog&amp;bid=584" rel="noreferrer">StacklessIO</a>), that\'s what Blizzard did for World of Warcraft (although they do use many third-party libraries), that\'s what Mythic did for Warhammer Online (although they are based on Gamebryo).</p>\n\n<p>However, if you aim to be a small, niche MMO (like the dozens of Free-to-Play/Itemshop MMOs), then getting the Network stuff right is just insanely hard, data consistency is even harder and scalability is the biggest b*tch.</p>\n\n<p>But game technology is not your only problem - you also need to tackle Billing. Credit Card only? Have fun selling in Germany then, people there want ELV. That\'s where you need a reliable billing provider, but you still need to wire in the billing application with your accounts to make sure that accounts are blocked/reactivated when the billing fails.</p>\n\n<p>There are some companies already offering "MMO Infratructure Services" (i.e. <a href="http://www.e-eis.com/cms/front_content.php?changelang=2" rel="noreferrer">Arvato\'s EEIS</a>), but the bottom line is: Stuff like Project Darkstar IS realistic, but assuming that you can build a Multi-Billion-MMO entirely on a Third Party Stack is optimistic, possibly idealistic.</p>\n\n<p>But then again, entirely inventing all of the technology is even more stupid - use the Third Party stuff that you need (i.e. Billing, Font Rendering, Audio Output...), but <a href="http://www.codinghorror.com/blog/archives/001172.html" rel="noreferrer">write the stuff that really makes or breaks your business</a> (i.e. Network stack, User interface etc.) on your own. (Note: Jeff\'s posting may be <a href="http://damilare.net/random-talks/dare-obasanjo-vs-jeff-atwood-on-html-validation/" rel="noreferrer">a bit flawed</a>, but the overall direction is correct IMHO.)</p>\n\n<p>Addendum: Also, the game industry does license and reuse engines a lot. The most prominent game Engines are the <a href="http://en.wikipedia.org/wiki/Unreal_Engine" rel="noreferrer">Unreal Engine</a>, <a href="http://en.wikipedia.org/wiki/Source_Engine" rel="noreferrer">Source Engine</a> and <a href="http://en.wikipedia.org/wiki/Id_tech" rel="noreferrer">id Tech</a>, which fuel dozens, if not hundreds of games. But there are some lesser-known (outside of the industry) engines. There is <a href="http://en.wikipedia.org/wiki/Gamebryo" rel="noreferrer">Gamebryo</a>, the Middleware behind games like Civilization 4 and Fallout 3, there was <a href="http://en.wikipedia.org/wiki/RenderWare" rel="noreferrer">RenderWare</a> that is now only EA-in-House, but used in games like Battlefield 2 or The Sims 3. There is the open source <a href="http://www.ogre3d.org/" rel="noreferrer">Ogre3d</a>, which was used in <a href="http://www.dtp-entertainment.com/en/games/game_detail.php?id=2973&amp;landid=1" rel="noreferrer">some</a> commercial <a href="http://www.venetica-game.com/" rel="noreferrer">titles</a>. If you\'re just looking for Sound, there\'s stuff like <a href="http://www.fmod.org/" rel="noreferrer">FMOD</a> or if you want to do font-rendering, why not give <a href="http://www.freetype.org/" rel="noreferrer">FreeType</a> a spin?</p>\n\n<p>What I\'m saying is: Third-Party Engines/Middleware do exist, and they ARE being successfully used since more than a decade (I know for sure that id\'s Wolfenstein Engine was licensed to other companies, and that was 1992), even by big companies in multi-million-dollar titles. The important thing is the support, because a good engine with no help in case of an issue is pretty much worthless or at least very expensive if the developer has to spend their game-development-time with unneccessary debugging of the Engine.</p>\n\n<p>If the Darkstar folks manage to get the support side right and 2 or 3 higher profile titles out, I do believe it could succeed in opening the MMO market to a lot more smaller developers and indies.</p>\n'}, {'answer_id': 1148375, 'author': 'Community', 'author_id': -1, 'author_profile': 'https://Stackoverflow.com/users/-1', 'pm_score': 1, 'selected': False, 'text': "<p>I think it's a great thing to do.\nDevelopers not having to worry about all these things that project darkstar takes care of, and it's very easy to use.\nBut it's not all about just getting it to work and not having to learn everything about internet-communication, It's also about performance. Project darkstar has been under development for over 2 years and it keeps getting better,faster and more robust.</p>\n\n<p>I think it will be hard and probably not worth the time to write these things when aiming at a specific game, when technologies like this can be used instead. And you also get nice information during runtime telling you where in an application there's a cause of slowdown or deadlocks so you can improve that.</p>\n"}]
['https://Stackoverflow.com/questions/20034', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/1471/']