So I’ve spent enough time on Pass Shoot Score! that I figured it was time to give it a better writeup than just what I’ve given it in the November 2015 monthly summary.
Football Manager by Sports Interactive is obviously the main influence with the game. Rather, it was while playing the game and experiencing minor bugs or irritations. If I made the game, I could fix the bug. I know that’s a silly thought, but it’s the truth. And so spawns Pass Shoot Score!
People focus too much on programming languages and frameworks, but let me speak about it for a second. I did originally start this project in C# with my Spruntheus Framework. It’s not a bad framework by any means (trust me, it’s good! Just not quite ready…), but I realized I needed a more evolved framework. And along with that, it was the perfect opportunity for me to learn C++11/14 and Boost. Also a quick shout out to the GUI library dear imgui. Enough about languages/frameworks. Moving on…
Football Manager and general sports simulation games are typically light on graphics, heavy on systems. And when I say systems, I mean interlinking classes that function together for a particular task. Link all the tasks together, and you get a complex and hopefully fun and addicting simulation. To list a few systems and potential problems:
- The world database: How do we keep track of (potentially) thousands of players in multiple countries? A database is probably the correct answer. But until I’ve established what a player object requires, it’s not worth creating one.
- The match system: Given an 11v11 situation, how do we simulate the match? Football Manager (apparently) has every player as an independent agent. For every situation, a player has a set of actions he can take (determined by creativity, vision, etc.). Then whether or not the player can execute the decided action is based on another set of attributes.
- Scouting system: How do I keep track of the scouting status for every player? At any time I could have thousands of players scouted. Every scout has different amounts of skill, resulting in different amounts of accuracy on the scouting. To keep track of scouting reports for every player and for different dates is an incredible amount of data. Too much, actually, to keep as is. I need a way to deterministically figure out scouting reports, such as with a seed.
I could go on, but I think the idea is made clear here. There are a lot of systems, and they have to all work together. I don’t know how big Football Manager’s team is, but I’m sure it is larger than one.
As with most indie game developers, the initial scope is probably way too large. I don’t have enough experience to estimate the workload of every system and task. But coincidentally, I also don’t have any deadlines. So let’s get going, shall we?
If you’re interested in watching the development of Pass Shoot Score!, check back on this blog in a few weeks! The game is available here on Github. If you have thoughts, please do share them below! Knowing people are actively following my development helps me stay motivated!