Week notes: a Batumi blackout, contract jeopardy, and head-to-heads
Last week, as I was preparing to turn in for the night, the power went out in my holiday apartment. I figured it would come back on quite quickly since I didn't expect it in the first place. After doing the Nigerian thing - confirming that the power was out everywhere and not just in my room or building - I sent a message to the host via Whatapp and I was told the power was out in the whole of Batumi and I laughed.
I sat on the balcony, looking out at the Mariott hotel across the street as well as a couple of casinos that still seemed to have power (I later discovered that they had diesel-powered backup generators) and started thinking about the extra features of the game that would improve immersion for managers. While I already had a rudimentary system to notify managers that players' contracts were running out, it didn't feel adequate. I'd also been meaning to add a head-to-head component to the match details screen (at least) so that, like in TrophyManager, managers could see their historical performance against a specific team over the previous seasons. I also concluded that some of the inbox messages that managers get were quite light on details and we needed to fix that. AI-Managed teams also didn't renew contracts of their players which meant they would lose important players to free-agency even when the numbers and metrics dictated that they try to keep them or at least, get a good transfer fee for the players.
And so I decided on the focus for the week:
- Players would get the ability to demand new contracts (both for human managed teams and AI-controlled teams)
- Contract offers would get an element of jeopardy because players also have agency - just like managers (AI or not) - and can decide to accept or reject the terms on offer
- Notifications for human managers would become richer, covering as much of the message types we have as possible
- Predictable contract renewal messages at specific points during a player's contract - specifically, with 2 seasons to the end of their current contract like IRL
- The match details screen would get a head-to-head view which would span not just the current season but all meetings that have ever taken place between the sides.
I debated how much agency I'd give players and AI-managed teams when it came to contract renewals but in order to maintain the integrity of the game and not offer unfair advantages to AI-managed teams, I decided in favor of having the same level of agency as we have in players considering contract offers after a transfer fee has been agreed. That also meant building mechanisms that allowed AI-managed teams to transfer-list a player that's refused to sign a contract renewal. The AI-managed teams also had to have a way of deciding how important their players were based on their overall ability within the squad, the availability of players in each position, their wage bill (and budget) as well as the players' tactical fit.
For Notifications, the choice to make was between having an LLM rewrite a specific template for each message type each time that message was going to show up in a manager's inbox or limit the LLM's involvement to a fixed set of messages. In the end, I chose to make it configurable, allowing LLMs to rewrite all messages but retaining the ability to turn that off as needed.
In the end, it turned out to be a good week as I also managed to ship some improvements to the play-off brackets system, player grid customization (managers could now create custom grid views from any grid of players) and all the other objectives I decided on during the blackout.
And that would be all for now. Till next time,
Oladapo.