çŽ1幎åãç§ã®èšäºãåºãŠããŸãããããã¯ãã®èšäºã®ã æåã®éšå ããšåŒã¶ããšãã§ããŸãã æåã®éšåã§ã¯ãã§ããéããç±å¿ãªéçºè ã®å°é£ãªéãæŽçããŸããã ãããã®åªåã®çµæãèªå® ã§ãšã³ãžã³ããã¶ã€ããŒããã®ä»ã®ææ°ã®éçºããŒã«ãªãã§äœæãããRTSãžã£ã³ã«ã Land of Onimode ãã®ã²ãŒã ãã§ããŸããã ãããžã§ã¯ãã§ã¯ã C ++ãšAssemblerã䜿çšãããã¡ã€ã³ããŒã«ãšããŠç§èªèº«ã®é ã䜿çšãããŸããã
ãã®èšäºã§ã¯ãç§ãã©ã®ããã«ãèçè ãã®åœ¹å²ãåŒãåãããã®ãããžã§ã¯ããã埩掻ããããããšã決ãããã«ã€ããŠã話ããŸãã ç¬èªã®ã²ãŒã ãµãŒããŒã®äœæã«ã¯ãå€ãã®æ³šæãæãããŸãã
èšäºã®ç¶ãïŒGUI
èšäºã®çµããïŒãããã¯ãŒã¯
èšäºã«çããããªãæ·»ä»ããŠãäœãåé¡ã«ãªã£ãŠããããããã«ãããããã«ããŸãã
ãšã³ããªãŒ
ãã®è©±å šäœã¯ãITã®äžçãå®å šã«ç°ãªã£ãŠãã1998幎ã«ããã®ãŒããŸãã ãã¡ããããã®ã²ãŒã ã¯ããšããšåœæã®æ¢åã®ç¶æ³ã«åãããŠèšèšãããŸããã ç¹ã«ãã°ã©ãã£ãã¯ã衚瀺ããããã«ã¢ã»ã³ãã©ãŒã䜿çšãå§ããããšã¯ã»ãšãã©ãããŸããã§ãããããã®ç¬éã«ã¯ã»ãšãã©å¯äžã®è§£æ±ºçã«æããŸããã ãã®ä»çµã¿ïŒã²ãŒã ã¡ã«ãã¯ã¹ãAIãªã©ïŒã®ä»çµã¿ããåäžçŽã®çµããã«ãã·ã¢ã®ã²ãŒã ã®ãåºç瀟ããã©ããªã£ããã«èå³ããã人ã¯ããã®èšäºã®æåã®éšåãåç §ããŠãã ãã ã
ãŸããRTSçšã«éçºããããšããããã¹æ€çŽ¢ã¢ã«ãŽãªãºã ã®åå¥ã®èª¬æããããŸãã ãã®èšäºã¯10幎以äžã«ããã£ãŠæžãããŠãããããããç§èªèº«ã®ããã«ãæžãããŠããŸãããååã«è©³çŽ°ã«æžãããŠããã®ã§ãç§èªèº«ããã¹ãŠã®ä»çµã¿ãèŠããŠããŸãã ç§ã®æèŠã§ã¯ã䜿çšããããœãªã¥ãŒã·ã§ã³ã¯é床ã®ç¹ã§éåžžã«å¹æçã§ãããé害ç©ã®äœçœ®ãããçšåºŠé£æ床ãæã£ãŠã»ã«ãã£ãŒã«ãã«ã¿ãŒã²ãããžã®ãã¹ãæ§ç¯ããããšãä¿èšŒãããŠããŸãã ãã㧠ããã®æ¹æ³ã«æ £ããããšãã§ããŸã ã
ãªããã®ãåäºè©©ãå šäœãç¶ããããšã«ããã®ã§ããïŒ çµæžçãªçç±ããããã®èŠæš¡ã®ä»äºãäžåºŠã«ç§ã«äžæçã«åãããŠããŸã£ãããšã«æ°ã¥ãã®ã¯ããã€ãã€ããããšã§ããã ãããŠããã®ã²ãŒã ã«ããäžåºŠææŠããæ©äŒãå°ãªããšãããããã«æãããšããç§ã¯èªç¶ã«ãããè©Šã¿ãŸããã ç§ã®äººçã®æåŸã®å¹Žãç§ã¯ã»ãŒå®å šã«ãã®åé¡ã«å°å¿µããŸããã äž»ã«èšäºã®æåã®éšåã®èªè ã®ãµããŒãã®ãããã§ãã²ãŒã ã¯Greenlightãééãããã¹ãŠãæŽçãããšããéåžžã®æ±ºæã§æ±ºããŸããã ãããŠããã®èšäºã¯ç§ã®æŽ»åã«ãŽã£ããã®ãã®ã§ãã æåã¯ãããã»ã¹å šäœã詳现ã«èª¬æããç¬èªã®GUI ïŒã°ã©ãã£ã«ã«ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ïŒã®äœæããã²ãŒã ãµãŒããŒã®äœæãŸã§ãèããŠããŸããã ããããæ®å¿µãªãããç§ã¯ãã®æ å ±ãéå°ã«ååŸãããŠããããšãçºèŠããŸããã ãã®çµæããã®ãããã¯ã¯å€ãã®äººã«ãšã£ãŠããèå³æ·±ããã®ã§ããããã«æããã®ã§ããããã¯ãŒã¯ã®èª¬æã«ãã£ãšæ³šæãæããŸããã å®éã«äœããã®åœ¢ã§é©çšã§ãããããªæ¹æ³ã§èª¬æãè©Šã¿ãŸããã ãããããã®çµæãèšäºãç解ã®ããã«ãããã«ãéãããªããšã¯æãããŸããã§ããã
C ++ãœãŒã¹ã³ãŒãã§ããŠã³ããŒãããŠè¡šç€ºã§ããã²ãŒã ãŸãã¯äœãã®ãã·ã§ã«ã
å¥åŠãªããšã«ããã®ã»ã¯ã·ã§ã³ã¯èšäºã®åé ã«ãããæåŸã«æžããŸããã ãã®èšäºãæžãéçšã§ãå°ãªããšããå åŽãããäœãã瀺ãå¿ èŠãããããšã«æ°ä»ããŸãããããããªããšããã¹ãŠã®èª¬æã«å®çšçãªæå³ããªããå®éã«ã¯åé·ã«ãªããŸãã ãããŠãç§ã¯ãããããŸã奜ãã§ã¯ãããŸããã
ãããã£ãŠãç§ã¯ããã«ã倧èŠæš¡ãªãããžã§ã¯ããæžãããã®ç§ã®ã¢ãããŒãã®ããã€ãã®åŽé¢ã誰ããç¥ãããšãã§ããããã«ãäŸã䜿çšããŠèšäºãæäŸããŸããã
èŠèŠçã«ã¯ããã®äŸã¯ç§ã®ã²ãŒã ã®ããã«ã¯èŠããŸããããå®éã«ã¯ã²ãŒã ã¯ãã®ã³ãŒãã䜿çšããŸãããç°ãªããè£ é£ŸããŒããã䜿çšããŠããŸãã ã²ãŒã ã§ã²ãŒã ã»ãã·ã§ã³ãèšå®ããæ¹æ³ã¯æ¬¡ã®ãšããã§ãã
ãŸãã念ã®ããããããã¯ãWindowsãã¿ã³ãã§ã¯ãªãã誰ããèããŠããããã«ãã²ãŒã ã«å¿ èŠãªããªã¥ãŒã ã§äœæããç¬èªã®ã³ã³ããŒãã³ãã§ããããšãæ確ã«ããŸãã
äŸã¯åãªããæ£åŒãªãäŸã§ã¯ãªããã²ãŒã ã®äžéšãšããŠäœ¿çšããããã«äœæããã·ã§ã«ãå«ãã§ããŸãã ãã®è£œåã«ã¯ååã¯ãããŸããããããããã²ãŒã ãå¥ã®ãã©ãããã©ãŒã ã«ç§»æ€ããå¿ èŠããããšããäºå®ãèæ ®ããŠäœæãããŸããã çŸåšãå®å šã«åäœå¯èœãªç¶æ ã§ã¯ã WindowsããŒãžã§ã³ãããããŸãããããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãžã®ãã¹ãŠã®åŒã³åºãã¯ã眮ãæãå¯èœãªä»®æ³é¢æ°ãä»ããŠè¡ãããŸãã å®éã«ã¯ãã²ãŒã ãµãŒããŒãã€ã³ã¿ãŒãããã«é 眮ãããšããå¿ èŠã§ããã ç¡æã®ãã¹ãã§ã¯ã Unixã®ãããªOSã«ãã£ãŠå¶åŸ¡ããããµãŒããŒãªãã·ã§ã³ã«ã®ã¿ã¢ã¯ã»ã¹ã§ããŸããã ãã®çµæã Unixçšã®ãã©ã³ããã·ã§ã«ã«è¿œå ããå¿ èŠããããŸããã åæã«ããµãŒããŒèªäœã¯ãŸã£ããå€æŽããããµãŒããŒãOSãšå¯Ÿè©±ããããã«å¿ èŠãªæ©èœã®ã¿ã眮ãæããŸããã ç§ã¯ç¹ã«Unix APIã«ç²ŸéããŠããŸãããããã®ãããã¯ãéåžžã«ããç解ããŠãã芪åããã°ã©ããŒïŒãã®ãªãœãŒã¹ã§ã³ãŒãåKomeiãæã£ãŠããïŒãããŸãã ãã®å©ãã«ããããµãŒããŒã¯æ°æ¥ä»¥å ã«ç§»æ€ãããŸããã ããã«ãç§ã®å人ã¯ç§ã®ã²ãŒã çšã€ã³ã¿ãŒããããµãŒããŒãèµ·åããŠãã¹ãããããã«åœŒã®UnixãµãŒããŒã芪åã«æäŸããŠãããŸãããããã¯ãå°ãªããšããèªåã®å°çšãµãŒããŒãç¶æããããšã¯ããã»ã©å®ããªãã®ã§ãç§ã®ãããžã§ã¯ãã«å¯ŸãããŸãšããªè²¡æ¿æ¯æŽã§ããã
èšäºã®ç¬¬2éšå šäœããããã¯ãŒã¯ã²ãŒã ã®æ§ç¯ã«å°å¿µããŠãããšããäºå®ã®ããã«ãèšäºã®æ§æã«äŸãå¿ èŠãšããŸããã ãããŠã説æã®ã³ãŒãã«å®æçã«åãæ¿ããããšãäœåãªããããŠããŸãã ãããŠãããèªäœã§ã¯ãã³ãŒãã®å¥ã ã®éšåã¯ããªãç¡æå³ã«æããŸãã ç§ã¯ã²ãŒã ã®ãœãŒã¹ã³ãŒãã®ãªãªãŒã¹ããéå°ããšèããŸããããããã¯ç§ã«ãšã£ãŠåçšè£œåã§ãããããã«ãæ¯èŒçå°ããªäŸãã¯ããã«ç解ããããããã§ãã ãã®ãããã·ã§ã«ã®ãœãŒã¹ã³ãŒããå ¬éããããããããããã«ç¬èªã®äŸãæäŸããããšã«ããŸããã ãã®äŸã¯ã GUIã§ã®äœæ¥ã瀺ãããµãŠã³ããåçãããããã¯ãŒã¯æ¥ç¶ã瀺ããŠããŸãã ã€ãŸã ãŠãŒã¶ãŒã¯[ãããã¯ãŒã¯ãæå¹ã«ãã]ãã¿ã³ãã¯ãªãã¯ãã[äœæ]ãã¿ã³ãã¯ãªãã¯ãããšã²ãŒã ã»ãã·ã§ã³ãäœæãããŸããããã¯å¥ã®ã³ã³ãã¥ãŒã¿ãŒã§å®è¡ãããŠãããµã³ãã«ããåå ã§ããŸãã ã»ãã·ã§ã³ã§ã®ãã¬ãŒã€ãŒã®æ§æã¯ãè²ãå€æŽããæ©èœã«äŸåããŸãããããã¯åçã瀺ãã®ã«ååã§ãã
GUIã®æ§æã«ã€ããŠã¯è©³ãã説æããŸããã§ããããããã誰ã«ãšã£ãŠãéåžžã«èå³æ·±ããã®ã§ãããã©ããã¯äžæã§ãããèšäºã¯éåžžã«å€§ããªãã®ã§ããããšãå€æããŸããã ãããã®å Žåã§ãããã®äŸã¯ã GUIã§äœ¿çšå¯èœãªãã¹ãŠã®ã³ã³ããŒãã³ããæäœããæ¹æ³ã瀺ããŠããŸãã
ç§ã®ä»äºãå©å·±çãŸãã¯ç¡é¢å¿ãªç®çã§å©çšãã人ã¯ããŸããã ããããç§ã¯ãã®ãããžã§ã¯ããéçºããããšããŸãã¯çŸåšã®ããŒãžã§ã³ãšã®äºææ§ãç¶æããããšãçŽæããŸããã ãŸãã GUIã¯é床ã®ããã§ã¯ãªããæ±çšæ§ã®ããã«èšèšãããŠããããšãæ確ã«ããŠããŸããããã¯ç§ã®å Žåã«å¿ èŠã§ããã ããã«ãã²ãŒã ã«å¿ èŠãª16ãããã«ã©ãŒã§ã®ã¿åäœãããã©ã³ããå®è£ ããŸãããã32ãããã«ã©ãŒã§åäœããã³ãŒããã©ã³ããè¿œå ããããå¯èœãªå Žåã¯GPUããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ã䜿çšããããã人ã¯ããŸããã ã ãã¡ããããã®ãããžã§ã¯ããããŠã³ããŒãããŠãã ãã ã
ãµã³ãã«ãããžã§ã¯ãã¯Visual Studio 2008ã«å®è£ ããã C ++èšèªãšDirectX9ã䜿çšããŠããŸãã
解決ããªããã°ãªããªãã£ãåé¡
ã¯ããã«ã1幎åã«ã²ãŒã ã«ååšããŠããåé¡ã®ãªã¹ãã以äžã«ç€ºããŸãã
- ãã®ã²ãŒã ã¯Windows XPã§ã®ã¿å®å šã«æ©èœããŸããã Windows 7ã§ã¯ãã²ãŒã ã¯æ£åžžã«éå§ãããŸããããããŒã«ã«ãããã¯ãŒã¯ã¯ãŸã£ããæ©èœããŸããã§ããã ãŸãã Windows 8/10ã¯åã«ã²ãŒã ã®å®è¡ãæåŠããŸããã
- ãã®ã²ãŒã ã¯ã Windowsãã©ãããã©ãŒã ã«ãã£ãããšãåºå®ããããŠããŸããã ã¢ã¯ãã£ãã«äœ¿çšãããDirectXãšMFC ã
- ç§ã®æèŠã§ããã¡ãã¥ãŒã®ãã¶ã€ã³ã¯éåžžã«ãæããã§ããã ããã¯ãç§ãããã°ã©ãã³ã°ã«æºãã£ãŠãããæç»ãšã¯éåžžã«é ãé¢ä¿ã«ãããšããäºå®ã«ãããã®ã§ããã§ã«ã²ãŒã ãå®æãããŸããã
- èŠèŠçã«ã¯ããç 究ã¢ã€ã³ã³ãã®å Žåãç¶æ³ã¯ã¡ãã¥ãŒã®å Žåãããããã«æªåããŸããã
- ç©ããã«ããã眮ãããã«ãæŒæã®å£°ã¯æ®ããããå€ããæãŸããã
- RTSã§æããããããããšã¯ãããã¯ãŒã¯äžã®ã²ãŒã ã ãšä¿¡ããŠããã®ã§ãç§ãåžžã«æãã§ããã€ã³ã¿ãŒããããµãŒããŒã¯ãããŸããã§ããã
åŸã ã«ããããã®åé¡ã段éçã«è§£æ±ºããæçµçã«ã¯çµæãå®å šã«ããŸããããšæããŸããã ããããããã¯åžžã«ããã§ã¯ãããŸããã§ãã...
ã©ãããå§ããã
ã²ãŒã ãããžã§ã¯ãã¯ããã€ãŠVisual Studio C ++ 6.0ã§äœæãããŸããã çŸåšããã®Visual Studio C ++ 6.0ã¯Windows 8ã§ãåäœããŸããã§ããã ãããã£ãŠããŸãããããžã§ã¯ãã圌ã®ããã«æ°ããç°å¢ã«ç§»ãå¿ èŠããããŸããã äžæ¹ã§ã Visual Studioã¯ä»¥åã®ããŒãžã§ã³ã®ãããžã§ã¯ããç¬èªã®åœ¢åŒã«å€æã§ããããããã¹ãŠãã·ã³ãã«ã§ããå¿ èŠããããŸããããããã§ã¯ãããŸããã§ããã å®éãç§ã¯tasm32ã¢ã»ã³ãã©ãŒã䜿çšããŠã objãã¡ã€ã«ãäœæããŸããã ãã®ãã¡ã€ã«ã¯Visual Studio C ++ 6.0ãšã·ãŒã ã¬ã¹ã«ãªã³ã¯ããŠããŸãããã Visual Studio 2008ã«ã¯ãŸã£ãããªã³ã¯ããŸããã§ããã äžçã«ã¯tasm32ã®æ°ããããŒãžã§ã³ã¯ãããŸããã§ãããäœããã®çç±ã§masmã®ãããªä»ã®ã¢ã»ã³ãã©ãŒã¯ãæ¿ããææªã䌎ãtasm32æ§æã§èŒããŠããã asmãã¡ã€ã«ãæ¿å ¥ããããšãããšå€ãã®ãšã©ãŒãçæããŸããã
çèãããšããã®æ®µéã§ã¯ã¢ã»ã³ãã©ãŒã³ãŒããå¥ã®æ§æã«æžãæããæºåãã§ããŠããªããšå€æããŸãããæåã¯æ£ããæ¹åã«é²ãã§ãããã©ããããŸã£ããããããªãã£ãããã§ãã ãã®çµæã次ã®æ±ºå®ãäžããŸããïŒ Windows XPãã€ã³ã¹ããŒã«ãã Visual Studio C ++ 6.0ãã€ã³ã¹ããŒã«ãã DLLã¿ã€ãã®ãããžã§ã¯ããäœæããèªåã§ã¢ã»ã³ãã©ãŒé¢æ°ãåŒã³åºããšã¯ã¹ããŒãé¢æ°ãäœæããã¢ã»ã³ãã©ãŒobjãã¡ã€ã«ããªã³ã¯ããŸãããããã¯Windows XPã§ã¯åé¡ãããŸããã tasm32.exeãä»ããŠäœæãããŸã ã ãã®çµæã asm.dllã©ã€ãã©ãªãååŸããŸãã ãããã¯ã Visual Studio 2008ã®æ°ãããããžã§ã¯ãã«åé¡ãªãæ¥ç¶ã§ããŸããã ãã®æ±ºå®ã¯ãã»ãŒå³åº§ã«æ©èœããä»ã®ãšããç§ã¯ããã詳ããæ€èšããããšã«ããŸããã åœç¶ããã®ãœãªã¥ãŒã·ã§ã³ã¯ä»ã®ãã©ãããã©ãŒã ã«çµ¶å¯Ÿã«ç§»æ€ã§ããªãããšãç解ããŠããŸããã移æ€ã®åé¡ãå®éã«çºçããå Žåã¯ããæå¿ãæ³ã«éããŠãã¢ã»ã³ãã©ãå¥ã®æ§æã«å€æã§ããŸãã ãããŸã§ã®éããã®ã²ãŒã ã®éåœã¯ç§ã«ãšã£ãŠæŒ ç¶ãšããŠããããç§ã¯ãã®äžå¹Žã§ééããªã埩掻ãããã ãããã«ãããç§ã¯ãã§ã«ãã®ãããžã§ã¯ãã«ååãªãšãã«ã®ãŒãè²»ãããŠããã®åé¡ã«ã€ããŠæçµçã«å®å®ããæ確ãªçããåŸãããšãã§ããŸããã
Visual Studio 2008ã䜿çšããŠWindows 8ã§ã²ãŒã ãå®è¡ã§ããããã«ãªã£ãåŸããã°ããã®éããããã¬ãæå ã«çŸããŸããã ãŸããæ°ããããŒãžã§ã³ã®Windowsãã²ãŒã ãéå§ããããªãçç±ãç解ããå¿ èŠããããŸããã ç§ã¯é·ãéã²ãŒã ããã¬ã€ããŠãããã Windowsãå€ãããã°ã©ã ã®äœæ¥ã«èª²ãå§ããå¶éã®é²åã«ç¹ã«åŸããŸããã§ããã å人çã«ã¯ããã®çç±ã¯éåžžã«äºæ³å€ã§ããã ã²ãŒã ã§äœ¿çšããŠãã16ãããã«ã©ãŒã¢ãŒããWindows 8/10ããåé€ãããããšãããããŸãã ã ããã€ãã®ãéæ³ã®ååŒãã®åŸãç§ã¯ãŸã ã²ãŒã ãéå§ããå°ãã§ããã¬ã€ããããšãã§ããŸãããããã¹ãŠãæããããã£ãããšåäœããç»é¢ã®äž»ãªéšåã¯çŽç²ã§çŸããé»ã§ããã ç§èªèº«ã¯ã16ãããã¢ãŒãããšãã¥ã¬ãŒãããã䜿çšã«å¶éãããããšã«æ³šæããŸããã
16ããããããªã¢ãŒãã®æŠã
ãã®åé¡ã«å¯ŸåŠããæ¹æ³ã¯ïŒ å°ãªããšã2ã€ã®åºåããããŸãã
- ã²ãŒã å ã®ãã¹ãŠã®ã°ã©ãã£ãã¯ãããçŽããŠã24ããã解å床ã§åäœããããã«ããŸãã ç§ã®å Žåããã¹ãŠã®ã°ã©ãã£ãã¯ãå§çž®åœ¢åŒã§ä¿åãããã¢ã»ã³ãã©ãŒã«ãã£ãŠæç»ãããããããã®ãªãã·ã§ã³ã¯äžé©åã§ãã ãã¹ãŠã®ã¢ã»ã³ãã©ãŒé¢æ°ã¯16ãããã°ã©ãã£ãã¯ã¹ã§ããåäœã§ããŸããã§ãããå€ãã®é¢æ°èªäœããããéåžžã«é«éã«åäœããŸãããæç»æã«å€ãã®ãã¥ã¢ã³ã¹ãæ³å®ããŠããŸãããæãéèŠãªããšã¯ãäœå¹ŽããããŠãã¹ãŠã詳现ã«æ©èœããããšãå¿ããŠããŸããã
- RAMã«ç¬èªã®ãµãŒãã§ã¹ãäœæããŸããããã¯ã²ãŒã ã®ç»é¢ã¡ã¢ãªã«ãªããŸãã ãã®è¡šé¢ã«ãã¹ãŠãæç»ããŠãããå®éã®ç»é¢ã«ã³ããŒããŸãã ç§ã¯ãã®ãªãã·ã§ã³ãå¯äžã®çã®ãªãã·ã§ã³ãšããŠéžæããŸããã ãã®ãœãªã¥ãŒã·ã§ã³ã§ã¯ã倧èãªãã©ã¹ãç»å ŽããŸãããã°ã©ãã£ãã¯ã¹ãæäœããããã«DirectXãå¿ èŠãšããããšã¯ã»ãšãã©ãããŸããã§ããã ãããããã®ãããªãœãªã¥ãŒã·ã§ã³ã«ã¯æãããªãã€ãã¹ã¯ãããŸãããDirectXã䜿çšãããšãããã¹ããç°¡åã«è¡šç€ºã§ãããã¡ããã§ããŸããã ãããŠä»ãããã¯å€æããïŒã DirectXãªã-ããã¹ããªããã
ãã®çµæãã²ãŒã ããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãšéä¿¡ãããã·ã§ã«ãã®ãããªãã®ãäœæããããã«ã次ã®ããšãè¡ãããšã«ããŸããã ä»®æ³é¢æ°ãä»ããŠOSãªãœãŒã¹ãžã®åŒã³åºããå®è¡ããŸãããã®å Žåããããã眮ãæããããšãã§ããŸãã å®éã«ã¯ãããã«ãããã²ãŒã ãå¥ã®OSã«æ¯èŒçè¿ éã«ç§»æ€ããããšãã§ããŸããããã€ãã®ããã«ãç©äºã¯ããã»ã©åçŽã§ã¯ãããŸãã...ãŠãŒã¶ãŒãšéä¿¡ããã»ãšãã©ãã¹ãŠã®ããã°ã©ã ã¯äœããã®åœ¢ã§ã€ã³ã¿ãŒãã§ãŒã¹ãå¿ èŠãšããŸãã ã€ã³ã¿ãŒãã§ã€ã¹ã¯ãã ããã¹ãããã¯ã¹ ããã ãªã¹ã ããã ããªãŒ ããã ãã€ã¢ãã°ããã¯ã¹ ããªã©ã®ããŸããŸãªå°ããªïŒãããããããïŒèŠçŽ ã§æ§æãããŠããŸãã èšãæããã°ããã®æ¹æ³ã䜿çšããå Žåãç¬èªã®GUIãäœæããå¿ èŠããããŸããããã¯ã©ã®OSã§ãåãããã«åäœããŸãã ããã«ããµãŠã³ãã®åçãšãããã¯ãŒã¯æ¥ç¶ã®åé¡ãäœããã®åœ¢ã§è§£æ±ºããå¿ èŠããããŸãã
ãµãŠã³ãã«ã€ããŠã¯ã Squallã©ã€ãã©ãªãŒã䜿çšããããšã«ããŸããã ããã䜿çšããããšã«ã¯ããã€ãã®å©ç¹ããããŸãã...第äžã«ããã®ã©ã€ãã©ãªã¯ã²ãŒã ã®å€ãããŒãžã§ã³ã§æ¢ã«äœ¿çšãããŠããŸããããããŠç¬¬äºã«ãä»ã®ç¡æã®åæ§ã®ãœãªã¥ãŒã·ã§ã³ãšæ¯èŒããŠãç§ãããã«ã¹ãªããããã»ãšãã©ãã¹ãŠã®wavãã¡ã€ã«ãåçãã第äžã«ãç§ã¯å人çã«ã»ã·ãŠã ã®äœè ã«ã粟éããŠããããããéèŠã§ãã Squallã®äž»ãªæ¬ ç¹ã¯ãé·ãééçºãããŠãããã Windowsã§ã®ã¿ååšããããšã§ãã ããããæè¿ãå€éšã©ã€ãã©ãªãäœããã®ã¢ããã°ã«çœ®ãæããã®ãæ¯èŒçç°¡åã«ãªãããã«ãç§ã®ããã°ã©ã ã«ãã®ãããªæ§é ãäœæããããšè©Šã¿å§ããŸããã ãã®çµæãèªåã®ã¯ã©ã¹ã®å°ããªã¬ã€ã€ãŒãä»ããŠSquallãšã®ããåãããã¹ãŠè¡ããŸããã åŸã§ãå®éšãšããŠã SquallãBASSã«çœ®ãæããŸãããããã®çœ®ãæãã®å©ç¹ãå®éã«æããŠããªãã£ãããã Squallãè¿ããŸããã ããããå¥ã®ãã©ãããã©ãŒã ãå¿ èŠãªå Žåã¯ãã©ãã«ã§ãããBASSã䜿çšã§ããããšãããããŸãã ã
ã²ãŒã ã®äžéšãšããŠå®è³ªçã«DirectXãåé€ããå¿ èŠããã£ããããæåã¯ãã¹ãŠã®DirectX h-ãã¡ã€ã«ãã³ã¡ã³ãã¢ãŠãããŸããã [ ãã«ã]ãã¯ãªãã¯ããŠã DirectXé¢æ°ãèªåã®ãã®ã«çœ®ãæããäœæ¥ã®éãè©äŸ¡ããæºåãã§ããŸããã é·ããåé¡ã®ãªã¹ãããããããåæ¢ãããšããåèšã§èŠã€ãã£ããšã©ãŒã®æ°ã¯9åãå°ãè¶ ããŠéåžžã«éåŒã«è¡šç€ºãããŸããã ããŠã¹ãšããŒããŒãããã®ããŒã¿å ¥åã¯ã³ãŒãã®æ¯èŒçå°ããªéšåã§ããããããã¹ãŠã®ãšã©ãŒã®ã»ãšãã©ã¯DirectInputã«é¢é£ããŠããŸãããã DirectDrawãšDirectPlay㯠ãå®å šã«ããšèšãããŠããããã«æ³šæãããŸããã
å¥ã®åŒ·åãªåé¡ããããŸããã å®éã«ã¯ããããããã³ãã£ã³ããŒã³ãšãã£ã¿ãŒãã²ãŒã ã«æ·»ä»ãããŠããŸãã ãããŠãããã¯å®å šã«MFCã䜿çšããŠèšè¿°ãããŠãããå®éã«ã¯WindowsãŠã£ã³ããŠã¢ããªã±ãŒã·ã§ã³ã§ããããããšãã£ã¿ãŒãå°æ¥å¥ã®ãã©ãããã©ãŒã ã§åäœããå¯èœæ§ã«ã€ããŠããèããªãããšã«ããŸããã ããããå®éã«ã¯ãã²ãŒã ãšãšãã£ã¿ãŒã®äž¡æ¹ãç§ã®ãããžã§ã¯ãã§ã¯åããããžã§ã¯ãã§ãã£ããšããããšã§ãïŒæåéããç°ãªããã©ã¡ãŒã¿ãŒã§èµ·åãããã®ã¯åãexeãã¡ã€ã«ã§ããïŒã ãããã£ãŠããã®ãããžã§ã¯ãã2ã€ã®éšåã«åå²ããå¿ èŠããããŸãããã²ãŒã ã¯Windowsããã»ãŒå®å šã«ç¬ç«ããŠåäœããã¯ãã§ããããå¯Ÿç §çã«ãšãã£ã¿ãŒã¯MFCãããžã§ã¯ãã®ãŸãŸã§ããã ãã®çµæã MFCãã¬ãŒã ã¯ãŒã¯ããã²ãŒã ãåãåºãããšãã«ããããã®ãããžã§ã¯ãã«å ±éã®æ©èœãã¿ã¹ã¯ãç°ãªãæ¹æ³ã§å®è¡ããªããã°ãªããªãç¶æ³ã«ãã°ãã°ééããŸããã æ¡ä»¶ä»ãã³ã³ãã€ã«ãã³ãŒãã«åã蟌ã¿ã2ã€ç®ã®ã³ãŒããã©ã³ããäœæããå¿ èŠããããŸããã
æåã«ããããšã¯ã DirectXã®äŸåé¢ä¿ã解æ¶ããã®ã«åœ¹ç«ã€ç¬èªã®ã·ã§ã«ãäœæããããšã§ããã 16ãããã®è§£å床ã§åäœããã€ã³ã¿ãŒãã§ã€ã¹ã圢æããããã®æšæºã³ã³ããŒãã³ãããããããã¹ããåºåã§ããã·ã§ã«ãå¿ èŠã§ããã
ãã·ã§ã«ãã®æ§é
GGameã¯ã©ã¹ãã·ã§ã«å šäœã®åºæ¬ã¯ã©ã¹ã«ããŸãããããã«ã¯ä»ã®ãã¹ãŠã®éèŠãªãªããžã§ã¯ããæ¢ã«å«ãŸããŠããŸãã GPlatformã¯ã©ã¹ã¯ ãã°ã©ãã£ãã¯æäœãé€ããOSãšã®éä¿¡ãæ åœããŸãã ãã ãããã¡ã€ã«ã·ã¹ãã ã®æäœãã¡ãã»ãŒãžã«ãŒãã®åŠçãã¢ããªã±ãŒã·ã§ã³ã®çµäºãã¹ã¬ãããšããã»ã¹ã®éå§ã«é¢é£ãããã¹ãŠã¯GPlatformãåç §ããŸãã GSoundã¯ã©ã¹ã¯ãµãŠã³ããæ åœãã GNetã¯ã©ã¹ã¯ã¿ã¹ã¯ã«å¿ããŠGNetServerãµãŒããŒãŸãã¯GNetClientã¯ã©ã€ã¢ã³ãã®ããããã§ãã æãé£ããã®ã¯ãã°ã©ãã£ãã¯ã管çããGDeviceã¯ã©ã¹ã§ããã
GDeviceã¯ã©ã¹ã¯GSurfaceãµãŒãã§ã¹ã§æ©èœããŸãã ãããã®è¡šé¢ã¯ç§ã«ãã£ãŠéåžžã«æœè±¡çã«å®çŸ©ãããŠããŸãã ãã¯ã»ã«ãããã®ãããæ°ã«é¢ãããã³ãã¯ãããŸããããå€ãã®æœè±¡çãªé¢æ°ãå®çŸ©ãããŠãããæšæºã®GDIã眮ãæããå¿ èŠããããŸãã ãã ããå®éã«ã¯ã GSurfaceã¿ã€ãã®ãªããžã§ã¯ãã¯ã²ãŒã ã§äœæãããããšã¯ãªãã代ããã«GSurface16ã¿ã€ãã®åãªããžã§ã¯ãã䜿çšãããŸã ãããã¯ã16ããããµãŒãã§ã¹ã«é¢ããGDIäœæ¥ã®å®è¡æ¹æ³ãç¥ã£ãŠããã ãã§ãã ã·ã§ã«ã«24ãããã°ã©ãã£ãã¯ã¹ã䜿çšã§ããããã«ããå¿ èŠãããå Žåã¯ãåžžã«åæ§ã®ã¯ã©ã¹GSurface24ãäœæã§ãããããã·ã§ã«ã®äžè¬çãªæ§é ãã°ããŒãã«ã«å€æŽããå¿ èŠã¯ãªããšæšè«ããŸããã
GDeviceã¯ã©ã¹ã¯ ãç»é¢è§£å床ã®æäœãæ åœãã䜿çšå¯èœãªç»é¢è§£å床ã決å®ããæœè±¡çãªæ©èœãåããŠãããæ°ãã解å床ãéžæã§ããŸãã GDevice㯠ãã·ãŒã³ã®ãµã€ãºãã¢ãã¿ãŒã®ãµã€ãºã«æ¡å€§çž®å°ããããšãã§ããŸãã ããšãã°ãã²ãŒã ã¯ãã¬ã€ãã£ãŒã«ãã®è¡šç€ºé åãå¢ããã ãã§ä»»æã®è§£å床ã䜿çšããŸãããã¡ãã¥ãŒã¯åžžã«1920 x 1080ã®è§£å床ã§ã®ã¿æ©èœããŸãã ãã ããã¢ãã¿ãŒã®å®éã®è§£å床ãäœãå Žåã GDeviceã¯ã¡ãã¥ãŒãã¢ãã¿ãŒã®çŸåšã®è§£å床ã«åãããŠã¹ã±ãŒãªã³ã°ããŸãã ããŸããŸãªã¢ãã¿ãŒè§£å床çšã®ããã€ãã®ã¿ã€ãã®ã¡ãã¥ãŒãäœæããæ¹ãè¯ããœãªã¥ãŒã·ã§ã³ãããããŸããããç§ã¯ãŸã äŒæ¥ã§ã¯ãªããç§ã®å Žåããã®ãããªãœãªã¥ãŒã·ã§ã³ã¯åã«éåççã§ãã ãããã«ããã 1366 x 768ã®è§£å床ã®ã©ãããããã§ã¯ãã¡ãã¥ãŒã¯ãŸã£ããåé¡ãããŸããã
ãããã®åºæ¬ã¯ã©ã¹ã¯ãã¹ãŠGPlatform ã GDevice ã GNetãªã©ã§ãã å€ãã®æœè±¡é¢æ°ãå«ãŸããŠããŸãã å®éã®ããã°ã©ã ã§ã¯ã GPlatformã¯ã©ã¹ã®ä»£ããã«ã GNetã¯ã©ã¹ã GNetServerLibUVã¯ã©ã¹ãŸãã¯GNetClientLibUVã¯ã©ã¹ã®ä»£ããã«ã GDeviceã¯ã©ã¹ã GDeviceOnimodLandDX9ã¯ã©ã¹ã®ä»£ããã«åã¯ã©ã¹GPlatformWindowsã䜿çšãããŸãã ç®çã®ãã©ãããã©ãŒã ãšã²ãŒã ã«æ¢ã«é©åããŠããã¯ã©ã¹ãªããžã§ã¯ãã䜿çšããŸãã ãã·ã§ã«ãèªäœã¯ãã²ãŒã ã«ã€ããŠãOSã«ã€ããŠãèããŠããŸããã
ãããŠãæãåºæ¬çãªã¯ã©ã¹ã¯ãå®éã«ã¯GGameããGGameOnimodLandDX9ã¯ã©ã¹ã«å€ãããŸãã ããã¯ã©ã®ããã«çµåããŸããïŒ çãã¯ã newæŒç®åãä»ããŠããã°ã©ã å ã«éèŠãªãªããžã§ã¯ããçŽæ¥äœæããªãããšã§ãã 代ããã«ãç®çã®ã¿ã€ãã®ãªããžã§ã¯ããäœæããä»®æ³é¢æ°ããããŸãã ããšãã°ã GGameã¯ã©ã¹ã®æœè±¡é¢æ°ïŒ
// virtual GPlatform* GGame::NewPlatform(GGame* owner, const char* game_name)=0; // virtual GSound* GGame::NewSound()=0;
次ã®ãããªGGameOnimodLandã¯ã©ã¹ãæ¢ããŸãã
// GPlatform* GGameOnimodLand::NewPlatform(GGame* owner, const char* game_name) { return new GPlatformWindows(owner, game_name); } // GSound* GGameOnimodLand::NewSound() { #ifdef SQUALL_SOUND return new GSoundSquall(); #endif #ifdef BASS_SOUND return new GSoundBass(); #endif }
ãããŠä»ãããããã¹ãŠãåºæ¬ã¯ã©ã¹ãéããŠã©ã®ããã«äœæããããïŒ
// , bool GGame::CreateGame(void* init, int view_width, int view_height) { platform=NewPlatform(this, game_name.c_str()); platform->Create(); device=NewDevice(init); device->Create(view_width, view_height); sound=NewSound(); .... .... .... }
ãããã£ãŠãOSãŸãã¯ã°ã©ãã£ãã¯ã¹APIã®è©³çŽ°ã詳ãã調ã¹ãããšãªããåºæ¬ã¯ã©ã¹ãå¿ èŠãªãªããžã§ã¯ããäœæããããšãããããŸã ã ãã®ã¢ãããŒãã«ãããã¡ã€ã³ããã°ã©ã ã³ãŒããã©ã³ã¿ã€ã ã®æ©èœããåé¢ã§ããŸãã ãŸããã©ã³ã¿ã€ã ç°å¢ã®ãã¹ãŠã®ä»æ§ãå°ããå®å šã«å¥åã®ã¯ã©ã¹ãšãã®æ©èœã«ãããããå¥ã®ãã©ãããã©ãŒã ãžã®ç§»æ€ãDirectXã® OpenGLãžã®çœ®ãæããæ¯èŒç容æã«ãªããŸãã
èšäºã®ç¶ãïŒGUI
èšäºã®çµããïŒãããã¯ãŒã¯