I've made the decision to go back and redo the database code. Since writing it in the first place I've got, well, a little better at coding. At the moment, the main problem is that in order to access, say, the date of birth of a player, I've got to read in all of that player's data into a Player type, and then have a gander at his birthday.
Hey, it made sense at the time - by reading and writing whole records, I saved myself a few headaches. But it came at a price - every time I wanted to change the database I had to make numerous changes to the game's code as well, and over the last week it all came to a head when I realised I was putting off work on the next issue because it involved this utterly soul destroying task.
I had had enough. I decided that I needed a way of telling the database system that I just want to look at the "Year Founded" field in "Club" without also getting the youth coach's weekly wage. It does mean a few extra problems need solved but I'm up to that task now. The new system when implemented ought to save me plenty of time, and it also keeps the game easily expandable.
The larger problem with this decision is that the Data Editor pretty much needs rewritten as it is based almost entirely on the old database code. Arse. But it can't be helped, it's going to have to be done.
Keeping this database clean is useful because it means I can create the basic game and then spend most of my time adding leagues and making improvements, rather than fighting with hideous code and ending up churning out crap.
Nobody wants crap.
Not even flies. But flies can't be choosers. Or I shall kill them.
Friday, June 30, 2006
Tuesday, June 27, 2006
It's big...
So I've been doing what I said I would - splitting the code into far more manageable chunks spread across many files. I'm not quite finished yet. Initially there were about 10 files at most, covering the data editor, the competition engine, the game database and so forth. All of them pretty large to the point where they got difficult to manage.
I'm not quite done yet but currently the total stands at 109 files, each one typically containing a single function and a few of the files have more, smaller functions that splitting seems a bit silly.
It's a ridiculously big game that doesn't even have some very important bits. Tsk.
That's my excuse for all this time. It's fucking huge. Live with it.
I'm not quite done yet but currently the total stands at 109 files, each one typically containing a single function and a few of the files have more, smaller functions that splitting seems a bit silly.
It's a ridiculously big game that doesn't even have some very important bits. Tsk.
That's my excuse for all this time. It's fucking huge. Live with it.
Saturday, June 24, 2006
Late night problems go away
Frame rate problem solved. Not that there ever was a problem.
Turns out, the IGlass frame rate function was returning the actual frame rate - i.e. how often the screen was being refreshed every second. Whereas I wanted to know how often the screen is capable of being updated every second. End result is that it's actually been running ten times faster than I thought it was, which means there's plenty of time for processing between frames.
Part of the plan for the game is to have it multitask, of sorts. So when you're playing, the game should be working in the background. After all, clicking on an interface is not a particularly intensive piece of work so there's no point forcing the player to wait at the end of every day while petty tasks are carried out.
I plan to implement this multitasking by having the game work out when it should refresh the GUI. It's easy to work out how long it takes to render a single screen. Say it takes 5 milliseconds on a bad day. That still leaves about 15 ms of time if you want the game to run at 50 frames per second, so the little background worker guy can just keep checking his watch to see when he should be showing you an update, or when he can do another quick job. Even if he's getting one job done every frame, that's still 50 every second. Those will add up.
It'll get complex when it comes to larger jobs such as calculating an entire match. I'm aiming for a single match to take about an eighth of a second, based on Football Manager's time of 1 second for an exceedingly complex ninety minute match compared to my game's 8 minute fixture. If I could get it in that time on the same computer, I'd be very happy indeed. But that means a single job would take much longer than one frame, so I'd have to be able to chop it up into little pieces.
Ah, design problems. Much more fun than making an editor anyway.
Turns out, the IGlass frame rate function was returning the actual frame rate - i.e. how often the screen was being refreshed every second. Whereas I wanted to know how often the screen is capable of being updated every second. End result is that it's actually been running ten times faster than I thought it was, which means there's plenty of time for processing between frames.
Part of the plan for the game is to have it multitask, of sorts. So when you're playing, the game should be working in the background. After all, clicking on an interface is not a particularly intensive piece of work so there's no point forcing the player to wait at the end of every day while petty tasks are carried out.
I plan to implement this multitasking by having the game work out when it should refresh the GUI. It's easy to work out how long it takes to render a single screen. Say it takes 5 milliseconds on a bad day. That still leaves about 15 ms of time if you want the game to run at 50 frames per second, so the little background worker guy can just keep checking his watch to see when he should be showing you an update, or when he can do another quick job. Even if he's getting one job done every frame, that's still 50 every second. Those will add up.
It'll get complex when it comes to larger jobs such as calculating an entire match. I'm aiming for a single match to take about an eighth of a second, based on Football Manager's time of 1 second for an exceedingly complex ninety minute match compared to my game's 8 minute fixture. If I could get it in that time on the same computer, I'd be very happy indeed. But that means a single job would take much longer than one frame, so I'd have to be able to chop it up into little pieces.
Ah, design problems. Much more fun than making an editor anyway.
Thursday, June 22, 2006
I haven't done any work since I've come home. Whilst reading Masters of Doom I decided I really needed to create some sort of work area for myself - for the most part the game coding has been done in the living room. This isn't too bad and has yielded plenty of progress, but it's all to easy to get interrupted by marauding girlfriends and televisions.
So I've to clean up the spare room a bit better. Pity it's tiny and has little room for a desk, but I've got some rather sturdy shelving which will probably be fine to sit the laptop on. It's peaceful, that's a good thing. And I might want to move that laundry basket, but then I luckily can't smell.
Elsewhere, I've got to tidy things up a bit. The living room is a bit shambolic anyway because I bought a 14" telly to sit beside the computer whilst the World Cup is on, so right across from me there's a row of crazy electronic shit of varying ages. I can't work in mess very well, so that has to be sorted.
Speaking of mess, my code is a mess. It's not terribly structured (in my opinion) but it's nowhere near perfect. The problem is many of the files are getting rather large and need splitting up into more manageable chunks, so that's my target for the meantime. That, and see what I can do to sort out the rather jarring problem with the laptop (a 2.2GHz machine that's well above the target spec) running the existing code about 20% of the speed of the PC (an Athlon 3500). That can't be good. Not when it ends up rendering the screen at 60fps before I have it do anything complex. Considering my target spec is probably around the 1GHz range, I have to let out the occasional primal yell.
Hence the need for sanctuary.
So I've to clean up the spare room a bit better. Pity it's tiny and has little room for a desk, but I've got some rather sturdy shelving which will probably be fine to sit the laptop on. It's peaceful, that's a good thing. And I might want to move that laundry basket, but then I luckily can't smell.
Elsewhere, I've got to tidy things up a bit. The living room is a bit shambolic anyway because I bought a 14" telly to sit beside the computer whilst the World Cup is on, so right across from me there's a row of crazy electronic shit of varying ages. I can't work in mess very well, so that has to be sorted.
Speaking of mess, my code is a mess. It's not terribly structured (in my opinion) but it's nowhere near perfect. The problem is many of the files are getting rather large and need splitting up into more manageable chunks, so that's my target for the meantime. That, and see what I can do to sort out the rather jarring problem with the laptop (a 2.2GHz machine that's well above the target spec) running the existing code about 20% of the speed of the PC (an Athlon 3500). That can't be good. Not when it ends up rendering the screen at 60fps before I have it do anything complex. Considering my target spec is probably around the 1GHz range, I have to let out the occasional primal yell.
Hence the need for sanctuary.
Wednesday, June 21, 2006
Return to the blog
I haven't posted because I haven't done any work. I haven't done any work because I haven't been in the country, and because the country I was in was far too hot to do any work. Also, there was a small matter of football.
I did get to see Australia lose to Brazil in a rather indifferent game, but the atmosphere was amazing. I was Jakob Moertl for the day, whoever he is. Good old Jakob.
In other places, I did exciting things like climb an alp, or... no, that's it.
I also read Masters of Doom, by David Kushner. The story of id software, particularly focussing on John's Carmack and Romero, it's inspiring stuff for a guy like me. I even have long hair! Future Rich Person in the making, methinks. Now, if only I had their talent. Oh, and their Ferraris. No, there's plenty in that book that made me want to rush off and get coding long into the night.
There's also this quote from John Carmack I picked up earlier today:
The idea that I can be presented with a problem, set out to logically solve it with the tools at hand, and wind up with a program that could not be legally used because someone else followed the same logical steps some years ago and filed for a patent on it is horrifying.
He speaks a lot of sense. There's a place for patents but it is not in software. By all means make money from your creation but don't try to kid yourself. That pathway was forged with the architecture you're working on - you're just the first to walk down the road. Hilary doesn't claim rent on Everest.
I did get to see Australia lose to Brazil in a rather indifferent game, but the atmosphere was amazing. I was Jakob Moertl for the day, whoever he is. Good old Jakob.
In other places, I did exciting things like climb an alp, or... no, that's it.
I also read Masters of Doom, by David Kushner. The story of id software, particularly focussing on John's Carmack and Romero, it's inspiring stuff for a guy like me. I even have long hair! Future Rich Person in the making, methinks. Now, if only I had their talent. Oh, and their Ferraris. No, there's plenty in that book that made me want to rush off and get coding long into the night.
There's also this quote from John Carmack I picked up earlier today:
The idea that I can be presented with a problem, set out to logically solve it with the tools at hand, and wind up with a program that could not be legally used because someone else followed the same logical steps some years ago and filed for a patent on it is horrifying.
He speaks a lot of sense. There's a place for patents but it is not in software. By all means make money from your creation but don't try to kid yourself. That pathway was forged with the architecture you're working on - you're just the first to walk down the road. Hilary doesn't claim rent on Everest.
Friday, June 09, 2006
Whoooo!
World Cup time again! Happy days!
Although Ireland didn't qualify, thanks in the main to Israel's ability at coming back from defeat, I'll still be enjoying it. And I'm not just saying that because it's about 95% certain I'll be at one of the games.
No, it's a football fest. The good kind of fest.
A month of fun. Can't beat it. Although people organising weddings during the thing need a stern talking to.
Although Ireland didn't qualify, thanks in the main to Israel's ability at coming back from defeat, I'll still be enjoying it. And I'm not just saying that because it's about 95% certain I'll be at one of the games.
No, it's a football fest. The good kind of fest.
A month of fun. Can't beat it. Although people organising weddings during the thing need a stern talking to.
Tuesday, June 06, 2006
Nothing
That's what I did today. Or yesterday if you want to get technical. Monday. I did nothing. Well, I went to work (and did nothing there), and when I came home I was in no mood to do work of an interesting variety. So I had a long overdue day off.
A day off where I completed Simpsons Hit & Run (not a bad game), and then beat the Water Temple in Ocarina of Time. Well done me.
I did have a moment of clarity during the day regarding the best way to deal with all the data that a competition is going to require to get running (you know, storing all the results and league tables), which is a bonus. And last night whilst lying in bed in a frustrated heap (the Sunday Demon struck, you see) I had a nice little breakthrough with regards to those item templates that nagged me during the weekend.
It's good to get away from it all for a day. I'll come back tomorrow refreshed and eager and should hopefully make decent progress. By next Monday I'd like to have competitions basically working - that is to say that any one competition will work perfectly fine regardless of its structure, but all the fancy stuff like qualification will have to wait until a week later or so. If the football doesn't intefere. Pesky real world.
A day off where I completed Simpsons Hit & Run (not a bad game), and then beat the Water Temple in Ocarina of Time. Well done me.
I did have a moment of clarity during the day regarding the best way to deal with all the data that a competition is going to require to get running (you know, storing all the results and league tables), which is a bonus. And last night whilst lying in bed in a frustrated heap (the Sunday Demon struck, you see) I had a nice little breakthrough with regards to those item templates that nagged me during the weekend.
It's good to get away from it all for a day. I'll come back tomorrow refreshed and eager and should hopefully make decent progress. By next Monday I'd like to have competitions basically working - that is to say that any one competition will work perfectly fine regardless of its structure, but all the fancy stuff like qualification will have to wait until a week later or so. If the football doesn't intefere. Pesky real world.
Sunday, June 04, 2006
Montenegro
So, we all have a new nation. Now, I'm sure that's wonderful for 55% of the Montengrins, but I'm not here to discuss politics and stuff. Football is at hand! With a new nation invariably comes a new national side, a new FA and new widdly things to worry about. I've structured the game so all that's fairly easy to enter, but when will it all occur?
We'll no doubt see Serbia & Montenegro at the World Cup as a unified team, and I wouldn't be surprised to see the two nations compete as one in the European Championship qualifiers, for which the fixtures have all been decided amongst the usual quarrelling. Assuming the game is actually finally released by that point then there might just be a problem. We'd see Serbia and Montenegro compete as separate nations at a future date.
That's not easy. I could hard code it but I'm loathe to do that, it's ugly and doesn't help for any future developments. So I'd like to do it in the editor. Some way of unifying two nations as one team for a period of time seems to be the answer, and also seems to be a lot of work.
Pesky politics. Think of the hardworking game developers!
We'll no doubt see Serbia & Montenegro at the World Cup as a unified team, and I wouldn't be surprised to see the two nations compete as one in the European Championship qualifiers, for which the fixtures have all been decided amongst the usual quarrelling. Assuming the game is actually finally released by that point then there might just be a problem. We'd see Serbia and Montenegro compete as separate nations at a future date.
That's not easy. I could hard code it but I'm loathe to do that, it's ugly and doesn't help for any future developments. So I'd like to do it in the editor. Some way of unifying two nations as one team for a period of time seems to be the answer, and also seems to be a lot of work.
Pesky politics. Think of the hardworking game developers!
Saturday, June 03, 2006
Revelation #239


I'm shit at graphic design. Really fucking shit.
Modern PCs give you massive resolutions and 32-bit colour. That's far too much for a guy like me to deal with. I used to be ace at creating interface mockups on my Amstrad CPC, with its 400x250, 2-bit colour screen. Four whole colours! Man, I had a screen with black, red, a darker red and white. It looked ace.
And that's it there in those little pictures, that I just took with a crappy camera. It suited the machine perfectly, it was nice, and I never got further than this. It would clearly have been the best game ever. Alas, it wasn't to be because it was 1999 and I finally got myself a PC, and thus all the requirments got expanded into areas that I alone can't possibly meet.
Which is why I'm quite grateful for my XML GUI system. Without that, I'd be stuck right now having to design (or get someone to design) an interface before I could proceed with the guts of the system. That'd be frustrating, and I wouldn't be able to make any changes later without a heck of a lot of work.
But right now, my interface looks like someone's crapped it out after eating fifteen curries laced with laxative, yet it's not holding me back in the slightest. Yes!
Wednesday, May 31, 2006
Damn you, Ecuador!!
One of the things I love, being a bit of a football stats freak, is how the world is full of completely different leagues. Growing up surrounded by coverage of the English and Scottish leagues, it would be very easy for me to have fallen into the trap of believing everyone out there uses the same system. Play each other twice, count up the points, go on holiday for a bit in the rain. Lovely.
No, it's all different, and I've gone into it before. I've looked around the world and thought I'd pretty much got it sussed. Leagues with playoff systems to determine the winner, leagues split into lots of little groups, leagues that split in two (the SPL obviously being a recent example). These weird and wonderfully different competitions became a driving force in making this game. I could easily have taken the easy way out and copied England for everything, changing the number of teams and not much else. Certainly I'd have had far fewer headaches. Maybe even something playable right now. But no. That's not fair. After all, what's the point in having the Filipino Open Championship if it's just the same as playing at home?
So I grabbed all these leagues, totalled them all up and devised a competition and league engine that could simulate them all, and all the other tournaments in existence. Then I found out about Ecuador.
On the surface, the Ecuadoran league looks like any other league in South America. It's played in two distinct halves, the Apertura and Clausura, thus creating two champions each year. Unlike a lot of leagues, it actually relegates and promotes clubs at the end of the Apertura, effectively making each "season" about four or five months in length and getting two in each calendar year, and the teams in the Serie A Apertura differ from the ones in the Clausura as a result. A bit of a niggle.
This only happens at the top level of the system. In Serie B, teams are only relegated at the end of the Clausura, based on the total points gained over the Apertura and Clausura sections. The former Serie A side playing in the Clausura gets all his Clausura points counting double, as if it wasn't bad enough to try and get the game to collect points from another competition entirely.
As a result, it is entirely possible for an Ecuadoran side to start in Serie A in January, get relegated by May, and by the following January be playing in the Segunda CategorÃa, Ecuador's third level, proving that if they don't follow the simplistic English league system, at least the world's leagues like to give their competitions completely misleading names.
Just when I thought I was finished tweaking those damn league systems.
No, it's all different, and I've gone into it before. I've looked around the world and thought I'd pretty much got it sussed. Leagues with playoff systems to determine the winner, leagues split into lots of little groups, leagues that split in two (the SPL obviously being a recent example). These weird and wonderfully different competitions became a driving force in making this game. I could easily have taken the easy way out and copied England for everything, changing the number of teams and not much else. Certainly I'd have had far fewer headaches. Maybe even something playable right now. But no. That's not fair. After all, what's the point in having the Filipino Open Championship if it's just the same as playing at home?
So I grabbed all these leagues, totalled them all up and devised a competition and league engine that could simulate them all, and all the other tournaments in existence. Then I found out about Ecuador.
On the surface, the Ecuadoran league looks like any other league in South America. It's played in two distinct halves, the Apertura and Clausura, thus creating two champions each year. Unlike a lot of leagues, it actually relegates and promotes clubs at the end of the Apertura, effectively making each "season" about four or five months in length and getting two in each calendar year, and the teams in the Serie A Apertura differ from the ones in the Clausura as a result. A bit of a niggle.
This only happens at the top level of the system. In Serie B, teams are only relegated at the end of the Clausura, based on the total points gained over the Apertura and Clausura sections. The former Serie A side playing in the Clausura gets all his Clausura points counting double, as if it wasn't bad enough to try and get the game to collect points from another competition entirely.
As a result, it is entirely possible for an Ecuadoran side to start in Serie A in January, get relegated by May, and by the following January be playing in the Segunda CategorÃa, Ecuador's third level, proving that if they don't follow the simplistic English league system, at least the world's leagues like to give their competitions completely misleading names.
Just when I thought I was finished tweaking those damn league systems.
Monday, May 29, 2006
That'll be quick
Excellent! I've nearly completed the GUI management code. It takes a bunch of xml files from a "skin" folder and uses that data to construct every screen in the game. As a result, it's exceedingly easy to develop the interface and it should hopefully provide the capability for any community (man, I should be so lucky) to create new looks for the game.
On the downside, it's currently very easy to "break" it. A misplaced tag here or an attribute there in an xml file and an entire screen could disappear. While this isn't a problem for me when developing it, I can't have that in any final release and expect new skins to appear. It's got to be pretty fool proof. Perhaps the most important thing is keeping a well defined structure to the screens - always having certain elements in certain places is a start.
A title bar, for example, appears in virtually every screen so I have that down as a single panel (a screen being made up of panels). If I move that panel, it'll move the title bar on every single screen, but obviously moving it can result in parts of other screens being obscured unless they know to take advantage of that.
I'll see about adding some extra types of gadget so I can define areas of the screen. Though I don't want to spend too much time on this right now, as it's not an essential. It's easy to come back to it as well, as it's pretty much independent of the game itself. Provided the GUI manager tells the game what buttons are being clicked, and the game can tell the GUI what to do, what happens under the hood doesn't matter.
On the downside, it's currently very easy to "break" it. A misplaced tag here or an attribute there in an xml file and an entire screen could disappear. While this isn't a problem for me when developing it, I can't have that in any final release and expect new skins to appear. It's got to be pretty fool proof. Perhaps the most important thing is keeping a well defined structure to the screens - always having certain elements in certain places is a start.
A title bar, for example, appears in virtually every screen so I have that down as a single panel (a screen being made up of panels). If I move that panel, it'll move the title bar on every single screen, but obviously moving it can result in parts of other screens being obscured unless they know to take advantage of that.
I'll see about adding some extra types of gadget so I can define areas of the screen. Though I don't want to spend too much time on this right now, as it's not an essential. It's easy to come back to it as well, as it's pretty much independent of the game itself. Provided the GUI manager tells the game what buttons are being clicked, and the game can tell the GUI what to do, what happens under the hood doesn't matter.
Tuesday, May 23, 2006
A time saver. Huzzaj!
Yes, Huzzaj. I spell it how I want!
After undertaking a little research, I took the plunge with a pre-built GUI engine in the shape of IGlass. It's largely excellent, very customisable. I did have to make a few tweaks to add features that I'd prefer in my game, but none of this was a problem. Huge thumbs up and thanks to Mr Agnisola for this.
As a result, progress has been swifter and there are far less headaches. Had I not purchased it (just last Friday) I'd no doubt still be working on silly stuff. The reason I've chosen to code in BlitzMax over something like C++ is because it gives you a hefty library of code to do routine things - drawing images, memory management etc. It therefore makes a lot of sense to carry the same reasoning over to other aspects.
So as a result, TCFG should have a nice snazzy front end. Now I've got to create that GUI management system I once mentioned, thus making it far easier to create new screens and thus be able to throw a game together a heck of a lot quicker. Seeing tangible results will make it all worthwhile.
After undertaking a little research, I took the plunge with a pre-built GUI engine in the shape of IGlass. It's largely excellent, very customisable. I did have to make a few tweaks to add features that I'd prefer in my game, but none of this was a problem. Huge thumbs up and thanks to Mr Agnisola for this.
As a result, progress has been swifter and there are far less headaches. Had I not purchased it (just last Friday) I'd no doubt still be working on silly stuff. The reason I've chosen to code in BlitzMax over something like C++ is because it gives you a hefty library of code to do routine things - drawing images, memory management etc. It therefore makes a lot of sense to carry the same reasoning over to other aspects.
So as a result, TCFG should have a nice snazzy front end. Now I've got to create that GUI management system I once mentioned, thus making it far easier to create new screens and thus be able to throw a game together a heck of a lot quicker. Seeing tangible results will make it all worthwhile.
Saturday, May 20, 2006
Emotions in Football
One of the good things about writing a football game is that it's a hell of a lot easier to justify purchasing related games, books etc. to your other half. And more importantly, to yourself. All under the guise of "research".
The most recent such purchase was FIFA World Cup 2006. I started my qualifying campaign as the mighty St. Kitt's and Nevis, and found myself doing surprisingly well. In my penultimate game, two points short of guaranteed qualification, I barged my way into the box and stuck the ball past a flailing keeper only to hear Clive Tyldesley positively ejaculate with glee. "That could be the goal!" he screamed. The crowd erupted.
I was astounded. For years, I'd been used to football games that treat each matchday as being played in a vacuum, with the outside world being of little interest until the final whistle. "They've qualified!", the commentator envariably yells in shock despite the team leading 5-0 for the last half hour.
In the end, FIFA let me down a little as the initial raptures subsided and the crowd settled down again. And the goalscorer in question didn't do much different to when he scored in any other game, including a meaningless victory against St. Vincent and the Grenadines. Which instantly sucked me out again.
The way I see it, emotions play a massive part in football's atmosphere. Every goal is unique, not just in the buildup but also in the reaction and aftermath. When I took that lead against Trinidad & Tobago, the crowd should have been singing, dancing and yelling for the rest of the match. My goalscorer should have been uncontrollably excited. Everyone including the keeper should have mobbed him immediately, not just the three who offered a small token of congratulations. And at the final whistle, it should have all kicked off again.
A little recognition of the wider picture and the appropriate response will go some way towards creating a superb atmosphere. The more a game can do that, the more likely I'll shed the same tear of joy as I did when Jason McAteer smashed the ball past the Dutch in 2001 to send Ireland into the finals. FIFA World Cup came close... but it's just not enough.
The most recent such purchase was FIFA World Cup 2006. I started my qualifying campaign as the mighty St. Kitt's and Nevis, and found myself doing surprisingly well. In my penultimate game, two points short of guaranteed qualification, I barged my way into the box and stuck the ball past a flailing keeper only to hear Clive Tyldesley positively ejaculate with glee. "That could be the goal!" he screamed. The crowd erupted.
I was astounded. For years, I'd been used to football games that treat each matchday as being played in a vacuum, with the outside world being of little interest until the final whistle. "They've qualified!", the commentator envariably yells in shock despite the team leading 5-0 for the last half hour.
In the end, FIFA let me down a little as the initial raptures subsided and the crowd settled down again. And the goalscorer in question didn't do much different to when he scored in any other game, including a meaningless victory against St. Vincent and the Grenadines. Which instantly sucked me out again.
The way I see it, emotions play a massive part in football's atmosphere. Every goal is unique, not just in the buildup but also in the reaction and aftermath. When I took that lead against Trinidad & Tobago, the crowd should have been singing, dancing and yelling for the rest of the match. My goalscorer should have been uncontrollably excited. Everyone including the keeper should have mobbed him immediately, not just the three who offered a small token of congratulations. And at the final whistle, it should have all kicked off again.
A little recognition of the wider picture and the appropriate response will go some way towards creating a superb atmosphere. The more a game can do that, the more likely I'll shed the same tear of joy as I did when Jason McAteer smashed the ball past the Dutch in 2001 to send Ireland into the finals. FIFA World Cup came close... but it's just not enough.
Tuesday, May 16, 2006
Token Update
It's been over a week, so it makes sense. What have I been up to?
Well, most of the time was spent working on a little tool that would restructure the database to my liking. So if I'm halfway through entering team data and suddenly find I'm missing a key field, I won't need to start writing code to load a database of one type and save it as another. Instead, this tool loads an entire database, I do my stuff, and it rejigs everything with no loss of data (unless I want to remove data, of course).
The other key aspect of this is that I can start editing with a very generous limit on the size of the database, and then trim it down when everything's finished to make the best use of memory.
That done, I've then been coding in database code for ranking competitions (such as UEFA's club coefficients) and Belts (such as the Unofficial World Championship, which suddenly reminds me that I need to throw in a field for "unofficial" to stop teams celebrating this clearly meaningless award).
I've a few more aspects to clean up on the data editor before I wander off and start coding GUIs, which are infinite fun. I'm looking to create a good, clean system that can take HTML-style files as input, allowing me to knock up a screen or a panel with ease. A system that supports links to move between pages is ideal for a game that will be absolutely flooded with data.
Another necessary feature of the GUI system is the ability to multitask, so that I can get the game to carry on with some hardcore processing whilst you browse the game world and do your thing. Outside of a match, the actual gameplay barely uses the processor at all. It's the under-the-hood workings that take time, so the more efficient the use of the CPU, the better.
And I haven't abandoned the idea of covering everything about the game. I just don't think it's too sensible to go nattering about things that haven't been done yet. Last thing I need is to turn into Peter Molyneux.
I look shit in turtlenecks.
Well, most of the time was spent working on a little tool that would restructure the database to my liking. So if I'm halfway through entering team data and suddenly find I'm missing a key field, I won't need to start writing code to load a database of one type and save it as another. Instead, this tool loads an entire database, I do my stuff, and it rejigs everything with no loss of data (unless I want to remove data, of course).
The other key aspect of this is that I can start editing with a very generous limit on the size of the database, and then trim it down when everything's finished to make the best use of memory.
That done, I've then been coding in database code for ranking competitions (such as UEFA's club coefficients) and Belts (such as the Unofficial World Championship, which suddenly reminds me that I need to throw in a field for "unofficial" to stop teams celebrating this clearly meaningless award).
I've a few more aspects to clean up on the data editor before I wander off and start coding GUIs, which are infinite fun. I'm looking to create a good, clean system that can take HTML-style files as input, allowing me to knock up a screen or a panel with ease. A system that supports links to move between pages is ideal for a game that will be absolutely flooded with data.
Another necessary feature of the GUI system is the ability to multitask, so that I can get the game to carry on with some hardcore processing whilst you browse the game world and do your thing. Outside of a match, the actual gameplay barely uses the processor at all. It's the under-the-hood workings that take time, so the more efficient the use of the CPU, the better.
And I haven't abandoned the idea of covering everything about the game. I just don't think it's too sensible to go nattering about things that haven't been done yet. Last thing I need is to turn into Peter Molyneux.
I look shit in turtlenecks.
Monday, May 08, 2006
An Overview
When it comes to football games, there really are only two types. You've got "arcade" titles like PES and FIFA, which let you have control over the team and play the matches, and there are management titles like Football Manager and FIFA Manager, sitting you in charge of the team, making signings and generally trying to earn your sheepskin coat.
Come to think of it, why don't managers wear sheepskin any more? Losing a part of history, we are.
Anyway, either system tends to be somewhat flawed. Arcade games lose their way in single player by not offering sufficient challenge or options. The best way to play PES is undoubtedly competitively, and as good as the Master League is can anyone argue that a convoluted points system is better than the tried and tested transfer market of classic management games? Speaking of which, a management game can often descend into a frustrating affair when the team start losing and you can't fix the problem. The games are still enormous fun, but they're not "perfect".
What would be perfect, really, is a merger of the two. And I know I'm not the first person to think of that, or even in the top million. Videogame Hell is full of failed attempts - Onside Soccer, Kick Off World and more. The closest any game has ever come has been Sensible World of Soccer, so it seems only fair that I dissect it, suck its juices and see what sparkles.
SWOS is an arcade game. Its focus is entirely on its superb matchday experience - the actual management options are, in truth, dire. No clubs make transfers other than you, signing players is about money and nothing else, and there's precious little management. It's game after game, and you can improve your squad. That's it. Which is actually why Sensible World of Soccer is so good. Jon Hare and company knew where the faults lay, and they refused to highlight them.
Combination games have failed because it is extremely difficult to marry the two components together whilst keeping the scales balanced. You don't want to result in a situation where a gamer can be successful by being good at the match portion - otherwise the entire management section is worthless. Similarly, you can't place too much emphasis on management and tactical selection without making the match day a frustrating chore. You've got to be in control... while at the same time being up against the odds as a lower league side in the FA Cup. How do you do that?
That's the problem faced with The Complete Football Game, which I assure you is still a working title and not the name of the real thing. A game that not only presents you with some arcade antics, but lets you get down and dirty with plenty of management aspects, including in-depth tactical options, man management, media handling and more besides. Having your players working together on the training field, you'll want to take that into the match and put your plan into action. You can't just show up on the day in real life, and you can't do it in the game.
Like SWOS, there will be an entire world to be a part of, with leagues as famous as La Liga, or as obscure as the Isle of Man Football Combination. You want to be a part of a living, breathing football world full of ecstasy, pain and chaos. You want to embark on a career as a manager, a player or a chairman, each with your own personal goals. The football world is your personal playground.
Each fortnight I'll expand on these various elements, how they should shape up, why they are as they are, and their impact on the overall game.
Or alternatively, as it has panned out, I won't.
But I can pee all by myself, so it kinda works out well in the end.
Come to think of it, why don't managers wear sheepskin any more? Losing a part of history, we are.
Anyway, either system tends to be somewhat flawed. Arcade games lose their way in single player by not offering sufficient challenge or options. The best way to play PES is undoubtedly competitively, and as good as the Master League is can anyone argue that a convoluted points system is better than the tried and tested transfer market of classic management games? Speaking of which, a management game can often descend into a frustrating affair when the team start losing and you can't fix the problem. The games are still enormous fun, but they're not "perfect".
What would be perfect, really, is a merger of the two. And I know I'm not the first person to think of that, or even in the top million. Videogame Hell is full of failed attempts - Onside Soccer, Kick Off World and more. The closest any game has ever come has been Sensible World of Soccer, so it seems only fair that I dissect it, suck its juices and see what sparkles.
SWOS is an arcade game. Its focus is entirely on its superb matchday experience - the actual management options are, in truth, dire. No clubs make transfers other than you, signing players is about money and nothing else, and there's precious little management. It's game after game, and you can improve your squad. That's it. Which is actually why Sensible World of Soccer is so good. Jon Hare and company knew where the faults lay, and they refused to highlight them.
Combination games have failed because it is extremely difficult to marry the two components together whilst keeping the scales balanced. You don't want to result in a situation where a gamer can be successful by being good at the match portion - otherwise the entire management section is worthless. Similarly, you can't place too much emphasis on management and tactical selection without making the match day a frustrating chore. You've got to be in control... while at the same time being up against the odds as a lower league side in the FA Cup. How do you do that?
That's the problem faced with The Complete Football Game, which I assure you is still a working title and not the name of the real thing. A game that not only presents you with some arcade antics, but lets you get down and dirty with plenty of management aspects, including in-depth tactical options, man management, media handling and more besides. Having your players working together on the training field, you'll want to take that into the match and put your plan into action. You can't just show up on the day in real life, and you can't do it in the game.
Like SWOS, there will be an entire world to be a part of, with leagues as famous as La Liga, or as obscure as the Isle of Man Football Combination. You want to be a part of a living, breathing football world full of ecstasy, pain and chaos. You want to embark on a career as a manager, a player or a chairman, each with your own personal goals. The football world is your personal playground.
Each fortnight I'll expand on these various elements, how they should shape up, why they are as they are, and their impact on the overall game.
Or alternatively, as it has panned out, I won't.
But I can pee all by myself, so it kinda works out well in the end.
Thursday, May 04, 2006
What is it, anyway?
What a great question.
I've just spent about five or ten minutes reading through the blog history, looking for some inspiration to try and spur me on to do a little more work tonight instead of finally flopping out on the couch. Now, I'm fully aware that procrastinating for five minutes in order to do more work is a pretty stupid thing, and that's why I'm not going to do any more work tonight.
However, I was quite startled. I started this blog in January. It dipped a bit in February and March so I've got to get back to regular updates. Especially now that I seem to be getting more visitors... perhaps as many as five more people are reading my blog. Reading it... confused. Nowhere in the blog does it actually say what I'm doing. Or why I'm doing it. Nowhere. Ok, there's a little bit on the left that tells you the name of the game, and it's pretty easy to work out that it's not an artistic piece following the journey of one man through the underworld. But that's it. No other information.
That's pretty fucking stupid.
So, starting next week I'm going to start writing up the whole thing. The theory, the philosophy, the driving force. Everything.
It's about time, too.
Have a teaser.... TCFG is a "football" game. Ooooh.
Now - cheesecake.
I've just spent about five or ten minutes reading through the blog history, looking for some inspiration to try and spur me on to do a little more work tonight instead of finally flopping out on the couch. Now, I'm fully aware that procrastinating for five minutes in order to do more work is a pretty stupid thing, and that's why I'm not going to do any more work tonight.
However, I was quite startled. I started this blog in January. It dipped a bit in February and March so I've got to get back to regular updates. Especially now that I seem to be getting more visitors... perhaps as many as five more people are reading my blog. Reading it... confused. Nowhere in the blog does it actually say what I'm doing. Or why I'm doing it. Nowhere. Ok, there's a little bit on the left that tells you the name of the game, and it's pretty easy to work out that it's not an artistic piece following the journey of one man through the underworld. But that's it. No other information.
That's pretty fucking stupid.
So, starting next week I'm going to start writing up the whole thing. The theory, the philosophy, the driving force. Everything.
It's about time, too.
Have a teaser.... TCFG is a "football" game. Ooooh.
Now - cheesecake.
Sunday, April 30, 2006
League leaguey leaguey league. League.
Some things are supposed to be easy.
Things like leagues. Leagues are easy, right? Teams go up, teams go down, some simple rules and bongio - you've done it. If only. Leagues in TCFG are fairly complex beasties.
As in real life, an entire league system is split into levels, and each level is further split into a number of divisions. At the top, there's one division. At the bottom, there could be as many as 30. It all depends on the nation. These levels all reorganise themselves each season to maintain some sort of regional distribution of teams, and all is good.
The hard bits come in when you start to think about forced relegations or promoted teams not making the criteria. Then you end up with some levels having too many teams, and others being relatively empty, and then you have to start messing about with relegations and promotions in order to get them in order again. And that's not easy, especially as you can't forcibly relegate a team just to make up the numbers. That's a bit unfair.
And just when you think you've got all that done, a giant monster comes along and stamps on it all, screaming "What about when leagues split into two very separate halves?"
Some league systems are really made up of two or more leagues, that converge as you get higher. If you're in one of these smaller leagues, you can't be moved to the other just to make up the numbers. Oh no, you're stuck there. You know where you are, and you know where promotions and relegations go. It's not too bad until the same problems as before jump in through the window. What if it's not even? It just gets messy.
Meh. It'll work out, I tell myself whilst crying into a pot of soup. And if it doesn't, at least it might generate some spectacular fractal displays on the screen.
Smashed screens are fractal, right?
Things like leagues. Leagues are easy, right? Teams go up, teams go down, some simple rules and bongio - you've done it. If only. Leagues in TCFG are fairly complex beasties.
As in real life, an entire league system is split into levels, and each level is further split into a number of divisions. At the top, there's one division. At the bottom, there could be as many as 30. It all depends on the nation. These levels all reorganise themselves each season to maintain some sort of regional distribution of teams, and all is good.
The hard bits come in when you start to think about forced relegations or promoted teams not making the criteria. Then you end up with some levels having too many teams, and others being relatively empty, and then you have to start messing about with relegations and promotions in order to get them in order again. And that's not easy, especially as you can't forcibly relegate a team just to make up the numbers. That's a bit unfair.
And just when you think you've got all that done, a giant monster comes along and stamps on it all, screaming "What about when leagues split into two very separate halves?"
Some league systems are really made up of two or more leagues, that converge as you get higher. If you're in one of these smaller leagues, you can't be moved to the other just to make up the numbers. Oh no, you're stuck there. You know where you are, and you know where promotions and relegations go. It's not too bad until the same problems as before jump in through the window. What if it's not even? It just gets messy.
Meh. It'll work out, I tell myself whilst crying into a pot of soup. And if it doesn't, at least it might generate some spectacular fractal displays on the screen.
Smashed screens are fractal, right?
Thursday, April 27, 2006
Fucked Over
I'm sure in many industries, you'd expect competitors would do whatever they could to get one over on a direct rival. If Cadbury are making a killing marketing Fruit & Nut at mental hospitals, Mars might well start tipping off news reporters about the lack of consideration being shown, knocking Cadbury down a peg whilst they introduce their new Spacer bar.
The games industry is surely no different. However, I am quite utterly baffled that a company who deal mainly in music games have decided they need to get one over me, hindering my progress in a subtle yet horrid way.
I'm talking about those bastards at Harmonix, who have cruelly decided to release Guitar Hero in the last few weeks, sapping any time I actually have had to work. Since getting the game I've done nothing but badly play my way through a selection of riffs and feeling like a true golden god.
Curse you Harmonix, and your evil, Satanic ways. Clearly a collusion with the Dark Lord.
Of WRAWK. The more W the better.
The games industry is surely no different. However, I am quite utterly baffled that a company who deal mainly in music games have decided they need to get one over me, hindering my progress in a subtle yet horrid way.
I'm talking about those bastards at Harmonix, who have cruelly decided to release Guitar Hero in the last few weeks, sapping any time I actually have had to work. Since getting the game I've done nothing but badly play my way through a selection of riffs and feeling like a true golden god.
Curse you Harmonix, and your evil, Satanic ways. Clearly a collusion with the Dark Lord.
Of WRAWK. The more W the better.
Thursday, April 20, 2006
Kudos on your Gibbage
There are other blogs out there. Blogs with news about kittens dying horrible deaths, blogs with news about kittens being horribly born; I have witnessed this, it's not a pretty sight and it only means that the books I read as a kid have lied to me. Even blogs with news about kittens being raised from the dead for sacrifice. They're out there.
There are also other blogs by games developers looking to chronicle their efforts for historical purposes. Armies of bearded net archaeologists drinking lots of tea might want to know why The Mysterious Sofa Man never got a worldwide release, and how to beat level four where the fat man attempts to sit on you.
One such blog is Dan Marshall's effort, Gibbage. I implore you to read it for a multitude of reasons. It's funny, for a start, and it's actually well written. Presumably because Dan knows how to do that sort of thing without tripping over his own convoluted metaphors. Another reason is the game itself, er, Gibbage.
Gibbage. I was a bit frightened when I first heard about the game. I don't know what Gibbage means so I looked it up in a dictionary. Imagine the horror when I found out that a "gib" is a castrated male cat. I had had enough of blogs about kittens that are sexually active, the last thing I needed was one where Tiddles is without his winky.
Thankfully, it also appears to mean something else, along the lines of horrible desmemberment of spikey haired, cartoon people, which was much more pleasing to my ear after having to put up with a Pokemon obsessed little sister.
Gibbage is, at its heart, a two player single screen action game, the aim of which is almost certain death. You bound around the level, chase your opponent and attempt to produce a kaleidoscopic image of limbs, blood, eyballs and tattered clothing. Also, there's something about collecting power cubes and returning them to base in order to win, like a platform capture-the-flag, but I was too busy dying horribly because I thought that was fun.
If I was playing with a friend, I'd possibly have tried to kill him instead. Six quid to kill as many friends as you like, even top professionals cannot match that price. If you like Worms, you'd like Gibbage.
Another such blog is Cliffski's. Cliff's actually got loads of games under his belt, like Democracy, in which you become the elected head of state of a real-world nation and attempt to please everyone at the same time (and fail), and Starship Tycoon 2 where you run a fleet of interstellar transport spaceships. Which is clearly better than a theme park, yet people keep buying theme park games. I believe the two games should really be merged into Capitalist Space Pig-Dog-Monkey 3 With Added Elections, but perhaps its good that Cliff doesn't listen to me. Also, there should be talking quaggas.
His latest game, which isn't finished yet but actually exists (unlike... um... moving on) is Kudos, which he cleverly attempts to describe as "a life sim that's not like The Sims but more like Animal Crossing which I have not played".
I'm sold, at any rate, because Animal Crossing is excellent and The Sims was just boring. In Kudos, you live life - go out drinking with your buddies, make more friends, get a job, realise you hate the people you work with, get a girlfriend, find out that the girlfriend hates all your friends but loves your work colleagues... and so on until an anthropomorphic duck tells you he's a hammer whilst looking whistfully at a phallic constellation in the sky.
Ideally. That's easily the best bit about Animal Crossing.
What I like about both Kudos and Gibbage is that they are indicative of the independent developer's range, variety and imagination, with which the major publishing houses can rarely compete. It reminds me of the early 8-bit days when the hobbyists were at the forefront, when every new game that wasn't a direct clone of an arcade hit was delivering something new.
That's how I see the indie scene, that's where the passion can be. Guys like Dan Marshall and Cliff Harris making games they believe in, and the quality can often shine through into the finished product. It doesn't stop with those two. There's Si Read, creator of New Star Soccer 3, pretty much the only game out there where you get to live the life of a footballer since the days of Gremlin's Footballer of the Year. There's Introversion making games like Darwinia, or the forthcoming Defcon which allows you to attempt a bit of Global Thermonuclear War without the help of WOPR, and has the genius touch of "office mode" so you can finally nuke the guy from accounts and the boss will be none the wiser. Games built by guys and girls who've thought, "You know what I'd love to play?" and then gone and fucking built it.
You can only be urged to support them if you like their games. Help them make more.
And help me as well, my blog needs traffic.
There are also other blogs by games developers looking to chronicle their efforts for historical purposes. Armies of bearded net archaeologists drinking lots of tea might want to know why The Mysterious Sofa Man never got a worldwide release, and how to beat level four where the fat man attempts to sit on you.
One such blog is Dan Marshall's effort, Gibbage. I implore you to read it for a multitude of reasons. It's funny, for a start, and it's actually well written. Presumably because Dan knows how to do that sort of thing without tripping over his own convoluted metaphors. Another reason is the game itself, er, Gibbage.
Gibbage. I was a bit frightened when I first heard about the game. I don't know what Gibbage means so I looked it up in a dictionary. Imagine the horror when I found out that a "gib" is a castrated male cat. I had had enough of blogs about kittens that are sexually active, the last thing I needed was one where Tiddles is without his winky.
Thankfully, it also appears to mean something else, along the lines of horrible desmemberment of spikey haired, cartoon people, which was much more pleasing to my ear after having to put up with a Pokemon obsessed little sister.
Gibbage is, at its heart, a two player single screen action game, the aim of which is almost certain death. You bound around the level, chase your opponent and attempt to produce a kaleidoscopic image of limbs, blood, eyballs and tattered clothing. Also, there's something about collecting power cubes and returning them to base in order to win, like a platform capture-the-flag, but I was too busy dying horribly because I thought that was fun.
If I was playing with a friend, I'd possibly have tried to kill him instead. Six quid to kill as many friends as you like, even top professionals cannot match that price. If you like Worms, you'd like Gibbage.
Another such blog is Cliffski's. Cliff's actually got loads of games under his belt, like Democracy, in which you become the elected head of state of a real-world nation and attempt to please everyone at the same time (and fail), and Starship Tycoon 2 where you run a fleet of interstellar transport spaceships. Which is clearly better than a theme park, yet people keep buying theme park games. I believe the two games should really be merged into Capitalist Space Pig-Dog-Monkey 3 With Added Elections, but perhaps its good that Cliff doesn't listen to me. Also, there should be talking quaggas.
His latest game, which isn't finished yet but actually exists (unlike... um... moving on) is Kudos, which he cleverly attempts to describe as "a life sim that's not like The Sims but more like Animal Crossing which I have not played".
I'm sold, at any rate, because Animal Crossing is excellent and The Sims was just boring. In Kudos, you live life - go out drinking with your buddies, make more friends, get a job, realise you hate the people you work with, get a girlfriend, find out that the girlfriend hates all your friends but loves your work colleagues... and so on until an anthropomorphic duck tells you he's a hammer whilst looking whistfully at a phallic constellation in the sky.
Ideally. That's easily the best bit about Animal Crossing.
What I like about both Kudos and Gibbage is that they are indicative of the independent developer's range, variety and imagination, with which the major publishing houses can rarely compete. It reminds me of the early 8-bit days when the hobbyists were at the forefront, when every new game that wasn't a direct clone of an arcade hit was delivering something new.
That's how I see the indie scene, that's where the passion can be. Guys like Dan Marshall and Cliff Harris making games they believe in, and the quality can often shine through into the finished product. It doesn't stop with those two. There's Si Read, creator of New Star Soccer 3, pretty much the only game out there where you get to live the life of a footballer since the days of Gremlin's Footballer of the Year. There's Introversion making games like Darwinia, or the forthcoming Defcon which allows you to attempt a bit of Global Thermonuclear War without the help of WOPR, and has the genius touch of "office mode" so you can finally nuke the guy from accounts and the boss will be none the wiser. Games built by guys and girls who've thought, "You know what I'd love to play?" and then gone and fucking built it.
You can only be urged to support them if you like their games. Help them make more.
And help me as well, my blog needs traffic.
Wednesday, April 19, 2006
Tons of Lovely Data

Yup, that's a screenshot. Unfortunately for you, it's just of the editor. Remember what I said earlier about funbots (clearly in a moment of drunken madness, may I add)? The editor is currently the main focus of my work, as it's through the editor's creation that the database structure is defined. But look at the snazzy kit colours! Ooooh!
If The Complete Football Game is to successfully simulate the entire football world, it would need a lot of data. Teams, players, competitions, nations, cities, stadia, league systems, regions, ex players, defunct nations and clubs, currencies, spoken languages, injuries, rivalries and more need to be stored to keep the game ticking along, and with over 250 nations in the game you'd be forgiven for thinking it's a struggle to get them all in.
Yet TCFG's database currently weighs in at a relatively paltry 63MB, uncompressed. The structure is not yet complete - leagues still need to be catered for - and when the game's running it needs a lot of space to store all the fixtures and results that don't get stored in the database, but ultimately TCFG is surprisingly space friendly.
The above screenshot shows the main club edit screen. Now, I dunno if Newry City are that rich in real life, and the layout isn't fantastic, but the editor's more about function than style right now. Each club has two kits, three teams (each with their own stadium if necessary), a maximum of 80 players (which ought to be sufficient), and various other titbits of information. Enough for a club.
Players are even more detailed. Each player in TCFG has his date of birth, nationalities, international record, spoken languages, a rating for each of the 16 positions in the game, his career history, which foot he kicks with, how good his weaker foot is at various tasks - enabling a right footed player to have poor accuracy with his left but still be able to give it a hefty whack - forty-eight attributes and information relating to his overall ability. And on top of that, there's his height, skin colour, hair and beard styles and colour, and even an attribute to let the game know that he changes his appearance more often than Djibril Cisse.
All that - and the database is capable of storing 375,000 players.
Now, that ought to give some insight into how complex the game is, and why it's bloody taking so long.
Subscribe to:
Posts (Atom)