// initialize jwplayer var playerInstance = jwplayer('player');// player dom elements var playerContainerEl = document.querySelector('.player-container');// returns video player position from top of document function getElementOffsetTop(el) { var boundingClientRect = el.getBoundingClientRect(); var bodyEl = document.body; var docEl = document.documentElement; var scrollTop = window.pageYOffset || docEl.scrollTop || bodyEl.scrollTop; var clientTop = docEl.clientTop || bodyEl.clientTop || 0; return Math.round(boundingClientRect.top + scrollTop - clientTop); }// returns the current y scroll position function getScrollTop() { var docEl = document.documentElement; return (window.pageYOffset || docEl.scrollTop) - (docEl.clientTop || 0); }// configure jwplayer instance playerInstance.setup({ autostart: true, playlist: 'https://cdn.jwplayer.com/v2/playlists/mYdavspX', primary: 'html5', setFullscreen: true, width: '100%' });// when jwplayer instance is ready playerInstance.on('ready', function() { var config = playerInstance.getConfig(); var utils = playerInstance.utils; // get height of player element var playerHeight = config.containerHeight; // flag determining whether close has been clicked var closed = true; // CHANGED // flag determing whether player is playing var playing = false; // ADDED // eventhandler for when close button is being pressed document.getElementsByClassName('icon-close')[0].addEventListener('click', () => { closed = true; onScrollViewHandler(); }); playerInstance.on('play', function() { closed = false; playing = true; // ADDED }).on('pause', function () { playing = false; // ADDED }).on('adPlay', function() { closed = false; // ADDED playing = true; // ADDED }).on('adPause', function() { playing = false; // ADDED });// get player element position from top of document var playerOffsetTop = getElementOffsetTop(playerContainerEl);// set player container to match height of actual video element playerContainerEl.style.height = playerHeight + 'px';// below we handle window scroll event without killing performance function onScrollViewHandler() { var minimized = getScrollTop() >= playerOffsetTop;if (closed && minimized) { minimized = false; jwplayer().pause(); playing = false; // ADDED } else if (!minimized && !playing) { closed = true; // ADDED } utils.toggleClass(playerContainerEl, 'player-minimize', minimized); // update the player's size so the controls are adjusted playerInstance.resize(); }// namespace for whether or not we are waiting for setTimeout() to finish var isScrollTimeout = false;// window onscroll event handler window.onscroll = function() { // skip if we're waiting on a scroll update timeout to finish if (isScrollTimeout) return; // flag that a new timeout will begin isScrollTimeout = true; // otherwise, call scroll event view handler onScrollViewHandler(); // set new timeout setTimeout(function() { // reset timeout flag to false (no longer waiting) isScrollTimeout = false; }, 80); };});

Gridlock is among the most complex maps in Black Ops 4, a package with a unique mix of close-range engagements and sniper sightlines.

Gridlock, according to our recent poll, isn’t among the favorite maps in Black Ops 4. This could be due to its unique and varying design choices that make the map difficult to parse. In contrast to simple maps like Nuketown, Gridlock mixes almost all playstyles into a single environment.

With the help of map data from XclusiveAce, let’s try and figure out this curious map together.


Spawns on Gridlock work similarly to other three-lane maps, but due to its slightly slanted designed, the emergency spawns (E-spawns) are located at the northwest and southeast portions of the map. The main spawns are located the east and west ends.

On Gridlock, the favorable spawn generally tends to be the western one. This is due to wider possible spawn area and so more options for the game to choose from before the spawn flips completely.

As opposed to some maps, the E-spawns essentially spawn the players in mid-map. E-spawns activated in two cases. One, if you are partially pushed out of the spawns, but the spawns have not completely flipped yet. Or two, because the enemy is so far away from your initial spawn that the game deems it necessary spawn you closer to keep the action alive.


Moving on to hotspots, the map includes a lot of small chokepoints and key among these are the ones leading in and out of mid-map. The right most red patch is a ramp and overhang which lead into one of the spawns. It serves as one of the main routes into the middle.

On the opposite side, a second story blasted-open room and a cut into the top lane provide access into the middle as well. The second story gives a clear sightline into the left side of mid as well as to the overhang.

The last critical hotspot on Gridlock involves the crashed truck in mid-map. The site provides cover from both sides and boxes for gunfighting. As several objectives are located near or on here, you’ll certainly be spending a lot of time hopping around this debris.

Crucial Positioning

As we watched XclusiveAce’s breakdown, we noticed a particular spot that could serve both competitive and casual players well. In the left/west of the map, on the road leading to mid-map, there is a blue-topped bank truck.

If you hop onto this truck, you will get a wonderous sightline onto the overhang on the other side. The second story room to the left of the truck does not provide much cover, but this spot makes only your head appear. This will let you take care of pesk ICRs and snipers looking to challenge the middle of the map at long range.

To check out many more spots and tricks to Gridlock, go watch XclusiveAce’s full video. We’ve embedded the video down below for your convenience. Be sure to thank him for excellent work he does for the community.

comments below
A life-long Call of Duty player, Bachelor of Game Design, and a lover of eSports. Floodsye is my real name, Tommi is just the gamertag my parents gave me.