LGP History pt 1: How LGP came to be

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

We get asked this quite often, just what made me start LGP.

Back in the day, 1999, around august time to be exact, I was working for a fairly horrible company in London. I had been a beta tester on Loki’s Civilisation: Call to Power, but I couldn’t easily buy a copy from anywhere in the UK. Finally, a friend and I ordered it from the states. We waited weeks for the delivery, and finally a month or so after ordering, it arrived.

While I was waiting, I muttered and grumbled while at work about how I didn’t like waiting for weeks for a game, and someone in the office said to me ‘hey, why don’t you start up a company in England then, selling games for Linux.

I thought about it for a bit, and that evening, I registered tuxgames.com

I spent the next few months writing the website. It was a very basic website (some people accuse the current site of being basic, the old one was much much worse). I spent about £300 buying 5 copies each of the 4 Loki games that were available at that time.

Then I was ready, and at 10 seconds past midnight, Jan 1st 2000, the site launched, making us probably the first new company of the new millennium. I wasn’t there to watch it launch, I set up a crontab to remove the pre-launch index.html, and I was up at Colchester Castle watching the millennium fireworks {:-) I got back a couple of hours later and found that it had launched, so I sat back to wait for the orders to come rolling in.

It took days, and I admit I was getting a bit fidgety waiting to see if anyone would order. Mon, 03 Jan 2000 23:42:44 GMT is the timestamp in the database of the first order. For privacy reasons I will not name the individual who was the first to order, but if you ordered then, and you are in Morcambe, Lancs, England, you were our first order. He only ever ordered twice…

I used to run Tux Games more as a sideline while I kept up my day job, it didn’t sell too many copies, but there was a steady flow, and I was enjoying it. We sold mostly Loki titles, but a few others came along occasionally, games like Theocracy, or Reel Deal Slots, or the games from BlackHoleSun. The guys over at linuxgames.com and the Linux Game Tome had both spotted the domain before launch (how they found it, I do not know), and they gave us some great publicity, and really helped us get going.

Throughout 2000, we forged a close relationship with Loki, helping them out with their beta tests (we handled their beta test preorders, as their store was not set up to do it), and we had advance access to most of their releases.

During 2001, Tux Games grew quite quickly, there were three of us doing part time work on the company, and I was set to quit my day job to start on it full time. I had arranged to do that, when Loki started to hit the financial troubles that were to prove its downfall.

Loki almost took Tux Games down with them, when they withdrew our credit line, because they needed the money from us immediately, and we were left needing to find a LOT of money for games that we had sold in preorders, but our credit card processor had not sent us the money for yet. Thanks to a couple of friends who trusted me to max out their credit cards for a couple of weeks, we survived. My friends got their money back, and Tux Games stayed in business. I was fairly annoyed at Loki for breaking their word and putting us in the position though.

Although we never had advance notice that Loki was about to declare bankruptcy, we could kindof feel it in the air. At that point I had quit my job and was working full time on Tux Games, and the horrible thought crossed my mind that, if Loki went under, Tux Games would have nothing left to sell, and I would have to go and get myself a new job! I didn’t like the sound of that at all!

I had heard of a few games that Loki had been talking about maybe porting, and so I got in contact with Creature Labs, and Cyberlore, who were both really quite helpful. We got our first 2 publishing deals, and I launched Linux Game Publishing on Oct 15th 2001, and announced our first title on 12th of November, Creatures: Internet Edition.

LGP was officially in business.

  • Share/Bookmark

In response to the pricing question

May 7th, 2009 by Michael Simms (CEO and head of Development)

We have decided to respond to the question of game pricing that has been brought up here a few times. Tomorrow is May the 8th, which happens to be my birthday, and I’ve decided it will be sale day at LGP.

We will be setting the price of everything (except X3 special edition) to £9 for a 24 hour period. This will last from midnight to midnight UK time.

To be honest, this isn’t going to become a regular thing, it may be the only time it will happen, so enjoy it while it lasts!

  • Share/Bookmark

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