ã²ã¼ã ã¨VM
Another World(ã¢ã¦ã¿ã¼ã¯ã¼ã«ã)ã®è§£æãè¼ã£ã¦ãããèå³æ·±ãã
å½å
ã§ã¯ã½ã¼ãµãªã¢ã³ã®è§£æãæåãªæ°ãããã:
æè¿ã®ãã¿ã ã¨æ´çªç©èªã®VMã ãã( http://nxengine.sourceforge.net/ )ã(Wikipediaã«ã¯Game engine recreationã¨ãããã¼ã¸ã¾ã§æã http://en.wikipedia.org/wiki/Game_engine_recreation )
ã²ã¼ã ãVMã§å®ç¾ããã¨ããçºæ³èªä½ã¯ãã³ã³ãã¥ã¼ã¿ã²ã¼ã ããã®é»ææããBASICã®ãããªã¤ã³ã¿ããªã¿ã§æ¸ããã¦ãããã¨ãèããã°è³æ¥µæ®éã®ãã¨ã§ãå°ãªãã¨ãMSã®BASICã¯ä¸é表ç¾ã¨ãã¦ã®ãã¤ãã³ã¼ããããªãæ©æãããã£ã¦ããã(ãã ãTinyBASICã®é¡ã¯ç´æ¥ASCIIå½¢å¼ã®ã½ã¼ã¹ã³ã¼ãã®æåãå¼ãå®è£
ã§ãããã¨ãå¤ããä¾ãã°DDSBASICã®ããã« - http://cis.csuohio.edu/~somos/ddsbasic.c )
ãã ãBASICèªä½ã®åä½å¶ç´ãã²ã¼ã ãã©ãããã©ã¼ã ã®æ¡å¤§ããã£ãã®ã§ãIn-houseã®VMã¨ããããã¡ã§ããªãå¤ãã®VMããã¶ã¤ã³/å®è£
ãããã
âã®iv以å¤ã«ããLucasArtsã®SCUMMãæ¥æ¬ã«ãããã»ã¨ãã©ã®ã®ã£ã«ã²ã¼(!)ãVMãã¼ã¹ã§å®è£
ãããå¤ãã®ã®ã£ã«ã²ã¼ãã³ãã¯èªåã®ã¹ã¯ãªããã¨ã³ã¸ã³ã¨ãã¦VMã¨ãã®è¨è¿°è¨èªãæã£ã¦ãã(ãã¸ã¥ã¢ã«ã¢ã¼ãã®VAO game*1ãAliceSoftã®Systemç)ã
Another Worldã§ã¯ãéçºç°å¢ã«é¢ããå¶ç´ãã»ã¼è¦ãããªããåææ(ã1990å¹´ä»è¿ã®)ãã¤ã³ã³ãDOSã²ã¼ã ã®å¤ãã¯ããã°ã©ã ãã¢ã¸ã¥ã¼ã«åãããªã©éçºç°å¢ã¨ã²ã¼ã èªä½ãåå±
ãããããã®å·¥å¤«ãæã£ã¦ããã²ã¼ã ãå¤ããããããAnother Worldã®éçºèªä½ã¯PCããããªãããªAmigaã§è¡ããã( http://www.4gamer.net/games/113/G011302/20110305006/ )ãããã²ã¼ã èªä½ã«ã¯ãã®ãããªçè·¡ãç¡ãããã«è¦ããã
ã²ã¼ã ã«ãããVMã®æ¡ç¨ã¯SCUMMã®ãããªã¢ããã³ãã£ã¼ã²ã¼ã ã§ã®æ¡ç¨ãæåãªã®ã§ãVMã¯éãªã¢ã«ã¿ã¤ã ãªã²ã¼ã ã§ä½¿ç¨ããã¦ããã¨ããã¤ã¡ã¼ã¸ããããããããªããããããè¿ä»£çãªã²ã¼ã ã®ã»ã¨ãã©ã¯ããããVMããªã¢ã«ã¿ã¤ã ãªã²ã¼ã ã«ã使ã£ã¦ããã
æ´çªç©èªãå¤ãã®"ã²ã¼ã ã¨ã³ã¸ã³è£½ã®ã²ã¼ã "ã¯ãã²ã¼ã å
ç©çãã¢ã¯ã·ã§ã³é¨åããã¼ãã³ã¼ããããªãã¸ã§ã¯ãã«è§¦ããéã®ã¤ãã³ãçãã¹ã¯ãªããã«è¿½ãåºãã¦ãããã·ããªãªçã®èª¿æ´ããããã°ã©ã æ¬ä½ãä¿®æ£ãããã¨ãªãè¡ããããã«ããé
æ
®ã¨ãããã
ã¬ã¸ã¹ã¿ã¨ãã«ãã¹ã¬ãã
Another Worldãå«ããé常ã«å¤ãã®VMã¯"ã¬ã¸ã¹ã¿ãã¼ã¹"ã¤ã¾ããé«éã«ã¢ã¯ã»ã¹ã§ããããããªãã®å¤§ããã®éçã«å²ãå½ã¦ãããé
åãæã£ã¦ããããã«æãããVMã³ã¼ããæ¸ãããã°ã©ãããããã®å½¹å²ãéçã«é
ç½®ãã¦ä½¿ç¨ãã(ã¬ã¸ã¹ã¿5ã¯è¡¨ç¤ºä¸ã®ã¹ãã¼ã¸çªå·ã表ããç)ã
ãã®ãããªãã¶ã¤ã³ã¯ãTinyBASICãããã«ä¼¼ãGAMEçVTLç³»ã®è¨èªã®ããã«å¤æ°åã«å¯¾ããã¹ãã¬ã¼ã¸ãéçã«å²ãå½ã¦ããã¦ããæ代èæ¯ãèããã°èªç¶ãããããªãããã ã"ã¹ãã¬ã¼ã¸ã®ç®¡çæ©æ§ãæã¤ã"ã¯ãã®æã®ã²ã¼ã VMãã¯ã©ã¹åãããç¹ã¨ãã¦æç¨ã«æããã
åæã®RPGãã¯ã¼ã«ãâã®ã½ã¼ãµãªã¢ã³ã§ã¯ã¬ã¸ã¹ã¿ã«ã¯ãã©ã°ããæ ¼ç´ã§ããªã(= 1bité·ãããªã)ã
Javaã.net(CLI)ã®VMã¯ã¹ã¿ãã¯ãã¼ã¹ã®VMã ãããã®æ代ã®ã²ã¼ã ã¯éããããªã½ã¼ã¹ã§åä½ããå¿
è¦ããæ¶è²»ãªã½ã¼ã¹ãå³å¯ã«è¦å®ãããããå¯è½ãªéã決å®ç(deterministic)ãªææ³ã好ãå¾åã«ããããã¡ããã¹ã¿ãã¯ãã¼ã¹ã®VMã§ã使ç¨ãããã¹ã¿ãã¯ã®éãäºæ¸¬ãããã¨ã¯ä¸å¯è½ã§ã¯ãªãããã¬ã¸ã¹ã¿ãã¼ã¹ã®VMã®æ¹ã"ã¬ã¸ã¹ã¿å²ãå½ã¦"ã®å½¢ã§ããç°¡åã«ãªã½ã¼ã¹æ¶è²»ãè¦å®åºæ¥ãã
ãã®æ代ã®VMããã«ãã¹ã¬ãã/ãã«ãã¿ã¹ã¯ããµãã¼ããããã¨ãå¤ããã²ã¼ã ã¯åæã«å¤æ°ã®ãã£ã©ã¯ã¿ãåãã¾ããã®ãæ®éãªããããã£ã©ã¯ã¿æ¯ã«å¥ã
ã®ããã°ã©ã ãä¸ãã¦åæã«åä½ããããã¨ããã®ã¯æ®éã®è¦æ±ã¨è¨ãããå¤ãã®VMã¯ããªã¨ã³ããã£ãã§ã¯ãªããAnother Worldã®ããã«åç´ã«ããã°ã©ã ã«ã¦ã³ã¿(ã¨ãå ´åã«ãã£ã¦ã¯ã¬ã¸ã¹ã¿)ãã³ã³ããã¹ãã¨ãã¦æã¤ã
ã¹ã¬ããã®æ°ãå½¹å²ã¯ãããã¿ã(FALCOM)ã®ããã«åºå®ããã¦ãã(ãã£ã©ã¯ã¿åä½/ã·ããªãªã¤ãã³ãã®2ã¤)ã±ã¼ã¹ãããããè¿ä»£çãªã²ã¼ã ã§ã¯Unchartedããã®ä»ã²ã¼ã ã¨ã³ã¸ã³è£½ã®ã²ã¼ã ã®ããã«ãã£ã©ã¯ã¿/ã¤ãã³ãã¹ããªã¼ã æ¯ã«åºæã®ã¹ã¬ãããåçã«æã¦ããã¨ãå¤ãã
Uncharted 2ã¯ã¹ã¬ããã¨ããã«ä¾çµ¦ãããã¤ãã³ããTrackã¨ããå½¢ã«æ½è±¡åããåã ã®ã¹ã¬ããã¯(Schemeçãªæå³ã®)ç¶ç¶ã§ç®¡çãããã
VMã®å°æ¥
ãããããã®ãããªã²ã¼ã åºæã®VMã使ç¨ããæ代ãçµãã£ã¦ãã¦ãã¦:
ã¨ã«ãããã®æ¥çã§ã¯Luaãå¼·ããSCUMMãLuaã«ç§»è¡ãã¦ããã
Luaãå¼·ãçç±ã¯é常ã«åç´æå¿«ã§ãã©ã¤ã»ã³ã¹ãpermissiveã§ã.cã®ã½ã¼ã¹ã³ã¼ããããã¤ããªã³ã¯ããã°ããã«ã¤ãããã¨ããæ軽ãã«ããã
ã©ã¡ãã«ãããç¬èªã®DSLãã²ã¼ã åãã«æ¸ãã¨ããã®ã¯ãã¾ãè¯ãã¢ããã¼ãã§ãªããªã£ã¦ãããç¬èªã®è¨èªãæ¡ç¨ããã®ã¯ãããã°ã©ãã®å価ãä¸ãã¦ãã¾ãå¯è½æ§ãããã
- ãã®ä»ã®çµã¿è¾¼ã¿è¨èª: GameMonkey, Squirrel, ECMAScript, ...
ããã§åãä¸ãããã®ã ã¨ãGameMonkeyã¯PixelJunkã·ãªã¼ãº(PS3)ãSquirrelã¯ã²ã
ãã¹ãã³(Nintendo 3DS)ã«æ¡ç¨ããã¦ããã
SchemeãminischemeãTinySchemeã®ããã«é常ã«å°ãªãã½ã¼ã¹ã³ã¼ãã§ããå®è£
ã§ãããã®ãæãã®ã§ãã²ã¼ã åãã®ãã®ããã¡ãã¨ã¤ããã°å
¥ãè¾¼ãä½å°ã¯ããããã«æãããç¹ã«ãè¯ãIn-Gameã¨ãã£ã¿/ãããã¬/ãã¸ã¥ã¢ã©ã¤ã¶ãåããå°ãªãã½ã¼ã¹ã§å°å
¥ã§ããå®è£
ã¯ç¾ç¶ã©ã®ãããªè¨èªã§ãã£ã¦ãåå¨ããªãã
- ã¹ã¯ãªãããè¨è¿°ãããã使ç¨æã«åä½ç°å¢ã®ã³ã¼ãã«ã³ã³ãã¤ã«ãã¦ãã¾ã
家åºç¨ã²ã¼ã æ©ãæºå¸¯é»è©±ã§ã¯ãå®è¡æã®ã³ã¼ãçæ(JITC)ãç¦æ¢ããã¦ããã±ã¼ã¹ãå¤ãã®ã§ãéçãªã³ã³ãã¤ã©ã«éè¦ããããã¾ããUnrealScriptãªã©ã¯ãã¹ã¯ãªããã§ãªãã¸ã§ã¯ããå®ç¾©ãã¦ãã®å®ç¾©ããããã«æ¸ãåºããªã©C++ã¨ã®çµ±åããããªãã«æèããã¦ããã
åå人ã¯ãã®æ¹å¼ããã使ã£ã¦ããããç¾ä»£çã«ã¯ãã¾ã使ããã¦ããªãããã«æããããã ãä»å¾ãã®æ¹å¼ã¯ãããªãã«ä¼¸ã³ãã¨æã£ã¦ãã¦ãMandreel( http://www.mandreel.com/ )ã®ãããªJavaScriptã¸ã®å¤æãGPUããã°ã©ã ã®çæ(GLSL vs. HLSL, OpenCL vs. C++ AMP)ãªã©ã®åéãèããããã(Mandreelã«è³ã£ã¦ã¯ææ¸ãã®JavaScriptããéãã±ã¼ã¹ããã - http://blog.j15r.com/2011/12/for-those-unfamiliar-with-it-box2d-is.html )
ããã¦ããã®ãããªåéã ã¨DSLãçãæ®ãå¯è½æ§ãååã«ããã
*1:ãã¸ã¥ã¢ã«ã¢ã¼ãã¯MS-DOSæ代ãã2001å¹´ä»è¿ã«AVG32ã¸ã²ã¼ã ã¨ã³ã¸ã³ãåãæ¿ããã¾ã§ãé·ããã¨game.exeãã²ã¼ã ã®å®è¡ãã¡ã¤ã«åã¨ãã¦å©ç¨ãã¦ããã®ã§å人çã«ã¯åç´ã«gameã¨å¼ãã§ãããããããããæ£å¼å称ãä»ã«ããã®ãããããªãã