Customer Services Update for April 2009

April 28th, 2009 by Melissa Kealey-Bennett (Customer Services Manager)

Welcome to a issue 2 of the LGP customer services monthly report for the LGP Blog.

There is only really one new common issue this month:

Sacred – problem starting a new game on Open Internet multiplayer option

This problem seems to affect people with certain network setups that are designed to block network traffic, such as symmetric NAT or Firewall systems.

You can find out your current setup’s networking facilities by downloading our Test Tool and checking that the networking section. If it says that networking is only available via TURN, then you are going to experience this problem.

The way around this problem for the moment, simply, is patience. The game will connect in the end, although it can take between 30 and 60 seconds to negotiate its way past your network security systems. We are working on a way to speed this up, and we hope to have a patch out soon which will address this problem.

  • Share/Bookmark

What direction for downloadable games

April 18th, 2009 by Michael Simms (CEO and head of Development)

A fair few people have talked about downloadable games. I for one, personally, have never been a fan of the idea, but, I want to know what you all think. So, I’m going to run a poll to see what people like the idea of, and what you all want us to provide you with.

So, what would you like to be able to do?

  • Yes, I want download only games (10% discount) (46.0%, 188 Votes)
  • I want the boxed copy shipped, and to download immediately too (10% extra) (18.0%, 73 Votes)
  • I want to download but I wont touch it unless its half price (14.0%, 56 Votes)
  • I want boxed copies with extra stuff, like the X3 special edition (13.0%, 55 Votes)
  • No, I just want the boxed copy (normal price) (9.0%, 38 Votes)

Total Voters: 410

Loading ... Loading ...

Before you ask, this poll does not decide company policy, but I am hoping to get an insight into the minds of you, our customers. Thanks for your time!

  • Share/Bookmark

Being sure of your shared objects

April 15th, 2009 by Michael Simms (CEO and head of Development)

This short article is all about how to be sure you know exactly what your application is doing with shared objects.

It can be quite easy sometimes to not know which objects are being used by a program. Sure, you can ldd a binary and find out what it links to, but which order are they being used, and  what about when the program dlopens something, as many do. How can you easilly find out what it is using and how it finds it?

Simply, you can run an application as such:

LD_DEBUG=libs ./yourapp

This will give you pages of output telling you everything that the application is doing with shared objects, and you will note that each time it opens a shared object, it will report this with ‘init’, leaving you able to simply grep to see which .so’s it is using.

Hopefully this helps people that are trying to work out just quite what their apps are doing sometimes!

  • Share/Bookmark

Why do Linux games cost what they cost?

April 11th, 2009 by Michael Simms (CEO and head of Development)

The cost of games on Linux has been an ongoing contentious issue, and one that I have responded individually on many occasions.

A lot of people have made the complaint ‘but I can get this game for half the price on Windows’.

Sure, you often can. But that isn’t the point. The point is, Linux isn’t Windows. We try and release our games at a price that is comparable to, if not a little lower then, a new release game on other platforms. For example, our newest three games have been priced with X3 at £30, Jets’n'Guns at £15, and Sacred Gold at £27. Compare this to 3 new releases for Windows, Sims 3 at £40, Spore’s expansion at £20, and Street Fighter IV and £30. The prices are comparable.

We agree that most games we produce have already been out on Windows for a while, but thats the big point. Why does a Linux user care about what is available on another platform? It is a new game to THIS platform. A couple of years ago, I saw a copy of Doom 1 for the PS2 for £50 when the engine was already open sourced and you could buy the windows version for about a pound. Thats what happens on other platforms.

So, thats one reason.

The other is, the price reflects what it costs us to make it.

We have to pay developers who often have to spend months rewriting large portions of a game. Porting isn’t a 5 minute job, stick it in a Makefile and gcc will take care of the differences. Not even close. Developers take months making the games run on Linux, and we have to ensure we can pay them properly for their work.

Another question we are often asked is ‘I bought this game for Windows, can I just download a copy for Linux because I’ve already paid for it’.

The answer is no. It will always be no. We get no share of revenue from the sale of the Windows version. I understand why people are reluctant to pay for it twice, but look at it from our point of view. We spend months making a game, and then people expect us to give it away for free because they gave money to another company. Thats like going into McDonalds, buying a coke, drinking it, then going into BK and asking for a refill! The product is the same, the company is different.

When it comes down to it, we know we cannot compete with Windows games on price for the game. We take a finished Windows product and make it run on Linux. This means by the nature of our business we will release after the game is available on Windows, and the shelf-life of a Windows game is so short that it is highly unlikely we will release the game while it is still on the full price new releases shelf. And so it comes down to this:

We release games for the Linux OS. If you are going to dual boot, or have a second Windows machine for gaming, then you will be able to get it cheaper. Just like if you own a PS3, a game for Windows will be £10 cheaper when it comes out. Or if you own a mac, the games will be at the same price level as Linux games, sometimes earlier, sometimes later.

If you want more games for your OS, then you need to buy the ones that are available. If you just want cheaper, then buy for Windows, but don’t complain when there arent enough games for Linux.

  • Share/Bookmark

The importance of data integrity

March 31st, 2009 by Michael Simms (CEO and head of Development)

We had a few hours downtime over the last weekend, and I thought some information about it may help others with resolving possible similar errors that may happen in their own systems.

So, taking the clock back to just after midday Saturday, our warning monitors alert us that the main website has gone down. A quick look at the status terminal shows that we have had a kernel panic on the main website server, and the machine is locked. We put in a request for a reboot with the hosting company, and within minutes the system has been power cycled, and everything is running again.

This is where the work begins!

The big problem, we note, is that our backup slave mysql database on a different server in a different building is not receiving replication updates. It just sits there, and stopping and starting the slave achieves nothing. Checking the logs we find the following:

090328 14:37:53 [Note] Slave: connected to master 'repl@87.117.204.74:3306',replication resumed in log 'mysql-bin.000057' at position 263780655
090328 14:37:53 [ERROR] Error reading packet from server: Client requested master to start replication from impossible position ( server_errno=1236)

Hrm, doesn’t look good.

A little bit of information about mysql replication. It works by storing binary logs on the server, logs of commands executed, so that a slave can execute the same commands and have a database in the same state. The commands are sent via a TCP/IP network connection from master to slave.The slave keeps track of where it is and the master sequentially sends the commands to it.

Now, when you power cycle a machine (in this case when the system kernel panics and doesn’t respond to any typed commands, there isn’t much to do other than power cycle it), you do not always end up with everything saved to disc. To improve speed, a number of systems will cache data in memory instead of writing it to disc, and then write in chunks when it is efficient to do so. The problem comes that if some data is being held in memory in preparation of writing to disc, then that data will be lost if you just cut the power. It cannot magically write the data to the disc, it has no electricity to do it. Data will be lost. There are ways to stop this happening, but that is the topic for another day. The fact is that on any modern Linux distro, this will happen.

And so skip to the mysql replication, and the slave is requesting to start its replication from a point that the master said does not exist. This is simply because the data was never written to the physical disc, and the processes before reboot were accessing data that the kernel was caching in memory.

So, mysql replication becomes a victim of efficiency. When this happens, there are two ways to go about fixing it. First, we could just say ’start from the next valid position’ in the binary logs. This would get us up and running, but there is ‘a risk of data loss’ that we deemed to be unacceptable in a backup database. The data loss would be from any transactions that have been made but never written to the binary log because of the power outage. The second option, and the one we choose to take, is the option of creating an entire dump of the mysql database and starting replication again from a known good position.

So, we do this. Taking a dump of the database requires our web and email to be down for an hour, and that bites, but it is really the only option. We dump the database, restart the services, and then, we’re done, it should now be fine. All that is left now is to rebuild the slave from the masters data, and start replication running again.

Or that is how it should have gone.

We transfer the dump across, and run a rebuild of the database. All goes well for a few hours (a rebuild can take a LONG time as it rebuilds indexes on huge tables), until suddenly….

ERROR at line 1963239: Unknown command '\"'.

This was obviously not what we expected. Importing the dump again revealed the same problem, and we realised there was a problem we hadn’t encountered before.

We did all the usual checks, ensuring the database versions were the same, ensuring the dump on the server and master were the same using md5sum, and all seemed OK, except that the database dump wouldn’t import.

We were left wondering if something was wrong with mysqldump.

To be sure, we did another dump. The site had been running for a few more hours and so the database would be a little different than when we did the last dump. Stopping the servers for another hour, and repeating the process. The second time we had a different error message, but a fatal one nonetheless. And the same a third time.

We were becomming convinced that the database was dumping invalid information, and that if that was the case, we were in a bit of trouble because, well, you cannot really go through a dump in excess of 20GB by hand to look for errors. The line numbers of errors were worse than useless, with some of the lines being many MB in size.

A process of methodical deduction finally solved the problem. We spotted that /var/log/messages was showing a number of ATA errors as we were doing the dump. Not encouraging! So, we tried the dump on another hard drive, dumping once onto the location we had been writing to all afternoon, and at the same time dumping to a location on a different drive. The location we had been writing to was significantly different, when we diffed the two files, than the new location. And upon loading the new data dump into the database, suddenly we had a working slave again.

So, the mystery was solved. The data we were dumping was being written onto a hard drive that was seeming to just change random bits on its files. Never a good thing. We were left thinking that we would have had a MUCH easier time if mysql would check the integrity of the files it dumped.

So now this leaves us back up and running, but with some things to look at. We feel that mysql desperately needs to be able to check the integrity of files on a disc, to be sure that a dump, whether from mysqldump, or the binary logs, is valid. Without that the dump is just pointless.

As such, for one of our next contributions to the open source community we will be looking at either adding ourselves, or setting up a bounty for someone else, to add this useful piece of integrity checking, which we feel is vital to mysql. More information to follow later on this, once we have worked out some of the details!

  • Share/Bookmark

Customer Services Update for March 2009

March 19th, 2009 by Melissa Kealey-Bennett (Customer Services Manager)

Hi,

Welcome to a new monthly report for the LGP Blog. Here, I’m going to run though the common problems people have reported over the last month here at the customer services team, and report on how these have been resolved, or how to work around the problems. We are not addressing all the issues, just the top two or three that lots of people have had problems with, those that we think it would be helpful for people to be able to read up on!

X3: Reunion – Problems on a number of ATI cards – Patch Available

This problem manifests itself with the game crashing after the loading screen when starting a new game on a small number of ATI based graphics cards.

Finally after weeks of trying, we have managed to reproduce the error on one of our test servers. Our technical team have finished working on the solution and the patch is now available for everyone to download in our updates section.

X3: Reunion – Problem with the game not starting

This problem is one reported by a number of people who have been trying to run X3 using open source drivers for their graphics cards. Unfortunately, at this point in time, neither the ATI or Nvidia open source graphics drivers are capable of running X3, due to the requirement of Shader Model 3.

You can find out if your current setup can run X3 by downloading our Test Tool and checking that the Shader Level reported by the test tool is at least 3.0, and that Direct Rendering is possible.

  • Share/Bookmark

Special Edition, while they last!

March 14th, 2009 by Michael Simms (CEO and head of Development)

I thought today that I’d just post a picture here, of something that in a few weeks will probably never be seen again.

So, without further ado, here is a photo of just over 200 copies of X3 Special Edition all in one place!

x3specialedition

  • Share/Bookmark

Sacred Gold is now, well, gold!

March 6th, 2009 by Michael Simms (CEO and head of Development)

sacredIt took a little longer than we had expected, but we can finally announce that Sacred Gold has been sent to the production company, and we expect it to be ready to ship in 2-3 weeks.

We expected to have had it ready weeks ago, but some last minute issues caused some unexpected delays. The network layer, Grapple, had an error in how it communicated through certain types of firewalls and NAT routers, which meant that only around 30% of players would be able to access the multiplayer features of the game on the PenguinPlay servers.

But that is all past us now, and the game is in production! The game also has a nice new large map insert being produced with the game, just as a small bonus extra! We are also working on the finalising of the demo, which we hope to have available before stock of the game arrives, so you can try it out before buying.

  • Share/Bookmark

A little-known trick with C switches

March 3rd, 2009 by Michael Simms (CEO and head of Development)

OK, so this little programming post is nothing like rocket science, it really isn’t. It is, however, REALLY useful, and something that almost nobody knows about the C language. We came across it when we were porting a game a few years ago, and none of us had ever seen it before. We tried it, and it works!

So, lets take a C switch statement

switch (somenumber)
{
case 1:
case 2:
case 3:
  do_something();
  break;
case 4:
case 5:
case 6:
  do_something else();
  break;
}

Fairly standard, nothing too unusual here. However there is another way to do it!

switch (somenumber)
{
case 1 ... 3:
  do_something();
  break;
case 4 ... 6:
  do_something else();
  break;
}

Unfortunately, it doesn’t seem to work on anything other than C/C++, which is a shame!

Enjoy!

  • Share/Bookmark

Answering the LGP DRM questions

February 27th, 2009 by Michael Simms (CEO and head of Development)

Our new DRM system has probably generated as much debate as anything we have ever done. So, I thought that I should try and dispel some of the myths and rumours that have been going about, and give you some of the positive aspects of the system.

The first and most important issue I would like to address is that no, you do NOT require internet access to install or to play the games, you do not need a disc in your drive, and you do not need to enter in your key or password every time you play. These are all myths. You need to enter a key and password (and optionally your email address) when you install the game, and that is it. You do not need to worry about it again.

Our system uses a policy of ‘Innocent until proven guilty’ which means that you can ALWAYS play your game, unless the system knows for a fact that there is a reason you shouldn’t. This is the opposite to most DRM systems, which assume you do not have the right to, unless you prove you can.

Unfortunately, no system is foolproof, and, yes there is a small chance that a legitimate user could be locked out of their game, but the chance is rather low. It would require that the user lose their key AND to have not set an email address for their game, and are trying to reinstall it. Just forgetting your password is not enough to lose you access to the game, unless you did not set an email address.

We acknowledge that some users dislike ANY DRM, and you know what, so do we, but we have little choice when we have proved that more copies are pirated of our games than purchased. As a small company, we do not do DRM to try and rip people off, we add it because it is going to help keep us in business.

However bear in mind that this DRM works in your favour too. As well as the obvious, helps us keep making games, it also allows us to provide a method to allow you the customer to exert your rights as granted by the LGP license. When you buy any game from any company, you buy a license to install and use the software. The box and disc is just a delivery system. If you lose your copy of a Windows game, good luck getting it replaced for free (or for the cost of time and materials to send you a replacement at the most). But the thing is, you should. We fully believe that as you bought a license, then you have the right to play the game for as long as that license is valid. This is why, using our DRM system, we have now completed a new system that will allow users to get a new downloadable version of any game they have legitimately purchased. So if you lose all of your games somehow, the DRM’d ones will actually be MORE replaceable than the non-DRM’d ones, as they are the ones you can prove you have a license for.

Unlike other DRM systems that pretty much prevent you from selling on your license, the LGP system is set up to allow you to do so. In fact we have devised a system at http://keyserver.linuxgamepublishing.com which allows the seller of a game to transfer their license safely to a new owner, and for a potential buyer to check that a game they are being offered has a valid license key. This means that our DRM offers security for players that they are buying a real game that is playable, rather than with other DRM systems where you can buy a game on Ebay, and find out when it arrives it has a locked out key and the company that licenses the game will not unlock it.

We think that our system provides us with a bit of security, but it also gives you, the customer, benefits that counterbalance the fact we had to add in the DRM in the first place. It is thanks to the discussions we had with the community that we took out the requirement to be online when yiou register, and the requirement to be online when you start the game.

When all is said and done, we tried for years to stop people copying our games by asking nicely and appealing to peoples better natures. That didn’t work, and so we are left with DRM.

  • Share/Bookmark