What is a Fixture Engine?
The Fixture Engine, as one may expect, is the heart of any Sports Game. It’s responsible for calculating the result of any fixture and producing the stats of the players involved. It has to be accurate and it has to be enjoyable.
Choosing what type of Engine
It was clear from the start that any type of 3D engine was not possible for a variety of reasons. Even so, I still felt the Fixture Engine was one of the the most important parts of Football GM.
For a sports game simulator there are two main ideas for this engine:
- A Statistical Engine
- A Engine based on the player’s actions/movements. – which can then been displayed to the user (in Football GM‘s case in 2D).
The Statistical Engine, as the name may suggest, is based on real life Statistics. For example the real life average for a RB in a certain game situation against a certain defence might be 3.5yds. Extrapolating this over the entire game, and an entire season produces a very realistic statistical result.
There are however drawbacks to this method, significantly the user is just told the result of the play, there is no way for them to “see” the play as it develops (you could show a predefined diagram of the play result, but that’s not the same).
The other method is to create an engine which calculates the movements/actions of every player on the field in such a way that we get results which are realistic. It’s a lot harder to tune this type of engine to get statics which are realistic, but I feel the benefit to the user are enormous – for one the player’s position on the field can be shown to the user at any time.
I decided that for the user the attraction to see the play develop was too much to ignore, and so – unfortunately – the statistical only engine was not an option.
The Start of the Engine
Having decided upon the type of engine would be used, the first thing to do was create the basics: Define the constructs of the field (e.g how long/wide it is) and make the player’s move around in a realistic manner. For this I created a simple 40 yard dash test. Using the player’s attributes (detailed in an earlier post) I got to the stage where players would run the 40 recording the same times as one would expect in real life for that player.
From there I could gradually expand what players could do. Running in a straight line became running back and forth, or players chasing each other. Ball physics were created so when a player kicked/passed the ball it would travel realistically. Player’s actions would expand, so they could get into a huddle, wait until everyone is in the huddle, talk for a while then walk into the chosen formation.
Around June 2013 the engine was in a stage where it played a (very, very) rudimentary game of football. However, as can be seen it was still a way off being complete at this stage.
And the engine as of September 2013:
Feel free to leave your questions and comments!