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

Treyarch pushed the boundaries on how a Call of Duty game should support and be part of eSports with Black Ops 2. Competitive Call of Duty went from a subtle notice with MW3, to be one of the biggest games in competitive scene with Black Ops 2. But how will Infinity Ward continue this success?

With Call of Duty: Ghosts, Infinity Ward and Activision have already committed to bringing the Call of Duty: Championship back in 2014. The Call of Duty: Championship 2013 was a huge success; it had the biggest viewership out of any competitive Call of Duty scene ever. They’ve also confirmed that Call of Duty: Ghosts will be the exclusive FPS for all MLG Pro Circuit events throughout 2014, starting with MLG Columbus in Nov 2013.

The support with events is confirmed, but what about the features in-game? In Black Ops 2, Treyarch added new features including in-game live streaming, CODCasting mode for casters, full support of LAN lobbies, and more.

Infinity Ward’s MW3 didn’t have any support for eSports. It took them over 5 months to add the basic feature of competitive LAN settings. By that time, MLG didn’t bother to add MW3 to the competitive scene.

For Ghosts, Infinity Ward appears to be on the right track. They’ve added a new ‘spectator mode’ (it’s different from CODCasting as CODCasting won’t return), which allows casters to see the game, change player views, see scoreboards, and more. Infinity Ward has removed the live streaming feature, but as the competitive scene will be played on Xbox One, that won’t be a big problem.

Infinity Ward has added a new playlist – which will replace League Play – called ‘Clan vs. Clan’ playlist. This playlist will allow you to play with other members of your clan against other clans. Mark Rubin said that they plan to use the leader boards of the Clan vs. Clan playlist to determine some, not all, of the qualifiers for the 2014 Championship.

Infinity Ward has also added new game modes, including Search & Rescue and Blitz, which should help increase viewership of the competitive Call of Duty scene by adding new gameplay and tactics from pro players.

It looks like Infinity Ward has chosen the right path with how to approach the eSports scene of Call of Duty. They’ve kept the features that are a must – competitive LAN, spectator mode – and added new modes to help diversify the competitive scene.

What do you think about Infinity Ward’s approach to Call of Duty eSports? Let us know in the comments below!

comments below