´«ÆæÓÎÏ·µÄºËÐÄÔËÐлúÖÆ½¨Á¢ÔÚ·þÎñ¶ËÓë¿Í»§¶ËµÄ¾«ÃÜÐ֮ͬÉÏ£¬¶þÕßÈçͬ´óÄÔÓëËÄÖ«£¬¸÷˾ÆäÖ°ÓÖÃܲ»¿É·Ö¡£Àí½âÆäÉî²ã¹¤×÷ÔÀí¡¢Êý¾Ý½»»»Á÷³Ì¼°³£¼û½»»¥¹ÊÕϵĽâ¾ö·½°¸£¬Êdzɹ¦¼ÜÉèºÍÔËάÈκδ«ÆæË½ÈË·þÎñÆ÷µÄ»ù´¡¡£±¾ÎĽ«ÉîÈëÆÊÎö·þÎñ¶ËÓë¿Í»§¶ËµÄºËÐŦÄÜ·Ö¹¤¡¢Ë«ÏòͨÐÅÐÒé¡¢Êý¾Ýͬ²½»úÖÆ¡¢ÒÀÀµ¹ØÏµÄ£ÐÍ¡¢¼ÜÉèÅäÖÃÒªµã¡¢³£¼û½»»¥¹ÊÕÏÅŲ鼰°²È«¼Ó¹Ì²ßÂÔ£¬ÎªÄã¹¹½¨Ò»Ì×ÍêÕûµÄÈÏÖªÓëʵ¼ù¿ò¼Ü¡£
Ò»¡¢ºËÐŦÄÜ·Ö¹¤£º·þÎñ¶ËÓë¿Í»§¶ËµÄ½ÇÉ«¶¨Î»
·þÎñ¶Ë£¨Server£©Óë¿Í»§¶Ë£¨Client£©ÔÚ´«Ææ¼Ü¹¹Öге£×ŽØÈ»²»Í¬µ«»¥²¹µÄºËÐÄÖ°Ôð¡£
1. ·þÎñ¶Ë£ºÓÎÏ·Âß¼ÓëÊý¾ÝµÄ¾ø¶ÔÖÐÊà
◦ ¼ÆËãÓëÂß¼´¦Àí£º·þÎñ¶ËÊÇÓÎÏ·¹æÔòµÄÖ´ÐÐÕߣ¬¸ºÔð´¦ÀíËùÓкËÐÄÂß¼ÔËË㣬°üÀ¨½ÇÉ«ÒÆ¶¯µÄºÏ·¨ÐÔУÑé¡¢¼¼ÄÜÉ˺¦¼ÆËã¡¢¹ÖÎïAIÐÐΪ¾ö²ß¡¢ÎïÆ·µôÂäÅж¨¡¢PK¹æÔòÓ¦Óõȡ£¿Í»§¶Ë½öÌá½»Òâͼ£¬×îÖÕ½á¹ûÓÉ·þÎñ¶ËȨÍþ¼ÆËã²¢¹ã²¥¡£
◦ Êý¾Ý´æ´¢Óë¹ÜÀí£º·þÎñ¶Ëά»¤ËùÓг־û¯Êý¾Ý£¬°üÀ¨Íæ¼ÒÕ˺š¢½ÇÉ«ÊôÐÔ¡¢×°±¸ÐÅÏ¢¡¢Éç½»¹ØÏµ¡¢¹«»áÊý¾ÝµÈ£¬²¢½«Æä´æ´¢ÔÚÊý¾Ý¿â£¨Èçͨ¹ýDBServer×é¼þ£©ÖС£¿Í»§¶Ë²»´æ´¢ÈκιؼüÓÎÏ·Êý¾Ý£¬½ö×÷ΪÁÙʱ»º´æ¡£
◦ °²È«Óë·´×÷±×£º·þÎñ¶ËÊÇÓÎÏ·¹«Æ½ÐÔµÄÊØ»¤Õß¡£Í¨¹ýÑéÖ¤¿Í»§¶Ë·¢Ë͵IJÙ×÷Ö¸ÁîÊÇ·ñºÏ·¨£¬·ÀÖ¹¼ÓËÙ¡¢Ë²ÒÆ¡¢ÐÞ¸ÄÄÚ´æµÈ×÷±×ÐÐΪ¡£
2. ¿Í»§¶Ë£º½»»¥³ÊÏÖÓëÖ¸Áîת·¢ÃÅ»§
◦ ͼÐÎäÖȾÓëÏÔʾ£º¿Í»§¶Ë¸ºÔð½«ÓÎÏ·ÊÀ½ç¿ÉÊÓ»¯¡£Ëü¼ÓÔØ·þÎñ¶ËÏ·¢µÄ×ÊÔ´£¨ÈçͼƬ¡¢ÒôЧ£©£¬²¢¸ù¾Ý·þÎñ¶Ëͬ²½µÄÊý¾Ý£¬ÔÚ±¾µØÆÁÄ»ÉÏäÖȾ³ö½ÇÉ«¡¢¹ÖÎï¡¢µØÍ¼ºÍÌØÐ§¡£
◦ Íæ¼ÒÊäÈë²É¼¯£º¿Í»§¶Ë²¶»ñÍæ¼ÒµÄ¼üÅÌ¡¢Êó±ê²Ù×÷£¬²¢½«Æäת»»ÎªÍøÂç·â°ü£¬¼´Ê±·¢Ë͸ø·þÎñ¶Ë¡£ÀýÈ磬°´ÏÂW¼üÒÆ¶¯£¬¿Í»§¶Ë²¢²»¾ö¶¨Òƶ¯ÊÇ·ñ³É¹¦£¬¶øÊǽ«“³¢ÊÔÒÆ¶¯”µÄÇëÇó·¢Ë͸ø·þÎñ¶Ë¡£
◦ ±¾µØ×ÊÔ´¹ÜÀí£º¿Í»§¶Ë±¾µØ´æ´¢×Å´óÁ¿µÄ¾²Ì¬×ÊÔ´Îļþ£¨ÈçDataĿ¼ÏµĹÖÎïÍâ¹Û¡¢×°±¸Ìùͼ¡¢µØÍ¼ÎļþµÈ£©¡£ÕâЩÎļþÐèÓë·þÎñ¶Ë°æ±¾ÑϸñÆ¥Å䣬·ñÔò»á³öÏÖÏÔʾÒì³£¡£
¶þ¡¢Í¨ÐÅÐÒéÓëÊý¾Ý½»»»£ºÐͬ¹¤×÷µÄÉúÃüÏß
·þÎñ¶ËÓë¿Í»§¶Ëͨ¹ýÌØ¶¨µÄÍøÂçÐÒé½øÐгÖÐøÍ¨ÐÅ£¬ÆäÁ÷³ÌÓëÄÚÈݾö¶¨ÁËÓÎÏ·µÄÁ÷³©¶ÈºÍÏìÓ¦ËÙ¶È¡£
1. ͨÐÅÐÒéÓëÁ¬½Ó»úÖÆ
◦ TCP/IPÐÒéµÄÓ¦Ó㺴«ÆæÍ¨³£²ÉÓÃTCPÐÒéʵÏÖ·þÎñ¶ËÓë¿Í»§¶ËÖ®¼äµÄͨÐÅ£¬ÒÔÈ·±£Êý¾Ý´«ÊäµÄ¿É¿¿ÐÔºÍÓÐÐòÐÔ£¬ÓÈÆäÊÊÓÃÓÚÖ¸Áî¡¢ÁÄÌì¡¢½»Ò׵ȹؼüÊý¾ÝµÄ´«Êä¡£
◦ Á¬½Ó½¨Á¢Óëά³Ö£º¿Í»§¶Ëͨ¹ýµÇ¼Æ÷ÅäÖõÄIPµØÖ·ºÍ¶Ë¿Ú£¨Èç7000¡¢7100¡¢7200£©·¢ÆðÁ¬½Ó£¬Óë·þÎñ¶ËµÄLoginGate¡¢SelGate¡¢RunGateµÈÍø¹Ø³ÌÐò½¨Á¢TCPÁ¬½Ó¡£Á¬½Ó½¨Á¢ºó£¬Ë«·½Í¨¹ýÐÄÌø°üά³Ö³¤Á¬½Ó£¬·ÀÖ¹¶Ï¿ª¡£
2. Êý¾Ý½»»»Á÷³ÌÓëÄÚÈÝ
ΪÁ˸üÖ±¹ÛµØÀí½âÁ½Õ߼䯵·±µÄÊý¾Ý½»»»¹ý³Ì£¬ÒÔÏÂÁ÷³ÌͼչʾÁ˴ӵǼµ½ÓÎÏ·½»»¥µÄºËÐÄͨÐÅÐòÁУº
sequenceDiagram
participant C as ¿Í»§¶Ë(Client)
participant LG as LoginGate
participant LS as LoginSrv
participant DB as DBServer
participant RG as RunGate
participant M2 as M2Server
C->>LG: 1. ·¢ÆðTCPÁ¬½Ó(¶Ë¿Ú7000)
LG->>LS: 2. ת·¢Õ˺ÅÃÜÂë
LS->>DB: 3. ÑéÖ¤Õ˺źϷ¨ÐÔ
DB-->>LS: 4. ·µ»ØÑéÖ¤½á¹û
LS-->>LG: 5. ·µ»ØµÇ¼³É¹¦/ʧ°Ü
LG-->>C: 6. ֪ͨ½á¹û
C->>LG: 7. ÇëÇó½ÇÉ«Áбí
LG->>DB: 8. ²éѯ½ÇÉ«Êý¾Ý
DB-->>LG: 9. ·µ»Ø½ÇÉ«ÐÅÏ¢
LG-->>C: 10. ÏÔʾ½ÇÉ«Áбí
C->>RG: 11. Ñ¡Ôñ½ÇÉ«½øÈëÓÎÏ·(¶Ë¿Ú7200)
RG->>M2: 12. ¼ÓÔØ½ÇÉ«ÓÎÏ·Êý¾Ý
M2-->>RG: 13. ·µ»ØÖܱ߻·¾³(µØÍ¼¡¢¹ÖÎï¡¢Íæ¼Ò)
RG-->>C: 14. ͬ²½³õʼÓÎϷ״̬
loop ÓÎÏ·½øÐÐÖÐ
C->>RG: 15. ·¢ËͲÙ×÷Ö¸Áî(ÒÆ¶¯¡¢¹¥»÷)
RG->>M2: 16. ´¦ÀíÓÎÏ·Âß¼
M2-->>RG: 17. ·µ»Ø½á¹û(¹ã²¥)
RG-->>C: 18. ͬ²½×´Ì¬¸üÐÂ
RG-->>Other Clients: 18. ͬ²½×´Ì¬¸üÐÂ(ÈçÐèÒª)
end
Èý¡¢ÒÀÀµ¹ØÏµÓë°æ±¾Æ¥Å䣺ºÍгÐͬµÄ»ùʯ
·þÎñ¶ËÓë¿Í»§¶ËÖ®¼ä´æÔÚÑϸñµÄÒÀÀµ¹ØÏµ£¬Èκβ»Æ¥Åä¶¼¿ÉÄܵ¼ÖÂÑÏÖØÎÊÌâ¡£
1. °æ±¾¾ø¶ÔÒ»ÖÂ
◦ ¿Í»§¶ËµÄ×ÊÔ´Îļþ£¨ÈçDataĿ¼ÏµÄWeapon.wil, Monster.wilµÈ£©±ØÐëÓë·þÎñ¶ËµÄMonster.DB, StdItems.DBµÈÊý¾Ý¿â¶¨ÒåÍêȫƥÅä¡£Èô°æ±¾²»Ò»Ö£¬»á³öÏÖ×°±¸²»ÏÔʾ¡¢¹ÖÎïÒþÐΡ¢µØÍ¼ºÚÆÁµÈÒì³£×´¿ö¡£
2. µÇ¼Æ÷µÄÇÅÁº×÷ÓÃ
◦ µÇ¼Æ÷ÊÇÁ¬½Ó·þÎñ¶ËÓë¿Í»§¶ËµÄ¹Ø¼üÇÅÁº¡£ÆäÄÚÖõÄÁбíÎļþ£¨Èçserverlist.txt£©Ö¸Ã÷ÁË·þÎñ¶ËµÄIPºÍ¶Ë¿Ú¡£Í¬Ê±£¬µÇ¼Æ÷»¹¸ºÔð¶ÁÈ¡¿Í»§¶Ë²¹¶¡£¨Èç.pakÎļþ£©£¬²¢Òýµ¼¿Í»§¶ËÕýÈ·Á¬½ÓÖÁÄ¿±ê·þÎñÆ÷¡£
3. Íø¹ØµÄе÷¹¦ÄÜ
◦ ·þÎñ¶ËµÄ¶à¸öÍø¹Ø£¨LoginGate, SelGate, RunGate£©·Ö¹¤Ð×÷£¬ÏñÒ»¸ö½Ó´ýÔ±ºÍµ÷¶ÈÖÐÐÄ£¬·Ö±ð´¦ÀíÈÏÖ¤¡¢½ÇɫѡÔñ¡¢ÓÎÏ·½»»¥µÈ²»Í¬½×¶ÎµÄͨÐÅ£¬È·±£Êý¾Ý±»×ª·¢µ½ÕýÈ·µÄ´¦ÀíÄ£¿é£¨ÈçLoginSrv, DBServer, M2Server£©¡£
ËÄ¡¢¼ÜÉèÅäÖÃÒªµã£ºÈ·±£ÎÞ·ì¶Ô½ÓµÄʵ¼ùÖ¸ÄÏ
ÔÚ¼ÜÉè¹ý³ÌÖУ¬ÕýÈ·ÅäÖ÷þÎñ¶ËÓë¿Í»§¶ËµÄ¹ØÏµÊdzɹ¦µÄ¹Ø¼ü¡£
1. ·þÎñ¶ËÅäÖúËÐÄ
◦ IPµØÖ·Í³Ò»£ºÈ·±£·þÎñ¶ËËùÓÐÅäÖÃÎļþ£¨Èç!serverinfo.txt, !runaddr.txt, !setup.txt£©ÖÐÉèÖõÄIPµØÖ·¾ùΪ·þÎñÆ÷µÄÕæÊµIP£¨µ¥»úΪ127.0.0.1£¬¾ÖÓòÍø/¹«ÍøÎª¶ÔÓ¦IP£©¡£Èκβ»Ò»Ö¶¼»áµ¼Ö¿ͻ§¶ËÎÞ·¨Á¬½Ó¡£
◦ ¶Ë¿Ú¿ª·ÅÓëת·¢£ºÔÚ·þÎñÆ÷·À»ðǽºÍ·ÓÉÆ÷£¨ÈôÊÊÓã©Öпª·Å7000¡¢7100¡¢7200µÈ¶Ë¿Ú£¬²¢ÕýÈ·ÉèÖö˿Úת·¢£¨Port Forwarding£©£¬ÔÊÐíÍⲿ¿Í»§¶Ë½ÓÈë¡£
2. ¿Í»§¶ËÅäÖùؼü
◦ ʹÓÃרÓõǼÆ÷£ºÓÀԶʹÓÃÓë·þÎñ¶ËÒýÇæÆ¥ÅäµÄµÇ¼Æ÷£¨ÈçGOMÒýÇæÅäGOMµÇ¼Æ÷£©¡£½«µÇ¼Æ÷ÖÃÓÚ´¿¾»¿Í»§¶Ë¸ùĿ¼ÏÂÔËÐУ¬ÇÐÎðʹÓùýʱ»òÀ´Ô´²»Ã÷µÄµÇ¼Æ÷¡£
◦ ²¹¶¡¸²¸Ç£º½«·þÎñ¶ËÌṩµÄרÊô²¹¶¡Îļþ£¨Í¨³£°üº¬Data, MapµÈÎļþ¼Ð£©ÍêÕû¸²¸Çµ½¿Í»§¶Ë¸ùĿ¼£¬ÕâÊÇÏÔʾ×Ô¶¨Òå×°±¸¡¢µØÍ¼µÄǰÌá¡£
Îå¡¢³£¼û½»»¥¹ÊÕÏÅŲ飺´ÓÏÖÏó¶¨Î»¸ùÔ´
µ±·þÎñ¶ËÓë¿Í»§¶ËͨÐÅÒ쳣ʱ£¬¿ÉÒÀ¾Ýϱí¿ìËÙ¶¨Î»ÎÊÌâ¡£
¹ÊÕÏÏÖÏó ¿ÉÄÜÔÒò ½â¾ö·½°¸
¿Í»§¶ËÎÞ·¨Á¬½Ó·þÎñÆ÷ ·þÎñ¶ËIP/¶Ë¿ÚÉèÖôíÎó£»·À»ðǽ/·ÓÉÆ÷À¹½Ø ¼ì²é·þÎñ¶ËÅäÖÃÎļþIP£»¹Ø±Õ·À»ðǽ»ò¿ª·Å¶Ë¿Ú
ÊäÈëÕ˺ÅÃÜÂëºóÎÞÏìÓ¦ LoginSrv»òLoginGateδÆô¶¯£»DBServer¹ÊÕÏ ÔÚÒýÇæ¿ØÖÆÆ÷Öмì²é²¢ÖØÆôËùÓÐÍø¹Ø³ÌÐò
´´½¨½ÇÉ«ºóÎÞ·¨½øÈëÓÎÏ· RunGateδÕý³£¹¤×÷£»M2ServerÒýÇæÎ´Æô¶¯ ¼ì²éRunGateºÍM2Server״̬£¬²é¿´ÈÕÖ¾´íÎóÐÅÏ¢
ÓÎÏ·ÄÚÏÔʾÒì³££¨»¨ÆÁ¡¢ºÚÆÁ£© ¿Í»§¶Ë²¹¶¡È±Ê§»ò°æ±¾´íÎó ½«·þÎñ¶ËÌṩµÄ²¹¶¡ÎļþÍêÕû¸²¸Çµ½¿Í»§¶Ë
²Ù×÷Ñӳٸߡ¢¿¨¶Ù ÍøÂçÁ¬½ÓÖÊÁ¿²î£»·þÎñ¶ËÐÔÄÜÆ¿¾± ¼ì²éÍøÂçÑÓ³Ù£»ÓÅ»¯·þÎñ¶Ë»òÉý¼¶·þÎñÆ÷Ó²¼þ
Áù¡¢°²È«¼Ó¹Ì²ßÂÔ£ºÊØ»¤Í¨ÐÅÁ´Â·
È·±£·þÎñ¶ËÓë¿Í»§¶ËͨÐŵݲȫÖÁ¹ØÖØÒª¡£
1. ͨÐżÓÃÜ
◦ ¿¼ÂÇʹÓÃÖ§³Ö¼ÓÃÜͨÐŵÄÒýÇæ£¨ÈçGEE¡¢GOM£©£¬¶Ô·þÎñ¶ËÓë¿Í»§¶ËÖ®¼ä´«ÊäµÄÊý¾Ý°ü½øÐмÓÃÜ£¬·ÀÖ¹ÐÒé±»ÆÆ½âºÍ´Û¸Ä¡£
2. ·´×÷±×»úÖÆ
◦ ·þÎñ¶ËÓ¦¼ÓÇ¿¶Ô¿Í»§¶Ë²Ù×÷µÄËÙ¶ÈºÍÆµÂÊУÑ飬ÀýÈç¼ì²âÒÆ¶¯ËÙ¶ÈÊÇ·ñÒì³£¡¢¼¼ÄÜÀäÈ´ÊÇ·ñ±»ÈƹýµÈ£¬Ò»µ©·¢ÏÖÒì³£¿É¶Ï¿ªÁ¬½Ó»ò·â½ûÕ˺š£
½áÓï
´«Ææ·þÎñ¶ËÓë¿Í»§¶ËµÄ¹ØÏµ£¬ÊÇÍøÂçÓÎÏ·¼Ü¹¹ÖÐ×î¾µäµÄC/S£¨¿Í»§¶Ë/·þÎñ¶Ë£©Ä£ÐÍ·¶±¾¡£·þÎñ¶Ë×÷ΪȨÍþ´óÄÔ£¬ÕÆ¿ØÒ»ÇÐÂß¼ÓëÊý¾Ý£»¿Í»§¶Ë×÷ΪÁéÃô¸Ð¹Ù£¬¸ºÔð³ÊÏÖÓë½»»¥¡£¶þÕßͨ¹ý¾«ÃܵÄÍøÂçÐÒé³ÖÐø¶Ô»°£¬Èκλ·½ÚµÄ´íÅä¶¼¿ÉÄܵ¼Ö“ÉíÐÄʧµ÷”¡£Éî¿ÌÀí½âÆä·Ö¹¤¡¢Í¨ÐÅ¡¢ÒÀÀµÓëÅäÖÃÒªµã£¬²»½öÊdzɹ¦¼ÜÉèµÄ»ùʯ£¬¸üÊǸßЧÅŲé¹ÊÕÏ¡¢ÓÅ»¯ÓÎÏ·ÌåÑé¡¢ÄËÖÁ½øÐÐÉî¶È¶¨ÖÆ¿ª·¢µÄ¹Ø¼ü¡£Ï£ÍûÕâ·ÝÏê½âÄÜÖúÄã³¹µ×¶´²ìÆäÔË×÷»úÖÆ£¬ÈÃÄãµÄ´«ÆæÊÀ½çÔËÐеøü¼ÓÁ÷³©ÓëÎȶ¨¡£
´«Ææ·þÎñ¶ËÓë¿Í»§¶ËÐͬ¹¤×÷»úÖÆÈ«½âÎö£º´ÓͨÐÅÔÀíµ½¼ÜÉèʵս
À´Ô´£º
×÷Õߣº
µã»÷£º
½üÆÚ¸üÐÂ

