YOU'VE WONDERED ABOUT IT. YOU MAY HAVE HEARD IT'S POSSIBLE, BUT NOT BELIEVED IT.
START BELIEVING. IT'S HERE, AND I'LL SHOW YOU HOW TO MAKE ONE.
----------------------------------------------------------
THE PERFECT LAGLESS PC SMASH BROS SETUP.
----------------------------------------------------------
Input delay SUCKS. It makes netplay feel like garbage when your system isn't quick enough to show you what's happening in a timely fashion. It's why tournament setups are the way they are: to reduce the time between what is happening and what is shown to the minimum it can be. I'm going to show you here how to best accomplish that for yourself on a PC.
There are quite a few factors and not all of them are very intuitive, so I'll be explaining why each factor is important to creating the perfect setup:
___________________________________________________________
▣ A VGA (blue adapter) CRT Monitor *OR* A Known Low-Lag or Gaming Monitor
-------------------------------------------------------------------------------------------------
THIS IS THE MOST IMPORTANT PART OF THIS ENTIRE GUIDE. A MONITOR NOT OPTIMIZED FOR GAMING WILL ADD INPUT DELAY TO A SETUP, SOMETIMES UP TO 400MS + (24 Frames)
YOU MAY BE LIKE "BUT MUH MONITOR HAS 1MS RESPONSE TIME IT MUST BE GUD". RESPONSE TIME AIN'T INPUT DELAY.
The best monitor to get is still a CRT; most CRTs are heavily customizable in regards to refresh rate and resolution so you can tweak your monitor to be crazy fast. If you're looking for pretty pretty princess melee instead of raw performance melee, you can definitely get a fancy pants gaming monitor instead of using a CRT at a resolution most smartphones can handle.
This is important for the same reason CRTs are important in tournament play - they are active scan, meaning they pull electric information directly from the pins of their adapter in a direct analog scan without any sort of processing to get the image on the screen, just a physical scan. This means that there is NO IMAGE PROCESSING TIME, unlike any sort of LED / LCD monitor. Gaming monitors still have input delay, but this is starting to become negligible as translation hardware becomes more powerful and monitors continue to draw frames faster. A lot of gaming monitors are beginning to outperform stock CRTs; if you're looking for an upgrade that will keep your input delay down look towards BenQ's XL series (XL2720Z, XL2430T, XL2420G). If you're looking for an enthusiast monitor, the best monitor on the market currently is the Acer XB270HU at $700~ and it absolutely dominates most CRTs.
If you're looking for best options or to see what the actual input delay on your monitor is, http://www.tftcentral.co.uk/ and http://displaylag.com/ both have an extremely good database of input delay and their tests are relatively reputable; it should be noted that DisplayLag uses a 60hz testing apparatus so their results are less accurate for 144hz monitors and TFT eliminates draw time in their tests. DisplayLag also displays results based on the half-frame draw, so the baseline to test against is a 60hz CRT drawing at 8.33ms. The best monitors on the market (Acer XB270HU, e.g.) draw a frame at around t=9.5ms~ compared to a 60hz CRT's 16.66ms, but barely slower than a 120hz CRT's draw at 8.33ms.
_______________________________________________________________________
▣ "But Profane, how can I make my shiny old CRT monitor go crazy fast?"
--------------------------------------------------------------------------------------------------------------------
If you want to crank your CRT up to 11, you can set a custom resolution and refresh rate extremely easily if you have an Nvidia card and the nvidia control panel (I have not tested this personally with an AMD card). My CRT has a native resolution of 1280x1024 @ 60hz, making it draw a half-frame in the aforementioned 8.33ms. Using Nvidia Control Panel, you can set a custom resolution / refresh rate that shrinks the display size but cranks the refresh rate. I have my CRT running at 640x480 @ 120hz, making my half-frame draw at 4.16ms and my full frame at 8.33, effectively doubling the speed of my CRT and outputting each Melee Frame twice for maximum smoothness. I recommend trying 640x480 @ 120hz as a custom resolution; if you get instability in display (flickering, shifting, doing crazy shit) you should revert the option to avoid damaging your CRT; most commercial CRT monitors can crank 640x480 @ 120hz without any sort of damage or lifetime reduction.
_______________________________________________________________
▣ Windows 7 / Ubuntu 15.04 and a Computer That Doesn't Suck
--------------------------------------------------------------------------------------------------------
Win7 / Ubuntu aren't intuitive tools to reduce input lag, but they have a couple of key factors in it that massively aid stability and reduce input lag; those factors include the ability to set process priority through task manager and the ability to minimize graphical environment handlers so dolphin can be the top of the graphics stack for lightspeed performance and no input delay from frames going through other elements in the graphics stack before being displayed. I'll get into the specifics of these later.
Next up is what minimum specs you can expect to run Melee / recording / streaming properly:
RUNNING MELEE
-2.2ghz dual-core processor
-4GB DDR3 / 8GB DDR2
-Radeon 6450 / Nvidia 8600
*or*
-2.4ghz+ i3/i5/i7 processor
-4GB DDR3
-No GPU
RUNNING/RECORDING MELEE (OBS)
-2.4ghz quad-core processor
-8GB DDR3
-Radeon 7770 / Nvidia 250
*or*
-2.8ghz+ i5/i7 processor
-8GB DDR3
-No GPU
RUNNING/STREAMING MELEE (OBS)
-2.66ghz i5 / 3.0ghz FX
-8GB DDR3
-Radeon 7850 / Nvidia 260
*or*
-3.0ghz i7 processor
-12GB DDR3
-No GPU
These benchmarks are all meant to represent a barebones fully optimized system running only OBS and/or Dolphin+Melee. If you're running a standard windows install you may need higher specs or full optimization to hit a smoothly running setup if you meet these criteria exactly.
____________________________________________________________________
▣ WiiU Official or Mayflash 4-port WiiU Mode GCN Controller Adapter
---------------------------------------------------------------------------------------------------------------
The official adapter is totally boss and made of Nintendium and the Mayflash 4-port has a PC mode switch so you can use the GCN controller on other games, but those things are not what is important here. What is important is that you follow :controller-guide: and setup your adapter to be in Direct Connect mode. Direct Connect bypasses any sort of software or driver process and reads GameCube controller inputs from a compatible adapter at a hardware level, making it almost completely lagless outside of the time that your USB bus takes to relay the signal (usually significantly <1ms). This removes the need to bind controls and interprets your inputs EXACTLY as a GameCube would (okay not exactly, the subframe polling isn't quite perfect, but they're fixing that); no slightly-off feeling controller calibration through dolphin needed anymore. If you upgrade to this from the Mayflash 2 port or any other third party adapter you can expect to see a reduction of between 30-60ms input delay, which is GIGANTIC.
EDIT: Dolphin currently doesn't have perfect input polling due to the fact that inputs are currently polled at the incorrect point in the subframe, but that will be resolved in the next build.
______________________
▣ Windows 7 / Ubuntu Tweaks
------------------------------------
Now that we've gotten all of our hardware tuning out of the way, we need to move towards software tweaks.
===================
SETTING CPU PRIORITY
===================
One thing that you absolutely want to make a habit of is setting Dolphin's priority in Task Manager. This is very simple to do:
- With Dolphin running, go to the Task Manager for Win7 and System Monitor for Ubuntu -> Processes tab
- In Ubuntu, you can only raise priority (lower niceness) if you're running System Monitor as root. To do so, use <sudo gnome-system-monitor> and pick the option to view all processes.
- Right Click dolphin.exe and go to Set Priority
-Win7: Set Priority to Realtime (High if you are streaming or doing anything else at all with your PC)
-Ubuntu: Lower the niceness to a value around -16 if you're only running Dolphin and -10 to -12 if you're streaming / recording
- You will need to do this every time you open Dolphin
**THIS IS ONLY POSSIBLE IN WINDOWS 7 OR UBUNTU**
This gives Dolphin unfettered access to your CPU at the highest priority which will almost completely eliminate the chance of another net process or system service from interrupting your dolphin running on your local machine. Of course, network lag will still cause stutters, but now that should be the ONLY thing that causes stutters.
=================================
BYPASSING OTHER GRAPHICS STACKS
=================================
**If you're on Ubuntu, you're done!** The Linux graphics stack almost always prioritizes OpenGL applications above any other graphical environment and has really well separated runtimes that make Dolphin top of the graphics stack under pretty much any circumstance; I'm researching the full effect of windowed Dolphin in Linux, but until I can say for sure that does not cause additional input delay I would run fullscreen to eliminate any potential issues.
-Disabling Windows Aero
The Windows graphics stack has a lot of tiny little things we need to take into account. Windows 7 by default is a glass bitch that takes HUGE graphical priority thanks to its cute little feature called Windows Aero. Disabling this is simple enough, but it leaves some ghosts in the system we still have to deal with. The first step to neutralizing Aero is to turn off your Aero theme:
- Right Click the Desktop and hit Personalize
- Select Windows Basic as your theme.
This will disable Aero effects (and also reset your wallpapers). We aren't done here though; there's one more thing that Windows leaves hidden that messes with input and the graphics stack. This is a little bastard process called dwm.exe, or the Desktop Window Manager. It's almost completely useless with Aero disabled, it handles some of the menu popups from the task bar and also works as a passthrough for graphics, so we need to eliminate it as a passthrough so it doesn't lag us anymore. To do this, either:
1. Run In Exclusive Fullscreen Mode to attempt to bypass DWM.exe
- Make sure that Use Fullscreen is checked in the Dolphin Graphics Config menu
- If you are using multiple monitors, you may want to go through step 2, as some configurations can cause input lag even in exclusive fullscreen
2. Disable DWM.exe
The Temporary Way:
- Ctrl + Alt + Del -> Task Manager or just Ctrl + Shift + Esc to pull it up
- Processes Tab
- Highlight dwm.exe, Kill Process.
- You will notice that dwm.exe IMMEDIATELY respawns.
- Kill it again. It should stay dead this time. Until you restart your computer, that is.
The Permanent Way:
-Open the start menu and type "run". Hit enter and type services.msc.
-Find Desktop Window Manager, right click it, and go to properties.
-Change the Startup Type to Disabled from Automatic
EXCEPTIONS
**Nvidia Shadowplay**
First and foremost, if you use Shadowplay to record your matches, this fix will strictly break Shadowplay and you will not be able to pull recorded data from it. Shadowplay depends on dwm.exe to work properly. If you use Shadowplay, make sure to run Dolphin in fullscreen mode on your Main Monitor, and that should be all you need to do. You may still see input lag from having a multimonitor setup thanks to dwm.exe, but it won't be severe.
This has given your Dolphin back full control on the top of the graphics stack, just where we need it to remove any sort of input lag from the system graphics processes.
==============================================================
If you have followed all of these steps, you now have a machine that is FASTER offline than a GameCube + CRT; a perfectly optimized set up runs around t=18ms~ for rendering and input interpretation compared to a GameCube's hardware-bound t=33.33ms on a 60hz CRT TV. In theory, with the new build coming around one would be able to have an offline GameCube + CRT experience ONLINE connected with someone with up to 15ms ping to you. The upcoming build will double buffer sensitivity and will allow buffer tuning to the half-frame instead of a full frame; up to buffer 4 (old buffer 2) will be equivalent to an offline setup with no lag in the equation.
CONGRATULATIONS.
YOU NOW KNOW HOW TO MAKE
**THE PERFECT PC SMASH BROS SETUP**