RISC World

Football Manager for RISC OS

Paul Johnson

If you have played the original version (or the version on the last CD), you will have noticed that there is not an awful amount to actually do in the game. This complaint can be levelled at any form of simulation game.

A case in point

Back in the 1980s, flight simulators were deadly boring affairs - you had a cockpit, a pile of dials and a large manual which explained everything as to what did what. Graphically impressive, but that was about it. The next stage of development was that the player could control certain aspects such as the height, speed and direction, but at the end of the day, it was still the same game. Eventually, we arrived at the situation on the likes of the PS2 et al that the simulator is used by the military - a far cry from something that would be seen in WH Smiths by some spotty youth on a demonstration Oric-1.

Football is different as it really is a spectator sport, so the interest has to be kept by the animation of the players and the tactical side of matters. The tactical side really applies to any computer platform.

In the case of FM, this is the team selection, team training, tactics and money management.

Team Selection

To start with (after picking your team), you will start the game off with the same number of players as the team you have picked. There is an inherent problem with this though - say you pick Liverpool. At the start of the 2002-3 campaign, you will start off with a squad of 28 players which sounds really good. The problem is that you will not be able to afford to keep a team of that size and will need to offload (perhaps) 10 players. It is up to you to decide who stays and goes - will you dispose of Baros, Smicer and Heskey or will Gerard, Hyppia and Babbel get the push? Again, it will not be that simple - by losing Gerard, Hypia and Babbel, you're losing a talented midfielder, superb defender and a cracking centre back. How will that change the strengths of your team? Lose too much in midfield and it's a case of unless the defenders move forward (dangerous) and attack move back (unhelpful), then the number of attacks will diminish.

Okay, we've sorted out our team and raised a few quid in the process and been left with a team of (say) 18. Now there is no way that in Division 3 you would have a team of premiership standard (unless you had a huge bankroll). To get around this, the players skill levels will be reduced. Michael Owen will not be able to split defences apart in the way he has in reality. Okay, he may still be fast, but he won't have the spark which makes him the player he is. Before someone spouts up that this is unfair, refer back to the original version of FM (and FM2) and you'll see that Kevin Keegan, Mick Mills and quite a few others in division 4 playing for Liverpool - nothing has changed that way.

Training and Tactics

In my opinion, the original version lacked an important aspect; training. Sure, you could say what formation you wanted the team to play in, but you could not train. Due to this, the original game never really allowed for a team to progress and become better than other teams - it was all random with a skill increase with a promotion (and when you're relegated, due to a bug, you never lost that skill, though you should). FM2 introduced a rudimentary training system, but it was for the entire team, not team sections; what was good for defence is not going to be too good for attack, or the goal keeper.

Back to the actual selection. When you play a match, you will presented with the following.

As you can see, there is a discrepancy between the two teams in both the midfield and attack. If you were to field a team with that much of a difference, you'll be on a hiding to nothing. You can also see that they are playing a different formation to you. While playing a different formation has it's advantages (if you play a 4-4-2 [four defence, four midfield, 2 attack] and the other team plays a 3-5-1 formation then you will have an advantage in defence and attack, but a disadvantage in midfield, the disadvantage of playing a different formation is that if you have a combined defence stat of 10, the opposition midfield score will be greater than yours, so more is won in midfield and more service given to their sole attacker (who may have a score of 12, so in theory, he can run rings around your defence). If you both play 3-5-1, there is no advantage or disadvantage and the game should be evenly matched.

To improve the team statistics, you alter the team selection.


This change improves your prematch statistics to.


At this point, we have the best possible squad to go up against the legions of the enemy and that's fine and dandy. We have also decided on what formation the team will take. Wonderful. What we haven't decided on is what *type* of game the team will be playing. It is often heard that tactically, a team has gone out for a draw. This means one of two things; either the two teams are very evenly matched and are in a position in the league that getting a draw will be as good as a win or that they know under normal circumstances, they wouldn't stand a cat in hells chance of anything, so by containing the other team so they can get a minimum of shots on target, they can get at least a point out of it.

A team's game plan may be defensive and hit on the counter. Again, this means that the defensive team is closing down the opposition and pinning their chances on a number of good passes to the midfield (or further) - the idea is that so many of the opponents players have been moved up that they will be vulnerable elsewhere. As long as you have players able to do this, it's quite a good way to play.

Finally, there is the all out attacking game. Your team throws absolutely everything at the opposition. This is the most physically demanding of all the tactical games available and you should expect a couple of players needing treatment by the end.

While it is possible for individual training programmes to be included, it makes more sense to lump all of the individual units together and have the goal keepers practicing penalties or other set pieces.

The same applies to defence, midfield, forwards and reserves (as an aside, it would be interesting in the future to develop a reserve fixture list, but for now, I won't).


It is inevitable that a player will be injured. In the original games, a player was injured for a couple of games and that was it. There was no physiotherapy or anything like that. You'll be glad to know, that's been changed. While you can completely ignore a player (not nice!), it is in your interest to get a player fit - not only so you can play the player, but also that if you have to sell the player, then other teams will show interest.


This is the final part of the player game is the money aspect.

In the original, money management was limited to buying a player (this is after a match and there is only one player available at a time), selling players (available after you've been offered a player to buy), getting and paying off a loan (only at the same time as being able to sell a player). The only income you get (other than a loan and selling a player) comes at the end of a game when you get the gate receipts.

Not much to interest there. We can fiddle with things so that the teams can be altered before and after a match and that there is a larger pool of players up for grabs, but the largest change is sponsorship, advertising and most importantly, TV revenues. These three sets of money are decided at the start of the season and until your team hits Division 1, will last for a year.

Right, we've now got the main parts mapped out. Next comes the RISC OS parts.

We have three parts

1. Animation .

2. Filer .

3. WIMP interaction.

Animation is basically the football match, there is nothing else really that needs animating. Now the nice thing about football is that the same sprites can be used for both teams, the only difference is that the team colours need to be changed. RISC OS allows you to recolour sprites, which is useful for home and away strips as well as.

The filer deals with all input and output of files. It makes sense to use MessageTrans for reading in data; it makes sense (why re-invent the wheel?). However, using MessageTrans makes the code platform specific. Fortunately, C++ allows us to use something similar to MessageTrans so that a datafile containing something akin to.

team3:Oldham Athletic

can be easily used.

WIMP interaction is how the player will be able to tell the game what is going on. The original version was all keyboard entry - 99 to continue and the odd letter but beyond that, there was very little else. The advantage of the WIMP is that you get to do what you want to do by clicking. Okay, the mouse is really being used as a substitute for the keyboard, but as was observed in FM2, the gameplay was improved when the joystick option was added in - it was just a plain swap.

The aim of the re-write is to keep as far as possible to the original version, but to make it as playable as Premier Manager (which is available on the Krisalis collection from R-Comp). The second aim of the game is to allow for other platforms to be able to use the central engine and include in their own parts (by using (say) GTK or wxWindows). This is actually a very simple thing to implement. As the game is being written in C++, we have to use either GCC or EasyC++ (to use EasyC++, you will need the updated version from ProAction/APDL). To ensure that we keep the OS specific parts away from the rest of the code we have to surround the OS specific material with.

     #if defined(__EASY_C) || defined(__riscos__)
     /* OS Specific code */

This pre-processor directive also has to be used for header files.

Why do we need this? Simple - try to compile this under Linux or any other platform (no cheating and using the GCCSDK cross compiler here either!).

/* very simple code which won't compile under anything other than RISC OS */.

     #include "kernel.h"
     #include "swis.h"
     using namespace std;
     int init_wimp()
       int wimp;
       _kernel_oserror *er
       er = _swix(Wimp_Initialise,_INR(0,2)|_OUT(0),310,"TASK",0,&wimp);
       if (er != 0)
         cout << "Wimp initialisation failed - terminating" << endl;
       return wimp;
     int main()
      int task_handle = 5;
      task_handle = init_wimp()
      cout << "Task handle = " << task_handle << endl;
      return 0;

Under g++ (2.96, Slackware Linux 8.0), I get the following.

     test.cpp:3: kernel.h: No such file or directory
     test.cpp:4: swis.h: No such file or directory.

If I alter the code so the preprocessor parts are included, then the output becomes.

     Task handle = 5

Which is what you'd expect.

There is another way around this, and that is to include RISC OS specific source files and have "hooks" inside the engine. The RISC OS specific files are compiled by using a different make file to the other platforms (which have their own makefiles and OS specific code).

Finally I will ask this folks - I am a useless artist, please help out and send in some sprites for the animation.

Paul Johnson