Error message

  • Deprecated function: Return type of Aws\HandlerList::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 32 of /var/www/html/vendor/aws/aws-sdk-php/src/HandlerList.php).
  • Deprecated function: Return type of Aws\Api\AbstractModel::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 7 of /var/www/html/vendor/aws/aws-sdk-php/src/Api/AbstractModel.php).
  • Deprecated function: Return type of Aws\Api\AbstractModel::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 7 of /var/www/html/vendor/aws/aws-sdk-php/src/Api/AbstractModel.php).
  • Deprecated function: Return type of Aws\Api\AbstractModel::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 7 of /var/www/html/vendor/aws/aws-sdk-php/src/Api/AbstractModel.php).
  • Deprecated function: Return type of Aws\Api\AbstractModel::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 7 of /var/www/html/vendor/aws/aws-sdk-php/src/Api/AbstractModel.php).
  • Deprecated function: Return type of Aws\Endpoint\Partition::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 13 of /var/www/html/vendor/aws/aws-sdk-php/src/Endpoint/Partition.php).
  • Deprecated function: Return type of & Aws\Endpoint\Partition::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 13 of /var/www/html/vendor/aws/aws-sdk-php/src/Endpoint/Partition.php).
  • Deprecated function: Return type of Aws\Endpoint\Partition::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 13 of /var/www/html/vendor/aws/aws-sdk-php/src/Endpoint/Partition.php).
  • Deprecated function: Return type of Aws\Endpoint\Partition::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 13 of /var/www/html/vendor/aws/aws-sdk-php/src/Endpoint/Partition.php).
  • Deprecated function: Aws\Credentials\Credentials implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) in include() (line 8 of /var/www/html/vendor/aws/aws-sdk-php/src/Credentials/Credentials.php).
  • Deprecated function: Return type of Aws\Command::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 7 of /var/www/html/vendor/aws/aws-sdk-php/src/Command.php).
  • Deprecated function: Return type of & Aws\Command::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 7 of /var/www/html/vendor/aws/aws-sdk-php/src/Command.php).
  • Deprecated function: Return type of Aws\Command::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 7 of /var/www/html/vendor/aws/aws-sdk-php/src/Command.php).
  • Deprecated function: Return type of Aws\Command::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 7 of /var/www/html/vendor/aws/aws-sdk-php/src/Command.php).
  • Deprecated function: Return type of Aws\Command::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 7 of /var/www/html/vendor/aws/aws-sdk-php/src/Command.php).
  • Deprecated function: Return type of Aws\Command::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 7 of /var/www/html/vendor/aws/aws-sdk-php/src/Command.php).
  • Deprecated function: Return type of Aws\Result::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 9 of /var/www/html/vendor/aws/aws-sdk-php/src/Result.php).
  • Deprecated function: Return type of & Aws\Result::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 9 of /var/www/html/vendor/aws/aws-sdk-php/src/Result.php).
  • Deprecated function: Return type of Aws\Result::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 9 of /var/www/html/vendor/aws/aws-sdk-php/src/Result.php).
  • Deprecated function: Return type of Aws\Result::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 9 of /var/www/html/vendor/aws/aws-sdk-php/src/Result.php).
  • Deprecated function: Return type of Aws\Result::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 9 of /var/www/html/vendor/aws/aws-sdk-php/src/Result.php).
  • Deprecated function: Return type of Aws\Result::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 9 of /var/www/html/vendor/aws/aws-sdk-php/src/Result.php).
  • Warning: Undefined array key "nid" in views_handler_field_term_node_tid->pre_render() (line 98 of /var/www/html/docroot/sites/all/modules/views/modules/taxonomy/views_handler_field_term_node_tid.inc).
  • Warning: Undefined array key "nid" in views_handler_field_term_node_tid->pre_render() (line 98 of /var/www/html/docroot/sites/all/modules/views/modules/taxonomy/views_handler_field_term_node_tid.inc).
×

Entertainment

I Finally Understand The FIFA Hate — After 20+ Years, I Might Never Go Back

I’ve been playing FIFA video games regularly for over 25 years. I’m not sure I’ll ever play again.

This year, for the first time, I focused my FIFA playing on the FIFA Ultimate Team mode. I’ve always loved CCGs and after a few years of dabbling in FUT I finally jumped in and became hooked

I loved all of the little carrots to work toward, challenges and objectives to complete to improve my squad. I loved trying to figure out the best way to configure the players I had on hand while using the transfer market to fill any holes. Familiar with the randomness of packs from other CCGs (like Magic: The Gathering, Hearthstone, etc.), I wasn’t too worried about the fact that it was nearly impossible to get the best players. 

I played FUT almost every day for a few months, almost obsessed with the mode. I refused to pay for actual packs because a $60 game shouldn’t ask for more money to use the players in the game, but I did everything else I could to make my team the best it could be. I got lucky unpacking Cristiano Ronaldo, Lionel Messi and Team of the Year Trent Alexander-Arnold. I managed to fit them all into a 90-rated, max-chemistry team, with only Virgil van Dijk having been obtained via the transfer market. 

I was proud of the team I built, but I don’t know if I’ll ever play with those players again. FIFA became like an abusive relationship, and I feel better when I stay away.

I first started to become disillusioned with FIFA because of the meta of the game. My favorite part of playing FIFA is replicating the real-life action in a video game. If I’m playing as Man City, I want to have slick, quick passing dice open an opposing defense. If I’m playing as Real Madrid, I use the dominating midfield to set up the clinical Karim Benzema. But in FUT, there’s only one type of player worth using: The fastest.

There are players who are amazing in real life but never used in FUT. Bernardo Silva and Thiago are magicians with the ball but useless in FUT because they don’t have 90 pace. Meanwhile you’ve got someone like Moussa Sissoko, rated 79 overall, who is somehow one of the most-used midfielders in the game. Why even have overall ratings if the only one gamers care for is pace? EA Sports can’t figure out how to make slower, technical players perform better than faster, less technical players, so gamers just flock to anyone with a high sprint speed to succeed.

It doesn’t help that FIFA continues to release better and better cards every week. While this makes sense to some extent (it allows folks with great teams to keep getting better, giving everyone something to work toward), it takes away some of the fun of playing with base players. It’s like adding a remote-controlled car to a set of Matchbox cars. Do we really need a Gio Reyna card with better stats than Lionel Messi? Can we not just play the game with the players that actually exist as they’re currently rated?

But I can deal with the meta of the game being baffling, even if it’s an indictment over the quality of the game I’m playing. The exasperating online play made me question whether I wanted to keep playing at all.

Without even getting into the way it seems like more often than not, goals in online play are the result of frustrating lapses by defenders or weird deflections (at least one person at The18 has broken a controller this year over FIFA rage, though we will not name him here), the worst part of online play is the toxic culture.

For years FIFA gamers have trolled opponents by extending celebrations as long as possible and forcing them to watch replays of goals. This could make a simple 15-minute match last almost twice as long and is one of the most annoying things I’ve experienced in 20-plus years of playing games online — and I’ve played some of the most toxic games of all time, from MMORPGs to FPSs. 

While FIFA 21 finally allowed gamers to skip their opponents’ goal replays and tried (unsuccessfully) to limit the length of unskippable celebrations, online play remains depressingly toxic. Things are only exacerbated in FUT Champions, where players will do whatever it takes to get a win, often utilizing feckless tactics. (Laughably, some people don’t even want to play, instead sending you a message asking for you to quit to let them get a win because they claim it’s their last chance to win, but then they quit immediately if you score on them.) 

Even worse, the PS5 (and Xbox Series X/S) version of the game added late-game celebrations that last for 60 seconds. In single player they’re kind of fun. In multiplayer they go on and on and your opponent can force you to watch all of it; EA Sports even makes it harder for those who want to skip it to do so. 

To be clear, I’m not bad at FIFA; I’m nowhere near the best, but I’m not bad. When I stopped playing online, I had a rating in the high 1700s and won more than I lost in FUT Champions. But playing online became unbearable because when I did lose, 90 percent of the time my opponent stopped at nothing to make it as infuriating as possible. Winning against these asshats felt so damn good, but it wasn’t worth the frustrating defeats.

I’m not saying everyone I played against in FIFA was an asshole worthy of derision. I appreciated how the community rallied together to institute a first-goal-wins policy to complete icon challenges. I’m sure most people who play FUT just want to have fun and have many of the same frustrations as I do, but when an online game allows someone to be an asshole, most of the time they will be assholes. FIFA chooses to allow toxic behavior to perpetuate. 

But that wasn’t the worst of it.

For a while I’ve heard rumblings of how FIFA cheats behind the scenes to push gamers to spend more money buying packs. There have been lawsuits against EA Sports arguing that there is scripting to force you into losses to make you want to buy better players. There are theories that FUT nerfs certain cards to make sure gamers continually buy packs to stay competitive.

Having never really put much time into FUT, I thought all of this was just the result of gamers upset over the miniscule chances of getting good players from packs. As I played FUT more and more, I became more convinced that there is something fishy going on.

Can I say definitively that FIFA is doing something nefarious? No. But I can say definitively that FIFA cheats.

The last straw for me was a single-player Squad Battle. Initially I didn’t mind the grind of Squad Battles, but as my team grew in quality and I played at higher difficulty levels, it became clear that FIFA made up for its pathetic attempts to code AI by simply cheating. 

My final game in FUT was a Squad Battle against a 60-rated, 20-chemistry team on max difficulty. Just prior I had beaten a similarly rated squad 7-2, so I wasn’t worried about losing. 

Instead, the opponents with 60 speed playing out of position with low chemistry (which decreases a player’s stats) kept up with Cristiano Ronaldo, Lionel Messi and Paulo Dybala. The goalkeeper-playing-defender sped past my 89-pace Ronaldo to reach crosses. The defensive midfielder-playing-striker danced past Virgil van Dijk and out-jumped him for corner kicks.

It was blatantly obvious that instead of actually making an appropriate difficulty setting, EA Sports made the players better than they actually are. It was like watching a bicycle outrace a motorcycle or a kindergartener beat Usain Bolt in the 100-meter dash. 

I lost that match 3-1, giving up a late goal while pushing for an equalizer. I immediately closed FIFA and decided I was done with FUT. 

I’m sure some people will read this and say I’m just bitter about losing. While I am bitter, it’s not about losing, it’s about the manner of defeat. I can stand losing — I’ve never rage quit from a game in my life. I can’t stand an unfair game created solely to squeeze more and more money out of its player base.

I knew when I started playing FUT that countless gamers have grown tired of EA Sports focusing solely on utilizing microtransactions to generate immense profits. I knew to expect a certain level of frustration with miniscule chances of getting the best players. I didn’t know to expect an annoying meta, a toxic online culture and cheating single player. 

I’m done with FIFA 21. I’m not sure if I’ll play FIFA 22.

Last night I ordered a Switch. I know Nintendo will be up front with the fact it’ll charge me an arm and a leg for every game. And I know Mario will be nicer and fairer to me than FUT ever was.

/endrant

Videos you might like