æè¿ãæåã®ã²ãŒã BYTEPATHããªãªãŒã¹ããŸããããäœæããã»ã¹ã§åŠãã ããšã«ã€ããŠèããæžãçããŠãããšäŸ¿å©ã ãšæããŸããã ãããã®ã¬ãã¹ã³ãããœããããšãããŒããã«åããŸãããœãããšã¯ããœãããŠã§ã¢éçºã«é¢é£ããã¢ã€ãã¢ãæå³ããããŒããªãã®ã¯ããã°ã©ãã³ã°ã®æè¡çãªåŽé¢ã§ãã ããã«ããªãèªåã®ãšã³ãžã³ãäœæãããã®ãã«ã€ããŠã説æããŸãã
ãœããã¬ãã¹ã³
ã³ã³ããã¹ãã®ããã«ã5ã6幎åã«èªåã®ã²ãŒã ãäœãå§ããæåã®ã²ãŒã ã®ãªãªãŒã¹åã«3ã€ã®ãæ·±å»ãªããããžã§ã¯ãã«åãçµãã ããšããç¥ããããŸãã ãããã®ãããžã§ã¯ãã®ãã¡2ã€ã¯æ»ãã§ãããå®å šã«å€±æããŸãããBYTEPATHã§äœæ¥ããããã«æåŸã®ãããžã§ã¯ããäžæçã«äžæããŸããã
ãããã®ãããžã§ã¯ãããã®gifã¯ããã«ãããŸã
æåã®2ã€ã®ãããžã§ã¯ãã¯ããŸããŸãªçç±ã§å€±æããŸããããããã°ã©ãã³ã°ã®èŠ³ç¹ããã¯ïŒå°ãªããšãç§ãèŠãŠããããã«ïŒå€±æããŸããã ã»ãšãã©ã®ãœããã¬ãã¹ã³ã¯ãã®å€±æã«é¢é£ããŠãããããããèšãããšãéèŠã§ããã
ææå°æ©ã®äžè¬å
ãããŸã§ã®ãšããããã®ã²ãŒã ããåŠãã æãéèŠãªæèšã¯ãããã€ãã®ã¿ã€ãã®ãšã³ãã£ãã£ã§ç¹°ãè¿ãããåäœãããå Žåãæœè±¡å/äžè¬åãæ©ããããããããã©ã«ãã§ã³ããŒããŠè²Œãä»ããæ¹ãè¯ããšããããšã§ãã
å®éã«ã¯ããããéæããã®ã¯éåžžã«å°é£ã§ãã ç§ãã¡ããã°ã©ããŒã¯ãç¹°ãè¿ãã«æ°ã¥ããã§ããã ãæ©ãããããåãé€ãåªåãããããšã«æ £ããŠããŸãããéåžžããã®è¡åã解決ãããããé »ç¹ã«åé¡ãåŒãèµ·ããããšã«æ°ã¥ããŸããã 圌ãäœæããäž»ãªåé¡ã¯ãäžè¬åããã°ãã°äžæ£ç¢ºã§ãããäžè¬åã誀ã£ãŠããå Žåãã³ãŒãæ§é ãããèªäœã«çµã³ä»ããäžè¬åããªãå Žåãããä¿®æ£ããã³å€æŽãã¯ããã«é£ããããšã§ãã
ABC
ã¢ã¯ã·ã§ã³ãå®è¡ãããšã³ãã£ãã£ã®äŸãèããŠã¿ãŸãããã æåã«ããšã³ãã£ãã£ã«çŽæ¥
ABC
ãã³ãŒãã£ã³ã°ããŸããä»ã«çç±ããªãããã§ãã ãããã
ABD
ãå®è¡ããå¥ã®ãšã³ãã£ãã£ã«é¢ããŠã¯ããã¹ãŠãåæãããããã2ã€ã®ãšã³ãã£ãã£ãã
AB
ãååŸããããããã
C
ãš
D
ã®ã¿ãåŠçããŸãããšèããŸãã
AB
ããã³ä»ã®å Žæã§åå©çšã§ããŸãã æ°ãããšã³ãã£ãã£ãå®çŸ©ãããŠããã®ãšåãæ¹æ³ã§
AB
ã䜿çšããå Žåãããã¯åé¡ã§ã¯ãããŸããã
ABE
ã
ABF
ãªã©ããããšããŸããã...
ããããé ããæ©ããïŒãããŠãããã¯éåžžãããæ©ãèµ·ãããŸãïŒã
AB*
ãå¿ èŠãšãããšã³ãã£ãã£ãçŸããŸããã
AB*
ãšã»ãšãã©åãã§ãããå°ããªäºææ§ã®ãªãéãããããŸãã ãã®åŸã
AB*
ãèæ ®ããŠ
AB*
å€æŽãããã
AB*
åäœãå«ãå®å šã«æ°ããããŒããäœæããŸãã ãã®æŒç¿ãæ°åç¹°ãè¿ããšãæåã®ã±ãŒã¹ã§ã¯ããŸããŸãªåäœã®ãã¹ãŠã®çš®é¡ã®ã¹ã€ãããšãã©ã°ãåããéåžžã«è€éãª
AB
ã«ãªãã2çªç®ã®ã±ãŒã¹ã§ã¯ãã£ãŒã«ãã®æåã®ã»ã«ã«æ»ããŸããã³ãŒããè€è£œããŸãã
ãã®åé¡ã®æ žå¿ã¯ãæ°ãããã®ãè¿œå ããããå€ããã®ã®åäœãå€æŽããããããã³ã«ãæ¢åã®æ§é ãèæ ®ããŠãããè¡ããªããã°ãªããªããšããäºå®ã§ãã äœããå€ããããã«ãç§ãã¡ã¯åžžã«ãããã¯
AB
ã
AB*
ãããšèããã¹ãã§ãããããŠããã®äžèŠåçŽãªè³ªåããã¹ãŠã®åé¡ã®åå ã§ãã ããã¯ãæ°ããæ§é ãè¿œå ããŠæ©èœãããã ãã§ãªããæ¢åã®æ§é ã«äœããæ¿å ¥ããããšããŠããããã§ãã å¿ èŠãªããšãè¡ãã ãã§ãæ¢åã®ã³ãŒããèæ ®ããå¿ èŠããããããéããé倧è©äŸ¡ããããšã¯ã§ããŸããã
ãããã£ãŠãæåã¯ã³ããŒãšè²Œãä»ãã®ã³ãŒããããã©ã«ãã§éžæããæ¹ãã¯ããã«ç°¡åã§ããããšã«æ°ä»ããŸããã äžèšã®äŸã§ã¯ã
ABC
ããããŸã
ABD
ãè¿œå ããã«ã¯ã
ABC
ãã³ããŒããŠè²Œãä»ããããŒã
C
ãåé€ããŠ
D
ã«çœ®ãæããŸã
D
ABF
ã䜿çšãã
ABE
åãããšãåœãŠã¯ãŸããŸã
ABE
AB*
ãè¿œå ããå¿ èŠãããå Žåã¯ã
AB
å床ã³ããŒããŠè²Œãä»ãã
AB*
眮ãæããŸãã ãã®ã¹ããŒã ã«æ°ãããã®ãè¿œå ããå Žåãæ¢åã®ã³ãŒãã«ã©ã®ããã«åã蟌ãŸããããå¿é ããã«ãåæ§ã®ã¢ã¯ã·ã§ã³ãæ¢ã«å®è¡ãããŠããå Žæããã³ãŒããã³ããŒããŠå€æŽããã ãã§ååã§ãã ãã®æ¹æ³ã¯ãå®è£ ãã¯ããã«åªããŠãããåé¡ãå°ãªãããšãããããŸããããçŽæã«åããŠããŸãã
ã»ãšãã©ã®ãã³ãã¯ãåäžã®éçºè ã«ã¯é©ããŠããŸããã
ã€ã³ã¿ãŒãããããã°ã©ããŒåãã®ãã³ãã®å€§éšåãšãç§ãå®éã«åäžã®éçºè ãšããŠããªããã°ãªããªãããšã®éã«ã¯ãäžäžèŽããããŸãã ãã®çç±ã¯æ¬¡ã®ãšããã§ãã第äžã«ãã»ãšãã©ã®ããã°ã©ããŒã¯ä»ã®äººãšããŒã ã§ä»äºãããŠããã®ã§ãéåžžã¯ãã®åæã§ã¢ããã€ã¹ãäžããããŸãã 第äºã«ã人ã ã«ãã£ãŠäœæããããœãããŠã§ã¢ã®ã»ãšãã©ã¯éåžžã«é·ãéååšããŠããå¿ èŠããããŸãããããã¯ã€ã³ãã£ãŒãºã²ãŒã ã«ã¯é©çšãããŸããã ã€ãŸããããã°ã©ããŒãžã®ã¢ããã€ã¹ã®ã»ãšãã©ã¯ãã€ã³ãã£ãŒãºã²ãŒã ã®åç¬éçºã«ã¯ã»ãšãã©åœ¹ã«ç«ããªãããšãæå³ãããã®ãããä»ã®äººã«ã¯äžå¯èœãªå€ãã®ããšãè¡ãããšãã§ããŸãã
ããšãã°ãã°ããŒãã«å€ã䜿çšã§ããã®ã¯ãéåžžã«é »ç¹ã«åœ¹ç«ã€ããã§ãããããããé ã®äžã«ä¿æã§ããéããåé¡ãåŒãèµ·ããããšã¯ãããŸããïŒè©³çŽ°ã«ã€ããŠã¯ãBYTEPATHãã¥ãŒããªã¢ã«ã®ããŒã10ãåç §ããŠãã ãã ïŒã ãŸããã³ãŒãããŒã¹ãããŸã倧ãããªããããã³ãŒãã®å€§éšåãé ã«çœ®ããŠãããããã³ãŒãã«ããŸãã³ã¡ã³ãããããšã¯ã§ããŸããã 誰ãã²ãŒã ãæ§ç¯ããå¿ èŠããªããããèªåã®ãã·ã³äžã§ã®ã¿åäœããã¹ã¯ãªãããäœæã§ããŸããã€ãŸãããã®æé ã®è€éããå€§å¹ ã«è»œæžã§ããäœæ¥ãå®äºããããã®ç¹å¥ãªããŒã«ã¯å¿ èŠãããŸããã ç§ã¯å·šå€§ãªé¢æ°ãšã¯ã©ã¹ãæã€ããšãã§ãããããããŒãããäœæããããããã©ã®ããã«æ©èœããããæ£ç¢ºã«ç¥ã£ãŠããã®ã§ããããã®èšå€§ãªéã¯åé¡ã§ã¯ãããŸããã çµå±ã®ãšããããããã«é¢é£ããåé¡ã®ã»ãšãã©ã¯ãé·å¯¿åœã®ãœãããŠã§ã¢ã«åãçµãã§ããããŒã ã§ã®ã¿æããã«ãªããããç§ã¯ããããã¹ãŠè¡ãããšãã§ããŸãã
ãã®ãããžã§ã¯ãã«åãçµãã§ãç§ã¯ããããã¹ãŠã®ãæªããããšããããšããç¹ã«æªãããšã¯äœãèµ·ããªãã£ãããšãåŠã³ãŸããã å€ãã®éçºè ãéåžžã«æªãã³ãŒãèšè¿°æ¹æ³ã䜿çšããŠçŽ æŽãããã²ãŒã ãäœæãããšããäºå®ãèãããšãæèã®ç«¯ã®ã©ããã§ãã€ã³ãã£ãŒã²ãŒã ãäœæããã®ã«è¶ é«å質ã®ã³ãŒãã¯å¿ èŠãªãããšãåžžã«æãåºããŸããã
casenpaiïŒç§ãæãã®ã¯ãã³ãŒãã«864ã®ã±ãŒã¹æ§æãããããã«èŠããããšã§ãã
Toby FoxxïŒUndertale authorïŒïŒããã°ã©ãã³ã°ã§ããŸãããç¬
ãããŠããã®ãããžã§ã¯ãã¯ç§ã«ãã®æèŠã確èªããããšã«ãªã£ãŠããã 泚ç®ã«å€ãã-ããã¯ããªã©ãã¯ã¹ããŠãžã£ã³ã¯ã³ãŒããæžãããšãã§ãããšããæå³ã§ã¯ãããŸããã ã€ã³ãã£ãŒã²ãŒã ã®éçºã®æèã§ã¯ãããã¯ã»ãšãã©ã®ããã°ã©ããŒã®ãã®è¡åãšæŠã䟡å€ãããå¯èœæ§ãæãé«ãããšãæå³ããŸããããã¯ããªãã®ä»äºãé ãããæµã§ããããããã¹ãŠãæ£ãããããã«ããã»ãšãã©èªéçã®å¿ èŠæ§ã䌎ããŸãã
ECS
Entity Component Systemãã¿ãŒã³ã¯ãåã®2ã€ã®ã»ã¯ã·ã§ã³ã§è¿°ã¹ããã¹ãŠã®ççŸã®è¯ãå®äŸã§ãã ã»ãšãã©ã®èšäºãèªãã åŸãã€ã³ãã£ãŒéçºè ã¯ç¶æ¿ãæªãç¿æ £ãšèŠãªããã³ã³ããŒãã³ãã䜿çšããŠã¬ãŽã³ã³ã¹ãã©ã¯ã¿ãŒãããšã³ãã£ãã£ãäœæã§ããããšããããŠãããã®ãããã§åå©çšå¯èœãªåäœãã¯ããã«ç°¡åã«äœ¿çšã§ããããšãæããã«ãªããæåéãã²ãŒã äœæã®ãã¹ãŠãããç°¡åã«ã
å®çŸ©ã«ãããECSã«å¯Ÿããããã°ã©ãã®æ¬²æ±ã¯ææå°æ©ã®äžè¬åã«ã€ããŠèªã£ãŠããŸãããªããªããç©äºãã¬ãŽãããã¯ãšèŠãªãããããããæ°ãããã®ãåéããæ¹æ³ãèãããšãæçšãªãã®ãšçµã¿åãããããšãã§ããåå©çšå¯èœãªãã©ã°ã¡ã³ãã®èŠ³ç¹ããèããããã§ãæ¹æ³ã ãããŠãããªã³ã³ãã€ã«ã«é¢ããã»ã¯ã·ã§ã³ã«ãªã¹ãããçç±ãããããã¯å®å šã«ééã£ãŠãããšæããŸãïŒ ãã®æ£ç¢ºãªç§åŠçã°ã©ãã¯ç§ã®ç«å Žããã説æããŠããŸãã
ã芧ã®ãšãããç§ãä¿è·ããããšãŒãã³ãŒãã£ã³ã°ãã®ååã¯ãæåã¯ã¯ããã«åçŽã§ãåŸã ã«é£ãããªããŸãããããžã§ã¯ãã®è€éããå¢ãããšãŒããã¯ãã·ã£ã³ãåé¡ãå®èšŒãå§ããŸãã äžæ¹ãECSã¯æåã¯ã¯ããã«è€éã§ããã³ã³ããŒãã³ããäœæããå¿ èŠããããå®çŸ©äžãåçŽãªäœæ¥èŠçŽ ãäœæãããããå°é£ã§ãã ããããæéãçµã€ã«ã€ããŠãECSã®æçšæ§ã¯ãŸããŸãæããã«ãªããããæç¹ã§åœŒã¯ãšãŒãã³ãŒãã£ã³ã°ãæã¡è² ãããŠããŸãã ç§ã®ãã€ã³ãã¯ãMOSTã€ã³ãã£ãŒãºã²ãŒã ã®ã³ã³ããã¹ãã§ã¯ãECSãæé«ã®æè³ã«ãªãç¬éã¯æ±ºããŠæ¥ãªããšããããšã§ãã
ã³ã³ããã¹ãã®ççŸã«ã€ããŠèšãã°ããã®èšäºã人æ°ãåããšãAAAéçºè ãã³ã¡ã³ãã«ééããªãç»å Žãããç§ã¯ãã®æ¥çã§20幎éåããŠããŸããããã®ãã³ã»ã³ã¹ã¯å®å šã«æªãã§ã!!! ECSã¯éåžžã«äŸ¿å©ã§ãããã§ã«æ°çŸäžãã«ã皌ãã AAAã²ãŒã ãããã€ããªãªãŒã¹ããäžçäžã®äœåå人ãã®äººã ããã¬ã€ããŠããŸã!!! ãã®ãã³ã»ã³ã¹ãéã¶ã®ãããã!!!ã
ãã®AAAéçºè ã¯ECSã圌ã«ãšã£ãŠæçšã§ãããšããç¹ã§æ£ããã§ãããããããã¯ä»ã®ã€ã³ãã£ãŒéçºè ã«ã¯å¿ ãããåœãŠã¯ãŸããŸãããã³ã³ããã¹ãã®äžäžèŽã«ãããããã2ã€ã®ã°ã«ãŒãã¯éåžžã«ç°ãªãåé¡ã解決ããŸãã
ãããããããªãããç§ã¯ã§ããéããèªåã®èŠç¹ãäŒãããšæãã ããã¯ãECSã®äœ¿çšãæãã§ããããæããªããšãæå³ããŸããïŒ ãã ãã§ã«ECSã®äœ¿çšã«æ £ããŠããŠããããããŸãæ©èœããŠããã°ãããããããšãªã䜿çšã§ãããšæããŸãã ããããäžè¬çã«ã€ã³ãã£ãŒéçºè ã¯ãã®ãããªãœãªã¥ãŒã·ã§ã³ãšãã®æ¬ ç¹ã«å¯ŸããŠããæ¹å€çã§ããã¹ãã ãšæããŸãã ãžã§ããµã³ãããŒã®èãã¯ããã§éåžžã«é©åã ãšæããŸãïŒECSã«é¢ããŠåœŒãç§ã«åæãããšã¯æ±ºããŠä¿¡ããŠããŸããïŒã
åäœãè€æ°ã®ãªããžã§ã¯ãã«åå²ããªã
åé¿ã§ããªããšæããããã¿ãŒã³ã®1ã€ã¯ã1ã€ã®åäœãè€æ°ã®ãªããžã§ã¯ãã«åå²ããããšã§ããã BYTEPATHã§ã¯ãããã¯äž»ã«ãã³ã³ãœãŒã«ãã«ãŒã ã®äœææ¹æ³ã«çŸããŸããããFrogfallerïŒä»¥åã«è¡ã£ãã²ãŒã ïŒã§ã¯ããã¯ããæçœã§ãã
ãã®ãªããžã§ã¯ãã¯ãã¯ã©ã²ã®å¥ã ã®èããã®ã¯ã©ã²ã®æ¬äœãšããã¹ãŠãäžç·ã«çµåãã身äœãšèã®åäœã調æŽããè«çãªããžã§ã¯ãã§æ§æãããŠããŸãã åäœã3ã€ã®ç°ãªãã¿ã€ãã®ãªããžã§ã¯ãã«åå²ããããããã®èª¿æŽãéåžžã«å°é£ã«ãªããããããã¯ãã®ãããªãšã³ãã£ãã£ãã³ãŒãã£ã³ã°ããéåžžã«äžåšçšãªæ¹æ³ã§ããããã®æ¹æ³ã§ãšã³ãã£ãã£ãã³ãŒãã£ã³ã°ããå¿ èŠãããå ŽåïŒããã³ã²ãŒã ã«å€ãã®ãã«ãã³ã³ããŒãã³ããšã³ãã£ãã£ãããå ŽåïŒãèªç¶ã«ãã®è§£æ±ºæ¹æ³ãéžæããŸãã
ããã©ã«ãã§ãã®åé¢ãéžæããçç±ã®1ã€ã¯ãåç©çãªããžã§ã¯ãã1ã€ã®ãªããžã§ã¯ãã®ã³ãŒãã«å«ããå¿ èŠãããããšã§ããã€ãŸããæ°ããç©çãªããžã§ã¯ããäœæããå Žåã¯ããªããžã§ã¯ãã®æ°ããã€ã³ã¹ã¿ã³ã¹ãäœæããå¿ èŠããããŸãã å®éãããã¯å³å¯ãªã«ãŒã«ãå¿ é ã®å¶éã§ã¯ãªããç©çAPIã®ã¢ãŒããã¯ãã£ãèšèšããæ¹æ³ã®ããã«éåžžã«äŸ¿å©ã§ãã
å®éãç§ã¯ãã®åé¡ã解決ããæ¹æ³ã«ã€ããŠé·ãéèããŠããŸããããããã§ãè¯ã解決çãèŠã€ããããšãã§ããŸããã§ããã ç°ãªãç©çãªããžã§ã¯ãéã§èª¿æŽããå¿ èŠãããããã1ã€ã®ãªããžã§ã¯ãã ãã®åçŽãªã³ãŒãã£ã³ã°ã¯ã²ã©ãããã«èŠããŸãããç©çãªããžã§ã¯ããæ£ãããªããžã§ã¯ãã«åå²ãããã®åŸã®èª¿æŽãåãå ¥ããããªãããã«æãããŸãã ä»ã®äººããã®åé¡ãã©ã®ããã«è§£æ±ºãããããããŸããã®ã§ãããªãã®ã¢ããã€ã¹ãåŸ ã£ãŠããŸãïŒ
ããŒãã¬ãã¹ã³
圌ãã®æèã¯ãLuaãšLÃVEã§ç§ã®ã²ãŒã ãæžãããšããããšã§ã ã CãšC ++ã§0è¡ã®ã³ãŒããæžããŸããããã¹ãŠãLuaã§æžãããŠããŸãã ãããã£ãŠããããã®ã¬ãã¹ã³ã®å€ãã¯Luaèªäœã«é¢é£ããŠããŸããããããã®ã»ãšãã©ã¯ä»ã®èšèªã«ãé©çšãããŸãã
ãªã
ãã¬ã€ã€ãŒããåãåã£ããã°ã®90ïŒ ã¯ã
nil
å€æ°ãžã®ã¢ã¯ã»ã¹ã«é¢é£ããŠããŸãã ç§ã¯ã©ã®ã¿ã€ãã®ã¢ã¯ã»ã¹ãããé »ç¹ã§ãã/å°ãªãé »åºŠã®çµ±èšã远跡ããŸããã§ããããã»ãšãã©ã®å Žåãå¥ã®ãªããžã§ã¯ãããã®æ»ãã ãªããžã§ã¯ããžã®ãªã³ã¯ãä¿åããããã䜿ã£ãŠããããšãããšããªããžã§ã¯ãã®æ»ã«é¢é£ä»ããããŸãã ããã¯ãå¹³å寿åœãåé¡ã®ã«ããŽãªãŒã«å±ãããšæããŸãã
ãããã®å Žåãããã®åé¡ã®è§£æ±ºçã¯éåžžéåžžã«ç°¡åã«å®è£ ãããŸãããªããžã§ã¯ããååšãããã©ããã確èªãããã®åŸã§ã¢ã¯ã·ã§ã³ãå®è¡ããã ãã§ååã§ãã
if self.other_object then doThing(self.other_object) end
ãããããã®æ¹æ³ã§ã®ã³ãŒãã£ã³ã°ã®åé¡ã¯ãåä¿éºããããããå¥ã®ãªããžã§ã¯ããåç §ããããšã§ãããŸããLuaã¯ã€ã³ã¿ãŒããªã¿ãŒèšèªã§ãããããã³ãŒãåå²ã«é¢ãããã®ãããªãŸããªãã°ãçºçããŸãã ãããããã®åé¡ã解決ããä»ã®æ¹æ³ã¯èããããŸããããã°ã®æ·±å»ãªåå ã§ãããããããããæ£ããåŠçããããã®æŠç¥ãç«ãŠãããšã¯æ£ããããã§ãã
å°æ¥ããããªããžã§ã¯ãããå¥ã®ãªããžã§ã¯ããçŽæ¥åç §ããã®ã§ã¯ãªãããããã®IDã䜿çšããŠããããåç §ããããšãæ€èšããŸãã ãã®ãããªç¶æ³ã§ãå¥ã®ãªããžã§ã¯ãã§äœããããããšãã¯ããŸããã®IDã§ãããååŸããããããäœããããªããã°ãªããŸããïŒ
local other_object = getObjectByID(self.other_id) if other_object then doThing(other_object) end
ãã®ã¢ãããŒãã®å©ç¹ã¯ãäœãããããã³ã«ãªããžã§ã¯ããåãåãããã«åŒ·å¶ãããããšã§ãã ãŸããç§ã¯ãã®ãããªããšã¯æ±ºããŠããŸããïŒ
self.other_object = getObjectByID(self.other_id)
ããã¯ãçŸåšã®ãªããžã§ã¯ãã«å¥ã®ãªããžã§ã¯ããžã®æ°žç¶çãªãªã³ã¯ãä¿æããªãããšãæå³ããŸããã€ãŸããå¥ã®ãªããžã§ã¯ãã®æ»ã«ãããšã©ãŒãçºçããããšã¯ãããŸããã ããã¯ãç§ãäœããããããã³ã«å€ãã®åé·æ§ãè¿œå ãããããç§ã«ã¯éåžžã«æãŸãã解決çã§ã¯ãªãããã§ãã MoonScriptã®ãããªèšèªã¯ãããã«äŒŒããããªããšãã§ããã®ã§ãããã§å°ã圹ç«ã¡ãŸãã
if object = getObjectByID(self.other_id) doThing(object)
ããããMoonScriptã䜿çšããªããããããã«åæããå¿ èŠããããŸãã
ã¡ã¢ãªå²ãåœãŠã®ããåªããå¶åŸ¡
ç¹ã«æ¬¡ã®ã²ãŒã ã§Luaã䜿çšããã®ã§ãã¬ããŒãžã³ã¬ã¯ã·ã§ã³ãæªãããšã䞻匵ããã€ããã¯ãããŸãããããã®åŽé¢ã®ããã€ãã¯ãŸã 奜ãã§ã¯ãããŸããã Cã©ã€ã¯ãªèšèªã§ã¯ããªãŒã¯ã®çºçã¯ãã£ãšãããã§ãããéåžžã¯ã©ãã§çºçãããã倧ãŸãã«ç解ã§ããŸãã ãã ããLuaã®ãããªèšèªã§ã¯ãã¬ããŒãžã³ã¬ã¯ã¿ãŒã¯ãã©ãã¯ããã¯ã¹ã®ããã«èŠããŸãã ããã調ã¹ãŠãäœãèµ·ãã£ãŠãããã«ã€ããŠã®ãã³ããåŸãããšãã§ããŸãããããã¯çæ³çãªäœæ¥æ¹æ³ã§ã¯ãããŸããã Luaã§ãªãŒã¯ãçºçãããšãCãããã¯ããã«å€§ããªåé¡ã«ãªããŸããããã¯ãç§ãææããŠããªãC ++ã³ãŒãããŒã¹ãã€ãŸãLÃVEã³ãŒãããŒã¹ã䜿çšããããšã§è£å®ãããŸãã éçºè ãã©ã®ããã«åèªã®ã¡ã¢ãªå²ãåœãŠãèšå®ããã®ãããããŸããããã®ãããLuaãäºæž¬å¯èœãªã¡ã¢ãªåäœãå®çŸããã®ã¯ã¯ããã«å°é£ã§ãã
é床ã®ç¹ã§ãLuaã¬ããŒãžã³ã¬ã¯ã¿ãŒã«åé¡ããªãããšã¯æ³šç®ã«å€ããŸãã ç¹å®ã®å¶éã§åäœããããã«ïŒããšãã°ãnããªç§éèµ·åããªãããã«ïŒå¶åŸ¡ã§ãããããåé¡ã¯ãããŸããã å¯äžã®åé¡ã¯ãn msãè¶ ããŠå®è¡ããªãããã«åœŒã«äŒããããšãã§ãããã¬ãŒã ããšã«çæããããã¹ãŠã®ã¬ãŒãããžãåéã§ããªãããšã§ãã ãããã£ãŠãå²ãåœãŠãããã¡ã¢ãªã®éãæ倧éã«å¶åŸ¡ããããšãæãŸããã§ãã ãã®ãããã¯ã«é¢ããéåžžã«åªããèšäºããããŸãïŒ http : //bitsquid.blogspot.com.br/2011/08/fixing-memory-issues-in-lua.html ãããã³ãã®èšäºã§ãšã³ãžã³ã«å°éãããšãã«ããã«ã€ããŠè©³ãã説æããŸãã
ã¿ã€ããŒãå ¥åãã«ã¡ã©
ãããã¯ãç§ãåãåã£ã決å®ã«éåžžã«æºè¶³ããŠãã3ã€ã®é åã§ãã ãããã®äžè¬çãªã¿ã¹ã¯ã®ããã«ã3ã€ã®ã©ã€ãã©ãªãäœæããŸããã
- https://github.com/SSYGEN/chrono ïŒã¿ã€ããŒïŒ
- https://github.com/SSYGEN/boipushy ïŒå ¥åïŒ
- https://github.com/SSYGEN/STALKER-X ïŒã«ã¡ã©ïŒ
ãããã¯ãã¹ãŠãç§ã«ãšã£ãŠéåžžã«çŽæçãªAPIãåããŠãããç§ã®ç掻ããã£ãšæ¥œã«ããŸãã ãããŸã§ã®ãšãããã¿ã€ããŒã¯ç§ã«ãšã£ãŠæãæçšã§ããããšãå€æããŸãããããã¯ãããããçš®é¡ã®ãœãªã¥ãŒã·ã§ã³ãç°¡åãªæ¹æ³ã§å®è£ ã§ããããã§ãã
timer:after(2, function() self.dead = true end)
ãã®ã³ãŒãã¯ã2ç§åŸã«çŸåšã®ãªããžã§ã¯ãïŒèªå·±ïŒã匷å¶çµäºããŸãã ãã®ã©ã€ãã©ãªã䜿çšãããšããã¥ã€ãŒã³ãã©ã³ãžã·ã§ã³ãéåžžã«äŸ¿å©ã«å®è£ ã§ããŸãã
timer:tween(2, self, {alpha = 0}, 'in-out-cubic', function() self.dead = true end)
ãã®è¡ã«ãããtween
in-out-cubic
ã¢ãŒãã䜿çšããŠ2ç§éãªããžã§ã¯ãã®
alpha
å±æ§ã0ã«ã¹ã ãŒãºã«å€æŽïŒãã¥ã€ãŒã³ïŒãããªããžã§ã¯ããç Žæ£ã§ããŸãã ããã«ããã段éçãªæº¶è§£ãšæ¶å€±ã®å¹æãäœæã§ããŸãã ãŸããã€ã³ãã¯ãæã«ãªããžã§ã¯ããç¹æ» ãããããã«ã䜿çšã§ããŸãã
timer:every(0.05, function() self.visible = not self.visible, 10)
ãã®ã³ãŒãã¯ã0.05ç§ããšã«10åã
self.visible
ã®å€ãtrueãšfalseã®éã§åãæ¿ããŸãã ããã¯ã0.5ç§éããªãã«ãŒå¹æãäœæããããšãæå³ããŸãã ã芧ã®ãšãããã©ã€ãã©ãªã¯ã»ãŒç¡éã«äœ¿çšã§ããŸãã ããã¯ãLuaãå¿åé¢æ°ãšé£æºããæ¹æ³ã®ãããã§å¯èœã«ãªããŸããã
ä»ã®ã©ã€ãã©ãªãåæ§ã«äºçŽ°ãªAPIãåããŠããã匷åã§äŸ¿å©ã§ãã ã«ã¡ã©ã©ã€ãã©ãªã¯äœãããããšãå€æããå¯äžã®ãã®ã§ãããããã¯å°æ¥æ¹åãããå¯èœæ§ããããŸãã ãã®æå³ã¯ããã®ãããªã«ç€ºãããŠãããã®ã«äŒŒããã®ãå®è£ ã§ããããã«ããããšã§ãã
ããããæçµçã«ã¯ãã«ã¡ã©ã¢ãžã¥ãŒã«ã®éåžžã«åºæ¬çãªéšåãšãããªã«è¡šç€ºãããéšåãšã®äžéå±€ã®ãããªãã®ãäœæããŸããã LÃVEã䜿çšããŠãã人ã ãã©ã€ãã©ãªã䜿çšããããšãæãã§ãããããã©ã®ã¿ã€ãã®å±æ§ã䜿çšå¯èœãã«ã€ããŠã®ä»®å®ãå°ãªãããå¿ èŠããããŸããã ã€ãŸãããããªã«ç€ºãããŠããæ©èœã®äžéšã¯å®è£ ã§ããŸããã å°æ¥ãç¬èªã®ãšã³ãžã³ãäœæãããšãã«ãã²ãŒã ãªããžã§ã¯ãã«ã€ããŠå¿ èŠãªãã®ãæ³å®ã§ããããã«ãªããŸããã€ãŸãããã®ãããªã«ç€ºãããŠãããã¹ãŠãå®è¡ã§ããã©ã€ãã©ãªã®æ£ããããŒãžã§ã³ãå®è£ ã§ããããã«ãªããŸãã
éšå±ãšãšãªã¢
ç§ã«ãšã£ãŠãéšå±ïŒéšå±ïŒãšãšãªã¢ïŒãšãªã¢ïŒã®æŠå¿µã¯ããªããžã§ã¯ããæ±ãã®ã«éåžžã«é©ããæ¹æ³ã§ããããšãããããŸããã éšå±ã¯ãã¬ãã«ããŸãã¯ãã·ãŒã³ãã«é¡äŒŒããŠããŸãã ãã¹ãŠã®ã¢ã¯ã·ã§ã³ã¯ãããã§è¡ããããããã®å€ããååšããå¯èœæ§ããããããããåãæ¿ããããšãã§ããŸãã ãšãªã¢ã¯ãéšå±ã®äžã«é 眮ã§ãããªããžã§ã¯ããããŒãžã£ã®äžçš®ã§ãã äžéšã®äººã ã¯ããã®ãããªAreaãªããžã§ã¯ãããã¹ããŒã¹ããšåŒã³ãŸãã AreaãšRoomã¯ã»ãŒãã®ããã«é£æºããŸãïŒãããã®ã¯ã©ã¹ã®å®éã®ããŒãžã§ã³ã§ã¯ãAreaã«
addGameObject
ã
queryGameObjectsInCircle
ãªã©ããããªã©ãããã«å€ãã®æ©èœããããŸãïŒã
Area = Class() function Area:new() self.game_objects = {} end function Area:update(dt) -- update all game objects end
Room = Class() function Room:new() self.area = Area() end function Room:update(dt) self.area:update(dt) end
ãããã®æŠå¿µãåé¢ããããšã®å©ç¹ã¯ãéšå±ã«ãšãªã¢ãå¿ èŠãªãããšã§ããã€ãŸããéšå±å ã®ãªããžã§ã¯ããå¶åŸ¡ããæ¹æ³ã¯åºå®ãããŠããŸããã ããéšå±ã§ããªããžã§ã¯ããå¥ã®æ¹æ³ã§ç®¡çããããšã決å®ã§ããŸããããããããšãªã¢ã³ãŒããæ°ããæ©èœã«é©å¿ããã代ããã«ãã³ãŒããæžãã ãã§ãã
ãã ãããã®ã¢ãããŒãã®å©ç¹ã®1ã€ã¯ãéšå±ã«äž¡æ¹ãããå ŽåãããŒã«ã«ãªããžã§ã¯ãå¶åŸ¡ããžãã¯ãšãšãªã¢ãªããžã§ã¯ãå¶åŸ¡ããžãã¯ãç°¡åã«æ··åšãããããšãã§ããããšã§ãã ããã¯éåžžã«æ··ä¹±ãæãå¯èœæ§ããããBYTEPATHãéçºããéã«é倧ãªãšã©ãŒã®åå ã«ãªããŸããã ãããã£ãŠãä»åŸã¯ãRoomããšãªã¢ãå³å¯ã«äœ¿çšãããããªããžã§ã¯ãã管çããããã®ç¬èªã®æé ã䜿çšããããã«ããŸãããäž¡æ¹ãåæã«äœ¿çšããããšã¯ãããŸããã
snake_caseãšcamelCase
çŸåšãå€æ°åã«snake_caseã䜿çšããé¢æ°åã«camelCaseã䜿çšããŠããŸããå°æ¥çã«ã¯ãã¯ã©ã¹/ã¢ãžã¥ãŒã«ã®ååãé€ããããããå Žæã§snake_caseã䜿çšããäºå®ã§ããã¯ã©ã¹/ã¢ãžã¥ãŒã«ã®ååã¯CamelCaseã®ãŸãŸã§ãããã®çç±ã¯éåžžã«åçŽã§ãããã£ã¡ã«ã±ãŒã¹ã§ã¯ãé·ãé¢æ°åãèªãã®ã¯éåžžã«å°é£ã§ããsnake_caseã§å€æ°åãšé¢æ°åãæ··åšãããæ©èœã¯ãååã䜿çšããã³ã³ããã¹ãã®ãããéåžžã¯åé¡ã«ãªããŸããããã®ããããã¹ãŠãããŸããããŸãã
ãšã³ãžã³
ãã®ã²ãŒã ãçµãã£ãåŸãèªåã®ãšã³ãžã³ãæžãããäž»ãªçç±ã¯ã³ã³ãããŒã«ã§ãã LÃVEã¯çŽ æŽããããã¬ãŒã ã¯ãŒã¯ã§ãããã²ãŒã ã®ãªãªãŒã¹ã«é¢ããŠã¯å€±ç€ŒãããŸãã SteamworksãµããŒããHTTPSãµããŒããChipmunkã®ãããªä»ã®ç©çãšã³ãžã³ã®ãã¹ããC / C ++ã©ã€ãã©ãªã®äœ¿çšãLinuxã§ã®é åžã®ããã®ã²ãŒã ã®ãããã³ã°ãããã«èšåããä»ã®å€ãã®ããšã¯è€éãããŸãã
ããã¯ãã¿ã¹ã¯ã解決ã§ããªãããšãæå³ãããã®ã§ã¯ãããŸããããããã解決ããã«ã¯ãC / C ++ã¬ãã«ã«ç§»åããŠããã§äœæ¥ããå¿ èŠããããŸããç§ã¯Cã§ããã°ã©ã ããŠããã®ã§ãããã§åé¡ã¯ãããŸããããæåã¯ãã¬ãŒã ã¯ãŒã¯ã䜿çšããããšã«ããŸããããªããªããç§ã¯Luaã䜿ããããšæã£ãŠããããã§ãããããã£ãŠããããã«ããäœã¬ãã«ã§äœæ¥ããªããã°ãªããªãå Žåã¯ãèªåã§ã³ãŒãããŒã¹ãäœæããŠã³ãŒãããŒã¹ã®ãã®éšåãææããŸãã
ãã ããããã§ã¯ãšã³ãžã³ã«é¢ããããäžè¬çãªèŠç¹ã瀺ããããšæããŸãããã®ããã«ãLÃVEã®ä»£ããã«Unityãscãå¿ èŠããããŸããç§ã奜ãã§ãããªãé·ãéãã¬ã€ããã²ãŒã ããããŸã-Thies of LiesïŒ
ããã¯ãããã£ã¢ãã®ã¯ããŒã³ã§ãããéåžžã«å¥å šã§åªããã³ãã¥ããã£ããããŸããïŒããããä»ããããŸãïŒãç§ãèŠãŠããã¹ããªãŒããŒãããããç¥ã£ãã®ã§ãã²ãŒã ã«ã¯åããããªèãæ¹ã®äººãããããããŸããäžè¬çã«ãç§ã¯ã²ãŒã ãæ¬åœã«å¥œãã ã£ãã / r / gamedev ã§ãéçºè ã®1人ãããã®ã²ãŒã ã®äºåŸèª¿æ»ãèŠã€ããŸããããã®ç·ã¯ããã°ã©ããŒã®äžäººã§ããã圌ã¯ç§ã®æ³šæãåŒãã³ã¡ã³ãã1ã€æžããã
, . , , , . , . , , , . -, ; , . Unity , . : . , , , . . , . . Unity , - , .
, Async, Vulkan, FB standalone , , ( FB ..), UI , , , , Scroll Rect' , ( , Unity).
, ⊠, . , UI . Play, Stop, , , .
⊠(collab) , â , , , . . collab gitlab CE . . â 2-3 ( , ), Unity . -⊠Play, 2 . 2-3 . 10 .
⊠Unity , , â . , , Unity, .
⊠UNET? . , . , , - , , , . , , . , Photon , , . , . . , ⊠⊠. : , , .
ãããŠãããããããŸãããç§ãèšããããšã¯æ¬¡ã®ãšããã§ãã3Dãå®è¡ããŠããå Žåã¯ãUnrealã«åãæ¿ããŠãã ããã倱æã説æããããšããã§ããŸããããã¹ã¯ã®èåŸã«ããæãããçå®ãèŠããŸã§ãç§ã¯èªãé«ãUnityéçºè ã§ããããŠã§ããµã€ãããUnityããŽãåé€ããããšããæ¥ããããã£ãã§ããããŸãã«ãå€ããæè³ãããŠãããUnityãä»ã®éçºè ã«ããããããšããã§ããŸããã
ã€ãŸããç§ãéåžžã«æ°ã«å ¥ã£ãã²ãŒã ãäœæãããã®äººã¯ãUnityã«ã€ããŠã²ã©ãããšãèšã£ãŠããŸããã圌ã¯éåžžã«äžå®å®ã§ãããéçºè ã¯åžžã«æ°ããæ©èœãæ±ããŠãããããããæ£ããå®è£ ããªããªã©ã§ãã誰ããUnityãããŸã奜ãã«ããŠããªãã®ã§ããã®ãããªããšãæžããŠããããšã«éåžžã«é©ããŸãããããã§ãç§ã¯åœŒãå°ãããã·ã¥ããŠã圌ãUnityã«ã€ããŠä»ã«äœãèšãããšãã§ããããèŠã€ããããšã«ããŸããïŒ
ãããŠåœŒã¯ãããèšã£ãïŒ
ãããŠãã®ãããªïŒ
ç§ã¯Unityã䜿çšããããšããªãã®ã§ã圌ãçå®ãèªã£ãŠãããã©ããã¯ããããŸãããã圌ã¯å®æããã²ãŒã ãæžããã®ã§ãåãã€ãçç±ã¯ããããŸãããããããã¹ãŠã®æçš¿ã§ã®åœŒã®èŠç¹ã¯ã»ãŒåãã§ããUnityã¯æ¢åã®æ©èœãæ¹åããã®ã§ã¯ãªããæ°ããæ©èœãè¿œå ããããšã«çŠç¹ãåœãŠãŠãããUnityã¯ããŒãžã§ã³éã§å€ãã®æ¢åã®æ©èœã®å®å®æ§ãç¶æããã®ã«åé¡ããããŸãã
ç§ã®æèŠã§ã¯ã圌ã®æçš¿ã§æã説åŸåã®ããè°è«ã®1ã€ã¯ãUnityã ãã§ãªããä»ã®ãšã³ãžã³ã«ãé©çšããããšããããšã§ãããšã³ãžã³ã®éçºè èªèº«ã¯ã²ãŒã ãäœæããŸãããå°ãªããšãLÃVEã«ã€ããŠã¯ãéèŠãªããšã«æ°ä»ããŸããããã¬ãŒã ã¯ãŒã¯ã®å€ãã®åé¡ã¯ãéçºè ãã€ã³ãã£ãŒã²ãŒã ãç©æ¥µçã«äœæããã°è§£æ±ºã§ããå¯èœæ§ããããŸãããã®å Žåããããã®åé¡ã¯ãã¹ãŠæããã«ãªããæãé«ãåªå 床ãåãåããããã«ä¿®æ£ãããããã§ãã xblade724ã¯åãããšãUnityã«ãåœãŠã¯ãŸãããšãçºèŠããŸããããããŠãç§ãç¥ã£ãŠããä»ã®å€ãã®äººã ã¯ãä»ã®ãšã³ãžã³ã§ãåæ§ã®ããšãçºèŠããŸããã
éçºè èªèº«ãç©æ¥µçã«ã²ãŒã ãäœæãããã¬ãŒã ã¯ãŒã¯/ãšã³ãžã³ã¯ã»ãšãã©ãããŸãããæåã«æãæµ®ãã¶ã®ã¯ãUnrealãEpicã¯ç¬èªã®ãšã³ãžã³ã§äžé£ã®è¶ æåã²ãŒã ãäœæããããã§ããæåŸã®ã²ãŒã ã¯Fortniteã§ãã Monogameãäž»ãªéçºè ã¯ã²ãŒã ãããŸããŸãªãã©ãããã©ãŒã ã«ç§»æ€ããŸãã YoYo Gamesã¯ãã®ãšã³ãžã³ã§ã¢ãã€ã«ã²ãŒã ãäœæãããããGameMakerã
ç§ãç¥ã£ãŠããä»ã®ãã¹ãŠã®ãšã³ãžã³ã«ã€ããŠã¯ããã®æ¡ä»¶ã¯æºããããŠããŸãããã€ãŸãããããã®ãšã³ãžã³ã¯ãã¹ãŠãæ¢è£œã®ã²ãŒã ãäœæããäžã§éåžžã«æãããªåé¡ãšé害ããããŸããã€ã³ã»ã³ãã£ãããªãããã§ãããïŒã²ãŒã éçºãµã€ã¯ã«ã®æåŸã«çºçãããããäžéšã®åé¡ã5ïŒ ã®ãŠãŒã¶ãŒã«ãã圱é¿ããªãå Žåãèªåã®ã²ãŒã ãšã³ãžã³ã§å®è¡ããããããã®åé¡ã«èªåã§å¯ŸåŠããå¿ èŠããªãã®ã«ããªããããä¿®æ£ããã®ã§ããïŒ
ãããŠããã¯ãã²ãŒã ã®çµããè¿ãã§äºæãã¬åé¡ã«ééããããšãªããä¿¡é Œã§ããå®èšŒæžã¿ã®æ¹æ³ã§ã²ãŒã ãäœæããããšã«èå³ãããå Žåãç§ã®äººçãè€éã«ãããšã³ãžã³ã䜿çšããªããããä»ã®ãšã³ãžã³ã䜿çšããªãããšãæå³ããŸãäžèšã®3ã€ãç§ã®ç¹å®ã®å Žåãç§ã¯äž»ã«2Dã²ãŒã ã«èå³ããããUnrealã¯åœŒãã«ãšã£ãŠããŸãã«ãå€ããMonogameã¯åäœããŸãããCïŒãå«ãã§ãGameMakerã¯èŠèŠçãªã³ãŒãã£ã³ã°ãã€ã³ã¿ãŒãã§ã€ã¹ããŒã¹ã®ã³ãŒãã£ã³ã°ãã€ãŸããæ®ãã®ãªãã·ã§ã³ã¯1ã€ã ãã§ã-èªåã®ãšã³ãžã³ãäœæããããã§ãã
ãããã£ãŠãããããã¹ãŠã®èæ ®äºé ã«å¯ŸåŠããã®ã§ãç¹å®ã®ã¿ã¹ã¯ã«ç§»ããŸãããã
C / Luaã®çžäºäœçšãšèšæ¶
C / Luaãã€ã³ãã£ã³ã°ã¯ã2ã€ã®åºæ¬çãªæ¹æ³ã§ïŒå°ãªããšãç§ã®éãããçµéšã«åºã¥ããŠïŒå®è¡ã§ããŸããå®å šãªãŠãŒã¶ãŒããŒã¿ãšå¶éããããŠãŒã¶ãŒããŒã¿ã§ããå®å šãªãŠãŒã¶ãŒããŒã¿ã䜿çšããå ŽåãLuaã³ãŒããCã§äœãïŒç©çãªããžã§ã¯ããªã©ïŒã®é 眮ãèŠæ±ãããšãLuaã§ãã®ãªããžã§ã¯ããžã®ãªã³ã¯ãäœæããŠäœ¿çšããŸãããã®æ¹æ³ã§ããªããžã§ã¯ãCã確å®ã«èšè¿°ããã¡ã¿ããŒãã«ãšããŸããŸãªãã©ã¡ãŒã¿ãŒãåããå®å šãªãªããžã§ã¯ããäœæã§ããŸãããã®ã¢ãããŒãã®åé¡ã®1ã€ã¯ãLuaãã倧éã®ãŽããäœæããããšã§ããåã®ã»ã¯ã·ã§ã³ã§è¿°ã¹ãããã«ãã¡ã¢ãªå²ãåœãŠããŸãã¯å°ãªããšãçºçæã«ãããå®å šã«å¶åŸ¡ãããã
ãããã£ãŠããŠãŒã¶ãŒããŒã¿ãéãããŠããã¢ãããŒãã䜿çšããæ¹ãè«ççã§ããå¶éããããŠãŒã¶ãŒããŒã¿ã¯ãéåžžã®Cãã€ã³ã¿ãŒã§ãããããã¯ãæããŠãããªããžã§ã¯ãã«é¢ããå€ãã®æ å ±ãååŸã§ããªãããšãæå³ããŸããããã®ãªãã·ã§ã³ã¯ãLuaããã»ãšãã©ã®å¶åŸ¡ãæäŸããŸãããã®ã¹ããŒã ã§ã¯ããªããžã§ã¯ãã®äœæãšç Žæ£ãæåã§è¡ãå¿ èŠãããããã¹ãŠãéæ³ã®ããã«è¡ãããããã§ã¯ãªãããŸãã«ãããå¿ èŠã§ãã Stingrayãšã³ãžã³ã®éçºè ã«ããéåžžã«èå³æ·±ãã¬ããŒãã¯ããã®ãããã¯ã«åœãŠãããŠããŸãã
ããã¥ã¡ã³ããèªãã åŸã圌ã®èª¬æããšã³ãžã³ã§ã©ã®ããã«çºçãããã確èªã§ããŸãã
ç¬èªã®ãšã³ãžã³ãäœæãããã€ã³ãã¯ãC / Luaãã€ã³ãã£ã³ã°ãã©ã®ããã«çºçããããçºçãã劥åã®éžæãå®å šã«å¶åŸ¡ã§ããããšã§ããLuaã§ä»ã®èª°ãã®ãšã³ãžã³ã䜿çšããå Žåãéžæã¯ç§ã®ããã«è¡ãããããšãã°LÃVEã§èµ·ãã£ãããã«ããã®éžæã«å®å šã«æºè¶³ããããšã¯ã§ããŸããããããã£ãŠãããã¯ãã¡ã¢ãªããã詳现ã«å¶åŸ¡ããé«éã§ä¿¡é Œæ§ã®é«ãã²ãŒã ãäœæã§ããäž»ãªæ¹æ³ã§ãã
å€éšçµ±å
SteamworksãTwitchãDiscordãªã©ã®ãµã€ãã«ã¯ã䟿å©ãªæ©èœã䜿çšããããã«çµ±åããå¿ èŠã®ããç¬èªã®APIããããC / C ++ã§ã³ãŒãããŒã¹ãææããŠããªãå Žåããã®ã¿ã¹ã¯ã¯ã¯ããã«å°é£ã«ãªããŸãããã¡ãããããšãã°ãããããLÃVEã«çµ±åããäœæ¥ãè¡ãããšãã§ããŸãããç¬èªã®ãšã³ãžã³ã«çµ±åããå Žåãããå€ãã®äœæ¥ãå¿ èŠã«ãªããŸãã
UnityãUnrealã®ãããªéåžžã«äººæ°ã®ãããšã³ãžã³ã䜿çšããŠããå Žåããããã®ãµãŒãã¹ã®ã»ãšãã©ãšä»ã®äººã®çµ±åãæ¢ã«è¡ãããŠããå Žåãããã¯åé¡ã§ã¯ãããŸããããããå°ããªãŠãŒã¶ãŒããŒã¹ã§å¥ã®ãšã³ãžã³ã䜿çšããå Žåã¯ããããã®ãã®ãèªåã§çµ±åããå¿ èŠããããŸãããŸãã¯èª°ãã®ååå®è£ ããããã»ãšãã©æ©èœããªãã³ãŒãã䜿çšããããšã¯ãæªã決æã§ãã
ãŸããC / C ++ã³ãŒãããŒã¹ã®äžéšãææãããšãå¿ èŠãªãã®ã ããå®è£ ããããšãã§ãã確å®ã«æ©èœããããããã®ãããªçµ±åãã¯ããã«ç°¡åã«ãªããŸãã
ãã®ä»ã®ãã©ãããã©ãŒã
ããã¯ãç¬èªã®ãšã³ãžã³ãæžãããšã«æ¯ã¹ãŠãUnityãUnrealã®ãããªãšã³ãžã³ã§èŠãããå©ç¹ã®1ã€ã§ãããããã¯ãã¹ãŠã®æãäžè¬çãªãã©ãããã©ãŒã ããµããŒãããŸãããããããŸãå®è£ ãããŠãããã©ããã¯ããããŸããããç§ãå°è±¡çãªã®ã¯ã圌ãããããå®è¡ã§ããããšã§ãããåç¬ã§ãããè¡ãã®ã¯é£ããã§ããããç§ã¯ã¢ã»ã³ãã©ãŒã§çãçããšæ¯ãå¹ã蟌ãã§ããããã§ã¯ãããŸããããå°æ¥ã®ãšã³ãžã³ãã³ã³ãœãŒã«ãä»ã®ãã©ãããã©ãŒã ã«ç§»æ€ããã®ã«å€ãã®åé¡ããããšã¯æããŸããã ã
æåããæ¬åœã«ãµããŒãããããã©ãããã©ãŒã ã®1ã€ãWebã§ãããã©ãŠã¶ãŒã§Bloons TD5ã²ãŒã ããã¬ã€ããåŸããã°ããããŠãSteamã«åãæ¿ããŠ10ãã«ã§è³Œå ¥ããããšãã²ãŒã ãææ¡ããŸãããã ããç§ã¯ãã£ãããããã£ãŠãããå°ãªãæ©èœãåãããã©ãŠã¶ããŒãžã§ã³ã®ã²ãŒã ã®ãµããŒããšSteamãžã®åãæ¿ãã®ææ¡ã¯ãå®è£ ãããåªããæŠç¥ã§ãããšèããŠããŸãã以åã¯ãCãšã³ãžã³ãäœæããããã«äœãå¿ èŠããšãã質åãç 究ããŸããããEmscriptenã¯ãã©ãŠã¶ãŒã®ç»é¢ã«æç»ã§ããSDLãæäœããã®ã«äŸ¿å©ã ãšæãããŸãã
ãªãã¬ã€ãäºåç·š
ãã®ã²ãŒã ã®äºåç·šãäœæããããšã¯ãéåžžã«æªãçµéšã§ããããšãå€æããŸãããç§ã¯åœŒããŸã£ãã奜ãã§ã¯ãªãã£ããæ ç»/äºåç·š/ã¹ããŒãªãŒãé ã®äžã§ããèããããšãã§ããŸãïŒäœããã®çç±ã§é³æ¥œãèŽããšãã¯ãã€ããããè¡ããŸãïŒã®ã§ãã²ãŒã çšã«äœæãããäºåç·šã«ã€ããŠéåžžã«è¯ãã¢ã€ãã¢ããããŸãããããããå¿ èŠãªããŒã«ïŒãããªãšãã£ã¿ãŒãªã©ïŒã®äœ¿çšæ¹æ³ããããããé²ç»ãããŸãå¶åŸ¡ã§ããªããããçµæã¯å®å šã«ééã£ãŠããŸããã
ãšã³ãžã³ã«ãªãã¬ã€ã·ã¹ãã ãšãã¬ãŒã©ãŒã·ã¹ãã ãå®è£ ããããšèããŠããŸãããªãã¬ã€ã·ã¹ãã ã䜿çšãããšãã²ãŒã ãã¬ã€ãèšé²ããã®ã«ãµãŒãããŒãã£ã®ããã°ã©ã ã¯å¿ èŠãªããããã²ãŒã ãã¬ã€ã¯ãªãããç°¡åã«èšé²ã§ããŸããããã«ãéçºäžã«ã²ãŒã ãã¬ã€ãåžžã«èšé²ãããŠããããšã確èªã§ããããããã¹ãŠã®ãªãã¬ã€ãããã°ã©ã ã§è¡šç€ºãããã¬ãŒã©ãŒã§äœ¿çšã§ããç¹å®ã®ã€ãã³ããŸãã¯ã€ãã³ãã®ã·ãŒã±ã³ã¹ãéžæã§ããŸããæåããã°ãå¿ èŠãªã¬ã³ãŒããååŸããããã»ã¹ããã£ãšç°¡åã«ãªããŸãã
ããã«ããã®ãªãã¬ã€ã·ã¹ãã ãå®è£ ããåŸããšã³ãžã³ã«çµã¿èŸŒãŸãããã¬ãŒã©ãŒã·ã¹ãã ãè¿œå ããŠãç°ãªããªãã¬ã€ã®ãã©ã°ã¡ã³ããäžç·ã«æ¥ç¶ã§ããããã«ããŸããå®éãããã«ã¯æè¡çãªé害ã¯èŠãããªããããåé¡ã¯å®è£ ã®ã¿ã§ãã
ãŸãããªãã¬ã€ã·ã¹ãã ãäœæããããã«ç¬èªã®ãšã³ãžã³ãå¿ èŠãªçç±ã¯ããªãã¬ã€ãå¶åŸ¡ãããæ¹æ³ã§æ©èœããã¹ããŒã¹ãç¯çŽã§ããããã«ããã€ãã¬ãã«ã§äœæ¥ããå¿ èŠãããããã§ãããã®èšäºã§ã¯ãLuaã«ãªãã¬ã€ã·ã¹ãã ãæ¢ã«æ§ç¯ããŸããããããã10ç§ã§ãªãã¬ã€ã«ãã10 MBã®ãã¡ã€ã«ãäœæãããŸããããã«æé©åãè¿œå ã§ããŸãããæçµçã«ã¯Luaã«ã¯å¶éããããCã§æé©åããæ¹ãã¯ããã«äŸ¿å©ã§ãã
èšèšã®å®å šæ§
ãããŠãç§ãèªåã®ãšã³ãžã³ãäœæãããæåŸã®çç±ã¯ãèšèšã®æŽåæ§ã§ãã LÃVEã«ã€ããŠç§ã奜ã/å«ããªååã®1ã€ã§ããLuaïŒLinuxã®å²åŠã§ãåãã§ãïŒã¯ããã®åæ£åã§ãã LuaãšLÃVEã«ã¯æšæºã®å®è£ æ¹æ³ã¯ãããŸããã人ã ã¯èªåãæ£ãããšæãããšãããŸããä»ã®äººã䜿çšããã©ã€ãã©ãªãæžãããå Žåã¯ãããŸãå€ãã®ä»®å®ããã¹ãã§ã¯ãããŸãããç§ãLÃVEã®ããã«äœæãããã¹ãŠã®ã©ã€ãã©ãªãŒã¯ããã®ã¢ã€ãã¢ã«åŸã£ãŠããŸãïŒãªããžããªãŒã§èŠã€ããããšãã§ããŸãïŒã
ãã®ãããªåæ£åã®å©ç¹ã¯ã誰ãã®ã©ã€ãã©ãªãç°¡åã«ååŸããã²ãŒã ã§äœ¿çšããããŒãºã«åãããŠèª¿æŽã§ããããšã§ããäžè¬ã«ããã¹ãŠãæ©èœããŸãããã®åæ£åã®æ¬ ç¹ã¯ãåã©ã€ãã©ãªãç§ãç¯çŽã§ããæéããæšæºã®ã»ããã«é¢ããŠããéäžåãããã³ãŒããšæ¯èŒããŠçãããšã§ããããã«ã€ããŠã¯ãç¬èªã®ã«ã¡ã©ã©ã€ãã©ãªã䜿çšããäŸã§æ¢ã«èª¬æããŸãããããã¯ããã¹ãŠãé«éã«è¡ãããšã«åããŠããŸãã
ãããã£ãŠãç§ããšã³ãžã³ã§æ¬åœã«ããããããšã®1ã€ã¯ããã¹ãŠãæ£ç¢ºã«åžæã©ããã«éäžåããæ©èœãšãå€ãã®ä»®å®ãç«ãŠãæ©èœã§ããããã«ãããäœæ¥ã®ããŒã¹ãåäžããŸãïŒãŸããçç£æ§ãåäžããŸãïŒã