Intel Update #009: Road to V1032

Alright, everyone, it’s time for another Intel Update!

These last few months have seen no shortage of setbacks — big and small, both inside the development and outside — but we’re chugging along like we always do. Humans are not built for waiting, and believe us when we say we absolutely hate how long this is taking, but we’re hoping this dev blog will give everyone another good taste of what’s coming.

➕ For those who missed it, our last blog post is available here: Intel Update #008: Reinforcements

Some will argue that the succulent previews you are about to see actually make the wait worse. To those, we say: scroll no further, for this shall be painful.

This is going to be media-heavy, so double-check you’re not on mobile data and let’s move on.

Optimization

In our last Intel Update, we introduced you to Bad Rhino Studios, a company that has been helping us with mostly under-the-hood development.

As part of our partnership, they have ran a thorough performance profiling on GROUND BRANCH and found that the biggest offender was indeed audio- and AI-related. More specifically, AI audio event calls causing big spikes in CPU usage.

Another performance issue we had was related to navmeshes (the areas of maps that bots are allowed to navigate on), and determined to be caused by how the AI interacts with doors within the navmeshes — hence maps Run Down and Tanker having the worst PvE performance, as they have the most doors.

Fixes have been applied to both issues, and appear to have yielded positive results in testing so far. Hell yeah, Bad Rhino Studios.

Further reinforcements

We cannot get into detail just yet, but we’ve recently gotten a tech artist on board. To put it simply, tech artists bridge the gap between programmers and artists (a job that Kris has so far been solely responsible for, on top of his regular coding duties), so we’re talking a very valuable acquisition for the team here.

There are a couple other positions that may be filled soon, but it’s a little too early to confirm. Bottom line is, we’re putting those sales to good use and will continue to build up the team.

Art assets

Character customization

One of V1032’s biggest attractions is, of course, the brand-new character assets. Even the heads are all getting replaced with much better ones, with more models to come later:

We have yet to figure out how we’re going to use the dirt/wound layers; whatever we go with, we promise these heads are going to have eyes

And here’s a little selection of loadouts you can make with the new gear, showcased with a new pose that Mike hooked us up with specifically for the Customize Operator screen:

Although not 100% of the assets are new (we’re still missing a few items, like the Ball Cap and Headsets), they are all set to be updated within the next few releases.

In fact, here’s some upcoming eyewear — in various stages of development — that will be in V1032:

And just as a little demo of how much complexity full customization adds to development, here’s a study sent to us by our trusty character asset artist Pau Peñalver as we try to figure out how to deal with goggle headbands vs. helmets vs. helmet accessories (e.g. ear pro/comms):

how goggles ?

Decisions, decisions. Anyway, more shots to gawk at:

Swatch system

As mentioned in a previous Intel Update many moons ago, most of the new character assets are setup to essentially take any color or pattern we want. As a result, the days of mismatched camos and inconsistent pouches will be over as soon as V1032 hits, and you’ll be able to MultiCam OCP the sh*t out of your kit:

Never Always go full MultiCam OCP…?

In keeping with the authenticity that GROUND BRANCH is going for, we are for the most part creating skins that exist for the real-life counterparts of our assets. We may get more flexible as we go (OCP Black?!?!), but one thing we know for sure is that you’ll never see neon or brightly-colored skins in this game — not by us, anyway.

Y’all got any more of them new models?

New MK14 EBR (WIP)

We have a new MK14 EBR model under development by Cody Cudmore to replace our old Mod 2 variant currently in the game.

We know, you may not be exactly excited about a new EBR, but we figure these renders might help:

Here it is again, a little further along:

This new EBR is based on the US Navy’s Mod 1 variant (photo) — a better fit for the game overall, as it is fitted with a shorter 18″ barrel and an adjustable-length stock (which you will be able to switch out for other models in the future).

Click here for a preview of another upcoming GROUND BRANCH weapon (that's for a later update, though!) at Cody's ArtStation page.
➕ For a list of all known upcoming weapons and more, see our Early Access Roadmap. Yes… a SCAR-H is coming. *sigh*
MK46 (WIP)

We’re also getting a MK46 Mod 1 light machine gun made to replace the old MK48, a model that is just as old as the current MK14 Mod 2 EBR. We aren’t 100% sure that it will make it to V1032, but here are some progress shots anyway:

Much like the updated EBR, the MK46 is a better fit for the game for a few reasons: it is lighter, shorter, and more likely to be seen in a small, high-speed unit. The 5.56 mm caliber, however, means a firepower downgrade when compared to the MK48’s 7.62 mm round.

We’d like to get at least one additional stock made for this LMG, so drop your suggestion in the comments!

🔫 We have a new M1911 in the making, but that isn't far along enough to showcase just yet. It may or may not make it to V1032.
Updated accessories

The SpecterDR 1x/4x scope has been updated with a new, highly-detailed model by Cody:

… and so has the EXPS3 holo sight, by the same author:

Also in FDE!

Other V1032 weapon accessory changes will include an updated AK suppressor, new/updated backup iron sights (BUIS), and a new MK4 3.5–10x scope to replace the old generic 12x.

Updated M4/MK18 assets

You have probably noticed by now that our M4/MK18 platforms have all been updated with entirely new models — including an FSP M4 Block II rail option — but here’s a close-up just to really get the point across:

The classic M4A1 SOPMOD is also being updated, but since the previous model wasn’t as old, the different isn’t quite as jarring. Still, it’s nice to have art consistency, the potential for cross-modability and, well, the correct barrel length:

Although these will be setup as standalone weapon platforms in V1032, we’ll eventually have a basic “gunsmith” feature where you’ll be able to (for example) select a base M4 platform and swap out the stock, handguard and possibly barrel; that will make customization more flexible and the UI cleaner.

Animations

New weapon positions and stance transitions

As teased a couple weeks ago on our Discord and Twitter, we have new animations and poses for the weapon positions. Although nothing is set in stone and this is all one big work in progress, we’ll be trying this style out and update as the feedback comes.

One thing we at BlackFoot Studios agree on is that they look and feel a lot better, especially with the smooth transitions.

Notice the trigger discipline finally adapting to the stance
⏳ More natural, full-body character movements will all come in due time.

We’re sure there will be justified concerns about flagging — and again, these are not final — but we’re looking into having collision act as the “safety trigger”, so to speak: if you get close enough to a friendly unit, your character will automatically point the muzzle lower (if you’re at Low Ready) or higher (if you’re at High Ready).

It’s also worth noting for these previews that things like animation timing and camera/head movement are TBD.

New High Ready (primary weapons)
New Compressed Ready (pistols)

As we progress, Mike will also be creating variants of the new ready positions/transitions that account for weapon length and weight. As an example, bringing a machine gun to ADS will be slightly slower than a carbine, while longer weapons may use a more “tucked in” High Ready position to mitigate environment collision and clipping.

⏳ V1032 will be merely our first big animations update. It will lay the foundations for animations and features to be added and improved all the way to the v1.0 release.

IK foot placement

The magic of IK, or inverse kinematics, will allow character’s feet to conform to the inclination and height of the environment, as displayed by this silly screengrab from 3 weeks ago. We don’t have a more recent shot because something broke the IK since, but don’t let anybody tell you game development isn’t endless fun:

This initial implementation is guaranteed to create plenty of wonky moments, but that’s what iterations are for.

Reloads

All-new reload animations also mean all-new reload sounds. Sound designer Mikson has also been busy making sure the audio is in sync with the new motions, as well as improving effects all around as he went along.

Make sure you’ve also checked out the STANAG vs. PMAG (metal vs. polymer) reload audio comparison from the last Intel Update here

Death animations

Another part of the animations update will be a first pass on death sequences. While the current method — a mix of ragdoll and hand-made animations — does not allow for the animations themselves to be as accurate as fully rendered ones, it lets the ragdoll physics maintain full effect, so bodies still react to falling against the environment or off platforms while the animation plays.

Here’s a little demo:

As the video hopefully conveys, enemies no longer drop like a sack of potatoes: they have animations for being hit in different parts of the body, and even the direction they’re shot from has an effect on how they drop.

There’s more to these animations than just that, but we’re not spoiling it all just yet. Not bad for a first pass, huh?

Maps

In addition to upcoming maps Compound (working title) and Rig, already showcased previously, Storage Facility is getting a revamp consisting of a considerable expansion of the outside play area, a new way into the tunnels, and a huge makeover of the tunnels themselves.

If all goes well, the updated Storage Facility will have also received an extra art pass by the time you get to explore it.

Game modes

GROUND BRANCH V1031 brought us Lua-based game modes, which semi-officially opened up game mode modding to the community. Although development isn’t streamlined at this point, a few community-made modes have already been created:

Dynamic Take and Secure (DTAS)

Those who follow our Roadmap know about DTAS – Dynamic Take and Secure, a PvP game mode we added to the board a while ago. As it turns out, DTAS has been under development over the past several months by our friend and occasional collaborator fatmarrow, also known for his community maps (you can find his progress and tutorial videos here).

In DTAS, teams alternate as attackers and defenders. Once defenders set up the flag, attackers are free to start tracking it down. To win the round, attackers need to have more players inside the flag’s capture radius than defenders. If attackers are down to only one player or fail to capture within the time limit, defenders win. All parameters — time limit, capture radius, team balance — are customizable by admins.

It is currently in advanced testing, and will be available once the first V1032 CTE is released.

💡 DTAS was originally a game mode for Infiltration (aka INF), an old tactical realism mod for Unreal Tournament (1999).
Rendezvous

Fatmarrow has also helped create Rendezvous, a game mode by community regular V2. The description and rules for this scavenge/escape game mode can be found in this Discord link, and the download is right below:

https://cdn.discordapp.com/attachments/480702286943879168/858760420990648321/Rendezvous_20210628.zip

Kill Confirmed / Breakout

GB community member eelSkillz has created an additional 2 solo/co-op game modes, dubbed Kill Confirmed (a VIP assassination mode) and Break Out (another take on a scavenge/exfiltrate mode).

You can download the game modes from eelSkillz’s GitHub here and discuss them on the Steam thread here.

For a few demo runs of both modes (also featuring V2 and his Rendezvous mode), check out eel’s YouTube channel.

Nvidia DLSS & GeForce NOW

Just to make it official: GROUND BRANCH will support both GeForce NOW and Nvidia DLSS in the near-future!

GeForce NOW is the better-known Nvidia subscription-based cloud gaming platform where, instead of running on the player’s PC, games are run on powerful PCs somewhere else in the world and streamed to the player.

Nvidia DLSS (Deep Learning Super-Sampling) takes advantage of GeForce RTX technology to generate high-resolution, sharp, detailed images from low-resolution native samples via AI. This video offers a good demonstration of how it all works and looks:

This has been Intel Update #009!

We’ve just started internal testing, and although a lot of the game still needs to be put back together, dev builds have been stable and performing well. When we’re done with the major fixes, we’ll start rolling builds out to the CTE so you can all have a look and help us make sure we have a solid release.

As a final reminder, V1032 won’t be the ultimate animations update, but it will help us get there in a lot of ways. It’s all about paving the way for new features and a game that looks and feels better as development progresses.

Lastly, the only reason GROUND BRANCH has made it this far is our community’s continued support over the years, months, days or however long you’ve known about our game and talked about it with your friends, bought a copy, started a discussion thread, streamed it, hung around the Discord or even just followed us on social media.

And so as always, thank you for keeping us going, and we’ll see you on the next update!

Intel Update #008: Reinforcements

As underscored by last month’s publisher announcement, development for upcoming release V1032 is still chugging along, and as we work on putting the game back together with the new character rig, assets and animations, another Intel Update is coming at you with everything that’s happening behind the scenes.

Reinforcements are here

It is no secret that the development of GROUND BRANCH has been rocky, and in many ways too ambitious for its own good. Nevertheless, it has endured, and thanks in no small part to our community’s continued trust and support, we have finally reached a point where we can more comfortably go after professionals that can help us stay on track and take this project where it needs to be.

Tech backup

One such example is Bad Rhino Studios, an independent studio from Kansas City that we just partnered with as a means to get more eyes and hands on the game’s overall performance, code, online networking (netcode), and general implementation. As we progress, the studio will also be helping us fix major lingering issues and improve other areas of development.

The fine developers at Bad Rhino have previously lent their expertise to the likes of Epic Games (Unreal Engine, Fortnite), Bohemia Interactive (Arma, DayZ standalone) and even Facebook, so they are more than capable of helping us take GROUND BRANCH to the next level from a more technical standpoint.

Some of the companies Bad Rhino Studios has partnered with

It goes without saying that we’re very excited for this partnership’s future, and we’ll hopefully be seeing its repercussions soon enough!

For anyone interested, you can learn more about Bad Rhino Studios and what they do in their website right here.

Art backup

We have also gotten dedicated vegetation artist Paul Brousse on board in a contractor capacity. For starters, Mr. Brousse will be building assets for 4 different biomes (i.e. trees, bushes and ground cover): Eastern Europe, Horn of Africa, Middle East, and Mexico–US border.

Just a sample of Paul’s work in UE4, from his ArtStation portfolio (link)

In addition to granting environments an extra layer of authenticity, these new custom biomes will generally make maps look better and more consistent. If we’re lucky, they might even improve performance too.

Further backup

We are also looking for a dedicated VFX artist and a producer/project manager type, in addition to a few other roles we may disclose later. At this time, we are only considering close recommendations, but we’ll be sure to let everyone know if we end up expanding our search.

Other areas of assistance

GPU manufacturers

In order to improve performance in the future, we have submitted GROUND BRANCH builds to Nvidia and AMD for profiling. This may lead to potential assistance in optimizing the game, as well as GPU driver enhancements for better compatibility with it.

Localization

Our new publishing partner MicroProse has been helping us localize (that is, translate) the content of our Steam store page to several languages, so that non-English speakers can make better informed purchases and potentially have a minor positive impact on the player base.

Localization of the game itself will also begin as soon as we have a large enough portion of the UI locked down.

Some V1032 sneak peeks

Now for what you’re actually here for—taking a look at how V1032 is coming along and getting eyes on some sweet sneak peeks. We get it, and we got you covered.

Here’s some media, starting with this quick audio and animation preview:

Mmmm, crunchy

In addition to all these new reloads, our animator Mike has also put together this satisfying recoil animation that adds a lot of immersion to shooting:

Notice the more natural “bounce” to the recoil when compared to the basic back-and-forth motion currently in the game. Weapon stances are a work in progress and subject to change.

On the modeling front, trusty contractor and 3D artist extraordinaire Pau Peñalver continues to bang out amazing models to get our character art up to date, and to make sure we don’t have brand-new assets mixed up with really old ones.

Below are some of Pau’s latest creations:

The new Helmet (AF)
… and here with the camo cover (patterns pending, but they will be there)

Keep in mind that although these previews are already of the game-ready models (yep, no joke), they are generated from rendering tools that have lighting capabilities far beyond UE4’s real-time lighting. You know we like being transparent, so here’s what we really mean by that: they will not look necessarily this amazing in-game, but they will still look pretty good and certainly better than the assets they will be replacing.

In the level design department, Will has put some work on the night lighting and skybox for the still untitled compound map:

Really makes it seem alive, doesn’t it?

In case you missed it, there are a bunch of pretty previews of the upcoming compound map on MicroProse’s GROUND BRANCH product page (click). We know what you’re thinking and yes, it’s gonna be totally sick, lit and dare we say, based.

And that’s it for today’s Intel Update!

We know—waiting for V1032 sucks. But hopefully this helps ease the wait a little, and reassures everyone that we’re still here, working hard, and expanding the team so that we’re able to improve GROUND BRANCH’s experience at a faster pace.

We’ll have more details and previews for you in a few weeks, so stay tuned and don’t forget to let us know what your thoughts are on today’s intel.

See you on the next one!

Build Update #031: Patch 1031.3

🆔 GROUND BRANCH V1031.3
Build ID: 6684573 (Client) / 6684579 (Dedicated Server)
Download size: 63 MB (Client) / 32 MB (Dedicated Server)
🚨 CLEAR YO FILES
We strongly recommend everyone to delete all files located in %LOCALAPPDATA%\GroundBranch\Saved\Config\WindowsNoEditor (copy-paste this into your File Explorer address bar and hit Enter) to ensure that old files do not conflict with the latest changes and cause input and settings issues.

Our last game update, patch V1031.2, arrived with more bugs than we anticipated. Luckily we were able to diagnose and fix most of them relatively easily, packaged and tested a new build, and are now rolling it out as a hotfix for you all.

Hopefully this will take care of most of the recent reported issues—if it doesn’t, you know what to do, but please check the known issues listed at the end of the fixes list to make sure it hasn’t already been noted.

Changes and fixes

Ready Room
  • Fixed Ops Board‘s “In Progress” overlay not always showing up.
  • Fixed Ready Room team wall not always being removed for PvP modes.
  • Fixed the player character in the Customize Operator screen disappearing if the round started mid-customization.
  • Increased sound occlusion in the testing range.
  • Added spatial audio volume for the Customize Operator screen’s background to block all sounds while customizing character.
  • Fixed round time not being cleared when round stage timer is.
Weapons and attachments
  • Fixed M9A3 magazine’s display name (was listed as 15 rounds when it’s actually 17).
  • Fixed NVG effect not being loaded correctly sometimes and displaying no green tint.
  • Fixed shotguns preventing players from changing items when fired.
  • Updated collision on optics to allow placing the Offset Rail and low-mount RMR where applicable.
Spectator Mode
  • Fixed Show Player Names / Show Enemy Blips not being applied immediately while the spectator overlay is shown.
  • Fixed spectators having the ready status set to NotReady when sent to the RR even if they had been WaitingToReadyUp earlier.
Maps & level design
  • Fixed grenades colliding with foliage—they should now go right through leaves.
  • Fixed foliage protecting players from grenade explosions.
  • Fixed various bugs on Tanker dealing with collision on pipes and some visual issues with the internal stairs.
Admin
  • Changed in-game menu Admin button to a drop-down list containing an option to open the Admin Panel, as well as a list of quick admin commands (thanks, Prowlaz!).
  • Fixed Admin Panel spamming console/log with admin commands.
  • Fixed StartRound command not working in ReadyCountdown round stage.
  • Fixed dead bodies being created when StartRound and RestartRound commands are used.

Known issues

These audio-related issues were reported, but not yet diagnosed or successfully fixed:

  • Occasional lack of gunshot SFX.
  • Long bursts with the MK48 machine gun can cause the audio to bug out.
🐞 One common issue that we have been unable to fix yet is related to VOIP and microphone usage, from stuttering all the way to freezing or otherwise being unable to communicate via voice. For a list of possible fixes, please see this post: ⚠️🎙️ Microphone/VOIP issues!

This has been BUILD UPDATE #031!
Thank you for all the reports! This patch wouldn't be out so soon without all the feedback and we continually receive from the community. If this patch survives first contact, expect a new Intel Update in a few week's time to get everyone up to speed with how V1032 is coming along.

BUILD UPDATE #030: Patch 1031.2

🆔 GROUND BRANCH V1031.2
Build ID: 6669244 (Client) / 6669250 (Dedicated Server)
Download size: 119.8 MB (Client) / 60.2 MB (Dedicated Server)
🚨 CLEAR YO FILES
We strongly recommend everyone to delete all files located in %LOCALAPPDATA%\GroundBranch\Saved\Config\WindowsNoEditor (copy-paste this into your File Explorer address bar and hit Enter) to ensure that old files do not conflict with the latest changes and cause input and settings issues.

Patch V1031.2 is now live on the regular GROUND BRANCH Steam® app!

The second patch for release V1031 includes UI/UX and quality-of-life updates, general bug fixes, and a lot of under-the-hood work to better support game modes in the future. Let’s break it down:

Quality of life

Mission Settings (Ops Board)

The Ops Board (the old LED screen where players can change mission parameters and select insertion points in the Ready Room) has been changed from an in-world UI to a pop-up window with the same functionality—except a little easier to use.

Server admins (or any local player in Lone Wolf) now can simply click the right-hand half of the Ops Board to change mission settings in a UI overlay, and then submit all changes in one go:

The mission setting values will continue to be listed on the in-world board until they are replaced with a system that integrates them into the objective descriptions.

Show Remaining Threats

The HUD counter for remaining enemies (in Terrorist Hunt) was moved away from the center of the screen and back to the top-left corner, as well as made optional once again.

Use the Show Remaining Threats mission setting to change how it behaves:

  • The number set in this option represents how many enemies are left before the counter starts displaying (e.g. when set to 8, the counter will start displaying when there are 8 enemies left).
  • Setting it to 0 disables the counter entirely.

Dedicated server spectators

It is now possible to join a server as a spectator without it affecting the max player count.

The maximum amount of spectators is controlled by a MaxSpectators option and is currently capped at 16. While this does mean you could have up to 32 people on one server—16 players, 16 spectators—remember to talk with your server provider first to get more slots.

Improved spectator experience

  • First-person view should use correct sight lines and look smoother.
  • Better handling of toggle HUD command.
  • Show Player Names and Show Enemy Blips selections are now saved to config files.
  • Minimap rotation should now be correct on all maps.

New watch face

The wristwatch has been updated with improved readability:

The new fonts and adjusted sizes should make the watch face cleaner and easier to read. We’ve also temporarily removed the heartrate (BPM) display until that functionality is actually in place.

Gunfire loop fixed

The dreaded gunfire loop has breathed its last, with Mikson coming to the rescue with the insight Kris needed to find and kill it once and for all… hopefully. Fingers are crossed.

Net cull distance increased

We doubled the net cull distance from 150 to 300 meters to ensure that, while playing online, characters are visible at a distance to clients. This is particularly relevant on maps with longer sightlines, like 747.

This is a stop-gap method until we get the chance to start using the replication graph system.

Weapon kit validation system

Due to the large number of bugs related to improperly placed sights and firearm attachments in general, a lot of work went into improving the kit validation logic related to them.

⚠️ Oops! All your stuff is gone :(
As a result of the kit validation system, the kit version number has been changed to help prevent the use of existing kits that would no longer be considered valid. This means all existing kits and builds will no longer be loaded, so make sure to rebuild your go-to kits in-game before hopping online! We're very sorry for the inconvenience.

The validation process includes making sure that:

  • Magnifiers (i.e. G33 Magnifier) are placed behind non-magnified optics.
  • Night vision scopes (i.e. AN/PVS-22) are placed in front of magnified optics.
  • Rear (iron) sights have a matching front sight post.
  • A sight is not blocked by another attachment.
  • Only one type of optic can be placed on a sight line (i.e. no optic “conga lines”).
  • Only one iron sight or front sight post can be on a sight line.
  • All attachment mounting points are in contact with a rail.
  • A riser is placed directly on a rail or adapter and not another riser.
  • Attachments are not overlapping each other.

Trying to save a weapon build that fails any of the above will prompt players with what needs fixing, as well as prevent the loadout from applying:

🐞 The system will need fine-tuning to not be overly restrictive with certain combinations. Please let us know if you come across any such configurations that should be both possible and usable, but are not.

New Admin Panel

Due to changes related to mission settings and game rule handling, the Admin Panel (F8) has been updated and received a first pass of the new UI style:

Yes, you can finally unban people and see a list of team-killers!

Whitelist support

To keep a server private, servers admins can now choose to use a whitelist instead of a password.

The system checks the whitelist file periodically, allowing updates to happen just by replacing or updating the file. The file itself in standard CVS format, making it possible to use a common spreadsheet program and export the results.

As with most admin task, it is also possible to update this via Admin Panel while connected as an admin.

Game rules are now stored next to other server options

Along with the mission setting changes, this change removes the need to remember the associated command line, while still allowing them to be changed on the fly or overridden by a map list entry.

Audio

  • Fixed Tanker‘s engine sound occlusion stuttering when moving to upper decks.
  • Replaced outdated tire bullet impact SFX.
  • Fixed ground power unit interaction sounds on 747.
  • Minor under-the-hood optimizaton changes.

Maps

City

  • Removed leftover ladder from subway car that allowed players to mount it.
  • Added glass to alleyway building fronts.
  • Added doors to central square buildings.
  • Added power switches to central square buildings, alleyway buildings and underground station.
  • Added AI cover nodes to cars: bots will now use them for cover.

Paintball

  • Replaced the old texts saying “RED TEAM” and “BLUE TEAM” on each side’s entrance with flags on poles of the respective team’s color.
  • Changed the color of the lights on each side to reflect the teams as well.

General map cleanup

John has also done some minor miscellaneous cleanup (LODs, landscapes, collision, lighting etc.) on most maps.

Miscellaneous

  • Fixed a whole bunch of crashes.
  • Fixed MP5SD burst mode having no sound.
  • Fixed NVG effect being inconsistency across maps.
  • Made drop-down menus stand out better against other menus and text when opened.
  • Mouse sensitivity settings now allow decimal digit values for fine-tuning. You can still click and type a specific value instead of clicking and dragging.
  • New icons for Settings screen and Ready Room player status.

Under-the-hood game mode work

What originally started as changes to ensure mission settings and game mode rules were being read from the command line properly soon expanded to include a lot more.

This culminated in working closely with community member (and GB proto-modder) fatmarrow to fix, update or outright rewrite existing game mode logic. Many of these changes are mentioned in the raw changelog at the end of the post, and more can be gleamed by looking through the existing .lua files for those interested.

A number of these changes will make it into various community guides in time, and a new game mode by fatmarrow—Dynamic Take and Secure (DTAS)—is currently being implemented and tested (with tentative release in V1032) thanks to them.

Known issues

  • Sound occlusion in the Ready Room appears to be broken again. We’ll get that patched up as soon as we can.
  • The NVG effect has been reported to be missing the green tint on The Farm (Training map), but not consistently. Please report a bug if you experience this issue on a map!
  • When playing Uplink, the round start dialog may disappear too fast to read.
This has been BUILD UPDATE #030!
We appreciate you taking the time to read our release notes! You can read the raw change log below, and don't forget to let us know about any issues you find that are not listed here. Til the next update!

Change log

Remember when we posted these for every update until they got so massive they would either take too long to compile or not fit in posts anymore? Well, Kris took the time to compile the last batch, and it’s referenced in the notes above, so here it is (may contain strong coder language of the non-C++ kind):

* FIXED AGBGameMode::HandleStartRoundCommand() not working for WaitingForReady
* FIXED alot of rocks and other props that would distance cull to soon
* FIXED bad smoothing groups on M17 slide
* FIXED crash AGBInsertionPoint::CreateAssociatedPlayerStarts() related to attempt to spawn a new player start with an existing name
* FIXED crash caused by using BP_DummyLuaState
* FIXED crash related to sending game messages to destroyed player controller
* FIXED dropped items being removed by resurrect command
* FIXED full auto loop being stuck when changing weapons
* FIXED ground power unit interaction sounds on 747
* FIXED gunshots for MP5SD (there were issues with levels, tails and burst mode were missing)
* FIXED hard coded kit version number in WBP_CharacterEditor (Doh!)
* FIXED issues with Ready Room related to sound occlusion
* FIXED kit not being applied when you first join a team
* FIXED leftover ladder in City subway that was covered by a subway car.
* Was still allowing players to "mount" it and getting them stuck
* FIXED mission settings in Lua being changed from int to string
* FIXED missions overflowing in mission list
* FIXED NVGMultiplier value not being used in maps
* Multiplier is used to fine tune the NVG brightness value per map for consistency
* FIXED occlusion issues with the tanker engine room
* FIXED ops board showing all team ready status on each board regardless of the teams the players were on.
* FIXED player starts that were bad due to SmallTown's terrain fix from previous update (oops)
* FIXED pre recorded radio messages not clearing the VOIP icon once they finished playing while in the RR.
* FIXED ready status not being changed to from DeclaredReady when round ends.
* FIXED Removed ability to exit killhouse on The Farm by rear rollup door * Players not supposed to get to that area
* FIXED sections of outside wall in Run Down not lighting at low sun angles
* FIXED some cars LODing out to early in City
* FIXED stereo base for some of player's local gunshots
* FIXED team restrictions being applied to presets even when there were none.
* FIXED various bugs with lights on Tanker
* Part of this was removing redundant light switches.
There is now only 1 for interior and 1 for exterior lights
* FIXED various geometry/collision bugs on Run Down and Power Station
* FIXED various issues with landscape on Depot that were causing players to get stuck
* FIXED Water footstep effect being played when shouldn't in some areas of Creek map
* FIXED wood floor in center Creek area not having collision
* Reduced occlusion of shooting range
* Made AK Components spawn with each door interaction and remove themselves after a sound is finished instead of keeping them at all times. Significantly lowers the amount of registered AK objects.
* Removed unused RTPCs from distant gunshots
* Replaced old tire impact sound
* Removed unnecessary processes from gunshots
* Adjusted watch LODs to not be so aggressive at short distance
* updated watch face and other misc changes by Scopey from 1031.1
* updated resurrect command to use nav mesh to look for a valid location
* updated dropped item to use nav mesh to look for a valid location
* update zoo keeper CommandList and default admin groups to remove uneeded commands
* all the mission settings are passed via a single 'missionsettings' command now.
* updated WBP_ServerAccess_Manager & WBP_ServerAccess_List_Missions to support "other settings" like the admin maplist.
* updated ops board settings to use "missionsettings ?<setting>=<new setting>" instead of direct command.
* updated RR roster
* removed update hack and starting using ForceLayouPrepass instead
* made sure it supports any team / 255 team id properly
* updated Paintball map
* made sure generic rosters were set to 'any team'.
* removed old text saying Blue Team / Red Team
* add a red and blue flag on a pole to indicate which end is which from a distance.
* replaced red lights at blue side with blue lights. 
* changed red lights on sides to white lights.
* mirrored play area lights.
* imported Bebas Neue font (FF_BebasNeue-Regular)
* edited WBP_WatchApp to use the new font for the time display
* minor tweaks to heart rate text (still hidden)
* Cleaned up and added proper glass to City Alleyway insertion building fronts
* Added cover nodes around vehicles on City map
* AI should now actually use them as cover
* City Map
* Added doors to middle area buildings
* Added light switches for middle buildings, alleyway building and 2 to control subway area
* changed the look of WBP_ComboBox (drop-down menu) and related widgets to not get mixed up visually with other drop-downs when open:
* changed background color to GB smoke green to set it apart from the dark gray/black
* made entry text color lighter to stand out better against new color
* added left padding to text so entries stand out as their own listing
* temporarily removed "drop shadow" (just couldn't get it to look right… still want the effect but it's not as necessary anymore)
* tweaked the header for the Session Roster to be more in line with rest of UI and also set it apart from the new team name header
* started tweaking team name header; needs work and Kris' help to set a border color based on team
* WBP_Settings_Gameplay: fixed Default Reticle Brightness setting not displaying the set default value (was missing an entry string); set it to 3
* WBP_Settings_Controls: changed mouse sensitivity spin boxes (all 3 of them) to allow decimal increments
* WBP_SpinBox bar now displays how filled up it is without having to click and drag; also adjusted color slightly to not conflict with new ComboBox entry color
* replaced defining game rules, settings etc using functions with game mode variables instead.
e.g. local gamemode = {
UseReadyRoom = true,
StringTables = { "MyGameMode" }
* renamed FGBGameSetting to FGBMissionSetting and updated affected C++ & Blueprints.
* replaced Lua PostRun() with PreInit() and PostInit()
* PreInit() - allows script do thing before the C++ logic starts readding settings etc.
i.e. find particular actors and update settings based on these before they are replicated via the game state.
* PostInit() - allows script to create objectives and setup various actors based on settings and player teams etc.
* if the game is using rounds, WarmUp will now automatically be callsed *after* PostInit() - there is no need to manually call it anymore.
* ops board mission settings are no longer modifiable
* was always supposed to be a temporary measure and recent additions have made it difficult to maintain and sychronise.
* replaced with a prompt for admins/local player to show a 'mission settings' screen where all settings can be changed and submitted in one go.
* updated game message to include a 'type'
* implemented 'engine' type for usage with remaining opfor count
* implemented default type for everything else.
* updated UGBLuaTimerPackage
* SetTimer params changed:
* TimeHandle - nil or unqiue string, if you wish it to be overrideable etc
* Table - the Lua table holding the function we're about to call (self).
* Function - the actual Lua function (self.FunctioName)
* Rate - when to fire / how often to fire if looping
* Loop - true if this timer should loop until cleared, false if not
* ClearTimer param is now a string, TimeHandle - same as that used in SetTimer.
* updated GBSky
* created UpdateHoursMinutesSeconds() to handle calculating hour, minute & seconds in a generic location and storing the results.
* created GetHoursMinutesSeconds() to return hours, minutes & seconds for use with those actors that find it useful.
* added OnSkyUpdate() that is called every time it sky updates, removing the need for individual actors that rely on sky tick from ticking themselves.
* updated GBSpawnProtectionVolume to change bActive to false and TeamId to 255 (AnyTeam) by default
* created GBPlayerController::ClearAllIgnoreUseInputReasons() to ensure all ignore input reasons can be cleared when entering/leaving RR/play area.
* hooked up missing Unban command in ZooKeeper (oops)
* changed net cull distance from 150m to 300m
* should ensure characters are visible at a distance on larger maps, like 747.
* removed gap between first playerlist entry and the header in the game info screen.
* created GetIntFromOptionsOrCommandLine() to use with both game rules and mission settings
* getting sick of manually doing FParse::Value(FCommandLine::Get() etc all the time.
* exposed AllowDeadChat, AllowUnrestrictedRadio & AllowUnrestrictedVoice game rules
* will use the options string value first, then the command line value.
* added to admin and maplists
* renamed Intel.lua to IntelRetreival.lua and update all IntelRetrieval.mis files to point at new file.
* added support for Spectator Only clients
* updated chat overlay to support icons to show if someone is purely a spectator, rather then dead while spectating
* added some extra emojis for funsies
* made spectator options show player names & enemy blip save their state in the config
* updated AGBGameMode::GetIntFromOptionsOrCommandLine() to add DefaultValue param
* created AGBPlayerState::PreClientTravel() to ensure all delegates are cleared before seamless travel commences.
* hopefully helps fix bugs related to GC/references, highlighted by the WBP_ReadyRoomName one mentioned below
* updated AGBPlayerController::PreClientTravel()
* added call to AGBPlayerState::PreClientTravel() (duh!)
* ensures MyHud is destroyed
* recreated when the game mode changes anyway
* hopefully helps fix bugs related to GC/references, highlighted by the WBP_ReadyRoomName one mentioned below
* moved all UI and HUD related handling in GBPlayerController to GBHud
* updated all affected C++ and Blueprints
* moved trace logic of WBP_ReadyRoomName to GBHud C++
* there was a crash related to GC/references, specifically to do with WBP_ReadyRoomName on the WBP_HUD widget.
This widget is no longer permanent and has zero references - it just fades in/out if in use and is removed when not required.
* updated Binoculars and Rangefinder to make sure input is disabled when unequipped
* was a bug where you could freelook after they were put down and your currently equipped weapon would act like a pair of binoculars
* added group name to BP_LightZone
* grouped light zones turn on/off together (game magic)
* if one of them is destroyed, none of them work.
* adjust position of rooftop extraction point on Intel Retrieval RunDown so it no longer clips through floor.
* updated BP_ExtractionPoint to use a quick trace to position the flare, instead of a fixed position to accomidate for volume overlapping floor.
* updated GBGameModeLuaState & BP_DummLuaState to ensure io and os libs are disabled.
* started updating/cleaning up Admin Panel UI
* updated icons for Settings screen
* updated ReadyRoom Blueprint to take spectator only clients in account when disabled/enabled play area lighting.
* updated GBHUD & BP_HUD
* moved handling of spectator overlay handling to BP_HUD
* moved SpectatorToggleHUD handling
* added OnShowHUDEvent and rigged it up to act like before, as well as prevent hints and chat from being visible.
* updated all widgets that show up on the minimap in some what to all use the same Get2dPosition() function in BP_Minimap_Origin instead of rolling their own each time.
* this takes care of the spectator minimap being rotated by 90 degress in Tanker, among other things.
* updated GBSky
* removed deprecated GetTimeOfDayMinutes()
* updated DelayedInit() logic related to Initial time of day order:
* uses DebugTimeOfDay when in editor without a mission set.
* options string from maplist
* command line
* random value from PossibleDefaultTimesOfDay.
* 1200
* updated BP_WristWatch_Modular and BP_SkyActor due to removal of deprecated GBSky::GetTimeOfDayMinutes().
* updated ZooKeeper to add optional KickBanTime setting (default 5 minutes) to prevent kicked players returning immediately.
* updated FLuaValue::Unref() to add nullptr check when compiled for editor.
* Setup lightbox channels and fixed a few visual bugs in Power Station
* server no longer creates player camera manager
* required customising a few view target related functions that required the player camera.
* improved spectating
* sight components are not correctly setup when spectating start viewing a new character.
* view target control and view rotation is now replicated from server to client separately.
* view of weapon in first person is smoother, but still slightly offset and has jittery yaw
* removed deprecated/unused GBCharacter::GetAimOffsets()
* added missing clamping to stamina and respiration frequency logic
* further tweaked sway & stamina in relation to respiration rate to prevent firearm jitter
* updated AGBGameMode::GetSpawnInfo() to take lua table with Location & Rotation in it
* added various request Lua functions to ai package
* Gamemode bomb object added
* updated GBGameMode
* added call to OnProcessCommand() in AddMissionSettings() to fix hard coded/legacy settings not being set.
* updated RunMissionScript() to add GameModeTable to the 'script' field of the SelfTable used for the "gamemode" package.
* can now get current game mode Lua script using gamemode.script instead of gamemode.GetScript()
* updated GBGameModeLuaState
* moved DebugPrint() from GBLuaGameplayStatics to here so that 'print' in Lua should now appear in log and on screen.
* created GetTimeSeconds() to retrieve World->GetTimeSeconds()
* updated BP_BigBomb
* created and implemented WBP_Bomb_LedScreen - shows time, defuse progress & flashes when defused.
* added SetDetonationTime(), SetDefused() & SetActive(), all callable via Lua.
* created Bomb.lua to handle logic for ServerUseTimer(), ServerEndUse() & OnReset() 
* created example Defuse.lua and Defuse.mis for SmallTown to use as example of its usage.
* changed count down and light colours from red to blue.
* updated WBP_MissionSettings_Entry to adjust setting value when using a combo box instead of slider (oops)
* updated BP_Door_Swinging to stop it attempting to play sounds etc on dedicated servers
* updated GBPlayerController
* updated GetViewTarget() to remove IsValidCheck() from ServerViewTarget, which should always be valid.
* updated SetViewTarget() to ensure view target is set to the player controller itself if the new view target is null or the player state
* updated AGBBulletProjectile::IsNetRelevantFor() to skip replication for intigator & instigator controller.
* updated GameMode.csv to update gamemode_intel to gamemode_intelretrieval & add gamemode_defuse.
* updated WBP_MissionList to fix gap in search bar
* updated WBP_ServerBrowser
* added filter to hide wraong versions
* added search bar from WBP_MissionList
* updated Rig/TerroristHunt.mis 
* created dummy Rig/Deathmatch.mis
* created ResetActors admin command
* update BP_BigBomb to prevent it displaying interaction prompt based on TeamId 
* began updating game rule handling.
* moved all UI based game rule logic / graphics to WBP_GameRules
* created new GameRules admin command and removed EnableCheatas, AddGameRule & RemoveGameRule, since it handles all of them.
* updated GBPlayerController
* made god, notaget & nosway commands use ClientTeamMessage() so they let the player know the cheat is enabled/disabled when in multiplayer.
* updated ServerAdmin() to work even in standalone editor for testing purposes.
* cleaned out GBFunctionLibarary
* started out just updating Blueprint config functions, realised how bad it was in there.
Required lots of minor Blueprint changes, swapping from GB specific function to native UE4 ones.
Will help with compile times, Blueprint stability etc due to reduced number of functions and duplicates.
* wrapped debug related variables/functions in GBAIController with a WITH_EDITOR define.
* wrapped WITH_EDITOR define around SetDEbugAIAim() call in GBHUD
* cleaned up Bluperints and other assets based on errors / warnings created by mock build
* added ReloadMissionScript admin command to make editing missions easier.
* replaced GameModeTable.Unref() call with GameModeTable = FLuaValie();
* updated ZooKeeper
* added game rule handling to ZKServer to they can be saved directly to the Server.ini instead of having to remember commandline all the time.
e.g. SpectatorFreecam, UseTeamRestrictions
* updated all affected C++ and Blueprints
* improved admin and vote related commands
* updated admin and vote UI to match changes (and then some).
* implemented UGBGameInstance::HandleOpenCommand() override to look for "Listen" option and make sure ZooKeeper is init'd if detected.
* replaced usage of UseReadyRoom & UseRounds game rules with bUseReadyRoom & bIsRoundBased on GBGameState, since they should not be changed at runtime.
* updated all affected C++ and Blueprints
* added mission settings as a voteable command
* added check against 'restricted' settings in case someone tries to set time limit etc.
* Reworked game mode flag material to allow tecture and color changes with a MaterialInstance
* removed out of date WBP_AdminList_Entry
* updated BP_Firearm_Master
* added FullAutoPlayingID to track PlayingID passed out when full auto loop starts.
* added check for FullAutoPlayingID > 0 in OnStopFiring() and attempts to use StopFiring sound
* if there is no AK component to use, it will just call ExecuteActionOnPlayingID with the action type 'stop' and transition duration of 500ms/
* updated GBFirearm
* replaced usage of GBInstigator->GetFootstepComp() in updated GetGunShotComp()/GetInteractComp() with cacched pointers
* updated OnBeingEquipped() to cache GBInstigator->GetFootstepComp() to AkGunShotComponent & AkInteractComponent.
* removed need for OldRecoilCount.
* updated EndShot() to set call RecoilCountUpdated(0) if there is GBInstigator == nullptr
* replaced duplicated calls to OnStopFiringEvent(), Barrel->DeActivateFlash() etc with calls to EndShot() instead.
* added OnStopVoiceEvent() to GBCharacter
* upodated BP_Character
* updated OnPlayVoiceEvent() to VoicePlayingID and add callback to it when the voice has finished playing.
* implemented OnStopVoiceEvent() to call ExecuteActionOnPlayingID() to stop any voice that is playing.
* This will make voice lines etc end on death without cutting off other sounds, like gun shot trails
* refreshed BP_M1014 & BP_SDASS_Martial OnFiringEvent() to prevent build error.
* updated WBP_QuickPlayerAdmin to bring it inline with recent admin command changes/improvements related to kick & ban commands.
* cleaned up text chat style
* replaced RR locker row icon with house-with-cog icon; not happy with it but it reads a little better than the lockers (looked too much like servers)
* started updating appearance of Ops Board "Mission Settings" pop-up
* changed display name for the MK48 "magazine" to something more accurate
* updated GBFirearm
* added bForce param to UpdateSpatialAudioVolume(), allowing tags to be force applied whether they changed or not.
* replaced GetGunShotComp()->Stop() calls in BeginDestroy() with EndShot() etc like other functions (oops)
* updated OnBeingDropped() to clear the cached AkComponents after calling EndShot().
* removed erroneous timer clearing in AGBFirearm::BeginDestroy().
* updated WBP_Button_Preset
* added check to prevent applying items restricted due to skin etc.
* added diaglogue popup with list of items restricted due to skin etc.
* updated GBPlayerController::InitLoadout() to fail when trying to load a loadout with items restricted due to skin etc.
* removed GBFirearm::BeginDestroy()
* added validation check to WBP_ItemEditor to preven saving kits with non-functional sight combinations.
* updated C++ to improve validation based on similar logic used in WBP_ItemEditor
* created new, brute force methods for determining valid rail slots
* does a better job at preventing you placing a sight too far back or forward.
* updated AGBItem::OnBeingEquipped() to change setting all UPrimitiveComponents to all UMeshComponents
* this fixes issues with the barrle sound sphere thingy no longer overlapping sound volumes and makes Mikson a happy chappy.
* hooked up missing references in WBP_ServerAcces_List_Missions to fix admin & vote ChangeMap tab
* updated GBGameMode to clear all lua timers and nil the game mode table when the time limit is reached, preventing Lua timers being started and possibly firing while the world is null.
* updated WBP_Config_XXX to ensure they use their Default values if there are none in the config.
* fixes gamma etc suddenly becoming zero or some other weird value.
* Removed Spline Occlusion from Tanker Ship Engine
* Decreased Tanker Ship Engine falloff distance
* added white list support to ZooKeeper
* reads PlayerName & UniqueId (SteamId) from WhiteList.csv
* rejects anyone that logs in if they are not on the list, regardless of password.
* will automatically import new values if the file has changed when a new player logs in and it has been at least 1 minute since last import.
* updated admin UI
* properly shows/hide tabs based on admin commands
* added white list tab
* made sure own player state was skipped in admin list.
* cleaned and improved sight and attachment validation
* removes duplicated sights / front sight posts on the same sight line.
* ensures iron sights always have a corresponding front sight post
* detects firearm front sight post blocking low sights
* no longerallows riser stacking
* created GBItem::PlaceAt() for use with gamemode flag, laptop etc.
* first pass at becoming FM's bitch
* changed bWantsToEnterPlayArea into a Ready status enum
* updated ops board to add a ReadyUp button in place of join/minimap when round based without insertion points
* updated GBGameMode give Lua a chance to override start, end and restart round.
* simplified GetPlayerList() - removed lives, wants to play check etc
* created GetLivingPlayerList()
* created GBItem::DenyDrop()
* updated BP_CarriedGameModeFlag to attempt to place itself directly under the player before reverting to previous methods when Place() is called.
* added GetReadyStatus & SetReadyStatus to Lua player library
* changed KitVersion from 8 to 9 to ensure everyone has to remake *valid* kits.
* hooked up upper & lower game messages for FM
* further improved kit validation inrelation to iron sights
* changed ValidateDecodedItem() to output a reason for kit failer.
* changed AGBPlayerController::SetLoadout() to abort on kit validation failure
* updated default kit versions numbers
* updated AI kit version from 8 to 9.
* updated BP_CarriedGameModeFlag
* removes placement helper if auto-placed before manually placed.
* automatically switches to previously equipped items upon being placed.
* moved GetValidatedSpawnLocation() from GBLuaGameModePackage to GBLuaGameplayStaticsPackage.
* removed SpawnItem from GBLuaPlayerPackage and created similar PlaceItemAt in GBLuaGameplayStaticsPackage
* FLuaValue UGBLuaGameplayStaticsPackage::PlaceItemAt(FLuaValue ItemClass, FLuaValue Location, FLuaValue Rotation)
Rotation = table with P/Y/R or Pitch/Yaw/Roll keys.
* updated GBDroppedItem
* InitAsPlaced() now ensures replicated movement is false..
* OnRep_AssociatedItem() now only enables physics if replicated movement was deferred or it detects replicated physics were enabled.
This fixes issue of flag falling over or changing location etc on clients.
* moved GBCharacter::ClientSwitchItems() logic to GBPlayerController to ensure proper replication.
* updated ZooKeeper module
* updated UGBLuaTimerPackage
* renamed TimerMap to TimerHandlMap.
* removed attempt to clean up timehandle upon its use entirely - can't see it hurting anything.
Will be replaced or cleared next time a timer with the same handle is set anyway.
* Moved Chemlight from hold back to Inventory
* Added green chemlight to top of gamemode flag
* Temp placement for now 
* Adjusted gamemode flag to be brighter and removed chemlight
* moved all firearm validation code to C++
* updated WPB_ItemEditor to take convert the failure message into a pretty version.
* updated overlap validation to ignore items that are not attached to the current firearm
* seems overlap check would detect items that were had just spawn/were being spawned by other kits being validation and detect those!
* ensured pre/post modifier sights only become valid when the trace a suitable sight, rather then defaulting to being valid.
* Reworked gamemode flagpole to be lighter in color and have a bit of emissiveness
* rearranged logic in GBPlayerController::SetLoadout() related to validation to ensure child items are able to be queried by the collision system.
* fixes the issues discovered in testing where the G33 failed to detect being placed behind an appropriate reddot etc.
* renamed UGBLuaGameModePackage::GetLivingPlayerList to GetPlayerListByLives(TeamId, MinLive, ExcludeBots)
* creates a list of players wtih lives >= min lives that have declared ready and are in the play area.
* sorts them by lives, highest to lowest
* updated affected Lua.
Remember - a player with lives may not have a character.
Do something like PlayerCharacter ~= nil before attempting to use it.
* removed debug logic in BP_Laptop_Usable causing it not to spawn properly (oops)
* created UZKSebver::HasWhiteList()
* updated GBGameSession
* ignores password when white list is in use.
* adds wl0/wl1 to steam tags for use in server browswer
* updated WBP_ServerBrowser
* shows servers as passworded when if they use a white list.
* change password overlays to use generic diaglogues
* added dialogue when attempting to join whitelisted server
* created UGBFunctionLibrary::GetConfigFilename() and updated all config related functions to use it.
* updated WBP_Settings_XXX to use UGBFunctionLibrary::Config_Save(TEXT("PlayerSettings")) instead of calling SaveSettings().
* changed UGBPlayerSettings::SaveSettings() to a non-Blueprint exposed function.
* Uplink fixes from FM
- I think it's ok if AutoSwap is turned off, so maybe stick that in the notes
- don't think it's a big fix - I could probably find it myself
- ok, Uplink.Lua, line 183 - gamemode.gamemode is causing it to throw an error @Kris
- line 188 - self.PlayerTeams.BluFor.TeamID -> self.DefendingTeam.TeamId
- the laptop setup code only seems to be called on 2nd and subsequent rounds, will try fix that too
- lines 194,195 - missing self. - I think that's going to fix it"
* updated Defuse.lua based on fixes to Uplink.lua (oops)
* ensured self hosted games default to internet
* added team restriction and requirement checks to AGBPlayerController::SetLoadout()
* paranoid, but it should help prevent anyone accidently ending up with invisible arms/legs etc.
* changed SaveConfig("PlayerSetings") to SaveConfig("PlayerSettings) in WBP_Settings_Audio/Gameplay/Video
* yes, a single missing 't'.
* disabled a lot of superfluous and seemingly superfluous plugins and recompiled
* hopefully nothing we actually needed.
* disabling more plugins
* updated WBP_ChatOverlay to create ForceClose event to ensure things are cleanly closes when HUD is hidden.
* updated BP_HUD
* stopped WBP_SpectatorOverlay from being removed when HideGameRelated event is called.
* updated OnShowHUD event to improve the way it shows/hides related widgets.
* updated WBP_SpectatorOverlay
* removed need for OnClose() by making ForceClose() event remove player names itself.
* updated ForceClose() to ensure spectator related delegates are unbound
* updated BP_PlayerController::ShowTransition event to make show transition screen is over the top of spectator and other overlays
* updated GBPlayerController
* implemented BeginSpectatingState() override to call GBHUD->ShowMenuEvent(SpectatorOverlay)
* updated EndSpectatingState(), adding call GBHUD->HideMenuEvent(SpectatorOverlay) and rigged itup to call GBHUD->ShowHUD() only if GBHUD->bShowHUD was false.
* updated SpectatorToggleHUD() to call MyHUD->ShowHUD() directly, removing need for AGBHUD::SpectatorToggleHUD() entirely.
* updated HideTransitionScreens() to ensure spectator overlay is show if player is only ever going to be a spectator.
* updated all affected Blueprints, removing unncesscary calls to show/hide spectator overlay.
* updated Uplink/Defuse.lua to only perform autoswap at the end of PostRoundWait.

MicroProse is now the publisher for GROUND BRANCH!

As we get the next hotfix patch ready and continue to work on upcoming release V1032, we make a little pause in development for a major announcement: BlackFoot Studios has officially partnered with MicroProse, now the actual publisher for GROUND BRANCH!

If this logo doesn’t give you a warm, fuzzy feeling, we salute your enviable youth

Having left a very big mark in the industry, the MicroProse name is no stranger to fans of strategy and simulation—or, in fact, just about any player old enough to remember many of the titles published and developed by the company throughout most of the ’80s and ’90s: from Civilization, Pirates! and X-COM all the way to its myriad combat flight sims like Falcon 4.0.

Founded by retired USAF pilot Bill Stealey and programmer (and now legendary developer) Sid Meier, the company has gone through several acquisitions and changes before being purchased and revived in 2019—almost 20 years after it was last associated with a game—by David Lagettie, owner of TitanIM. You can learn more about MicroProse’s history and revival in this article.

Here is the announcement trailer their team put together with some footage and assistance from our community manager Prowlaz and his UN1T team, as well as creators Karmakut, Controlled Pairs and Ceb Cin. Soundtrack is by community member mrbombastic:

What does this mean for GROUND BRANCH?

Only good things. We’ve had plenty of rough patches over the years, and MicroProse brings us some much-needed stability as development continues in earnest towards v1.0. The MicroProse crew will also be handling a good chunk of the marketing and helping us extend our reach not only to their established community, but also to new audiences out there. That means expanding the player base, generating more funding for development, and getting to where we want to be a little faster.

Is BlackFoot Studios selling out?

Not at all. Even if we had not retained complete creative freedom and full rights to the GROUND BRANCH franchise—which we have!—MicroProse has been taking a pretty hands-off approach to all titles under its brand, ensuring not only the integrity of the developers’ core vision, but also of the company’s legacy:

Sid [Meier] always said you need to make games with limited information, that are time critical with significant outcomes, and reward players that made the right decisions. […] It’s real enough that you feel you actually accomplish something, and not because you got a power-up.

Bill Stealey (co-founder, former CEO, and currently a consultant for MicroProse) for GamesIndustry.biz

As you can tell from the quote above, GROUND BRANCH fits right into MicroProse’s ecosystem.

Sneak peek: upcoming maps

As part of the partnership announcement, MicroProse has uploaded a whole bunch of brand-new screenshots to their website, including many from a still unannounced map. Below is just a little tease—you can check out the full gallery here.

YES… HA HA HA… YES! (Click image for the full gallery)

MicroProse Community

If you’re an old fan of MicroProse or just a big strategy or simulation buff, be sure to join their growing Discord community right here!

To learn more about all of the games currently under the MicroProse brand, follow this link.