TECHNOLOGY MATTERS
a bunch of unsorted thoughts about tech, software, etc.

read this site in: |

A Contrarian View On Battlefield 6

A Contrarian View On Battlefield 6

Battlefield 6 is a good game. A very good game. I would say, BF6 is the embodiment of the concept of a “good” game: small bugs aside, the game draws on its most recent predecessors to build a game that appeases—or at least tries to—to all crowds. It’s easy to enumerate those qualities: excellent gun play, good and detailed graphics (albeit a little bland to my taste), nice weapon customization options, maps that are large and detailed, and a good variety of modes. It has the very fun destructible environment of older entries. It has all the vehicles and gadgets of later entries. It brought back the Rush mode first introduced in Bad Company as well, and of course it packs Conquest, the main Battlefield game mode.

And yet, first playing it on the second weekend of Open Beta, I wasn’t impressed. In fact, playing it made me miss the old ones, or even it’s rival, CoD, more than I believe I should. You see, all elements are there, connected into a cohesive whole, but: this entry adds nothing of significance to the to the series (well, besides that now you can grab fallen buddies and drag them to safety while healing, but this is more of a gimmick and doesn’t change gameplay at all).

For context, I one of those that will argue that Bad Company 2, for all its flaws, was the best game in the series. I also still have fond(er) memories of Battlefield Vietnam and 1942, the first two, which I would spend nights on “LAN houses” playing with friends. And I, for a number of reasons, mostly skip Battlefield 2, 3 and 4. But I love BF5, played a good amount of Battlefield One, and dozens of hours of 2042, despite all its issues.

Battlefield 6 showing the tactical destruction of the environment
The new Battlefield 6 - Image cortesy of [EA](https://www.ea.com/games/battlefield/battlefield-6)

Feature Envy

The latest Call Of Duty, “Black Ops 6”, introduced a game changing mechanic that I’ve not seem in a previous multiplayer shooter: zero down time. You die, hit the keyboard a few times to skip the killcam and boom, you are alive and running again. It’s a small thing that makes a lot of difference. I no longer have to sit for half a minute multiple times when playing, which feels like a terrible punishment for being a bad player - staying longer in the bench.

A soldier being dragged to safetySoldier being dragged to safety - Image cortesy of Screen Rant

And while I understand that this spawn delay is to give an advantage to the killing team, well, hasn’t CoD just proved that it is not needed?

I’m not saying that this is needed in Battlefield. I’m saying that it’s a great addition to the mechanic and forever changed CoD in my view - and it’s completely fitting with the current design of the multiplayer part of it, which focus a lot on a chaotic shooter experience (much like old classics like Quake II). So, indeed, this might be out of place on a game that should be about tatics. The question is: where is the zero-spawn-timer equivalent in BF6?

Tactics Without Strategy

This is one of the reminiscent feelings I have from 2042 - while the tactical gameplay is excellent, the strategical gameplay is lost. It no longer seems to matter which flag you are attacking, or even if you are attacking a flag on Conquest - keeping going after enemies and shooting them down, and you will eventually win the game. This creates a bunch of issues for a lot of game systems: medics and squad members seems to not care about ressurrecting you. It’s not fun to stop shooting to ressurect someone, and if the payout isn’t great, then, why would you?

2042 problem was clearly the size of the battlefield. There were so many players and so many locations that it was hard to feel like you could make a difference. Strategy works a lot better because your actions can really make a impact - I remember on old BF games how cool it was to pull a good old backdoor assault - skip the first flags, driving around it, and trying to grab one of the rear ones, would either force enemy to disperse and give your offensive an advantage, or, if they were busy enough, you could conquer this flag and score a few points for your team.

Nowadays, there are so many people in each match that there’s no way to find an unprotected flag, and even if there’s, the small amount of players so can circle back, get rid of you, won’t disrupt the front. This might sound more realistic, but it’s certainly less fun.

Some scenes from Battlefield 6 depicting houses that shows the verticality of the maps
Notice how many Windows are available to hide in and get a good vantage point - Image cortesy of [EA](https://www.ea.com/games/battlefield/battlefield-6)

That said, there is space for tactics. Maps are well designed, so there are favored ways to engage each fight. Hitting enemies head on is unadvisable, and flaking is always a good tactic. It’s easy to get pinned down if you are not careful, and the verticality of the maps make it easy to seeking vantage points. Too bad the glare from your aim makes you easily spottable, because that spoils a bit the stealth moves. But, on the other hand, I hate getting shot without having any idea where the enemy is.

It’s early days

BF6 is not out of the BETA yet, and if 2042 is any indication, it will get better. It might get better enough to make me enjoy it. But I’m not holding my breath, unfortunately - I think EA forgot to add a reason to go back for those of us that have played enough of the previous titles.

Continue reading →

Parsing code with Sprache - Part 2

😎 This the second article of a multiple part series on how to parse code with Sprache. You can read the first part here.

In the previous post, we saw how to parse some text (in particular, Java code) using Sprache, a might library for C#. We saw how to use an incremental approach, and how to use unit tests to drive the development with this tool. So far we wrote a parser for Identifier and PackageName (check it here).

Now we are going to move forward a bit faster. Remember that we are targeting the Java/Android source project Google Authenticator and that our final goal is to output a graph of class dependencies for this project. In this article, we’re going to try and parse all top-level elements of the current file that we’re working on, AuthenticatorActivity.java.

Continue reading →

Parsing code with Sprache - Part 1

😎 This the first article of a multiple part series on how to parse code with Sprache. You can read the second part here.

You probably know that sometimes (many times), a developer’s job is much more research or analysis than programming! In the past, there have been many instances where I was on a project where my goal was to migrate or rewrite old software, and during those engagements, I ended up creating tools to help me. Many of those tools were specialized code parsers that would automatically perform the analysis I required or even spit out newer code that I could reuse.

In all those cases, I needed to parse some structured code, and there’s a simple way of doing this: by using Sprache, a parsing framework for dotnet. In this article, I’m going to teach you how to do that.

Continue reading →

Happy Halloween! My blog is back!

This is my third or fourth attempt to create a blog, and I do hope that I succeed in keeping it up-to-date. At least now I finally have the time I need to create new posts, and keep it going. Also, I love GitHub pages. It’s much nicer to be in a platform that I (kinda) control.

Continue reading →