Transferring the codebase of a game server?
<p>We are planning on upgrading the codebase of our game servers for a MMORPG, which is currently coded in <strong>C++</strong> (90%) and <strong>Python</strong> (the remaining 10%). The issue is that deciding on a language is difficult.</p>

<p><strong>C++</strong> </p>

<ul>
<li>Attempt to refactor and optimize the code, and possibly rewrite some modules entirely.</li>
<li><strong>Advantages</strong>: Developers already know C++, can reuse existing libraries, very fast.</li>
<li><strong>Disadvantages:</strong>  Painful data interchange, unmanaged, will require a lot of work to make the code more or less maintainable, hard to scale.</li>
</ul>

<p><strong>Java</strong> </p>

<ul>
<li>Rewrite it in Java.</li>
<li><strong>Advantages</strong>: Enterprise oriented, managed, pretty fast, easier than C++.</li>
<li><strong>Disadvantages:</strong>  Not very familiar with it, "clumsy", difficult data intercharge. </li>
</ul>

<p><strong>Python</strong> </p>

<ul>
<li>Rewrite everything in python.</li>
<li><strong>Advantages</strong>: Very maintainable, dynamic, garbage collected, good data intercharge capabilities (because it's dynamic), very easy to use.</li>
<li><strong>Disadvantages:</strong>  Much slower than C++ or Java. </li>
</ul>

<p>Another issue is that the game server needs to be bridged with <strong>C++</strong> libraries responsible for server-side 3D things (collision detection, maps, regions) which are maintained by a different group of people.</p>

<p>In my opinion, the <strong>best choice is Python</strong> as it would make the whole development process easier but the main concern is speed. The technologies we utilize are <em>Memcached</em>, <em>MongoDB</em>, <em>MySQL</em> and <em>Cassandra</em>. A lot of server data is stored as <em>BSON</em> as well as <em>JSON</em>.</p>

<p><em>Can anyone suggest the best choice out of those three languages?</em> Or are none of these a good choice? I've heard that some prefer <strong>erlang</strong> for those sorts of things.</p>
