<story><title>What was the technology stack driving the original Ultima Online servers?</title><url>http://www.quora.com/What-was-the-technology-stack-driving-the-original-Ultima-Online-servers?share=1</url></story><parent_chain><item><author>Globz</author><text>Wow they didn&amp;#x27;t use any DB at the start of UO, that is amazing haha&lt;p&gt;&amp;quot;As Raph also notes, there were no databases originally involved in the storage of game state or player data for UO (disregarding analytics here), everything was kept in flat files. Backups worked by flagging a moment in time where no one was allowed to cross server-boundaries -- during that moment, each areaserver was commanded to fork(), essentially duplicating itself in memory (it&amp;#x27;s more complicated than this, thanks to Copy-on-Write, but let&amp;#x27;s simplify). After everyone had fork()ed, the &amp;quot;lock&amp;quot; preventing boundary-crossing was cleared. Then each areaserv began to dump out its huge chunk of memory-state into a file on an NFS server. Those files were then all tarred together and kept as a &amp;quot;backup&amp;quot; of the state of the server. These heavyweight backups happened at half-hour intervals, I believe.&amp;quot;</text></item></parent_chain><comment><author>codingdave</author><text>I&amp;#x27;m not so shocked... I&amp;#x27;m a web developer, not a game developer, but databases were avoided as part of production stacks in the 90s. Most people tried to stick to flat files. A database layer added complexity and decreased performance. Even most content management systems had an option to write everything to a flat file to serve via a web server. Those were the days that Apache servers and a huge pile of flat files was the norm.&lt;p&gt;Once web content began to be personalized, that was no longer realistic. Databases became a required part of the stack, web servers ran applications instead of just serving file, we gained massive amounts of functionality, and haven&amp;#x27;t really looked back.</text></comment>
<story><title>What was the technology stack driving the original Ultima Online servers?</title><url>http://www.quora.com/What-was-the-technology-stack-driving-the-original-Ultima-Online-servers?share=1</url></story><parent_chain><item><author>Globz</author><text>Wow they didn&amp;#x27;t use any DB at the start of UO, that is amazing haha&lt;p&gt;&amp;quot;As Raph also notes, there were no databases originally involved in the storage of game state or player data for UO (disregarding analytics here), everything was kept in flat files. Backups worked by flagging a moment in time where no one was allowed to cross server-boundaries -- during that moment, each areaserver was commanded to fork(), essentially duplicating itself in memory (it&amp;#x27;s more complicated than this, thanks to Copy-on-Write, but let&amp;#x27;s simplify). After everyone had fork()ed, the &amp;quot;lock&amp;quot; preventing boundary-crossing was cleared. Then each areaserv began to dump out its huge chunk of memory-state into a file on an NFS server. Those files were then all tarred together and kept as a &amp;quot;backup&amp;quot; of the state of the server. These heavyweight backups happened at half-hour intervals, I believe.&amp;quot;</text></item></parent_chain><comment><author>Shivetya</author><text>Oh the days of the Chesapeake shuffle, what many us used to call the lag spikes and rollbacks the afflicted the game early on. You could tell your servers cycle time with little effort and there were days when everything was just out of sync and even movement from certain areas was not a certain event.&lt;p&gt;This model apparently allowed for quite a few dupe bugs, one of which I published on an old fan site. It was quite involved, in fact I wrote it up so deliberately convoluted that what you were doing was obvious. Did it work, I wasn&amp;#x27;t quite sure but I did suffer both duplication of items and loss from their system through no effort on my part.&lt;p&gt;Its kind of funny to learn how they did it this late, reminds me of mechanisms we employed with some early multiplayer door games on BBSes. Supporting multiple players for some early titles was a bear, the least of which was the lack of stability of most connections just plain bad code that bit you in the butt more often than not.</text></comment>