å³1.现èéå£ã¯ããã®ããŒãºã«åãããŠç°å¢ãåæ§ç¯ããŸãã
ã©ããïŒ
- ãããªç¿ãšããã°ã©ã ã®ã¢ã€ãã¢
- ããã°ã©ãã³ã°èšèªãç°å¢ãã©ã€ãã©ãª
- äœæ¥ããŒãžã§ã³ãåçŽããã
- è¿œå ã®ã¢ã€ãã¢
- æåã®èå³æ·±ãçµæ
- æé©åãæ§æ
- ããã°ã©ãã³ã°åäœ
- 䟿å©ãªæ©èœ
- ãããªãŒãã£ã³ã°ãèšç»
- ããã°ã©ã ããœãŒã¹ãæé ãžã®ãªã³ã¯
ãããªç¿ãšããã°ã©ã ã®ã¢ã€ãã¢
å¹³ããªè¡šé¢ã«ç²æ§ã®ããæ é€æ¶²ãããŒãããããªç¿ãæ³åããŠãã ããã ã©ããã§é£ç©ã®æ¿åºŠãé«ããã©ããã§äœãã ã«ããã®ããã€ãã®å Žæã§ãåãç²æ§ã®æ¯ç©ããããã€ãã®å Žæã§-ä¿¡å·ç©è³ªïŒããã§ãã¢ã³ãïŒãè¿œå ããè¡šé¢ã«ãã¯ããªã¢ã®ã³ãããŒãåçã«ååžãããŸããã ç§ãã¡ã«æ®ãããŠããã®ã¯ãç¹å®ã®ç°å¢ãžã®é©å¿æ§ãé«ããèå³æ·±ãçªç¶å€ç°ã®æé·ã芳å¯ããããšã§ãã 䌌ããããªããšããããã£ãã
ãããªç¿èªäœïŒç«¶æå ŽïŒã§ã¯ããã¹ãŠãæåããæ確ã§ãã-é£åãæ¯ããã§ãã¢ã³ã®2次å é åã§ãåãã¬ãŒã ããã£ãããšæ··ããåã£ãŠããŸãïŒéåžžã®ãã©ãŒã§ïŒã 競æå Žã¯éããŠããŸã-ããŒã©ã¹ã®è¡šé¢ãè¡šããŸãã ãããã现èã®å®è£ ã§ã¯ããã»ã©åçŽã§ã¯ãããŸããã ããããç¹å®ã®ã»ã«å ã®ãã£ãŒã«ãã«åå¥ã«é 眮ãããŠããå Žåãè€éãªã«ãŒã«ã®ã¿ã§å¥ã®ã»ã«ã©ãŒãªãŒãããã³ãåãåããŸãã ãããã£ãŠããããã®åºæ¬çãªç©çã¢ãã«ãäœæãã䟡å€ããããŸã-è¡çªã¯ãããŸãããããããŒã座æšãé床ãããã³æ©æŠããããŸãã ãããŠã现èãçžäºäœçšããé£ç©ãæ¯ãŸãã¯ãã§ãã¢ã³ã¯ãéå€ã®æãè¿ã现èããéžæãããŸãã
ãã¯ããªã¢ã¯æ é€å¹å°ãããšãã«ã®ãŒãåãåããæ¯ãšãã§ãã¢ã³ãåæ³ããããšãã§ããŸãã èç©ãããé£æã¯1ç§ããšã«æ¶è²»ãããã¢ã¯ã·ã§ã³ïŒç§»åãã¿ãŒã³ãå²ãåœãŠïŒãå éšãªãœãŒã¹ãæ¶è²»ããŸãã 现èã¯ãäžå®éã®é£ç©ãèç©ããåŸãåçŽãªåè£ã«ããç¡æ§çæ®ããŸãã ããã«ã身äœã«ã¯ãæ害ãªç°å¢ãç©ºè ¹æã«æžå°ããã©ã€ããã€ã³ãããããŸãã æ»ã«ãããŠãã现èã¯ãããããªé£ç©ãæ®ããŸãã æ¯ã¯ãã¯ããªã¢ã®æé·ãé»å®³ããã·ã°ãã«äŒéç©è³ªã¯ããçç©ãä»ã®çç©ã«ä»ã®ããšãäŒããããšãå¯èœã«ããŸãïŒããã®é åã¯ãã§ã«å é ãããŠããã®ã§ãããã«é£ã¹ç©ãéããããšã¯æçã§ã¯ãããŸããã
ã¢ã€ãã¢ãå®åŒåãããã®ã§ãå®è£ ãéå§ããŸãã
ããã°ã©ãã³ã°èšèªãç°å¢ãã©ã€ãã©ãª
ç§ã¯å°ãcheããæè¿ã®ãããžã§ã¯ããåºçºç¹ãšããŠäœ¿çšããŸãããããã®äžæ žã«ã¯ãæ§æãããŠã¹ãããŒããŒããã«ã¡ã©ã®æäœã«å¿ èŠãªãã®ãã¹ãŠãå«ãŸããŠããŸããã èšèª-C ++ 11ïŒ GCC 4.8.1ãMinGW ïŒãéçºç°å¢-NetBeans 7.4 ïŒããã³å Žåã«ãã£ãŠã¯Sublime Text 3 ïŒã°ã©ãã£ãã¯ã¹ïŒOpenGLïŒãæäœããããã®ã©ã€ãã©ãªãšããŠSFML 2.1ãéžæãã èšå®ãä¿åããjsoncppãéžæããŸããã æ®å¿µãªãããéçºã®åæ段éã§ã¯ããŒãžã§ã³ç®¡çã·ã¹ãã ãã€ã³ã¹ããŒã«ããããšã¯ã§ããŸããã§ããããããã¯äººçã倧ããæãªã£ãŠããŸããã ãã®ãããªæ©äŒãçŸãããšããã«-tortoiseHgã§æ°Žé ã ã芧ã®ãšããããã¹ãŠãã¯ãã¹ãã©ãããã©ãŒã ã§ãããå¿ èŠã«å¿ããŠãä»ã®ã·ã¹ãã ã§ãã¬ã€ããããšãå¯èœã§ãïŒçŸåšã¯XPã®ã¿ãæå ã«ãããŸãïŒã
äœæ¥ããŒãžã§ã³ãåçŽããã
ç§ã¯æåã液äœã®ãã£ãŒã«ããæµ®åå°æ°ç¹æ°ã®é åãšããŠäœæããŸããããã®ãããããã°ã©ã ã®æãé ãéšåã¯ãCPUäžã®ãã®ãã£ãŒã«ãããŒããããšã§ããã ãã ããåŸã§æé©åã«ã€ããŠã ãã¯ããªã¢ã®åãã¯éåžžã«åçŽã§ããå®éããã®ã³ãŒãã¯ãã¹ãŠã®ç©çãæ£åžžã«åŠçããŸãïŒ Verletçµ±åã䜿çšããŠããŸãïŒã
Math::Vector tmp = this->position; this->position += this->position - this->old_position; this->old_position = this->position - (1.0f - this->settings.friction) * (this->position - tmp);
次ã«ãå€ç°ã®ããªãšãŒã·ã§ã³ãšåäœã«ã€ããŠèª¬æããŸãã é床ããµã€ãºãªã©ã®ãç©çããã©ã¡ãŒã¿ãå€æŽããããããŸããã§ãããåäœãå€æŽããæ¹ãã¯ããã«èå³æ·±ãã§ãã ãããã£ãŠãå现èã«ã¯äžé£ã®ã¢ã¯ã·ã§ã³ãå«ãŸããŠããŸãã
MOVE, ROTATE_LEFT, ROTATE_RIGHT, CREATE_FEROMON, CREATE_POISON
åã¢ã¯ã·ã§ã³ã¯æµ®åå°æ°ç¹æ°ã§ããããã®å€ã¯åãã®ã匷ããã決å®ããŸãã ãããã£ãŠããã¯ããªã¢ã®ã¯ããŒã³ãäœæããå Žåãäœããã®ã¢ã¯ã·ã§ã³ã®äŸ¡å€ã¯ããçšåºŠã®ç¢ºçã§å€åããå¯èœæ§ããããŸãã
æããã«ããã®ãããªãé£ãããè¡åã§behaviorã調çããããšã¯ãããŸããããçµæã¯ç§ãã¡ãæããããããã«æªããã®ã§ãã æ¯ãåæ³ãã现èã¯ãã¹ãŠãåå«ãæ®ãããšãªãããã«æ»ãã ã 誰ãïŒç§ãé€ããŠïŒåæ³ããããã§ãã¢ã³ã«æ³šæãæããŸããã§ããïŒãããŸã§ã®ãšããã现èã«ã¯ã»ã³ãµãŒããããŸããã§ããïŒã ãã®çµæã誰ããã¡ããã©èªæµ·ãããã®äžã«é£ã¹ç©ã貪ãããããŠç¹æ®ã«å¿ èŠãªé£ã¹ç©ã®èç©ã§ã圌ãã¯ãŸã åãæããªçãç©ãäœæããŸããã
å¯äžã®çŸããçµæã¯ã现èãäœæ¯èæ§ã«èšå®ããããæ»åŸã«å€§éã®é£ç©ãæŸåºããããšãã§ããã ãã®å ŽåãæŸåºãããæ¯ã§æ»ã«ãããŠããŸããããæ é€äŸ¡ãé«ãæ»æçãªç°å¢ã§ã®åºç£ã«ååãªåå«ãæ®ãããšãã§ããŸããã
å³2.é«éã¯ããŒãã³ã°ãšææ¯ç°å¢
è¿œå ã®ã¢ã€ãã¢
ã©ããããææ¯ãªãæ¯ããšããã§ãã¢ã³ããšããä¿¡å·ã®æŠå¿µã¯éåžžã«æªãçµæããããããŸãã
- ã¡ãŒã«ãŒãšãã®åå«ã殺ãæ¯ãçç£ããããšã¯æçã§ã¯ãããŸããã
- ãã§ãã¢ã³ãçç£ããããšã¯æçã§ã¯ãããŸããïŒãããŠãå容äœã®ååšäžã§ãïŒããã¯ããªã¢ã®ååšãäžããŸããããã®ãå€èŠ³ããå ±åããŸããã
æ§è³ªã®ç°ãªã2ã€ã®ç¬ç«ããç©è³ªãæåŠãããããã®ä»£ããã«ãå现èããçæ³çãªç°å¢ã®ãã€ã³ããã«ããŸããã æ¯çã匷ãã»ã©ãæ··åç©ã®ã¯ãªãŒãã£ãŒã«å¯Ÿããæ¯æ§ã¯å€§ãããªããŸãã ãã®ç¹ïŒæµæïŒã®å€ã¯ã芪现èããåšçŽ°èã«ããããªæªã¿ããã£ãŠäŒéãããŸãã
ã¹ããŒã 1.身äœã«ãšã£ãŠçæ³çãªç°å¢
æåã®èå³æ·±ãçµæ
ãããã£ãŠãããŸããŸãªç°å¢ã§çãæ®ãããšãã§ããåšãã®äžçãå€ããã®ã«æçãªçãç©ã®å šéå£ãçºçããŸãã ããéå£ã®çæ³çãªç°å¢ã¯å¥ã®éå£ã«ãšã£ãŠæ害ã§ââãããåéå£ã¯é£ç©ãåŸãå¿ èŠãããããã競äºãçããã¯ãã§ããã ãããŠãããèµ·ãã£ãïŒ
å³3. 2ã€ã®ç°ãªãæ¯éå£ãç°å¢ãåæ§ç¯ããŸãã
æé©å
çµæã¯ãããããã§ãããé床ã«ã¯å€ãã®èŠæããããŸãããã¬ãŒã ããã50ã60ããªç§ã§16ã20 FPSãåŸãããŸãã ãããã¡ã€ãªã³ã°ã«ã¯gprofã䜿çšããŸãããgprofã䜿çšããªããŠããããã°ã©ã ã®ããã«ããã¯ãCPUäžã®ã液äœãã®é åãææ§ã«ããŠããããšã¯æããã§ãã ãããŠãçŸåšã®å®è£ ïŒç°ãªãè²ã®3ã€ã®æµäœãæŽãæµããŠç»é¢ã«è¡šç€ºããå¿ èŠããããŸãïŒãšGPUã§ã®æžãæããèŠæ±ããŸãã SFMLã§ã¯ãã·ã§ãŒããŒã®æäœãšãã¯ã¹ãã£ãžã®ã¬ã³ããªã³ã°ã¯éåžžã«ç°¡åã§ãã 1ã€ã®æ¬ ç¹ã¯ãæµ®åå°æ°ç¹ãã¯ã¹ãã£ã®ãµããŒãããªãããšã§ãã ãããã£ãŠããã¹ãŠã®æ¶²äœããããŒãïŒ-1.0ãã1.0ïŒããunsigned charïŒ0ã255ïŒã«è»¢éããsf :: ImageãšããŠä¿åããŸãã ãã£ãŒã«ããæŽæ°ãããšãããŒããã·ã§ãŒããŒã§ãã¯ã¹ãã£ã«ã¬ã³ããªã³ã°ããŸãã GLSLãã©ã°ã¡ã³ãã·ã§ãŒããŒãèšè¿°ããŸãïŒæåã¯ãããããããã€ãã®ä¿æ°ã䜿çšããŠãçŸåšã®ãã¯ã»ã«ãšãã®è¿åã®éåžžã®ç®è¡å¹³åã§ååã§ãïŒã
uniform sampler2D texture; uniform float blurSize; uniform float horizontalPass; uniform float sigma; uniform float width; uniform float height; vec2 ranged(vec2 v) { if (vx < 0.0) vx += 1.0; else if (vx >= 1.0) vx -= 1.0; if (vy < 0.0) vy += 1.0; else if (vy >= 1.0) vy -= 1.0; return v; } void main() { vec2 texcoordOffset = vec2(1.0, 1.0) / vec2(width, height); float k0 = 1.0; float k1 = 0.5; float k2 = 0.357; vec4 avgValue = texture2D(texture, gl_TexCoord[0].st) * k0 + texture2D(texture, ranged(gl_TexCoord[0].st - texcoordOffset * vec2(-1.0, -1.0))) * k1 + texture2D(texture, ranged(gl_TexCoord[0].st - texcoordOffset * vec2(1.0, -1.0))) * k1 + texture2D(texture, ranged(gl_TexCoord[0].st - texcoordOffset * vec2(-1.0, 1.0))) * k1 + texture2D(texture, ranged(gl_TexCoord[0].st - texcoordOffset * vec2(1.0, 1.0))) * k1 + texture2D(texture, ranged(gl_TexCoord[0].st - texcoordOffset * vec2(-1.0, 0.0))) * k2 + texture2D(texture, ranged(gl_TexCoord[0].st - texcoordOffset * vec2(1.0, 0.0))) * k2 + texture2D(texture, ranged(gl_TexCoord[0].st - texcoordOffset * vec2(0.0, -1.0))) * k2 + texture2D(texture, ranged(gl_TexCoord[0].st - texcoordOffset * vec2(0.0, 1.0))) * k2; gl_FragColor = avgValue / (k0 + 4.0 * k1 + 4.0 * k2); }
äœæ¥é床ã¯ããã«2ã2.5åã«å¢å ããŸããã æé©åã®äœå°ããããŸãã gprofã䜿çšãããšãããã«ããã€ãã®ããã«ããã¯ãèŠã€ãããŸãã
ããã§ããã¯ããæãäžå¿«ãªããã«ããã¯ã¯ã³ãŒãå ã®ããžãã¯ãã³ããŒã§ãããã®ãããèšå®ãå€æŽãããã³ã«ãããžã§ã¯ããåæ§ç¯ããå¿ èŠããããŸãã ãã¹ãŠã®èšå®ãjson configã«è»¢éããã®ã¯éåžžã«ç°¡åã§ãããçµæã«ã¯äŸ¡å€ããããŸãã
å³5.åæ§ã®éå£ã«ããç°å¢ã®åç·šæ
å³6.ã³ãããŒã®å¢æ®ãé ã
ããã°ã©ãã³ã°åäœ
çŸæç¹ã§ã¯ã现èã¯ãã®è¡åãå€ããããšãã§ããŸããã ãã®ã¢ã¯ã·ã§ã³ãå®çŸ©ããã¢ã¯ã·ã§ã³é åã¯ã现èã®åå«ã§ã®ã¿ãããã«å€åãããã®ç涯ãéããŠäžå®ã®ãŸãŸã§ãã äžè¬ã«ãé²åã®ããã»ã¹ã«ãããéå£ã®è¡åã¯åŸã ã«å€åããŠããŸã-æ害ãªçªç¶å€ç°ã¯é®æãããæçšãªçªç¶å€ç°ãèç©ãããŸãã ããããããã§ã®å©ç¹ã¯éåžžã«çžå¯ŸçãªæŠå¿µã§ãã
ããšãã°ããã¯ããªã¢ã¯{FEROMON = -0.5ãPOISON = 0.2}ãšããç°å¢ã«ããããã®çæ³çãªç°å¢ã¯{FEROMON = 0.6ãPOISON = 0.6}ã§ãã ãããã£ãŠãç°å¢ãçæ³ã«è¿ã¥ããããã«ãäž¡æ¹ã®ç©è³ªãå°éçç£ããããšã¯åœŒå¥³ã«ãšã£ãŠæçã§ãã ãããã圌女ã¯æ¢ããããšãã§ããããã°ããããŠãæ¯ãšãã§ãã¢ã³ãåæãç¶ãã圌女ã¯çæ³ããé¢ããŠèªåèªèº«ãç Žå£ããŸãã ç°å¢ãç£èŠããŠæ±ºå®ãäžãããã«ããã¯ããªã¢ãæããããšãããïŒ
ãããè¡ãæ¹æ³ã決å®ããããšã¯æ®ã£ãŠããŸãã ã¢ã»ã³ãã©ãŒã«äŒŒãèšèªã®ã¢ã€ãã¢ãããããã®æ瀺ã现èã®éºäŒåã³ãŒããæ§æããŸãã ãããããã®å Žåãããæçšãªè¡åããã°ã©ã ããå¥ã®è¡åããã°ã©ã ã«ç§»è¡ããã«ã¯å€ãã®çªç¶å€ç°ãå¿ èŠã§ãããçªç¶å€ç°ã®å€§éšåã¯èŽåœçã§ãã
ãããããã¥ãŒã©ã«ãããã¯ãŒã¯ïŒ ç§ã¯å现èã2å±€ã®å°ããªããŒã»ãããã³ãšããã€ãã®ãã£ãŒãããã¯ããè³ãäœãããšãè©Šã¿ãŸããã æåã®çŽ°èãäœæãããšãã®çµåã®éã¿ã¯ã©ã³ãã ã§ããããã®åå«ã§å€ç°ããŸãã ããã¯ãŸã£ããè³ãªããããããã«æªãããšãå€æããŸããã ãã®å°ããªå®éšãè¯ãçµæããããããšã¯æã£ãŠããŸããã§ããã é²åã®éžæã¯ãæãé©å¿ãããã¥ãŒã©ã«ãããã¯ãŒã¯ãåçŽã«æ®ãããšãã§ããªãã£ããšæãããŸãã 现èã®åšå²ã®ç°å¢ã¯é·å¯¿åœã®ããã«æ»æçããããããæåã¯ãã¥ãŒã©ã«ãããã¯ãŒã¯ãå®å šã«èšç·ŽãããŠãããã现èã«ç¡æå³ãªããŸãã¯æ害ãªã³ãã³ããããäžããŠããŸããã
ããã«æ°ããã¢ã€ãã¢ãæãã€ãã-æ¡ä»¶ã ç§ã®å Žåã®ç¶æ ã¯æ¬¡ã®ããã«ãªããŸãã
1å容äœ-çµæã«åœ±é¿ãäžããå ¥åããŒã¿ïŒFOODãFEROMONãPOISONãSPEEDãFATãLIFEãFEROMON_RESISTãPOISON_RESISTã
2æ¡ä»¶ä»ãéé-æ¡ä»¶ãçã§ãããšèŠãªãããå容äœå€ã®éé
3ã¢ã¯ã·ã§ã³-æ¡ä»¶ãæ£ç¢ºã«åœ±é¿ãããã®ïŒMOVEãROTATE_LEFTãROTATE_RIGHTãCREATE_FEROMONãCREATE_POISON
4æäœ-æ¡ä»¶ãæºããããå Žåã®ã¢ã¯ã·ã§ã³ã®å€æŽæ¹æ³ïŒAPPENDïŒãã¢ã¯ã·ã§ã³ã®å€ããã¢ã¯ã·ã§ã³å€ã«è¿œå ãããïŒãDEDUCTïŒãã¢ã¯ã·ã§ã³ã®å€ããã¢ã¯ã·ã§ã³å€ããæžç®ãããïŒãCLEARïŒã¢ã¯ã·ã§ã³å€ããŒãã«ãªãïŒ
5匷床-ã¢ã¯ã·ã§ã³ãå€åããæ°ã
ãããã£ãŠãæ¡ä»¶ïŒ
RECEPTOR[min, max], ACTION,OPERATION,VALUE.
å¹å°äžã®çŽ°è{-0.5ã0.2}ãšçæ³çãªå¹å°{0.6ã0.6}ã®ç¶æ³ãèããŠã¿ãŸãããã ãã®ãããªäžé£ã®æ¡ä»¶ã¯ãçæ³çãªç°å¢ã®äœæãšç¶æã圌女ã«æäŸããŸãã
FEROMON[-1.0,-0.4] CREATE_FEROMON APPEND 0.1 FEROMON[0.6,1.0] CREATE_FEROMON DEDUCT 0.1 POISON[-1.0,-0.5] CREATE_ POISON APPEND 0.1 POISON [0.7,1.0] CREATE_ POISON DEDUCT 0.1
ãããŠããã®ãããªæ¡ä»¶ã¯ããªããéåžžã«å¹ççã«é£ã¹ç©ãåŸãããšãã§ããããã«ããŸã
FOOD [0.0, 2.0] MOVE APPEND 1.0 // , FOOD [2.0, 10.0] MOVE CLEAR 0.0 // ,
ãã¹ãŠã®éºäŒæ å ±ãä¿åããå¥ã®DNAã¯ã©ã¹ãäœæããŸããã 现èãå¢æ®ãããšãç¹å®ã®ç¢ºçã§åéºäŒåãåé€ãŸãã¯è€è£œã§ããŸãã æ°ããã幞ããªéºäŒåæ¡ä»¶éºäŒåãè¿œå ããå¯èœæ§ããããŸãã äžé£ã®æ¡ä»¶ã«å ããŠã现èã®æ倧é床ãšçæ³çãªç°å¢ã®äŸ¡å€ãDNAã«ä¿åãããŸãã ãã¯ããªã¢ã«å¥ã®ã¢ã¯ã·ã§ã³ãæããããšããŸãããã掻æ§åã«ã¯æ¡ä»¶ã䜿çšããå¿ èŠããããŸããããçµæã¯éããã®ã§ããã ãããããã®ãããªãæ¡ä»¶ä»ããéºäŒåã®äœ¿çšã®1ã€ã®ç¹åŸŽã¯ãç§ã«ã¯èå³ãããããã§ããã ããšãã°ããã¯ããªã¢ã¯åžžã«äœéã§å転ããããšãæçã§ãã ãããã移åãããšããã¹ãŠã®å容äœã®å€ãå€åããŸãããã¯ããªã¢ã¯ãåžžã«å転ããå¿ èŠãããããšãã©ã®ããã«ç€ºããŸããïŒ é²åã¯ãæ¡ä»¶ãæããã«çã§ããå人ãéžæããããšããããŸãããããšãã°ãæ¯0.4ã«å¯Ÿããèæ§ãæã€POSION_RESIST [0.3ã0.6]ã§ãã äžæ¹ã§ã¯ããã®ã¢ãããŒãã«ããã现èã¯ç°å¢ãå容äœãã©ã¡ãŒã¿ãŒã«é¢ä¿ãªãç¹å®ã®ã¢ã¯ã·ã§ã³ãå®è¡ã§ããä»æ¹ã§ã¯ãçæ³çãªç°å¢ã®å€ç°ã®ã°ãã€ããå¶éããŸãïŒèæ§ãç¹å®ã®éçãè¶ ãã现èã¯ãã¹ãŠã®ç¡æ¡ä»¶ã®ã¢ã¯ã·ã§ã³ã倱ãããïŒã
ã¡ãªã¿ã«ãããæ¡ä»¶ã®èª²é¡ã¯é£æã®äŸçµŠã«ãè²»ããããããã倧éã®ãŽãéºäŒåã®æ¡ä»¶ãäœæããããšã¯ãé²åçã«æ¡ç®ãåããŸããã äŸåæ§ã«æ°ã¥ãããšãã§ããŸãïŒåã ã®ãã¯ããªã¢ã®DNAãèŠãïŒ-ããå€ãã®é£ç©ãããå€ãã®ãã¿éºäŒåãDNAã«ä¿åãããŸãã
èŠèŠçåŽé¢ããã®ãã€ãã¹ã¯ã现èãæ¡ä»¶ã«å¿ããŠç°ãªãè²ïŒãã§ãã¢ã³ãšæ¯ã®æ¯çïŒãçæããèœåã§ãããè²éå£ãžã®çŸããåè£ã¯å¿åŽã«æ²ã¿ãŸããã
å³7.æ¡ä»¶ä»ãè¡åããšã人å£ã«ããé£ç©æåã
䟿å©ãªæ©èœ
ããã°ã©ã ã«ã€ã³ã¿ã©ã¯ãã£ãæ©èœãè¿œå ããªãããšã¯äžå¯èœã§ããã ããšãã°ãæ¯ãé£ç©ãŸãã¯ãã§ãã¢ã³ãåŒãåºãèœåã ãã¹ãŠã®ç®¡çæ©èœã«ã€ããŠèª¬æããŸãã
- ã«ã¡ã©å¶åŸ¡ïŒ
- ã¹ã¯ããŒã« -ã«ã¡ã©ã®ãºãŒã ã€ã³/ãºãŒã ã¢ãŠã
- ã¹ã¯ããŒã«ããŒã§ãã©ãã° -ã«ã¡ã©ã移å
- æç»ïŒ
- ããŠã¹ã®å·Šãã¿ã³ -çŸåšã®ãã©ã·ã§æç»
- ã¢ãã -ãã©ã·ã®ãµã€ãºå€æŽ
- ããŠã³ -ã€ã³ã¯ã®å€æŽ
- ãã¹ãŠã®æ¶²äœã®æ確ãªç»é¢-q
- å¯èŠåïŒ
- 现èã®è¡šç€º/衚瀺- ã¹ããŒã¹
- ãã¹ãŠã®ãã¬ãŒã ã* .pngã§ä¿å-F8
- æ»ã«ãããŠãããã¯ããªã¢ã¯èµ€ããªãã飢ããŠãããã¯ããªã¢ã¯ã·ã¢ã³ã®è²åãã«ãªããŸãã
- é床ïŒ
- æäœã¢ãŒãã®åãæ¿ãïŒäœé/é«é/äžæåæ¢ïŒ- ããŠã¹ã®å³ãã¿ã³
- æ
å ±ïŒ
- ããŠã¹ã«æãè¿ã现èã®DNAã«é¢ããæ å ±ãååŸããã«ã¯ïŒæéã®åæ¢æã«ãéºäŒåã®åã«1/0ã䜿çšããããšããå§ãããŸã-æåŸã®ãã¬ãŒã ã§æ¡ä»¶ãæºãããããã©ããïŒ -i
- ããã°ã©ã èšå®ïŒ
- ãŠã£ã³ããŠèšå®-data / settings.json
- ãã©ã«ããŒèšå®ã®ä¿å-data / screensaver.json
- ãã£ãŒã«ãèšå®ããã¯ããªã¢ãªã© -ai.json ïŒãã¡ã€ã«ãç ŽæãŸãã¯åé€ãããå Žåãèªåçã«åŸ©å ãããŸãïŒ
ãããªãŒãã£ã³ã°ãèšç»
ãã®ããã°ã©ã ã¯å ã ããã€ã¯ããããã¿ã€ããšããŠäœæããã15åéåçãããŸããã ããããåŒãããããã ãããã£ãŠãã³ãŒãã«ã¯ãããã¿ã€ãã®ãã¹ãŠã®æ¬ ç¹ããããŸããããããæé€ããäºå®ã§ãã çµæã¯ãäžéããŒãžã§ã³ïŒDNAãªãããã³ãã«ãã«ã©ãŒã®åäœçŸ€ïŒã»ã©çŸãããããŸãããäŸãã°ãèµ·æºã«å¿ããŠçŽ°èãæè²ãããªã©ãä»ã®èŠèŠåãªãã·ã§ã³ãæ€èšãã䟡å€ããããŸãã ãã1ã€ã®éèŠãªåé¡ã¯ãé£ç©ã®éã®ãã©ã³ã¹ãåããŠããªãããšã§ããããã°ã©ã ãäžæ©äžæ©èœããéå£ãæ»ãªãªãããã«èšå®ãéžæããããšã¯å°é£ã§ãã
ãããç§ãè¿ãå°æ¥ã«å€ããããã®ã§ãã
- ãã£ãŒã«ãã»ã«ã®æµ®åå°æ°ç¹å€ã®å埩ïŒãã ãããããªã«ãŒãäžã«ããïŒããããŒãããucharãžã®äžå®ã®å€æïŒæ倱ããïŒãåé€ããŸãã
- æé©åã ãã¯ããªã¢ã®ã¯ããŒãã³ã°ãªã©ãå€ãã®ããã«ããã¯ã
- 䞊ååã ããã°ã©ã ã¯åäžã®ã¹ã¬ããã§å®è¡ãããŸãããããã°ã©ã ã¯å®å šã«äžŠååãããå¿ èŠããããŸãã
- ç©è³ªã®èªåãã©ã³ã¹ã å¿ èŠã«å¿ããŠãã£ãŒã«ãã«é£ã¹ç©ãè¿œå ããŸã
- ãšãã³ã®åã ãã®åŸã®å¹é€ã§æãæåãã现èã®éžæã
ããã°ã©ã ããœãŒã¹ãæé ãžã®ãªã³ã¯
ããã°ã©ã ã®ææ°ã®ã³ã³ãã€ã«æžã¿ããŒãžã§ã³
ããã°ã©ã ã®ãœãŒã¹ã³ãŒã ïŒå®è¡ãã©ã«ããŒå ã®ã³ã³ãã€ã«æžã¿ããŒãžã§ã³ïŒã«ã¯ã SFML 2.1ããã³jsoncppãå¿ èŠã§ã ã æåŸã®ç¬éãŸã§ãbox2dïŒåã®ãããžã§ã¯ãã®éºç£ïŒã®b2vec2ããã¯ã¿ãŒãšããŠäœ¿çšããæåŸã®ã³ãããã§ã®ã¿ãèªå·±èšè¿°ãã¯ã¿ãŒã«çœ®ãæããããšã«æ³šæããå¿ èŠããããŸãã ãããã£ãŠãå€ãããŒãžã§ã³ãåéããå Žåã¯ãæ°ããMath :: Vectorãããããcore / math / vector.hã«è»¢éããŸã
ai.jsonã®èšå®ã§éãã§ãai.exeãå®è¡ããé²åã远跡ããŸãïŒãŸãã¯ç©æ¥µçã«ä»å ¥ããŸãïŒã
çŽ æµãªé²åãïŒ