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

Black Ops 3 is now officially in the hands of everyone, and Treyarch has returned to the scene to deliver their Call of Duty experience, including for those on PC.

The Call of Duty PC community has had a bumpy ride in recent years for various reasons, but Treyarch have had a history of delivering a solid release – Black Ops 2 on PC for example, which was pretty good. We decided to give Black Ops 3 a try on PC, and in this first part of our series of articles, we play through a section of the campaign. Part 2 and 3 will focus on Multiplayer and benchmarking.

We used GeForce Experience to optimize the graphical settings of Black Ops 3 to get the best balance of performance and quality. We also used ShadowPlay to record the gameplay, another feature of GeForce Experience.
Since we were uploading a video to YouTube in 1080p, we set the in-game resolution to 1920x1080p and applied a frame rate limit of 85fps. We did try 1440p, but we saw more stable results at 1080p for the purpose of a ‘smooth campaign experience’ at a higher frame rate.
Ultimately, aside from applying the best settings with GeForce Experience, we kept everything else in their default position to simulate an end user playing Black Ops 3 for the first time on PC, without making extensive changes to the settings.

If you’re wondering how your PC may perform, you should check out our ‘Everything you need to know‘ article.

As with any PC release, most issues at launch are addressed shortly after in patches and updates.

PC specifications used:
OS: Windows 10 x64
CPU: Core i7-4790
GPU: ROG Matrix GTX 980 Ti Platinum Graphics Card (with 358.87 driver)

RAM: 8GB
HDD: Samsung 850 EVO 500GB SSD (game only)

We have always been a big fan of the ASUS line up of GTX graphics cards, and will cover the ASUS GTX 960 & 970 in part 2.

In part 2 we’ll go into more detail surrounding the performance and frame rate results using different configurations on multiplayer

From our first run through of the Black Ops 3 campaign, we experienced a solid 85fps using the ROG Matrix GTX 980 Ti Platinum Graphics Card, with no frame drops, stutters or input lag to be seen. Stay tuned for part 2!

comments below