Who Cares About Bugs?

Today we download applications all the time. On our smart-phone or a game on our computer. Hundreds of thousands of applications are available at our fingertips as we browse through the Google Play store, App Store or the Microsoft Marketplace. Having a platform providing easy access to applications had a huge impact on the software industry creating new markets we did not know of ten years ago. However, the advantage of having a platform over the cloud giving users easy access to hundreds of thousands of applications also has a downside.

When software where going to ship twenty years ago, having one single bug could have a huge impact on how the consumer market handled the product. A game could not possibly have a bug as the console did not have any internet connection for users to download a patch to fix whatever bug there was in the game. That way, the makers of the game had to spend a lot of time and money on testing and debugging the game. This became less and less relevant throughout the years as the Internet Revolution came along. Having a few bugs in a game or a movie editing software got acceptable as users could download a patch or an update from the product company's website. Today, we often see that an update is available on our phones or tablets. Apple first came along with their App Store, then Google (and after a while Microsoft). Their platform let users easily search up applications after need or interest. In the new platform of distributing and providing software, companies and developers could provide updates to their applications easier than ever before. A user would get a notification on the front-page of his device that an update was available, and with two clicks the update would install itself. This is a huge contrast to where users could not even receive a patch on a device not connected to the Internet.

When developing software there is a planning phase, development phase, test phase, then a release phase. The high availability of software had an impact on this model leading to Planning -> Development -> A bit testing -> Release -> Fix bugs reported -> release update and step back until new version with new features is ready. The affect of this is to expose end-users to more bugs having a negative impact on their experience with the final product. The reason of doing so is to get faster a user-share of the market and earn money faster. Having a product released two months before testing properly allows more users to use the product and therefore test it. It is a trend getting more and more popular in the software industry. 

It may not be surprising that the last release of SimCity is a big motivation for writing this post. There are many bugs in the game (which is a final product, and not a beta version) which I would say would have been obvious to fix during a proper test phase. Even so, long story short, EA let out the game to hundreds of thousands of users and it was the story of Diablo 3 all over again. Servers could not handle the capacity of all the users wanting to use their newly purchased software. And even when they finally got enough servers up, fixed their server bottlenecks, users where left with a stripped down version of the game which had far beyond an acceptable amount of bugs which a final product should have. On the other hand, Maxis has promised to fix the bugs and they are slowly fixing the bugs. I would say SimCity is one of many products which is a sign of a bad trend in the software industry, and end-users does not like it very well.

The Disastrous Launch of Sim City 5

Many people which barely slept the night before the launch of the new Sim City game was disappointed when they could not even play the game when it launched. Gamers where raging on EA forums, /r/gaming and social networks and everything from EA to DRM was blamed for the apocalyptic launch of Sim City. 

It first started off with downloading the game. For me, this was in fact not a bad experience looking away from the fact my internet connection was not stable at that moment. However, when the game was patched at installed, the fun part had barely started. In order to play the game, a server had to be selected. And if you where lucky to get the list of servers up, you would just be stuck on the next screen displaying "Authenticating with servers". When if the authentication was done, you where able to enter the game. Hooray? No. The first times I was able to enter the game, I was greeted with the message it lost connection to the server. And when it was not, it would barely let you make a region for your cities. Once the servers where able to calm down (around 9PM UTC+1), I could see that each of my attempts on creating a region was successful, but my client turned out to have timed out. However, once I was in-game, the servers where disconnecting now and then, making me frustrated about whether my city was saved or not. 

In order to understand what is going on, we would have to understand a part of how Sim City 5 works. First of all, there is no DRM on Sim City, it is a multiplayer game, just like Legaue of Legends, Runescape, World of Warcraft, Habbo, etc. This is to let people work together in their regions which is a large part of what the game is actually meant for. When playing Sim City 5, parts of your city is sent to the "cloud servers" to store your town. If you lose connection to the server, you would risk not letting your city be saved unless your client is able to reconnect. In other words, a larger part of the game is not on the actual users PC, but on the server (City data, multiplayer handling, etc.).

First of all, it strikes me they call it "The cloud". They are not even using the cloud in a correct manner. In fact, a large part of the system is designed wrong to be able to run in the cloud. The way a service (web-site, game server, etc) is supposed to run in the cloud, is that it is able to scale. It does so by automatically increasing the amount of servers which the application is distributed on. By saying so, the application runs over several servers when so is needed. This is one of the core elements of cloud computing. From an end-users perspective point-of-view, when we enter google.com in our browser, we do not select if we want to use Google in USA, Netherland or whatever. Users are way too stupid to make that selection. 

The current servers running Sim City holds a given numbers of users until they are claimed full. Then a user has to either wait in a queue of a fixed waiting time for 20 minutes or select another server. The fixed waiting time is just as good as no queue. Imaging having a Justin Bieber concert, and letting in all the thousands of brainwashed teenage girls in at the same time. By doing so, there would be too many people in the gates and they would be congested. Letting each girl wait another 20 minutes before they can enter does nothing to the congestion, it is just as bad. In order to solve this, they need to line up in several lines and they would be let in. This way, the amount of people are load balanced. I know several online games have such systems to prevent congestion on their servers. They retrieve a queue position and an estimating time until let into the game. Legaue of Legends have this system, and I think Sim City should consider implementing it as well. 

If the Sim City game was properly designed, users would not have to chose between which server they wanted to play on. Their regions would be stored in between the servers and retrieved when entered the game. That way, each instance could hold a given amount of users or regions and when a max limit is reached, users would be sent to a new instance. Each instance keeps track of all the users and their regions. When a user enters on a different instance, a message saying "Getting your regions" would appear. Instances would automatically be created, and neither users or any working in Maxis would have to care about adding more instances (or servers, in this case). The system would be self-scalebale. 

I am missing a great amount of information in the launch tool. When I was downloading patches from the launch tool, there was no information telling me it was doing so. I wanted to see information about download speed, downloaded data, how much was left and an ETA counter. In the server-list, there would be great to see how many users/regions was on each server to determine which one would be best for me to play on. It lets the user get more information about what is actually going on.

The Sim City game went far beyond my expectations after playing the beta. It is a great game which I am sure everyone which loved any previous Sim City game would love. Even though the maps are considered as slow compared with the older games, the interaction between towns is the trade-off. I doubt there will be any singleplayer of the game, as SC5 is a mutiplayer game, not a singleplayer game. Even though the previous games had a singleplayer mode, this is where the world is moving. More and more stuff in the cloud. So right now, there is nothing else we can do than be patient, wait and send good thoughts to the developers of the game which I can assume got some hectic days.