Special K

Special K

Can't get the overlay to work with Brawlhalla
Hey, I feel pretty bad about asking for something so trivial, but the game seems to run with special k injected. However the overlay at start nor the control panel toggle will show the overlay. It'll confirm the input (you can see the mouse cursor change, but the overlay won't show)

I know that RTSS also doesn't show over the game either, but steam's own overlays do (fps counter etc)

Game is primarily written in actionscript 3, compiles in AIR and has a ton of C++ hooks wherever needed.

The game has some incredibly funky inputlag problems and a lot of them seems fixable through the usage of special k, especially considering it's a fighting game (which means 60fps limit)

I'm mostly curious about using the flip model presentation to attempt to reduce inputlag more. (The game has no true fullscreen mode)

The game has some other issues such as if your monitors refresh rate can't run at above 60hz, you will have an incredible amount of extra inputedelay. (at 61+ Hz it all disappears) Currently people use stuff like Nvidia or rtss or just simply buy a 144hz/240hz monitor to bypass that problem. Special K might be better.

Would really appreciate some help on figuring out how to get the overlay to work, I tried to troubleshoot compatibility, but I couldn't get it to work.

Last note; the game has no anti-cheat at all, because well... Kinda hard to cheat in a fighting game and anything funky-serverside manipulation gets detected anyways. And from what I know, Special K is about optimization, not cheating :P
< >
Showing 1-8 of 8 comments
Aemony  [developer] Jul 6, 2020 @ 5:45pm 
Originally posted by Zero to Hero:
Game is primarily written in actionscript 3, compiles in AIR and has a ton of C++ hooks wherever needed.

So it's basically a Flash-based game.

That's why Special K and RTSS can't hook it. It most likely uses something like GDI+ to draw its window and contents instead, which isn't an API that SK can hook and render upon but which I believe the Steam overlay can.
Originally posted by Aemony:
Originally posted by Zero to Hero:
Game is primarily written in actionscript 3, compiles in AIR and has a ton of C++ hooks wherever needed.

So it's basically a Flash-based game.

That's why Special K and RTSS can't hook it. It most likely uses something like GDI+ to draw its window and contents instead, which isn't an API that SK can hook and render upon but which I believe the Steam overlay can.

Basically a flash game yeah.

So is there pretty much no way to have the overlay work? Would I be able to proceed to just edit the file itself even with this? As mentioned, RTSS and Special K seems to work, just won't overlay.

I'd have to figure out how I can edit it to do the recommended swapchain setting thing for the fps limiter.
Aemony  [developer] Jul 6, 2020 @ 5:59pm 
I mean... the reason why RTSS and Special K can't hook it is because it doesn't use DirectX for rendering.

So flip model and those sorts of features that are for DirectX will have no effect on the game.
So... Render.DXGI won't work but Render.Framerate, input.cursor etc should still work right?
(The reason why I'm asking is because if certain elements still work, or if in some way we can get to add sk's flip model presentation on dx9 (I know that it's possible in some hijack way depending on how the game did certain things)

We can probably severely change the entire Brawlhalla competitive scene when it comes to input lag / latency. I have contacts with a ton of the top level players and I'm fairly certain they'd all buy this if it would work. Especially with how it also has features such as cursor lock and hide cursor utility, which isn't available in the game either. I already tested the cursor lock and hide cursor functions through the config files and it works.

Just not sure about the other aspects, afaik the framerate limiter seemed to work too. If I can recall, it uses AIR 17 and air 17 actually uses directx9. Read something about that certain actionscript 3 games use Stage3D for their 3D renders with gpu-accelerations and that it is similar to WEBGL.

I'm sorry for sounding annoying an uneducated, I am, I try to read up on everything and educate myself but certain things are too complex as I try and educate on the go. I am trying my best to have an informed discussion on this.

The game company is also a company that wouldn't behave like capcom, if there's significant improvements by special k I'm pretty sure they'd even recognize it and never attempt at blocking it (unless it can cause severe problems for the online netcode)
Aemony  [developer] Jul 7, 2020 @ 3:28pm 
As Brawlhalla uses AIR, I don't think there's much hope of SK having any positive impact on that game.

Like, even if it AIR might've used DirectX 9 for GPU acceleration, that still doesn't mean the content is actually displayed (presented) using said API. Nor is Special K capable of forcing flip model for DirectX 9 games as it requires more than what DirectX 11 based games does.

Since AIR apparently internally uses a shared codebase with the Flash Player rendering engine, I really doubt it uses DirectX for anything related to actually presenting the rendered contents on the screen. Most of these web based products and solutions either didn't have such capabilities on their own, or used something like GDI+ or likewise to just, well, present its rendered contents as a regular application would -- not as a proper game would do it.


I can play around a bit with it, but if its anything like my previous forays into e.g. CrossCode, No Time To Explain, and RPG Maker games, I doubt much is possible.
Aemony  [developer] Jul 7, 2020 @ 4:11pm 
Having tried Special K, DXVK, as well as dgVoodoo out I can say that right now none is really appropriate for the game.

Special K can hook the game, but none of its render functionalities really work on it.

DXVK can hook the game and translate the GPU calls to Vulkan and in general has the highest compatibility, but has otherwise no effect on the present mode of the game.

dgVoodoo can hook the game and can translate the GPU calls to DirectX 11. It can also promote the game to exclusive fullscreen mode (and with Windows' Fullscreen Optimizations enabled the OS takes care of turning that into a pseudo-flip model state). However actually using dgVoodoo is right not not possible as it results in the combat arenas, characters, and items being entirely black -- you only see the character portraits and the menu.

According to PresentMon[github.com], the game by default makes use of a present mode that PresentMode calls "Composed: Copy with GPU GDI", which "Indicates the app is windowed, and is copying contents into a surface that's shared with GDI."

DXVK retained that same present mode, sadly. I was hoping it would take the game to "Hardware Composed: Independent Flip" (Indicates the app is using "flip model" swapchains, and has been granted a hardware overlay plane) but this did not happen.

dgVoodoo properly enabled e.g. Hardware: Legacy Flip (fullscreen exclusive mode) as well as Hardware Composed: Independent Flip, but because of the game itself being entirely black, it's not really usable.

What I partially attempted to do was have SK hook DX9 of the game and attempt to force an exclusive fullscreen mode for the game as dgVoodoo were able to do, but sadly it seems that SK weren't even able to do that for some reason.

So right now, using any of the above mentions wrappers makes no real difference on how quickly the game screen can be presented on the display.
Okay, I see.

Wow, thank you for trying so many different things, that's way beyond any help I even expected to get.

The dgVoodoo thing is interesting as to how everything becomes black, frustrating to hear. I'm curious, is there anything that would help to know internally about the way they're using AS3 + AIR and C++ hooks? Is there any internal information from the devs that might help out figuring a way to hook it or have it function?

What if it upgrades to Air Version 33 (which is going to directx11) it's an updated SDK by Harman from 2019. Would this maybe change possibilities?

Once again, thank you so much for all the attempts lol.

So I assume me doing these changes in the config file essentially does nothing? (I Have a slight placebo effect, where the game feels awkwardly smooth after I did this, not sure why, I'm extremely latency sensitive as I've noticed ~10-16ms deviations in the past through live testing at events, and this felt like it got smoother)

[Render.FrameRate] TargetFPS=62.0 BackgroundFPS=0.0 LimiterTolerance=2.0 SleeplessRenderThread=false SleeplessWindowThread=false EnableMMCSS=true MaxBusyWaitPercent=0.2 WaitForVBLANK=false PreRenderLimit=3 BackBufferCount=4 PresentationInterval=0 RescanRatio=-1/1 RefreshRate=0.0 [FrameRate.Control] MaxRenderAheadFrames=0 OverrideCPUCoreCount=-1 [Render.DXGI] MaxDeltaTime=0 UseFlipDiscard=true DisableFlipModel=false AllowTearingInDWM=false AdaptiveTearing=false MaxRes=0x0 MinRes=0x0 SwapChainWait=0 Scaling=DontCare ScanlineOrder=DontCare ExceptionMode=DontCare EnableDebugLayer=false SafeFullscreenMode=false Use64BitDepthStencil=false IsolateD3D11DeferredContexts=false SkipSwapChainPresentTest=false OverrideMSAA=-1
< >
Showing 1-8 of 8 comments
Per page: 1530 50