First of all thanks. IThis plug in is a life saver and it's great.
Second of all sorry for this looooooooong message i have many things to say.
About what I said earlier:
Quote: "Quote: "have not attempted this before, but off the top of my head I would achieve this by giving each client three or more instances. 1. mnConnect to main server, 2. mnStartServer to receive data from other clients, 3+. mnConnects to other clients. Upon connection to the main server, the server sends the client's information to all other clients so that they can connect to the new client."
I will try and tell you the results. Since I'm new at this, I will show everything I will do mainly because i'm prone to make mistakes."
Quote: "Quote: "I will try and tell you the results. Since I'm new at this, I will show everything I will do mainly because i'm prone to make mistakes."
Good luck "
To do this I have implemented two instances of mikenet per client.
The flow is the following:
1) I first start the main server, so I can have the connection data for the clients. (the equal in starcraft is the battle .net server)
2) After this the first client connects with its first instance to the server, so we have the client connected. Right after that i start as server service in the first client so another client could connect to the server.
3) I connect with the second client to the server, and right after that the connections details of the first client are passed to the second client, so the second client connects with first.
And it works fantastic!
.
Two things that i have to solve are the following:
Is there a way to use the same port in the first client in the two instances (client and server). This is necessary so the less numberof ports are opened. I have read this so i'm not sure if it's possible to mike net, because i think you don't have it implemented yet:
Quote: "Quote: "It's not, it's just that by default you can't bind multiple sockets to the same protocol/ip/port if they haven't be bound using the SO_REUSEADDR option. Use this, and you can bind multiple TCP sockets to the same port, but the destination IP or port must be different (a TCP socket is unique by its local ip/local port/remote ip/remote port)."
I did not know this ; thanks for the information.
"
I also want the person that plays the game, to not configure port forwarding in a manual way because in any game one person plays in the web, you don't have to do it. It's normal that you play without worring about those things.
I have come up with this:
Quote: "Hey i've had an idea. Don't know if it's possible though. Could you put UPnP or something similar into mikenet so that it can automatically forward ports from your router? I'm sure all those gamers out there would really love to see a game that you don't need to go into your router settings for."
Quote: "@ dale2507
Normally port forwarding is only necessary when hosting a server. However, I think what you are asking for is possible and so I will have a deeper look into it, although I probably won't have time to implement it for the next version."
Quote: "@ AlexI
Yes, that is my main focus for the next version "
ho yeah,
. I was wondering if was possible to do such a thing.
I have some questions regarding your error handling system since i have to use an error handling system for a free plug-in i will release to the community this weekend.
HOw do you know the line number of the triggered error?
you point me to postQuitMessage(0). And i'm getting the same mistake you solved in this version, how did you do it?, did you use the DBPROcomands or exit() function in c++?. What I don't want is it to continue to execute untils it reachs the end.
Quote: "Error System
The error system in all previous versions was a little unstable. Crashes through miss-using MikeNet were not uncommon and consequently debugging was difficult, especially in DBP. In this version the error system has been rewritten so that it is much more difficult to crash MikeNet (near impossible).
In previous versions if an error occurred midway through a function the function would continue to execute until it reached the end. This meant that multiple error message boxes could be displayed, or the original error could cause a crash further down the line. In this version if an error occurs midway through a function the function exits.
In the event of an error that would normally cause a crash an error message will be displayed and no crash will occur.
The error message that is displayed now tells you what command caused the error. You can use mnGetErrorCommand to determine this when error message boxes are disabled:"
Some help files aren't triggering from DB IDE when you press F1, for example mn Set Local.
Quote: "Thread commands
You can now change the priority and affinity of MikeNet worker threads with mnToggleAffinity, mnSetAffinity, mnSetPriority, mnGetAffinity, mnGetPriority."
ho yeah!!!
Quote: "It works like a charm, and none (or very little) of the NPC data is being dropped using Per Client Per Operation mode. Not only that but ping times have dropped from an average of 300-400 to less than 60, and I haven't even experimented with multiple threads yet. "
Excuse me please if I don't know, but how do you measure the ping times?, what does ping times that means, can you explain me?