µ±Ç°Î»Öà : 145zÓÎÏ·Õ¾¡¡|¡¡Ææ¼£MU¡¡|¡¡¼¼Êõ½Ì³Ì¡¡|¡¡

Ææ¼£MU·þÎñ¶ËÔ´ÂëÏê½â¡ª¡ªMU-GM½éÉÜ

Èȶȣº
Ææ¼£MU×÷Ϊһ¿î¾­µäµÄMMORPG£¬Æä·þÎñ¶Ë¼Ü¹¹ÔÚÒµÄÚ¾ßÓм«¸ßµÄÑо¿¼ÛÖµ¡£ÎÞÂÛÊǾ­µäµÄC++°æ±¾»¹ÊÇÏÖ´ú»¯µÄOpenMU£¬ÆäºËÐÄÂß¼­¶¼Î§ÈÆ×Ÿ߲¢·¢´¦Àí¡¢Êý¾ÝÒ»ÖÂÐÔÒÔ¼°ÓÎÏ·ÊÀ½çµÄÄ£ÄâÕ¹¿ª¡£¶ÔÓÚÏëÒªÉîÈëÁ˽âÓÎÏ·µ×²ã¼Ü¹¹»ò½øÐжþ´Î¿ª·¢µÄ¿ª·¢Õß¶øÑÔ£¬Àí½â·þÎñ¶ËÔ´ÂëµÄÄ£¿é»®·Ö¡¢Í¨ÐÅ»úÖÆÒÔ¼°GM¹ÜÀíϵͳµÄʵÏÖÔ­ÀíÊDZؾ­Ö®Â·¡£

Ææ¼£MUµÄ·þÎñ¶Ë²¢·Çµ¥Ò»µÄ¿ÉÖ´ÐÐÎļþ£¬¶øÊÇÒ»¸ö·Ö²¼Ê½µÄ·þÎñÆ÷¼¯ÈºÏµÍ³¡£ÔÚ¾­µäµÄ¼Ü¹¹ÖУ¬Ö÷Òª°üº¬ConnectServer¡¢DataServerºÍGameServerÈý´óºËÐÄ×é¼þ¡£ConnectServer¸ºÔð´¦Àí¿Í»§¶ËµÄTCPÁ¬½ÓÇëÇ󣬽øÐÐÕ˺ÅÈÏÖ¤ºÍ»á»°¹ÜÀí£¬Ëü³äµ±×ÅÍø¹ØµÄ½ÇÉ«£¬½«ºÏ·¨µÄÁ¬½Ó·Ö·¢¸øºó¶ËµÄÂß¼­·þÎñÆ÷¡£DataServerÔòרעÓÚÊý¾ÝµÄ³Ö¾Ã»¯´æ´¢£¬Í¨¹ýODBC½Ó¿ÚÓëSQLÊý¾Ý¿â½»»¥£¬´¦Àí½ÇÉ«ÐÅÏ¢¡¢±³°üÊý¾Ý¡¢¹«»á×ÊÁϵȽṹ»¯Êý¾ÝµÄ¶Áд£¬²¢Í¨³£²ÉÓûº´æ»úÖÆÀ´¼õÇáÊý¾Ý¿âµÄIOѹÁ¦¡£GameServerÊÇÕû¸öϵͳµÄºËÐÄ£¬¸ºÔðµØÍ¼¹ÜÀí¡¢¹ÖÎïAI¡¢Õ½¶·¼ÆËã¡¢ÎïÆ·µôÂäÒÔ¼°¸±±¾Âß¼­µÈʵʱÐÔÒªÇ󼫸ߵÄÒµÎñ¡£

ÔÚ½ÏеĿªÔ´ÏîÄ¿ÈçOpenMUÖУ¬¼Ü¹¹Éè¼Æ¸ü¼ÓÏÖ´ú»¯£¬²ÉÓÃÁËDockerÈÝÆ÷»¯²¿ÊðºÍPostgreSQLÊý¾Ý¿â¡£Æä´úÂë½á¹¹¸ü¼ÓÇåÎú£¬·ÖÀëÁËStartup¡¢NginxºÍDatabaseµÈÈÝÆ÷£¬Í¨¹ýRESTful API»ògRPC½øÐзþÎñ¼äͨÐÅ¡£ÕâÖּܹ¹²»½öÌáÉýÁËϵͳµÄ¿ÉÀ©Õ¹ÐÔ£¬»¹Ê¹µÃWeb¹ÜÀíºǫ́ÓëÓÎÏ··þÎñÆ÷µÄ½»»¥¸ü¼Ó˳³©¡£Àí½âÕâÖÖ·Ö²ã¼Ü¹¹£¬ÊÇÔĶÁÔ´ÂëµÄµÚÒ»²½£¬Ëü¾ö¶¨ÁËÊý¾ÝÁ÷ÏòºÍÄ£¿é¼äµÄñîºÏ¶È¡£

GameServerÊÇÔ´ÂëÖÐ×îÅÓ´ó¡¢×ÔӵIJ¿·Ö£¬Í¨³£ÓÉÊýÊ®ÍòÐÐC++´úÂë×é³É¡£ÔÚÔ´ÂëĿ¼ÖУ¬user.cpp»òMain.cppÍùÍùÕ¼¾ÝÁ˺ËÐĵØÎ»£¬¸ºÔðά»¤ËùÓÐÔÚÏßÍæ¼ÒµÄ״̬»ú¡£ÓÎÏ·Ñ­»·ÊÇ·þÎñ¶ËµÄ“ÐÄÔà”£¬Ëüͨ¹ýIOCP»òepollÄ£ÐͲ»¶ÏÂÖÑ¯ÍøÂç°ü£¬½âÎö¿Í»§¶ËЭÒ飬²¢¸ù¾ÝЭÒéÍ·µ÷ÓÃÏàÓ¦µÄ´¦Àíº¯Êý¡£ÀýÈ磬µ±ÊÕµ½¹¥»÷Ö¸Áîʱ£¬·þÎñÆ÷»áУÑé¹¥»÷¾àÀë¡¢Àäȴʱ¼ä¡¢ÃüÖÐÂʵÈÂß¼­£¬¼ÆËãÉ˺¦Öµ£¬×îºóͨ¹ý¹ã²¥Ð­Ò齫½á¹ûͬ²½¸øÖÜΧµÄÍæ¼Ò¡£

Ô´ÂëÖеÄÀà¼Ì³ÐÌåϵ·Ç³£ÑÏÃÜ¡£ÒÔ½ÇɫΪÀý£¬Í¨³£»áÓÐÒ»¸ö»ùÀàCUser£¬´ÓÖÐÅÉÉú³öCPlayer£¨Íæ¼Ò£©ºÍCMonster£¨¹ÖÎ¡£ÕâÖÖÉè¼ÆÄ£Ê½Ê¹µÃ¿ª·¢Õß¿ÉÒÔͳһ¹ÜÀíµØÍ¼ÉϵÄËùÓÐʵÌå¡£ÔÚ´¦ÀíÕ½¶·Âß¼­Ê±£¬MagicDamage.cpp»òSkillAttack.cppµÈÎļþ·â×°Á˸´ÔÓµÄÉ˺¦¼ÆË㹫ʽ£¬°üÀ¨ÊôÐÔ¿ËÖÆ¡¢·ÀÓùÁ¦¼õÃ⡢׿ԽÉ˺¦¸ÅÂʵȡ£¶ÔÓÚÏëÒªÐÞ¸ÄÓÎÏ·ÊýÖµµÄ¿ª·¢Õߣ¬ÕâЩÎļþÊÇÖØµãÑо¿¶ÔÏó¡£´ËÍ⣬µØÍ¼¹ÜÀíÄ£¿éMapServerManager¸ºÔðά»¤µØÍ¼µÄÍø¸ñϵͳ£¬´¦ÀíÎïÌåµÄÒÆ¶¯Åöײ¼ì²âºÍÊÓÒ°ÌÞ³ý£¬È·±£·þÎñÆ÷Ö»ÏòÍæ¼Ò·¢ËÍÆäÊÓÒ°·¶Î§ÄÚµÄÊý¾Ý£¬´Ó¶ø½ÚÊ¡´ø¿í¡£

·´×÷±×ϵͳҲÊÇ·þÎñ¶ËÔ´ÂëµÄÖØÒª×é³É²¿·Ö¡£ÔÚ²¿·Ö°æ±¾ÖУ¬¼¯³ÉÁËSXE»òÀàËÆµÄ·À»¤Ä£¿é£¬ÒÔDLLÐÎʽ¶¯Ì¬¼ÓÔØ¡£Ëüͨ¹ýHook¹Ø¼üAPIºÍУÑéÄÚ´æÊý¾Ý£¬·ÀÖ¹Íæ¼ÒʹÓñäËÙ³ÝÂÖ»òË²ÒÆÍâ¹Ò¡£ÀýÈ磬·þÎñ¶Ë»áÑϸñУÑéÍæ¼ÒµÄ×ø±ê±ä¸üƵÂÊ£¬Èç¹ûÁ½´Î×ø±ê¸üеľàÀ볬¹ýÁË×î´óÒÆ¶¯ËÙ¶ÈÔÊÐíµÄ·¶Î§£¬¾Í»áÅж¨ÎªÒì³£²¢¶Ï¿ªÁ¬½Ó¡£

GMϵͳÔÚ·þÎñ¶ËÔ´ÂëÖÐͨ³£ÌåÏÖΪȨÏÞ¿ØÖƺÍרÓÃÖ¸Á¡£ÔÚÊý¾Ý¿âµÄAccount±íÖУ¬Í¨³£»áÓÐÒ»¸ö×Ö¶ÎÓÃÓÚ±êʶÕ˺ŵÄȨÏ޵ȼ¶¡£·þÎñ¶ËÔÚ³õʼ»¯Ê±¶ÁÈ¡¸Ã×ֶΣ¬²¢ÔÚÄÚ´æÖÐΪGMÕ˺űê¼ÇÌØÊâ±êÖ¾¡£µ±GM·¢ËÍÁÄÌìÐÅÏ¢»òÖ´ÐвÙ×÷ʱ£¬·þÎñ¶Ë»áÓÅÏȼì²é¸Ã±êÖ¾¡£

Ô´ÂëÖÐͨ³£°üº¬Ò»¸öרÃÅ´¦ÀíGMÖ¸ÁîµÄÄ£¿é£¬ÈçGMCommand.cpp»òÔÚProtocol.cppÖÐÓÐרÃŵķÖÖ§´¦Àí¡£µ±·þÎñ¶Ë½ÓÊÕµ½ÒÔÌØ¶¨·ûºÅ£¨Èç“/”»ò“@”£©¿ªÍ·µÄ×Ö·û´®Ê±£¬»á½«Æä½âÎöΪָÁî¶ø·ÇÆÕͨÁÄÌìÄÚÈÝ¡£³£¼ûµÄÖ¸ÁîʵÏÖÂß¼­°üÀ¨£º

ÕÙ»½Ö¸Á½âÎö²ÎÊýÖеĹÖÎïID»òÍæ¼ÒID£¬ÔÚGMµ±Ç°Î»ÖÃÉú³ÉʵÌå»ò´«ËÍÍæ¼Ò¡£ÕâÉæ¼°µ½¶ÔÏóµÄ¹¤³§Ä£Ê½´´½¨ºÍ×ø±êͬ²½Ð­Òé¡£
ÎïÆ·Éú³É£ºÖ±½Óµ÷ÓÃÎïÆ·Éú³Éº¯Êý£¬ÔÚGM±³°üÖÐÌí¼ÓÖ¸¶¨µÄ×°±¸¡£ÕâÐèÒªÈÆ¹ý³£¹æµÄµôÂäÂß¼­£¬Ö±½Ó²Ù×÷±³°üÊý¾Ý½á¹¹¡£
״̬Ð޸ģºÐÞ¸ÄÄ¿±êµÄµÈ¼¶¡¢ÊôÐÔµã»òÉúÃüÖµ¡£Õâͨ³£Í¨¹ýÖ±½Ó²Ù×÷CUserÀàµÄ³ÉÔ±±äÁ¿£¬²¢·¢ËÍ״̬¸üаü¸ø¿Í»§¶ËÀ´ÊµÏÖ¡£

ÔÚWeb¹ÜÀíºǫ́·½Ã棬ÏÖ´ú·þÎñ¶ËÈçOpenMU²ÉÓÃÁËǰºó¶Ë·ÖÀëµÄÉè¼Æ¡£ºó¶ËÌṩAPI½Ó¿Ú£¬Ç°¶ËÒ³ÃæÍ¨¹ýHTTPÇëÇóÓë·þÎñÆ÷½»»¥¡£ÕâÖÖÉè¼ÆÊ¹µÃGM¿ÉÒÔÔÚä¯ÀÀÆ÷ÖÐʵʱ¼à¿Ø·þÎñÆ÷״̬¡¢²é¿´ÔÚÏßÈËÊý¡¢·â½ûÕ˺Żòµ÷Õû»î¶¯ÅäÖ㬶øÎÞÐèÖ±½Ó²Ù×÷Êý¾Ý¿â»òÖØÆô·þÎñÆ÷¡£

·þÎñ¶ËÓë¿Í»§¶ËµÄÊý¾Ýͬ²½¸ß¶ÈÒÀÀµÓÚDataÎļþ¼ÐϵÄÅäÖÃÎļþ¡£ÕâЩÎļþͨ³£ÒÔTXT»òXML¸ñʽ´æÔÚ£¬¶¨ÒåÁËÓÎÏ·ÊÀ½çµÄ¾²Ì¬¹æÔò¡£ÔÚÔ´ÂëÖУ¬ÓÐרÃŵÄÀฺÔðÔÚÆô¶¯Ê±¼ÓÔØÕâЩÎļþµ½ÄÚ´æÖС£

ÎïÆ·Êý¾Ý£º¶¨ÒåÁËËùÓÐÎïÆ·µÄÃû³Æ¡¢Íâ¹Û¡¢ÊôÐÔ¡¢µôÂäµÈ¼¶ºÍ¶ÑµþÉÏÏÞ¡£¿ª·¢Õß¿ÉÒÔͨ¹ýÐÞ¸ÄÕâЩÎļþÀ´Ôö¼ÓÐÂ×°±¸£¬¶øÎÞÐèÐÞ¸ÄC++´úÂë¡£
¹ÖÎïÊý¾Ý£º¶¨ÒåÁ˹ÖÎïµÄµÈ¼¶¡¢ÑªÁ¿¡¢¹¥»÷Á¦¡¢·ÀÓùÁ¦ÒÔ¼°µôÂä±í¡£
µØÍ¼ÅäÖ㺶¨ÒåÁ˵ØÍ¼µÄ¼¸ºÎ³ß´ç¡¢³öÉúµã×ø±êÒÔ¼°½øÈëµÈ¼¶ÏÞÖÆ¡£

Àí½âDataÎļþµÄ½âÎöÂß¼­¶ÔÓÚGMÖÁ¹ØÖØÒª£¬ÒòΪ´ó²¿·ÖÈÕ³£Î¬»¤¹¤×÷£¨Èçµ÷Õû»î¶¯±¶ÂÊ¡¢Ð޸ĹÖÎïѪÁ¿£©¶¼¿ÉÒÔͨ¹ýÐÞ¸ÄÕâЩÎļþ²¢ÖØÆô·þÎñÀ´Íê³É¡£²¿·Ö¸ß¼¶·þÎñ¶ËÖ§³ÖÈȸüм¼Êõ£¬ÔÊÐíÔÚ²»ÖØÆô·þÎñÆ÷µÄÇé¿öÏÂÖØÐ¼ÓÔØDataÎļþ£¬ÊµÏÖ¶¯Ì¬µ÷ÕûÓÎÏ·ÄÚÈÝ¡£

¶ÔÓÚ¿ª·¢Õß¶øÑÔ£¬´î½¨Ò»¸ö¿ÉÔËÐеı¾µØ»·¾³ÊÇÔĶÁÔ´ÂëµÄǰÌá¡£ÔÚWindows»·¾³Ï£¬Í¨³£ÐèÒªVisual StudioÀ´±àÒëC++Ô´Âë¡£Ê×ÏÈÐèÒª¸ù¾ÝÔ´ÂëÌṩµÄÒÀÀµ¿âÅäÖúÃincludeºÍlib·¾¶£¬½â¾ö±àÒë´íÎó¡£Êý¾Ý¿â·½Ã棬ÐèÒª»¹Ô­SQL½Å±¾£¬´´½¨ÏàÓ¦µÄ¿âºÍ±í½á¹¹£¬²¢ÅäÖÃODBCÊý¾ÝÔ´¡£

ÔÚ²¿Êð¹ý³ÌÖУ¬¶Ë¿ÚÓ³ÉäÊÇÒ»¸ö³£¼ûµÄÄÑµã¡£Ææ¼£MU·þÎñ¶ËÉæ¼°¶à¸ö¶Ë¿Ú£¬Èç55901¡¢55902µÈ£¬ÐèÒªÔÚ·À»ðǽÖÐÖðÒ»¿ª·Å¡£¶ÔÓÚOpenMUµÈ»ùÓÚDockerµÄ°æ±¾£¬ÔòÖ÷񻃾¼°docker-compose.ymlÎļþµÄÅäÖã¬ÐèÒªÕýÈ·Ó³ÉäÈÝÆ÷¶Ë¿Úµ½ËÞÖ÷»ú£¬²¢ÅäÖúÃNginxµÄ·´Ïò´úÀí¹æÔò¡£

µ÷ÊÔ·þÎñ¶ËÔ´Âëʱ£¬¶Ïµãµ÷ÊÔÊÇ×îÓÐЧµÄ·½·¨¡£¿ÉÒÔÔÚProtocol.cppÖÐÉèÖöϵ㣬¹Û²ì¿Í»§¶Ë·¢Ë͵ÄÊý¾Ý°ü½á¹¹£¬´Ó¶øÀí½âЭÒéµÄ½âÎö¹ý³Ì¡£Í¬Ê±£¬ÈÕ־ϵͳҲÊÇÅŲéÎÊÌâµÄÖØÒª¹¤¾ß£¬ÓÅÐãµÄ·þÎñ¶ËÔ´Âëͨ³£°üº¬ÍêÉÆµÄÈÕÖ¾¼Ç¼¹¦ÄÜ£¬Äܹ»¼ÇÂ¼Íæ¼ÒµÄµÇ¼¡¢½»Òס¢ÁÄÌìµÈ¹Ø¼üÐÐΪ£¬±ãÓÚʺó×·ËݺͷÖÎö¡£