I wanted to share the joy of the idea, the madness of the coding , and the realization of the failure
So I play a game called EverQuest, yes the one from 1999. The newest expansion released what many are calling the Tradeskill expansion.
In 23 expansions there has never been a release that offered player made gear that was of quality.
Now of course one needs materials to craft this new gear. There is an in game market place for selling your extra stuff to other players. Now here is the kicker, NO ONE was selling the mats or if they were the prices were so high that 1 item was around 17.99 Real life money.
There is about 13 different EQ servers that allow one to move a character back and forth from for a real life money purchase.
So I dreamed up this scheme.
Idea : I was going to offer a Software as a Service Site that allowed one to log into and it would show the current qty and asking price of each of the needed materials for each of the servers.
I spent the first 24 hours building the framework of my idea.
ore.report was launched in under 24 hours!
Full log in, ready to be directed to the all mighty CC processor.
Now I had to actually slow down and think.
Issues: There is no EQ API.
So in my head I said, ah no big deal, I will write a TCP listener that will watch my network’s incoming stream while I do a search for the materials on each server in the online market place. Of course this listener would have to log the data it sees, so I then can write a parser to extract ONLY the data I need and upload it to my site, saving me hours of manually updating a web page.
I did not know where to start to create a TCP listener.
After a few hours of research, I decided to try to use this thing called
So I starting in Java, and quickly realized that I had zero idea what the API methods were to this DLL. So I had to get the source code.
Source code obtained no issues.
Problem 1 : it would NOT compile in Visual Studio 17
So I installed VS 15 – No compile
So I installed VS 10 – No compile
So I installed VS 8! HOURS later I finally learned how to run this archaic thing in a windows 10 environment. I got a Successful Compile.
I now had a .LIB but I had another issue. I could not tell what the method’s did! This was all C++ code and looked about as foreign to me as Chinese Lots of *^ Name and stuff.
Clearly i was in over my head and loosing precious time to launch my TIME sensitive Service if i was ever going to make money on the idea.
I quickly realized that I could not create a Java app with a C++ .LIB so I went to old google for help.
I came across a github my MS that had something interesting.
So I spent the next day taking this sample and coding it into a UWP my own creation in C#
It compiled and then I learned of my first failure
The game uses UDP to send traffic to the client.
This masterpiece was useless.
I slept a short 4 hours after this set back
I reattacked the issue the next morning finding this on google
So I spent the next few hours, because I had already learned this new UWP thing on the last failure, coding a new masterpiece.
I ran it and used TCP view to see what UDP port the game was sending too.
So I tried to attach the Listener to my port and something amazing happened.
I ran head long into something that I didnt know existed.
Network Isolationwhich means Process A can not access process B data
My program threw an error so hard that I think it flagged me at Microsoft for illegal activity!
You can NOT listen to a port in use by another process in windows. PERIOD
So my project came to screeching halt!
I spent the next few hours reading about this thing called
SO_REUSEADDR and SO_EXCLUSIVEADDRUSE
But I never could find it in the UWP docs so I looked harder at the error code.
I thought I hit gold with this post
But then I released this was from 2012…. so pre net 4.0? I am guessing and we are on 4.7
The rabbit hole goes deep…. and I was unable to find anything DIRECTLY relating to this forbidden access permissions for UWP.
I tried the magic words listed here.
I tried [SecurityCritical], [SecuritySafeCritical], [SecurityTransparent], and even the assembly page insert of AllowPartiallyTrustedCallers
But I was unable to use them with ASYNC and AWAIT operations and found zero documentation as to why not.
So for now the project is shelved, but I now have a deeper understanding of the Windows 10 programming environment.