I made a lot of prototypes before ending up in this version. You can see the first version
here. Basically, I used CEFSharp with PepperFlash and it worked. But I encountered problems:
- Executing multiple commands from C# to CEFSharp Chromium browser is unstable. It is always a race condition which is a bit complicated for me to handle everytime. Sure, newer versions of CEFSharp circumvented that but they don't support PepperFlash anymore.
- Very bloated. Not only it takes around 200MB of storage, it also consumes a lot of resources since it is chromium.
- The way I can communicate to the Chromium is like this: Native C# Code > CEFSharp's Javascript Bridge > Flash. This process bothers me a lot because it is inefficient compared to a standard AxShockwaveFlash where I can directly communicate with the flash.
So I opted-out on this method and tried Electron. But I also encountered issues:
- Also bloated since it uses chromium, but more optimized than CEFSharp.
- Node js doesn't technically support multithreading but has a workaround of webworkers. I don't actually know the specifics on this but based on what I experience, I am exposed to a lot of unsafe threads and race condition if I tried to implemented the features that Floob currently have.
- Javascript is annoying to maintain when the project became huge. I know this because I experienced it (in a hard way.) Sure, I could've used typescript to make it more maintainable but during that time, I didn't know typescript exists.
- In .NET, there exist a UI designer which is a life saver for me since I won't have to deal with UIs that much. In Electron however, while it does give me a freedom of freely designing a UI using HTML, CSS and Javascript, it does not give me the same convenience in .NET's designer.
As for the bot detection thing, it is very easy to mask your application into a more "legit" app that AE won't flag you easily. I showcased it
here. What you need to do is simply change the user agent to AE's launcher to every HTTP/ transaction (AQW also uses TCP but it doesn't have the user agent identity thing) and add a unique header (see the post's patch). This makes it a legit Artix Game Launcher on the AE server's perspective.
But, changing user agent is good enough. Make it a Chrome ver < 84 (Last chrome that supports flash) user agent and you're good to go. They won't actively ban you anyway for having a suspicious application especially if you are involved in MTXs. The only reason you can get banned is if a try hard mod found you room hopping.
If you have found a way to user PepperFlash in methods that I haven't tried yet, then I wanna know how and I'm interested in it.