![]() |
Packet Enum - Completed - Printable Version +- Mirage Source (https://mirage-engine.uk/forums) +-- Forum: Mirage Source (Nostalgia) (https://mirage-engine.uk/forums/forumdisplay.php?fid=61) +--- Forum: Archive (2006-2011) (https://mirage-engine.uk/forums/forumdisplay.php?fid=18) +---- Forum: Resources (https://mirage-engine.uk/forums/forumdisplay.php?fid=49) +---- Thread: Packet Enum - Completed (/showthread.php?tid=1313) Pages:
1
2
|
Packet Enum - Completed - William - 26-09-2007 Introduction Currently each packet has a name that takes up 1 byte per character. Thats not good, instead we want to keep the packet name, but only want it to take up 1-2 bytes per packet. Backup your source! Begin with adding this in a module in the client: Code: Public Enum ClientPacketNames Now go into your handledata sub client side. The first packet on the top on a unedited mse1 is: Code: If LCase(Parse(0)) = "alertmsg" Then Code: If LCase(Parse(0)) = CPNAlertMsg Then Code: Public Enum ClientPacketNames Code: CPNAlertMsg = 0 Code: Public Enum ClientPacketNames Now all the names below that will have +1 on their number. So you dont need to write = 1, = 2 etc. It does that on its own. Now basicly you do the same for all the packets in the client handledata sub. This is the time consuming part, but it's worth it. I will do one more example for you though. The next packet in a unedited mse1 is: Code: If LCase(Parse(0)) = "allchars" Then Code: If LCase(Parse(0)) = CPNAllChars Then Code: Public Enum ClientPacketNames When you have completed that! You will copy the whole Public Enum ClientPacketNames and paste it into the server in a module. When you've done that, you will start searching for the old packet names in the server. Now it's good that we saved those old names after the new onse in the enum type. So now, search for the first you have in your Enum type, in a unedited MSE1, It should be: Code: "alertmsg" Code: Sub AlertMsg(ByVal Index As Long, ByVal Msg As String) Code: Packet = "ALERTMSG" & SEP_CHAR & Msg & SEP_CHAR & END_CHAR Code: Packet = CPNAlertMsg & SEP_CHAR & Msg & SEP_CHAR & END_CHAR Now you start on the server, with adding a: Code: Public Enum ServerPacketNames If you need any further help, just post and I'd be glad to help you. Re: Packet Enum - Completed - William - 26-09-2007 I remember being confuzed about this when struggeling with ore 2 years back. And Verrigan never did a tutorial for this, I believe he made a source code floating around with it. But I don't think many people even have that source. So I suggest you take a step back and let people add this since I've spoken with a lot of people who don't have this, and many dont know about it. So please give me another reason why I shouldn't post this ? Re: Packet Enum - Completed - Matt - 26-09-2007 Dave, you made a binary account tut, and Obsi posted the newer version of it that was easier to follow. Verrigan's byte packet, binary packet, w/e tut was good, but didn't give many examples, so it's hard to follow, if you can even follow it at all. Re: Packet Enum - Completed - Robin - 26-09-2007 It's easy to follow >_> Re: Packet Enum - Completed - Matt - 26-09-2007 Robin Wrote:It's easy to follow >_> Not for the average programmer. Re: Packet Enum - Completed - Robin - 26-09-2007 Well, if you're average you shouldn't try and add it then. You'd just end up getting confused when adding new packets or following other tutorials which require you to edit packets. Re: Packet Enum - Completed - William - 26-09-2007 Robin Wrote:Well, if you're average you shouldn't try and add it then.A programmer should always push their limits, no matter what it is. Re: Packet Enum - Completed - Matt - 26-09-2007 William Wrote:Robin Wrote:Well, if you're average you shouldn't try and add it then.A programmer should always push their limits, no matter what it is. Agreed. Most programmers, if they're smart, back up their project before attempting anything. Unless they know for a fact what they added will work and won't mess anything else up. Re: Packet Enum - Completed - Dragoons Master - 26-09-2007 That is kind of correct, but if you try to add this thing to your game but never ever sow anything about packets and sockets, there will be no way you will ever understand this. I know you should push your limits but you can't try to understand complex numbers when you can only sum and multiply things... In all my tutorials I ask the user to read and read again and again, if you don't understand DON'T go ahead! Re: Packet Enum - Completed - Robin - 26-09-2007 Dragoons Master Wrote:That is kind of correct, but if you try to add this thing to your game but never ever sow anything about packets and sockets, there will be no way you will ever understand this. I know you should push your limits but you can't try to understand complex numbers when you can only sum and multiply things... In all my tutorials I ask the user to read and read again and again, if you don't understand DON'T go ahead! -Hugs Dragoons Master- Re: Packet Enum - Completed - Coke - 26-09-2007 Why anyone can complain about a positive tutorial i dont know. Re: Packet Enum - Completed - William - 26-09-2007 Fox Wrote:Why anyone can complain about a positive tutorial i dont know.Same here. Re: Packet Enum - Completed - Dragoons Master - 26-09-2007 That's not the point. What I'm talking about is that a user with no knowledge about packets should not try this for beggining. He should study on internet first and then do this. I never said that you should not post this tutorial, I just said that the tutorial does not have to be used by users that don't know anything about protocols, etc... Re: Packet Enum - Completed - Matt - 26-09-2007 Dragoons Master Wrote:That's not the point. What I'm talking about is that a user with no knowledge about packets should not try this for beggining. He should study on internet first and then do this. I never said that you should not post this tutorial, I just said that the tutorial does not have to be used by users that don't know anything about protocols, etc... I agree with you, but some people, myself included, don't learn anything from research. I learn more from trial and error and examples and such. I'm an average programmer, but I understand packets and such. All this does is instead of sending the string "packetname" it sends a number, to save space and shit. Re: Packet Enum - Completed - Dragoons Master - 26-09-2007 Humm, ok then xD Re: Packet Enum - Completed - Matt - 26-09-2007 Dragoons Master Wrote:Humm, ok then xD What I'm saying is, a lot of people learn better from hands on experience than reading up on things. I have very little short term memory, so if I just read on something, I don't learn anything at all, cause I forget it really fast. Re: Packet Enum - Completed - Matt - 26-09-2007 Anyways.. Will using this improve the speed any? Re: Packet Enum - Completed - William - 27-09-2007 I'd say it increases the speed some, the packets will be sent a little faster when the size is smaller. Instead of sending 10 bytes when a player move in the game, it now send 1 or 2 bytes depending on which number was assigned to the packet name in the type. If you've done optimizations such with $ etc. Then you should know that doing this tut is like 1000times better. Re: Packet Enum - Completed - Coke - 27-09-2007 Guys what i dont understand is we obsess over bits, and bytes so much; if you look at mainstream online games they spam the hell out of the server and client, they have 32897423987432 more packets sending constantly than MS does; yet we still get some little lags on MS. Why is this? Simply because its vb6.0? Re: Packet Enum - Completed - William - 27-09-2007 Well, it's obviously cause vb aint so good. But never the less, the largest part is how it's programmed. I don't encounter any lag in my game now. And nor do the players. Of course it highly depends on how many players you got, but a MS game can for sure carry tons of players as long as you've spent a lot time fixing the source up. Re: Packet Enum - Completed - Matt - 27-09-2007 Winsock plays a part in it too. These mainstream games have custom socket handlers and shit like that. Re: Packet Enum - Completed - Aranshada - 27-09-2007 I'd just like to add a little note about this tutorial, if I may. Any variable declared of a custom Enum type will be 4 bytes. I even made a quick test program to confirm this. I had one form, and one module. In the module, I had this code: Code: Public Enum PacketName Code: Private Sub Form_Load() When I ran the program, I got a message box containing this: MessageBox Wrote:myEnumVar: 5 I felt I needed to bring that to light since it was mentioned in the tutorial that it would make the packet ID be 1-2 bytes, but it will indeed be a full four bytes. Of course, the way to make them 1 or 2 bytes is to have a bunch of constants set as bytes or integers. But by nature, all Enums are of data type Long. P.S. I believe I may still have a copy of Verrigan's "binary packet" MSE where he tweaked all of the stuff. Granted, I can't check until I can get back to my computer at home. Re: Packet Enum - Completed - Robin - 27-09-2007 Convert it to byte. Re: Packet Enum - Completed - Aranshada - 28-09-2007 You mean a bunch of byte constants? Or: Code: Public Enum Packets As Byte I'm assuming you mean byte constants... which would be the best way to do it. Re: Packet Enum - Completed - Robin - 28-09-2007 cByte I think it's called. |