I haven't done very much networking using C# before but I'll see what I can't get done. This is the perfect project for me outside of Unity 3D that can help me strengthen my skills. If I manage to get any meaningful progress I'll be sure to let the community know. The issue with traditional Linking that is used for trading is the lack of knowledge of how the hardware sends and receives packets among other things. Going with my approach removes any need to reverse engineer or emulate any system or software. Any benefit gained when trading a Pokemon (such as evolving) could be accommodated for with a simple conditions filter. This also could allow cross platform trading and cross generation trading. We can technically already do this using PkHex, but the process is very tedious.
So I was recently playing some HGSS with my cousin a few days back and I thought it would be pretty neat to use something that we already have and convert it into a way to trade Pokemon outside of the emulation process. In theory we could set up a simple host/client system that could connect an instance of a save editor. In this case I'm experimenting with PkHex simply because it's open source and it already has all the core functions I need. Let me try and explain how this would work... We have two players in two different locations. Point A and Point B. They would like to trade so they open up a modified PkHex. One user then hosts and the other connects to the session. From there they can both attach the game saves in question and have it synchronized. Each player would be able to see each others Pokemon and send requests to trade Pokemon. Once they both have selected the Pokemon they like to trade they then can confirm the trade. I have attached a very simple design (and quick at that) example to this post. I'm not the most advanced when it comes to programming, but I'm learning as I go. Would anyone even be interested in something like this?