Downloads
Recent Releases
Version History
What is the Replay Viewer?
The DefconExpanded Replay Viewer is a project that aims to make watching DEFCON replays easier and more immersive.
One of the main goals of this project is to integrate feature sets that are not available when watching a recording
with Dedcon.
Dedcon is a great tool for watching replays and without it DEFCON may have died a decade ago, but it has some limitations.
The biggest limitation is that Dedcon had to work with the limitations of the DEFCON client.
That is what this project aims to solve, by creating a modified DEFCON client that can load recordings, we can
add new features that never existed before and make the entire replay watching experience more inline with community expectations.
One of the biggest breakthroughs of this project is the ability to watch replays directly in the browser.
By pressing the Watch Online
button on any DefconExpanded replay overview card, you can quickly re-watch a recording without having to download it and view it with Dedcon!
Main Features
Playback Controls
- YouTube-style seeking, only works forwards for now
- Fast forward up to 100x speed
- Health Bars for ships and ground units
- Ability to hide UI elements
Recording Playback
- Radar perspective view, view a recording from another players perspective
- Whiteboard viewing support for each team and player
- View the lobby phase of a recording



Chrome Extension
Utilising the same API that sends .dcrec files to the replay viewer, we can allow other platforms such as Group6 and SFCON to work with the web based replay viewer, i created a very simple chrome
extension that adds a Watch Online button to the game cards on Group6 and SFCON.
This means that the replay viewer is not just a DefconExpanded
feature! which is the best for the community.
Get the extension from the Chrome Web Store if you want to use the web based replay viewer for Group6 or SFCON! Every recording on Group6 and SFCON is fully supported.
What is Globe Mode?
Inspired from DEFCON VR, globe mode is a whole new way to watch a recording. It works completely seperately from 2D mode
and is mainly used as an art piece. It is NOT a feature that is used for gameplay, nor does it replace 2D mode.
It simply allows another perspective of the game which can be extremely mesmerising to watch with the right recording.
3D Globe Features:
- 3D Nuke Trajectories!
- Retro Sphere that uses existing Coastlines and Borders
- Dynamic star field background for depth and atmosphere
- Google Earth globe controls
- Complete game state is viewable on the globe surface



Development
The project has been a dream of mine for almost a year, but i never had the motivation or knowledge to pull it off. Until now.
At first i tried a simple javascript port of DEFCON's game engine but you can imagine that failed before it even begun.
So i took a step back and done some research on how games are ported to the browser, games like Minecraft
have been ported to the browser without any serious drawbacks or issues. With that in mind i came across Emscripten, a compiler that allows you to compile C/C++ code to WebAssembly.
I ran into immedate roadblocks with the compilation, the main one was that DEFCON uses OpenGL 1.2 which is not supported by WebGL 2.0.
Some OpenGL 1.2 features are supported by WebGL 1.0 but you guessed it DEFCON used features that were not supported by WebGL 1.0.
I then realised that i was about to undertake the biggest project of my life, completely rewriting DEFCON's rendering engine to use
OpenGL 3.3 Core, which is practically identical to OpenGL ES 3.0 which WebGL 2.0 supports.
This took about a month development, the key was to preserve the exact same look and feel of the original game.

Extended Development
Once i had the rendering engine working, i actually ran into a problem where we ran slower than the original game!
The main reason behind this is that the original game used immediate mode rendering which was actually cleverly batched
by the GPU driver due to to decades of driver optimisations for OpenGL 1.2
After adding a simple debug menu the issue was clear...

For context on what you are looking at, a draw call is a request that the CPU makes to the GPU to render a specific object.
If you have too many you actually get a huge compuational bottleneck!
Every single element that was being rendered was being flushed immediately which resulted in astonishingly bad performance.
I decided to research how modern games tackle this problem and came across the concept of a texture atlas and vertex buffers.
Original DEFCON used individual textures files for each unit, this means that we cannot easily batch them without some strange behaviour.
Primarily because the GPU cannot handle multiple texture IDs in the same buffer object.
A quick and dirty solution was to create a system known as micro batching, we create a buffer for each texture ID and then we can allow them
to accumulate in seperate buffers and only flush when the buffer is full.
After accomplishing this task and adding unit trails and other immediate line rendering to a vertex buffer, the result was incredible

But we are far from finished, the next step is to add the fabled texture atlas, which means we never have to worry
about texture IDs and seperate buffers for each texture.
The reason a texture atlas is so powerful is that we can use 1 image and 1 buffer for every single unit,
so when we flush its only 1 draw call! to preserve mod compatiblity we keep the original micro batching system
and just set it to never flush unless the buffer is full.
This was suprisingly easy to implement, we just create an atlas with the coordinates of each texture and then feed this
into the existing resource managment system.
And if you thought that the last image was impressive, then this will blow your mind!

Installation Guide
Windows Installation
+
Manual Installation:
1. Download the .zip file
2. Extract anywhere, replay viewer does not care where it lives
3. If you want to watch replays with map mods, you must have your authentication key in the same
folder as the replay viewer
Note: You may need to temporarily disable Windows Defender to avoid false virus
warnings.