// 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); };});

UPDATE: On Reddit, Treyarch has posted another update regarding their progress on fixing the issue. Here’s the update:

We reduced the capacity at the data center down to a level that we knew it could handle, based on what we had seen over the last two days. We are going to start increasing it from there so we can determine where the bottleneck is. So for now there will be more games being hosted by consoles than we would like. We’ll be pushing out a fix for some matchmaking issues tomorrow that will ensure that the games players are connecting to are more localized.

Original Story:

Since launch, many players in South America have been experiencing severe lag spikes and issues when playing Call of Duty: Black Ops 3 online. We’ve seen reports that once players have gone into a game, their ping spikes to 400 regardless of their internet. Many players have been asking for a solution, and today Treyarch has stated that they are aware of this issue and are currently working on a fix for it.


There has been a huge Reddit thread on the Black Ops 3 sub reddit about many players in Brazil specifically experiencing issues. Treyarch’s Martin Donlon, Director of Tech, has posted in the thread about why the issue is happening:

We identified a problem last week with how the clients were matchmaking. This was causing players in regions that only have one or two datacenters (South America & Australia, mainly) to sometimes matchmaking into games in far away datacenters. This is the issue that we fixed on Thursday/Friday. Fixing this issue had the side effect of causing a load issue at our datacenter in São Paulo which we are currently working on.

Stay tuned for the latest.

comments below