
æè¿ãååãšã®äŒè©±ã®äžã§ã
RTSãžã£ã³ã«ã®ããŸããŸãªã²ãŒã ã«ã€ããŠè°è«ããŸãããã3çªç®ã®ãã³ãµãã¯ãã®ãªãªãŒã¹ããªãéãå»ã£ãã®ãçåã«æããŸããã æ°ååŸã1ã€ã®æ€çŽ¢ã¯ãšãªã
æãåºããŸãã-éåžžã«
ç²éãªåæãªãªãŒã¹
ã«å ããŠããã®å€å
žçãªæŠç¥ã®çãŸãå€ããã¯ãå
¬åŒãµãŒããŒãžã®æ°žç¶çãªæ¥ç¶ãªãã®ãã«ããã¬ã€ã€ãŒã²ãŒã ã®äžå¯èœæ§ã«ãã£ãŠåºå¥ãããŸããã ããŸããŸãªæ°é®®ãã®ãã©ãŒã©ã ã§ãLANãè¿œå ããããšãããã¬ã€ã€ãŒããã®å€æ°ã®èŠæ±ã¯ãå€æŽã«åŸ
ã€äŸ¡å€ããªãããšã瀺åããŠããŸãã
ãŸããå±±ãã¢ãã¡ããã«è¡ããªããã°...
TL; DRïŒãµãŒããŒã䜿çšæ¹æ³ãããã³ãœãŒã¹ã³ãŒãã¯
GitHubã§å
¥æã§ã
ãŸã ã
æåã®ã¹ããã
ãããã³ã«ã®äžè¬çãªæ§é ãç解ããã«ã¯ãã²ãŒã ã¯ã©ã€ã¢ã³ããšå
¬åŒãµãŒããŒã®éã§çèŽãããæåã®4ã€ã®ãã±ããã§ååã§ãã ã ããç§ãã¡ã¯æã£ãŠããŸãïŒ
ãã±ããããããŒã¯åžžã«æ£ç¢ºã«14ãã€ãã§ããã€ããŒããµã€ãºïŒ1ïŒãã³ãã³ãã³ãŒãïŒ2ïŒãããã³ãã±ããã¢ãã¬ã¹æå®çšã®2ã€ã®ãã¬ãŒã€ãŒèå¥åïŒ3.4ïŒãå«ãŸããŠããŸãã ç°¡åãª
äŸãæããŸããã
-ã²ãŒã ãããŒã§ã®
ãã©ã€ããŒããã£ããã¡ãã»ãŒãžïŒ

ãŸããè¡ã®åã«ã¯ãã®é·ãããããŸãïŒ5ïŒã ç¹å®ã®ã³ãã³ãã³ãŒãã«å¿ããŠãããŒã¿åœ¢åŒãç°ãªããè¡ã®ãµã€ãºã1ã2ããŸãã¯4ãã€ãã§ç€ºãããããšã¯æ³šç®ã«å€ããŸãã
æ°ããã²ãŒã ã«ãŒã ã®äœæã«é¢ããå
¬ééç¥ãæ€èšããŠãã ããã

ããããŒããµã€ãºãã³ãã³ããããã³éä¿¡è
ïŒ1,2,3ïŒã§å§ãŸããŸãããåä¿¡è
èå¥åããããŸããïŒ4ïŒã ãã®ã¡ãã»ãŒãžã§ã¯ããå
šå¡ã«éä¿¡ããæå³ããŸãããä»ã®ããŒã ã«ãšã£ãŠã¯ãèªåã®éšå±ã®å
šå¡ã«ããæå³ããå ŽåããããŸãã æåã®è¡ïŒ5ïŒã«ã¯ãååããã¹ã¯ãŒããããã³ã²ãŒã ã®ã¿ã€ããšã«ãŒã ã®äœæè
ïŒãã¹ãïŒã®ã¯ã©ã€ã¢ã³ãã®ããŒãžã§ã³ã«é¢ããæ
å ±ãå«ãŸããŠããŸãã å€ãåºåãã«ã¯ãã¿ãæå\ tã䜿çšãããŸããããã¯09hã§ãã 次ã«ãéšå±ã«é¢ããæ
å ±ãèšèŒãããè¡ïŒ6ïŒãç¶ããŸããããã¯ãéšå±ããªã¹ãã«è¡šç€ºããããã«å¿
èŠã§ãã ã¹ããŒã¿ã¹ãã©ã€ããã¬ã€ã€ãŒã®æ°ãã³ã³ãã¥ãŒã¿ãŒã®å¯ŸæŠçžæãã¯ããŒãºãããã¹ããããããã«2ã€ã®å€ãå«ãŸããŸãã ããã§ã¯ã瞊ç·ãã»ãã¬ãŒã¿ã®åœ¹å²ãæãããŸãã ãã®åŸã«ããããã4ãã€ãã®2ã€ã®å®æ°
ïŒä»¥äžãã¿ã€ã
Intã®
æ°ãšåŒã³ãŸãïŒãç¶ãã次ã«ãéšå±ã®äœæè
ã®ã³ã³ãã¥ãŒã¿ãŒã®
ãã¹ãåãå«ãè¡ïŒ7ïŒãç¶ããŸãã
èªæžããçãã質åãäºæ³ããŠãç§ã¯ããã«æ³šæãã...- ã¯ããå宀ã®ãã¹ã¯ãŒãã¯ãµãŒããŒäžã®ãã¹ãŠã®ãã¬ãŒã€ãŒã«éä¿¡ãããŸãã
ïŒèšäºã ã³ãµãã¯ã«ã¯ç§å¯ããããŸãã ããåç
§ïŒ - ããããã²ãŒã ã«ã¯ã«ãŒã ã®äœæè
ã®ãã¹ãåã¯å¿
èŠãããŸããã ãã¹ãŠã®ãã±ããã¯ãµãŒããŒãä»ããŠéä¿¡ãããŸãã
ããã§ã¯ããã£ãšèå³æ·±ãç¹ã«ç§»ããŸãããã
翻蚳ã®é£ãã
æåã«ã
TCPã®&&ããŒã¿ ãã£ã«ã¿ãŒã䜿çšããŠ
Wiresharkã®ãã±ãããåæãã
ACKã®ãããªã空ã®ããã±ãããç®ã®åã§ç¹æ»
ããªãããã«ããŸããã ããæç¹ã§ã暪åãã«ãªã£ãããšãå€æããŸãã
ãDCERPCãããã³ã«
ãã±ããã® TCPãã€ããŒãã05h 00hãã€ãã§å§ãŸããã±ãããWiresharkã誀ã£ãŠåãå
¥ããããšãå€æããŸããã ç¹ã«ãããã¯ãéšå±ã«å
¥ã£ããã¬ãŒã€ãŒã«é¢ããéç¥ãå«ããã±ããã«åœ±é¿ããŸããã åžžã«ããããŒã®åŸã«æ£ç¢ºã«5ãã€ããå«ãŸããŸãã ããã«ãããWiresharkã¯TCPè² è·ã
Dataã§ã¯ãªã
[Malformed PacketïŒDCERPC]ãšããŠããŒã¯ãããã±ãããé衚瀺ã«ããŸãã

ãã®å Žåãæ£ããã®ã¯æ°ãã
tcp.payloadãã£ã«ã¿ãŒã䜿çšããããšã§ãã Wiresharkããã®è² è·ãã©ã®ããã«è§£éãããã«é¢ä¿ãªãããã€ããŒããæã€ãã¹ãŠã®TCPãã±ããã衚瀺ããŸãã
ã·ãªã¢ã«åã®é²å
ãããã¯ãŒã¯ãããã³ã«ãéã«ãããšãåªå
é äœã®ç°ãªãããŸããŸãªäººãããŸããŸãªã¿ã€ãã³ã°ã§ããã«åãçµãã ããšã¯æããã§ããã å€æ°ãæž¡ã3çš®é¡ã®è¡ãåºå¥ã§ããŸãã
- ã³ã³ãã¯ããªåŒŠ
è¡ã®é·ãã¯1ãã€ãã§ç€ºãããè¡ã«ã¯å€æ°ã®ååãå«ãŸãããã£ãŒã«ãã¯åçŽããŒã§åºåãããŸãïŒ ps=1337|pw=42|pg=12
- äžéç·
è¡ã®é·ãã¯2ãã€ãã§ç€ºããïŒä»¥äžãã¿ã€ãShortã® æ°ãšåŒã°ããŸãïŒãå€ã¯ã¿ãã§åºåãããååã¯ãããŸããïŒ "MyRoom"\t"secret"\t0AFFE
- å¯å€§ãªåŒŠ
ç¹æ®ãªæååãå®éã«ã¯ãå€æ°åãšãã®andå€ã亀äºã«ãªã£ãæååã®é
åã§ãã 1次å
圢åŒã®äžçš®ã®é£æ³é
å ã ãã®äžã®åè¡ïŒé·ãïŒïŒã®é·ãã¯ã Intåã®æ°ã§ç€ºãããŸãã ãã®åœ¢åŒã®è©³çŽ°ãªèª¬æã¯ããµãŒããŒã®ãœãŒã¹ã³ãŒãã®ã³ã¡ã³ãã«èšèŒãããŠããŸãã
äŸ
è¡ã®é·ãã瀺ãæ°åã¯ãèµ€ã é»è²ã®åºåãèšå·ã§ããŒã¯ãããŠããŸãã
æåŸã®äŸã¯ãéšå±ã®äœæè
ãã²ãŒã ãé¢ãããšãã«ããã¹ãã®åœ¹å²ããã¬ãŒã€ãŒã®1人ã«ç§»ãããšãèŠå¶ããããã±ãŒãžããåãããŠããŸãã ç§ãç解ããŠããããã«ããã®æ©èœã¯ã²ãŒã ã®ãªãªãŒã¹åŸã«ããã«éçºãããŸããã æããã«ãããŒã¿è»¢éå¹çã®åé¡ã¯ãå
ã®ãšã³ãžã³ã§ãããã¯ãŒã¯ãããã³ã«ãäœæãããšãã»ã©æ·±å»ã§ã¯ãããŸããã§ããã
ããããªãããã¡ãŒ
å€ãã®ãã±ããã®çµããã§ããã€ããŒãã¯4ã€ãŸãã¯6ã€ã®ãŒããã€ãã§çµãããŸãã ãã ããç¹å®ã®ããã±ãŒãžïŒç¹ã«ãã³ãã³ãã³ãŒã
0xc8ããã³
0x19dãäœ¿çš ïŒã§ã¯ãããŒã¿ãäºæãããããã¢ããããããšããããŸãã ãããã®ããã±ãŒãžã®1ã€ã§ããããŒãã£ããã®ã¡ãã»ãŒãžã®1ã€ã®æçãèŠã€ãããŸã§ãããããã©ãããæ¥ãŠããªãå¿
èŠãªã®ããç解ã§ããŸããã§ããã
ã©ããããå
¬åŒãµãŒããŒã¯ãéä¿¡åã«å¿çãã±ãããæžã蟌ãŸãããããã¡ãŒãåžžã«ãŒãã«ãããšã¯éãããæ®ãã®ãã€ãã¯çµäºãã€ãã§å€±ãããå¯èœæ§ããããŸãã 幞ããªããšã«ãã²ãŒã ã¯ã©ã€ã¢ã³ãèªäœã§ã¯ãããã¯ãšã©ãŒã«ã€ãªãããŸããã ããããããã§ãéçºã®ããŒã¹ãšå質管çã®ã¬ãã«ã«ã€ããŠäœããè¿°ã¹ãŠããŸãã
ããŸãç¥ããªã-ãã匷åãªãµãŒããŒ
...ãŸãã¯ã
æªãã»ã©è¯ã ãã 䜿çšãããŠãããããã³ã«ã«é¢ããéåžžã«å€ãã®ç¥èãåŸãåŸããœãŒã¹ã³ãŒãã®éã¯å¢ããªããªãã溶ãå§ããŸããã ã€ã³ã¿ãŒãã§ã€ã¹ã¯ç°¡çŽ åããããµãŒããŒãä¿åã匷å¶ãããããŒã¿ïŒããšãã°ããããŒã®ç¶æ
ãæ°ããå°çã«è»¢éããïŒãåæãããªããªããæååãšããŠä¿åããå§ããŸããã ãã±ããã®åãã€ãã®çºä¿¡å
ãšå®å
ãç¥ãå¿
èŠã¯ãããŸããã ãªãã€ã¬ã¯ãå
ãšæ¹æ³ãç解ããã ãã§ãã
ãµãŒããŒã¯ãä»ã®ã¯ã©ã€ã¢ã³ããã以åã«åä¿¡ããããŒã¿ã§ã»ãšãã©ã®èŠæ±ã«å¿çããããç¹å¥ãªããã±ãŒãžã䜿çšããŠç®çã®ã¯ã©ã€ã¢ã³ããåŒã³åºããèŠæ±è
ã«å¿çããªãã€ã¬ã¯ãããŸãã å¯èœãªå Žåã¯ããªãã·ã§ã³ã®æååãçç¥ããnullãã€ãã«çœ®ãæããŸããã ãŸã第äžã«ãããã¯ãã¬ã€ã€ãŒã®ã¬ãŒãã£ã³ã°ããã€ã³ãæ°ãããã³åå©ã«é¢ããããŒã¿ã«é¢ä¿ããŸãã
å Žåã«ãã£ãŠã¯ãå¹
åºããããã±ãããªã¬ãŒãã¯ã©ã€ã¢ã³ãåŽã®ãšã©ãŒãçæããããšãããããŸããã ç¹ã«ãã³ãã³ãã³ãŒã
0x1b3ãš
0x1b4 ã®èŠæ±ãšå¿çã®ãã¢ã§ããã«æ°ä»ãããã¬ãŒã€ãŒã®ãã€ã³ããšã¯ã©ã€ã¢ã³ãã®ã·ã¹ãã ã«é¢ããæ
å ±ãè€è£œããŠããŸãã
䞊ã¶
ç§ã«ãšã£ãŠç¹ã«é£ããã£ãã®ã¯ãã²ãŒã ã®èµ·åãšåæã®åŽé¢ã§ããã ããŒãæã«ãã±ãããªã¬ãŒãåŠçããã®ã§ãã²ãŒã äžã«ãã¹ãŠã®ã¯ã©ã€ã¢ã³ãã
0x4b0ã³ãã³ãã³ãŒãã§ãã±ãããéä¿¡ããããšã«æ°ä»ããŸããã ãã®å Žåãã«ãŒã ã®äœæè
ã®çªå·ã¯èå¥åã®1ã€ã®ãã£ãŒã«ãã«ããã2çªç®ã®ãã£ãŒã«ãã¯ç©ºã§ãã ããããè«ççã«ã¢ãããŒãããããã
ãã¯ã©ã€ã¢ã³ãã¯æå®ãããéšå±ã®
å
šå¡ã§ãã
ããšç解ãããšãã²ãŒã ã¯åæããªããªããŸãã
代ããã«ããµãŒããŒèªäœããã±ããã®ãœãŒã¹ãç£èŠãããã¹ããéåžžã®ãã¬ãŒã€ãŒãã確èªããå¿
èŠããããŸãã
åè
ã®å Žåããã±ããã¯ããã¹ãèªäœãé€ãã«ãŒã å
ã®ãã¹ãŠã®ãã¬ã€ã€ãŒã«éä¿¡ãããŸãã
åŸè
èªäœã§ã¯ããã¹ãã®ã¿ã«éä¿¡ãããŸãã åæã«ãã©ãããã²ãŒã ããŒã ãšã®ããã±ãŒãžãäœãèµ·ãã£ãŠãããã®ãã¥ãŒã«è¿œå ããããã®åŸããã¹ãããæ¢ã«éãè¿ãããŸãããã²ãŒã ã®ä»ã®ãã¹ãŠã®ã€ãã³ãã®ã³ã³ããã¹ãã§ã ããã«ããããã¹ãŠã®ãã¬ãŒã€ãŒã§åãå®è¡é åºãä¿èšŒãããŸãã ãã¹ãã¯ãã€ãã³ãã®æ°ããã®ä»ãã¹ãŠã«é¢ä¿ãªãããã¬ãŒã€ãŒããã®ã¢ã¯ã·ã§ã³
ã®ã¿ã§ãã²ãŒã ããã±ãŒãžãäžå®ã®ã¿ã¯ãã§çµ¶ããéä¿¡ããŸãã
ãšããã§ãã²ãŒã äžã«ãã¹ããå€æŽãããšã泚æã
倱ãããå¯èœæ§ãããããšã瀺ãèŠåã衚瀺ãããŸã
-å€ããã¹ããåæããåã«ããããäžè¬ãã¥ãŒã«è¿œå ã§ããªãã£ã
å Žå ãæ°ãããã¹ãã¯ãããã®ã³ãã³ããèŠã€ããæ¹æ³ããããŸããã
åæ©çãªLAN
äžè«ã«åããŠãã¯ã©ã€ã¢ã³ãã«ã¯ããŒã«ã«ãããã¯ãŒã¯ã§ã®å®å
šãªã²ãŒã ã«å¿
èŠãªæ©èœããŸã ãããŸãã ãããã¯ãŒã¯ãã©ãã£ãã¯ãåæãããšãå€ãã®TCPãã±ããã®äžã§ãã«ãŒã ã®äœæè
ã
UDPãä»ããŠãã¬ãŒã€ãŒã®æ°ãšã«ãŒã ã®ã¹ããŒã¿ã¹ã«é¢ããéç¥ãéä¿¡ããŠããããšã«æ°ä»ããŸããã
ããã«ãã¯ã©ã€ã¢ã³ããå解ãããšãã«ãäŸå€ãçºçããŠãšã©ãŒããã¹ãã衚瀺ãããšãã«åŒã³åºãããé¢æ°ã«ééããŸããã 圌女ã®åŒã³åºããæ©ããŠã圌女ã«éä¿¡ãããããã¹ããåæãããšãäŸå€ãçºçããããã·ãŒãžã£ã®å®éã®ååãå€å¥ã§ããŸãã çµæã«å°ãé©ãããç§ã¯
匊ã§éãã ã
ããã«ç§ãèŠããã®ããããŸãïŒfunction LanPublicServerGetRegIDFrom
function LanPublicServerGetRegIDTo
function LanPublicServerGetRegMessage
function LanPublicServerGetClientTeamByIndex
function LanPublicServerGetClientTeamByClientID
function LanPublicServerGetClientSpecByIndex
function LanPublicServerGetClientSpecByClientID
function LanPublicServerGetClientInfoToParserByIndex
function LanPublicServerGetClientInfoToParserByClientID
function LanPublicServerGetSessionInfoToParserByIndex
function LanPublicServerGetSessionInfoToParserByClientID
function LanPublicServerGetClientsCount
function LanPublicServerGetSessionsCount
function LanPublicServerGetClientIndexByClientID
function LanPublicServerGetClientIndexByClientNick
function LanPublicServerGetSessionIndexByClientID
function LanPublicServerProfScore
function LanPublicServerProfCountry
function LanPublicServerProfGamesPlayed
function LanPublicServerProfGamesWin
function LanPublicServerProfLastGameTime
function LanPublicServerProfInfo
function LanMyInfoHost
function LanMyInfoIP
function LanMyInfoID
function LanMyInfoSpec
function LanMyInfoName
function LanMyInfoPlayer
function LanGetServerInfoToParser
function LanIpToString
function LanIpToInt
function LanGetClientsCount
function LanGetClientIDByIndex
function LanGetClientHostByIndex
function LanGetClientNameByIndex
function LanGetClientSpecByIndex
function LanGetClientIndexByID
function LanGetClientPlayerNameByIndex
function LanSelectParser
function LanGetParserID
function LanGetSendDataThreadCount
function LanGetSendDataThreadEnabled
function LanGetNoDelayOption
function LanGetOptimizedPackage
function LanGetOptimizedPackageDef
2ã€ã®éžæè¢ããããŸããéçºè
ããã®ãããªãŠãŒã¢ã¢ãæã£ãŠãããããã«ããã¬ã€ã€ãŒã²ãŒã ã«æ¥ç¶ãããŠãããã¹ãŠã®ãã®ã«ç¥èª
LANãæ®éçã«äœ¿çšããŠããŸããã
C ++ãAsioããã³ç¡å·ã®è
æåã«ã¯ãã¹ãã©ãããã©ãŒã ãµãŒããŒãäœæãããããã¯ãŒã¯ããã°ã©ãã³ã°ã®ç¥èãåºããããšãç®æšã«èšå®ãããããå®è£
ã«C ++èšèªãš
Asioã©ã€ãã©ãªãéžæããŸããã åŸè
ã«ãããéåææ§ãšããåçŽãªã³ãŒããæ¯æããŠããã«ãã¹ã¬ãããšé¢é£ããããŒã¿ã¢ã¯ã»ã¹
æ©èœãæŸæ£ããããšãã§ããŸããã åºç€ãšããŠãç§ã¯ã©ã€ãã©ãªãŒã»
ãªããžããªãŒã®äŸã®1ã€ã®ãœãŒã¹ã»ã³ãŒããåããŸããã
ç§ã«ãšã£ãŠéçºã®æãèå³æ·±ãåŽé¢ã¯ããã±ããã®éåæéä¿¡äžã®ããŒã¿ãããã¡ã®å¯çšæ§ã®åé¡ã§ããã åæã«ãå²ãåœãŠã®æ°ãæå°éã«æããã¡ã¢ãªå
ã®ããŒã¿ãã³ããŒããããšããŸããã ãã¹ãŠã«å ããŠããµãŒããŒã«ã¯ããã±ãããåä¿¡ããããã®ããªã倧ããªãããã¡ãå¿
èŠã§ãã ã²ãŒã ã®éå§åã«ãããããŒã¿ãéä¿¡ãããšãã®TCPãã€ããŒãã®ãµã€ãºã¯800ãããã€ããè¶
ããããšããããŸãã
ãã®çµæã次ã®ããã«ããã±ãŒãžã®èªã¿åããäœæãéä¿¡ã®ããã»ã¹ãå®è£
ããŸããã
- æ°ããã¯ã©ã€ã¢ã³ããæ¥ç¶ãããšããµãŒããŒã¯ã std :: vector <unsigned char>ã¿ã€ãã®ååã«å€§ããïŒ1 MiBïŒãããã¡ãŒïŒ 以é ãBufferãšåŒã³ãŸã ïŒãå«ãSessionã¯ã©ã¹ã®ãªããžã§ã¯ããäœæããŸãã
- éåæèªã¿åãæäœãå®äºããåŸããã®ã¢ãã¬ã¹ã¯ãã®ãããã¡ãŒã«ã¡ã€ã³ãã±ããåŠçæ©èœã«è»¢éãããŸãã 次ã®èªã¿åãæäœã¯ããã®é¢æ°ã®å®äºåŸã«ã®ã¿éå§ãããåŠçæéã®ãããã¡å
ã®ããŒã¿ã®å®å
šæ§ãä¿èšŒããŸãã
- åŠçã®éå§æã«ã Packetã¯ã©ã¹ã®ãªããžã§ã¯ããäœæãããŸããããã¯ãããŒã¿ã®èªã¿åããšã·ãªã¢ã«åã®ããã®ã€ã³ã¿ãŒãã§ã€ã¹ãæäŸããŸãã ããã«ããããµãŒããŒã®å¿çã¯ãã¹ãŠã»ãã·ã§ã³ãªããžã§ã¯ãã®åããããã¡ã«æžã蟌ãŸãããã±ããã®éä¿¡è
ã«å²ãåœãŠãããŸãã
- ããã±ãŒãžã«å¯Ÿãããã¹ãŠã®æäœãå®äºãããšãsendé¢æ°ã¯std :: make_shared <Buffer>ã䜿çšããŠãããã¡ãŒãå²ãåœãŠãŸãã åæã«ãå¿çãã±ããã®æ£ç¢ºãªãµã€ãºãèæ
®ããŠã ã»ãã·ã§ã³å
ã®åããããã¡ãŒã®å埩åããããã¡ãŒã³ã³ã¹ãã©ã¯ã¿ãŒã«æž¡ãããŸãïŒèšé²äžã«ãã±ããããããç£èŠããŸãïŒã ã€ãŸã 1åã®æäœã§ãæåã«ãã±ãããšãã€ã³ã¿ãŒã®å¶åŸ¡ãããã¯ã«ååãªã¡ã¢ãªãïŒ äžåºŠã« ïŒå²ãåœãŠãŠãããéä¿¡ãã¹ã倧ããªãããã¡ãŒããæ£ç¢ºã«ãã€ãæ°ãã³ããŒããŸãã
- æ°ãããããã¡ã¯ãã¿ã€ãstd :: shared_ptr <Buffer> ïŒ ä»¥é BufPtrãšåŒã¶ ïŒã®åä¿¡ãã€ã³ã¿ã䜿çšããŠããã±ããã®éä¿¡å
ãšãªããã¹ãŠã®ã¯ã©ã€ã¢ã³ãã®Sessionãªããžã§ã¯ãã«æž¡ãããŸãã ããã§ãã¿ã€ãstd :: deque <BufPtr>ã®ããŒã«ã«ãã¥ãŒã«é
眮ãããŸãã ããããã®ã¯ã©ã€ã¢ã³ãã®ãã¥ãŒã«ããã€ã³ããã¯ã¹ã®åã³ããŒã¯ãåç
§ã«ãŠã³ã¿ãŒãå¢ãããŸãã ãã®åŸããã±ããåŠçã¯çµäºããæåã®ã»ãã·ã§ã³ãããã¡ã¯æ¬¡ã®ãã±ãããåä¿¡ããæºåãæŽããŸãã
- ãã±ããã®éåæèšé²ïŒéä¿¡ïŒæäœãå®äºãããšããã€ã³ã¿ãŒã¯å®å
ã¯ã©ã€ã¢ã³ãã®ããŒã«ã«ã»ãã·ã§ã³ãã¥ãŒããåé€ãããåç
§ã«ãŠã³ã¿ãŒãäžãããŸãã ãã±ããããã¥ãŒã«å
¥ã£ãŠãããã¹ãŠã®ã¯ã©ã€ã¢ã³ãã«éä¿¡ããããšããã«ãã«ãŠã³ã¿ãŒã¯ãŒãã«ãªã»ãããããã¹ããŒããã€ã³ã¿ãŒã¯ããèªäœã§ã¡ã¢ãªã解æŸããŸãã
ã©ã®ããã«å€æããŠããã©ã ãåŒãããŸããŸãªã³ã³ãããC ++æšæºãžã®ã¹ããŒããã€ã³ã¿ã®è¿œå ã«ããããã®ãããªã·ã¹ãã ã®èšèšã®è€éãã倧å¹
ã«è»œæžãããŸããã ãµãŒããŒãäœæãããšãã«ãç足ã¯æãããŸããã§ããã
ã·ã£ãã¿ãŒã¹ããŒããã¹ã
ãµãŒããŒã§ã®äœæ¥ãçµäºããåºæ¬çãªæ©èœããã¹ãããåŸãé·ãæéããããŠãã¹ããééããåŸããµãŒããŒ
ã®å®å®æ§ãšåæã
確èªããããšã«ããŸããã ãããè¡ãããã«ãããŒã«ã«ãããã¯ãŒã¯äžã«3人ã®ãã¬ãŒã€ãŒãš5ã€ã®è€éãª
AIãåããéšå±ãäœæããŸããã ãã¹ãã§ã¯ãããããµã€ãºããããžããæ°ã人å£ãããã³éæ»ææéã«é¢ããæ倧ãã©ã¡ãŒã¿ãŒãéžæããŸããã ã²ãŒã ãéå§ããæ°ååŸã«ã¿ã¹ã¯ãããŒãžã£ãŒã®ãã¹ãã³ã³ãã¥ãŒã¿ãŒã§ã²ãŒã ããã»ã¹ãåæ¢ããŠãäºæããªãã·ã£ããããŠã³ãã·ãã¥ã¬ãŒãããŸããã ãã®åŸãæ®ãã®2人ã®ã¯ã©ã€ã¢ã³ãã¯ãäžæ©äžæŸçœ®ãããŸããã
çµéšè±å¯ãªãã¬ã€ã€ãŒã¯ããããã次ã«äœãèµ·ãã£ããããã§ã«æšæž¬ããŠããã§ãããã ã€ãŸãããµãŒããŒã¯ãã¹ãã«åæ ŒããŸãããã
ã¯ã©ã€ã¢ã³ãã¯åæ Œ
ããŸããã§ããã ç¿æ¥ãç»é¢ã«ã¯çŽ8æéããªãŒãºããã²ãŒã ã¿ã€ããŒãšãããã€ãã®ãšã©ãŒã¡ãã»ãŒãžã衚瀺ããããã®äžã«ã¯
ããªãã¿ã® ãã¡ã¢ãªäžè¶³ãããããŸããã ãã¹ãŠãè«ççã§ãããæ®ãã®2ã€ã®AIã¯ããããååã«åå²ããæ°åã®è»éãšæŠã£ãã ã²ãŒã ããã»ã¹ã¯çŽ3.5 GBã®RAMã䜿çšãã32ãããã®
å¢çã«éããŸãã ã ãµãŒããŒã¯ã11 MBã®RAMã§åŒãç¶ãå®è¡ãããŸããã
ãããã«
å
¬åŒãµãŒããŒã®
ãã©ãã¯ããã¯ã¹ãã³ããŒããããã»ã¹ã«èå³ãããããšãé¡ã£ãŠããŸãã ãŸããã²ãŒã ã®éçºè
ããã¬ã€ã€ãŒã«åæ
ããæçµçã«ããŒã«ã«ãããã¯ãŒã¯ã§ãã«ã
ãžã£ãã¯ã²ãŒã ã®å¯èœæ§ãè¿œå ããããšã
é¡ã£ãŠããŸãã ãšããã§ãæåŸã®è°è«ã¯ã
æè¿ã®åºæ¥äºãèæ
®ããŠãæ°ããè²ã§ãã¡ãã€ããŸããã
ãµãŒããŒã®ãªããŒã¹ãŸãã¯
ãœãŒã¹ã³ãŒãã«é¢ãã質åãææ¡ãããå Žå
ã¯ãã³ã¡ã³ãã
æè¿ã
ãŸã ã ããããïŒ