ã²ãŒã ã®çç£æ§ã10åé«ããããšãã§ãããšèšã£ããã©ããªããŸããïŒ å®éãããã¯å®å šã«çå®ã§ã¯ãããŸãããããã¹ãŠã®ãžã§ãŒã¯ã«ã¯çå®ããããŸãã ç§ãã¡ãçŸåšåãçµãã§ããããšãUnityã®å°æ¥ã¯ã©ããªããããããŠä»ããªãã䜿çšã§ããããšã«ã€ããŠã話ããããšæããŸãã
Unityã¯å®å šã«ç°ãªãã²ãŒã ãäœããŸãã ããã«ãç§ãèªåã§ãã¬ã€ããäŸãããã€ã瀺ããŸãã ãããã¯ç°ãªãæ©èœã䜿çšããç°ãªãããã©ãŒãã³ã¹ãéçºãžã®ç°ãªãã¢ãããŒããå¿ èŠã§ãã
ãããŠãããã©ã«ãã§ããã©ãŒãã³ã¹ãšåŒã°ãããããžã§ã¯ãã«åãçµãã§ããŸãã ãããã¯ãé©åã«äœ¿çšãããšãããã©ãŒãã³ã¹ãå€§å¹ ã«åäžããç¹å¥ãªæ©èœã§ãã äžéšã®ã¿ã¹ã¯ã§ã¯ãx10ãããã«x11ã枬å®ããŸããã ç¹ã«ãçžäºäœçšããå€æ°ã®ãªããžã§ã¯ããã·ãã¥ã¬ãŒãããåé¡ã§ã¯ã
ããããPerfomance by Defaultã«ã€ããŠè©±ããšããéçºãžã®ã¢ãããŒããå€ããã²ãŒã ã®ã¢ãŒããã¯ãã£ãžã®ã¢ãããŒãã倧ããå€ããªããã°ãªããªãããšãæå³ããŸãã ãããŠå®éã誰ãããããå¿ èŠãšããããã§ã¯ãããŸããã
ãããã質åïŒãECSã§äœãããŠããŸããïŒ ãã¹ãŠã®GameObjectãåé€ãããã¹ãŠã®å€æãéå±€ãããã³ã³ã³ããŒãã³ããåé€ããŸããïŒã ããããç§ãã¡ã¯çãããæ®ããŸãã Unityã¯çŸåšãšãŸã£ããåãããã«äœ¿çšã§ããŸãããããã©ãŒãã³ã¹ãããã«åäžãããã«ã¯ãç°¡åã«èª¬æããããã¯ãããžãŒã«ã€ããŠç¥ãå¿ èŠããããŸãã
ãŸããScriptable Render PipelinesïŒSRPïŒãšåŒã°ããå¥ã®ãã¯ãããžãŒã«ã€ããŠèšåããããšæããŸããããã«ãããã²ãŒã ã®ã¬ã³ããªã³ã°ãã€ãã©ã€ã³ãããå¹ççã«ã¬ã³ããªã³ã°ã§ããŸãã ãããããUniteã®1ã€ã§ç€ºãããã¢ãèŠãã§ãããã ããã§ã¯ããªã¢ã«ã¿ã€ã ã§PCäžã§ãçŽ6äžå°ïŒ10äžå°ã«éããå°ãæžéãå§ããŸãïŒã®èšå€§ãªæ°ã®ãŠããããã·ãã¥ã¬ãŒããããŸãã
ãããŠãç§ãã話ããããæ°æ©èœã¯ãEntity Component SystemïŒECSïŒãCïŒJob Systemãæ°ããBurstã¹ãŒããŒã³ã³ãã€ã©ãŒãããã³Scriptable Render PipelinesïŒSRPïŒã§ãã
ç¹°ãè¿ããŸããç§ãã¡ãšäžç·ã«é²ãã§ããããæ°ããæè¡ãåŠã¶ãããéã皌ãã ãã§ç°¡åã«äœããã²ãŒã ãéçºããŠãæ§ããŸããã
ç§ãã¡ã解決ããããšããŠããããšãç解ããããã«ã¯ã2018幎ã®éã®ç¶æ ãç解ããããšãéèŠã§ãã
CPUã³ã¢ã®ããã©ãŒãã³ã¹ãšæ°ãã©ã®ããã«å¢å ããŠãããã«æ³šç®ããŠãã ããã ããæç¹ãããã·ã³ã°ã«ã¹ã¬ããã®ããã©ãŒãã³ã¹ãäœäžããŸããã ã€ãŸããçŸåšå€ãã®ã³ã¢ããããŸããããããã®çç£æ§ã¯ããã»ã©éãæé·ããŠããŸããã ãããã£ãŠããã¹ãŠã®ã³ã¢ã®ãã¯ãŒã䜿çšããããšæããŸãã
ç§ã®æºåž¯é»è©±ã«ã¯8ã€ã®ã³ã¢ããããŸãïŒ4ã€ã®åŒ·ãã³ã¢ãš4ã€ã®åŒ±ãã³ã¢ã ãŸããææ°ã®æºåž¯é»è©±ã¯ææ°ã®ã³ã³ãã¥ãŒã¿ãŒãšåãé床ã§å®è¡ã§ããŸãïŒãã ããéç±ã®ããããã»ã©é·ãã¯ãããŸããïŒã ãŸããããã©ãŒãã³ã¹ã®åäžã¯ãã¹ãŠã®ã³ã¢ã䜿çšããã ãã§ãªããã·ã³ã°ã«ã³ã¢ã®ããã©ãŒãã³ã¹ãæé©åããããšãç解ããå¿ èŠããããŸãã
æåŸã®åçã¯ãããã»ã¹ã®ããã©ãŒãã³ã¹ãã©ã®ããã«åäžããã¡ã¢ãªã¢ã¯ã»ã¹é床ãããã»ã©åäžããªããã®äŸãšããŠåžžã«ç€ºããŠããŸãã
çŸåšãã¡ã¢ãªãžã®ã¢ã¯ã»ã¹ãéåžžã«é ãããšãããããŸãã ããã»ããµã¡ãŒã«ãŒã¯ãã®éããå¹³æºåããããã«å€ãã®ããšãè¡ããŸãããã£ãã·ã¥ãè¿œå ããCPUã¯ææ©çãªèšç®ã«åŸäºãã次ã«å®è¡ãããã³ãŒããäºæž¬ããããšããŸãã ãããŠãããªããã²ãŒã ãäœããšãïŒãŸãã¯ç§ãã¡ãããªãã®ããã«ãšã³ãžã³ãäœããšãïŒã«ããã«ã€ããŠèããªããã°ãç§ãã¡ã¯ææ°ã®ããã»ããµãæ倧éã«æŽ»çšããããšã¯ã§ããŸããã
ããªãã®å€ãã¯ãUnityã§åæ§ã®ç»åãèŠãã®ã«äœæéãè²»ããã§ãããã
ããã§ã¯ããã«ãã¹ã¬ãããååšããããšãããããŸãããã³ã¢ãšã¹ã¬ããã®æ®ãã¯ã»ãšãã©ããžãŒã§ã¯ãããŸããã äœããè¡ãããŠããŸãããç§ã¯ããããå®å šã«å æããããšæããŸãã
ããã§ã¬ã³ããªã³ã°ãå®äºããŸãããããã¯ãã©ãã¯ããã¯ã¹ã§ãã éžæè¢ã«ã¯ãForwardãŸãã¯Deferredã«å ããŠããããªã¢ã«ãã·ã§ãŒããŒãã³ãã³ããããã¡ãŒãªã©ã®ããŸããŸãªèšå®ããããŸãã çŸããç»åãäœæã§ããŸãããå€ãã®ã¢ã«ãŽãªãºã ãå®è£ ããã®ã¯éåžžã«å°é£ã§ãã
ãããŠãUnityã®ã¢ãŒããã¯ãã£ã«ã€ããŠã¯ãã³ã³ããŒãã³ããã²ãŒã ãªããžã§ã¯ãããã©ã³ã¹ãã©ãŒã ã®éå±€ããã¹ãŠã®ã³ãŒããMonoBehaviourã®ãã¹ãŠã®ããŒã¿ããããŠåã³ã³ããŒãã³ãããã®ããŒã¿ãåŠçããããšã«ã€ããŠããã¹ãŠç¥ã£ãŠããŸãã
ããããçŸç¶ã«ã¯åé¡ããããŸãã é ããæ©ãããããªãã¯ããã«åºããããããªãããããããå¿ èŠããããã©ãããç解ããŸãã ãªããžã§ã¯ãã®éå±€èªäœã«ã¯äžå®ã®ãªãŒããŒãããããããäžéšã®ãšã³ãã£ãã£ã¯ã²ãŒã ãªããžã§ã¯ãã§ããå¿ èŠã¯ãããŸããã ãŸããå€æ°ã®ã³ã³ããŒãã³ããšãããããã®æŽæ°ãããå Žåããã¹ãŠãéåžžã«é ããªããŸãã ç§ã¯ãã€ãŠãã®èšäºãæžããŸããããããããããªãæ¹æ³ãç¥ããããªãããŸã é¢é£ããŠããŸãã
ããã»ããµã®ã³ã³ããã¹ãã§æãéèŠãªããšã¯ããã¹ãŠã®ã³ã³ããŒãã³ãããã¹ãŠã®ããŒã¿ãã¡ã¢ãªã«æ£åšããŠãããããããã»ããµãã£ãã·ã¥ã®äœ¿çšãäžæãããããšã§ãã
ä»ãç§ã¯ããã«æ°ããæ©èœãè©Šãããã§ãã
ECSãšã¯äœããã©ã®ããã«æ©èœãããã«ã€ããŠã¯ããŸã泚ç®ããŸããã ãã€ã³ãã¯ããšã³ãã£ãã£ãæã£ãŠãããšããããšã§ãããšã³ãã£ãã£ã¯ãã²ãŒã å ã®ç¹å®ã®ãšã³ãã£ãã£ã®IDã«ãããŸãããã³ã³ããŒãã³ãã®åœ¢åŒã§ããŒã¿ãä¿åããŸãã ããŒã¿ã®ã¿ãã³ãŒããªãã ã·ã¹ãã ã¯ç¹å®ã®ã³ã³ããŒãã³ãã§ãšã³ãã£ãã£ãåŠçããäœããã®åœ¢ã§ãã®ããŒã¿ãå€æŽããŸãã
ãªãECSãè¡ãã®ãã競åä»ç€Ÿãããã©ã®ããã«åªããŠããã®ãïŒ ããã€ãã®ãã€ã³ãããããŸãã ãŸããå®å šã«å ¬åŒã§ã¯ãããŸããããä»ã¯ãšã³ãžã³ãå®è¡ãããšæããŸãã çŸåšã®Unityã³ã³ããŒãã³ãã§ããGameObjectsãåãé€ãããã¹ãŠãå®å šã«æšãŠãŠECSãã€ã³ã¹ããŒã«ããããªãããšã¯æããã§ãã ããããæã ã¯ããè¯ââããšã³ãžã³ã«åãã£ãŠåãããã§ãã
é«ãããã©ãŒãã³ã¹ãæåŸ ããŠããŸãã å°ãåãŸã§ãMike Actonãåå ããŸããïŒC ++éçºãããŠããå Žåã圌ã¯ããŒã¿æåããã°ã©ãã³ã°ã®äŒéè ã®1人ã§ããããšãããããŸãïŒã ãããŠãã·ã¹ãã å šäœãå¯èœãªéãé«éã«åäœãããã-C ++ãããé«éã«ãããã
ãŸããããŸããŸãªãã®ãECSã«ãã€ãã£ãã«çµ±åããæ¹æ³ã«ã€ããŠãèããŠããŸãã ãã°ããåã«ãæ°ãããããã¯ãŒã¯ãäœæããŠããããšãçºè¡šããŸãããããã¯ECSã«ãåºã¥ããŠããŸããECSã§ãã«ããã¬ã€ã€ãŒã²ãŒã ãäœæããã¯ã©ã€ã¢ã³ããšãµãŒããŒéã§ã³ãŒããå ±æããããšãå¯èœã«ãªããŸãã
Unityã§ãããã°ããŒã«ã«åãçµãã§ããŸãã ã€ãŸã ECSã¯ã²ãŒã ãªããžã§ã¯ããã³ã³ããŒãã³ããšã¯å¥ã«ååšããŸãããããã¯éåžžã«äžäŸ¿ã§ãã ç©äºãåçŽåãããã
次ã®ãããªDebugViewããããŸãã
ããã§ã¯ãææããŠãããšã³ãã£ãã£ã®çš®é¡ãåŠçã«å¿ èŠãªã·ã¹ãã ã®æéãã€ã³ã¹ãã¯ã¿ãŒã§ç¢ºèªã§ããã³ã³ããŒãã³ããšã³ã³ããŒãã³ãããšã®ã·ã¹ãã ãã³ã³ããŒãã³ãã®åãšã³ãã£ãã£ã®ããŒã¿ã確èªã§ããŸãïŒAPIã¯é »ç¹ã«å€æŽãããå€ãã®ãã¥ãŒããªã¢ã«ã¯ãã§ã«å€ããªã£ãŠãããããããŸããïŒã
ãŸããæ°ããéçºUnity for Small ThingsïŒããã¯ãã€ã³ã¹ã¿ã³ãã¡ãã»ã³ãžã£ãŒåãã®ã²ãŒã ãäœæã§ããéåžžã«å°ããªã©ã³ã¿ã€ã ã§ãïŒãèããå Žåããã¹ãŠãECSã§æ§ç¯ãããŸãã
æè¿ãéçºãšECSãžã®ç§»è¡ã®ããŒã ã¯éåžžã«äººæ°ã®ããæè¡ã§ããã誰ãããããç¥ãå¿ èŠããããŸãã
ããã°ã©ããŒåãã®äŒè°ãããã®ã§ãã³ãŒãã¹ã©ã€ããªãã§è¡ãã®ã¯å°é£ã§ãã ããã«ã¯å€ãã®ã³ãŒãããããŸãã®ã§ãäœããæ確ã«ããããã«äœããã®çš®é¡ã®ããããããéšåãåŒãåºãã®ã¯é£ããã§ãã
å®éãCïŒJob Systemã§åäœããäŸãã1ã€ã®ã·ã¹ãã ãåããŸããïŒããã«ã€ããŠã¯åŸã§è©³ãã説æããŸãïŒãã³ãŒãéãåæžããããã«å€ãã®ããšãè¡ããæ§æshugarãè¿œå ããŸãã
RotationDataã³ã³ããŒãã³ãã§åäœããã·ã¹ãã ããããç¹æ®ãªTransformAccessArrayã§è¡šãããGameObjectå€æãå¿ èŠã§ãã ãããŠãã·ã¹ãã ã®åæŽæ°ã¯ããžã§ããäœæãããã®ãžã§ããå®è¡ããã©ããã§æŽæ°ããããã€ãã®ã°ã«ãŒãã«åå²ããŠç°ãªãã¹ã¬ããã§å®è¡ã§ããŸãã
ãããžã§ã¯ãã§ã®äœ¿çšæ¹æ³ ä»ã®ECSå®è£ ã®å Žåãšåæ§ã«ãïŒGameObjectsãTransformsãšã¯ç°ãªãïŒãŸã£ããç°ãªãæ¹æ³ã§èããå¿ èŠãããããšãç解ããå¿ èŠããããŸãã ãããŠããã®èãã«æ £ããŸãããã ãã²ãŒã ãäœæããŠECSã«åãæ¿ããã-ã©ã®ããã«ïŒããªã©ã®è³ªåãããåããããããããžã§ã¯ãã®æåããå§ããå¿ èŠãããããšã¯æããã§ãã å®æããã²ãŒã ã§ã¯ããããè¡ãã®ã¯éåžžã«å°é£ã§ãã
ECSã¯ãã®å°ããªäžçã§å¥ã ã«äœãã§ããã®ã§ãUnityãšã®çžäºäœçšãéããŠèããå¿ èŠããããŸãã GameObjectsããã³Transformsãšã®ããåãã®æ©äŒãããã€ãæäŸããŸãããç©çåŠãã¬ã³ããªã³ã°ãªã©ãããã§ã¯ãŸããŸãè€éã«ãªããŸãã ãããŠã䜿ãæ £ããã€ã³ã¿ãŒãã§ã€ã¹ã®å€ãã¯å©çšã§ããªããšããäºå®ã«ææ ¢ããå¿ èŠããããŸãããç§ãã¡ã¯ããã«ãåãçµãã§ããŸãã
ãããŠããã«ããžã§ãã·ã¹ãã ã§ã·ã¹ãã ãèšè¿°ããããšãèããå¿ èŠããããŸããããã¯ã¯ããã«å¹ççã§ãã
Job Systemã«ã€ããŠäžèšã ãã«ãã¹ã¬ããã³ãŒããèšè¿°ããããã®éåžžã«ç°¡åãªæ¹æ³ãäœæããããšèããŠããŸãã åæã«ãCïŒã§èšè¿°ãããã¹ãŠã確èªããééããç¯ãæ©äŒãäžãããããªããã©ãã§ãã©ã®ããã«äœæãããã瀺ãããããªãã§ãã ããã Jobsã§äœ¿çšã§ããèšèªæ©èœãå¶éãããã®ãµãã»ãããCïŒHigh Performance CïŒãšåŒã³ãŸãã ãžã§ãã³ãŒãã«ã¯åç §ãè¡ããããŸããããã¹ãŠã®ããŒã¿ãã³ããŒããå¿ èŠããããŸããå€æ°ã®èšèªæ©èœã䜿çšããããšã¯ã§ããªãããããã«ãã¹ã¬ãããæ®åœ±ããã®ã¯éåžžã«å°é£ã§ãã
ãŸããéåžžã«é«éãªã³ã¬ã¯ã·ã§ã³ãšECSãšã®çµ±åã玹ä»ããŸãã ãã®ECSãšãžã§ãã·ã¹ãã ã®æ§é ã«ãããéåžžã«é«éãªã³ãŒãå®è¡ãå¯èœã«ãªããŸãã
åæã«ããããã®ãã¯ãããžãŒã䜿çšããæ©äŒãæäŸããã ãã§ãªãããããã®ã·ã¹ãã ãšé£æºããŠããžã§ãã§äœ¿çšã§ããããã«æ°ããAPIãäœæããŸãã
ç©çåŠçšã®éåæã¬ã€ãã£ã¹ããäœæããŸãããããã䜿çšããŠãã600ã®ã¬ãŒããã£ã¹ããå¿ èŠã§ãããã€ããã£ãŠãã ããããšèšãããšãã§ããŸãã ãããã®ãã¯ãããžãŒã䜿çšããŠãPlaybles APIãä»ããã¢ãã¡ãŒã·ã§ã³ãªã©ãçŸåšã®ã·ã¹ãã ãæ¡åŒµã§ããããã«åãçµãã§ããŸãã ãããŠãC ++ã§éãããããã³ãŒããCïŒã§å©çšã§ããæ°ããã·ã¹ãã ãUnityã§äœæããããšãèããŠããŸãã
Jobã®ã³ãŒãã䜿çšãããšãéåžžã«ç°¡åã§ãã ãžã§ãã¯ãExecuteã¡ãœãããååšããæ§é ã§ãããã®ã¡ãœããã§ã¯ããã®ãžã§ããå®è¡ããŠäœæ¥ãè¡ããŸãã ãããã£ãŠãç§ãã¡ã®å éšã¹ã±ãžã¥ãŒã©ã¯ãã€ããããå®è¡ããã»ããè¯ãå Žæãç解ãããã¹ãŠã®äŸåé¢ä¿ã解決ããŸãã ããã§ãä»ã®ããã€ãã®ãžã§ãã®äŸåé¢ä¿ãšããŠäœ¿çšã§ããJobHandleãååŸããŸãã
ãããžã§ã¯ãã§ã®äœ¿çšæ¹æ³ Jobsãæåãã䜿çšããã®ã¯è¯ãããšã§ãããããã§ã¯å¿ èŠãããŸããã ã·ãã¥ã¬ãŒã·ã§ã³ãçµè·¯æ¢çŽ¢ããããã¯ãŒã¯ãªã©ãäœããã®ããã©ãŒãã³ã¹ãéèŠãªã·ã¹ãã ãããå Žåããã®ããŒã«ã䜿çšããŠæé©åããæ¹æ³ãèŠã€ããããšãã§ããŸãã
ãã ãããã®ããã«ã¯ãããã€ãã®å€§ããªã¹ããããèžãå¿ èŠããããŸããããŒã¿ãé©åã«ä¿åããæ¹æ³ãç解ããŠãã ããã å®éãECSã¯ããŒã¿ãã³ãŒãããåé¢ããECSã®å®è£ ã¯ã³ã³ããŒãã³ãããŒã¿ãã¡ã¢ãªã«ç·åœ¢ã«æ ŒçŽããã·ã¹ãã ã«ãã£ãŠãããã®ã³ã³ããŒãã³ããå®è¡ããããããã¹ãŠã®ããã»ããµæ©èœã䜿çšãããã¹ãŠããã£ãã·ã¥ã«æ ŒçŽããããããããŒã¿ãæ£ããæ ŒçŽã§ããŸãããªã© ç§ãã¡ã¯éåžžã«è¿ éã«ãããããããšããŸãã
次ã«ããã®äœæ¥ã䞊åã¿ã¹ã¯ã«åå²ãããžã§ãã³ãŒããèšè¿°ããŠå®è¡ããŸãã ãããŠïŒããããïŒãã¹ãŠãããªãã®ããã«åãã ãã¡ãããã³ã¢ã®æ°ãªã©ã«å¿ããŠãã¿ãŒã²ãããã©ãããã©ãŒã ã§ãã¹ãããå¿ èŠããããŸãã ããããç§ãèšã£ãããã«ããžã§ãã·ã¹ãã ãšECSã®äœ¿çšã¯ãã²ãŒã ã¢ãŒããã¯ãã£ã®èšç»æ¹æ³ã«ã倧ãã圱é¿ããŸãã
ãã®åŸããã¹ãŠãã¯ããã«ç°¡åã§ãã ããŒã¹ãã³ã³ãã€ã©ã¯ããã®CïŒïŒé«æ§èœCïŒïŒãµãããããçŸåšã®ãã©ãããã©ãŒã ã®ãã·ã³ã³ãŒãã«çµã¿èŸŒãç¹å¥ãªã³ã³ãã€ã©ã§ããããããžã§ã¯ãã«å ¬éããç¬èªã®ãã¯ãããžã§ãã
圌ãã¯ãããã圌ã以å€ã®èª°ãç解ããŠããªãéæ³ãããã€ãå®è¡ããŸãããããã®ããšã¯Jobã³ãŒãã10åé«éåããŸããããã¯éåžžã«ã¯ãŒã«ã§ãã ãããŠãæãã¯ãŒã«ãªããšã¯ãããªãããã®ã¢ã¯ã·ã§ã³ãå¿ èŠãšããªãããšã§ãããžã§ãã³ãŒããããå Žåã¯ã[BurstCompile]å±æ§ãè¿œå ããã ãã§ãããŒã¹ããã³ãŒããã³ã³ãã€ã«ãããç¡æãã®ããã©ãŒãã³ã¹ãåŸãããŸãã ãããç§ãã¡ã®æ°ããæè¡ã§ãããä»ããè©Šãããšãã§ããŸãã
æåŸã«ç°¡åã«èšåãããã®ã¯Scriptable Render PipelineïŒSRPïŒã§ããããã¯éåžžã«é·ãéåãçµãã§ãããç¹å®ã®ã²ãŒã çšã«éåžžã«ã«ã¹ã¿ã ã¬ã³ããªã³ã°ãèšè¿°ããæ©äŒãæäŸããããã«èšèšãããŠããŸãã
ã¬ã³ããªã³ã°ãã€ãã©ã€ã³ã¯ãã«ãªã³ã°ïŒæç»ããããªããžã§ã¯ãïŒãã¬ã³ããªã³ã°ãããã³åŸåŠçãè¡ãã¢ã«ãŽãªãºã ã§ãã ããã§ãForwardãŸãã¯Deferredã®ãã©ãã¯ããã¯ã¹ãäœæãããŸãããæ¢ã«è¯å¥œã§ããæºåž¯é»è©±ãPCãã³ã³ãœãŒã«ã§éåžžã«ã¯ãŒã«ãªã°ã©ãã£ãã¯ãååŸã§ããŸãã ãã ããæ¡åŒµã§ããªããããå€ãã®å¶éããããŸãã ãã®æ°ããæ©èœã§ããSRPã䜿çšãããšããã€ãã©ã€ã³ãèšè¿°ããããããããäœããåé€ããããè¿œå ããããå¿ èŠãªããšãå®è¡ãããã§ããŸãã
çŸåšããã€ãã©ã€ã³ã®2ã€ã®äŸã«åãçµãã§ããŸãã ç§ãã¡ãæºåž¯é»è©±ãšåŒ±ãããã€ã¹ã察象ãšãã1ã€ã®LWRPãšãPCãã³ã³ãœãŒã«ã察象ãšããæ¥çã®éåžžã«æåãªäººã ãäœæ¥ããHDRPã ãã®åã«ã圌ãã¯AAAã²ãŒã ãäœããŸããã 確ãã«ãããªãã¯ç§ãã¡ã®ãã¢Book of the DeadãèŠãŸããã
ããã§ã¯ããã®æè¡ã®ãã«ãã¯ãŒã瀺ãããã«HDRPã䜿çšããŸããã
ããã䜿çšããã«ã¯ãããªãå€ãã®ããã€ãã¯ãªã¹ããããèžãå¿ èŠããããŸããããã¯ãæ°ããPipelineã§çŸåšè¡ãããŠãããã®ãšå®è³ªçã«äºææ§ããªãããã§ãã ã€ãŸã ã¬ã¬ã·ãŒã§ã¢ããã°ã¬ãŒãããå Žåãã»ãšãã©ã®ãããªã¢ã«ãã¢ããã°ã¬ãŒããããŠãŒãã£ãªãã£ãæäŸããŸãããã·ã§ãŒããŒãæžãæããå¿ èŠããããŸãã ãã¯ã¹ãã£ã¯ããããç°ãªã£ãŠèŠããã§ãããã
ãŒãããå§ããŠPipelineãè©ŠããŠã¿ãããšãã§ããã°ããšãŠãã¯ãŒã«ã§ãã ãã€ãã©ã€ã³ã§äœãããããå Žåã¯ããåãåãããã ããã
ç¹°ãè¿ããŸãããå¿ èŠãªããšãç解ããŠãã ãããããã¯äœããããæ©äŒãå¢ããããã§ãããããããããè¡ãããšãã§ãã人ãå¿ èŠã«ãªããããããè¡ãæ¹æ³ãåŠã¶å¿ èŠããããŸãã
ç§ã®æèŠã§ã¯ããããã®æ°ããæè¡ãç§ãã¡ãšäžç·ã«é²ãã人ã¯åžå Žã§ããå€ãã®éèŠãããã®ã§ãããã¯ã¯ãŒã«ã§ãã ããã ãã§ãã誰ãããããã®æè¡ãèŠãŠãçŸããã¯ãŒã«ãªã²ãŒã ãäœã£ãŠãããããšãæãã§ããŸãã
èŽè¡ããã®è³ªå
-ECSãå©çšããŠéçºã§ããã®ã¯ãã€ã§ããïŒ
-ECSã䜿çšã§ããŸããåé¡ã¯ãçŸåšã®åœ¢åŒã§ã¯ãããã©ãŒãã³ã¹ã«çŠç¹ãåœãŠãŠãã人ã ãã€ãŸã ããçš®ã®AAAãããžã§ã¯ãã ãããŠUnityã®ã¿ã¹ã¯ã¯ãããã©ã«ãã§ããã©ãŒãã³ã¹ããã¹ãŠã®äººãå©çšã§ããããã«ããããšã§ãã ãã®ãããäœããã®ã·ã¹ãã ãECSã®ã¢ããªã³ãå¿ èŠã§ããããã«ãããçŸåšMonoBehaviorã䜿çšããŠããã®ãšåãããã«ç°¡åã«ECSã䜿çšã§ããŸãã ãã®ãããªã¢ãã€ã³ã¯ãããŸããããECSãå®å šãªãªãªãŒã¹ã§ãªãªãŒã¹ããããšã¯æããŸããã ãããŠããŠãŒã¶ãŒã®1ïŒ ã䜿çšããæ©èœãäœæããããšãããããŸããã ãããŠãããã¯Unityã®ã¿ã¹ã¯ã§ã¯ãããŸããã ãã§ã«æ¬çªç°å¢ã§ECSã䜿çšããŠãã人ã ãç¥ã£ãŠããŸããããã®æ©èœã¯ãŸã éçºæ®µéã«ãããçŸåšæã䟿å©ãªã€ã³ã¿ãŒãã§ã€ã¹ãäœæããæ¹æ³ã®åé¡ã解決ããŠããããšã«çæããŠãã ããã ãããŠã次ã®ã¿ã¹ã¯ïŒããã»ã©é£ããã¯ãããŸããïŒã¯ããã®ECSã®äžã«ããããçš®ã®APIãäœæããMonoBehaviourãšåã䜿ããããã§äœ¿çšã§ããããã«ããæ¹æ³ã§ãã ã€ãŸã ããã€ããšãã質åã«å¯Ÿããçãã¯ãããŸããã
-ECSããã³ãã®ä»ã®ã¢ã€ãã ã¯ãåºæ¬çãªGameObjectãååŸãããã®ã¯ããŒã³ã15äžåäœæããŠç®¡çããããšã«çŠç¹ãåœãŠãŠããŸãã ãããããªããžã§ã¯ããã»ãšãã©ãªãããšã³ãã£ãã£ãç°ãªãå Žåã¯ã©ããªããŸããïŒ
-ååãšããŠãããªãã¯äœãããããšãã§ããŸããããã®æè¡ã¯ããã䜿çšãã矩åãè² ããŸããã ãããã®ãã¯ãããžãŒã䜿çšããŠããã©ãŒãã³ã¹ãåäžã§ããå Žåã¯ããããã䜿çšããå¿ èŠããããŸãã ãããèªåã«é¢ä¿ãªãå Žåã¯ãUnityããã®ãŸãŸäœ¿çšãç¶ããŸãã ãããã£ãŠãpanicãŠãªãã§ãã ããã
-Unityã®ã¯ã©ã€ã¢ã³ãã.NETã®ãµãŒããŒãUnityã®ãµãŒããŒãè©ŠããŸããããäœããããŸããã ããããåæã«ããµãŒããŒäžã®Unityã«ãããã¯ãããžãŒã䜿çšããããšæããŸãã
-ç§ãã¡ã¯ããã«åãçµãã§ãããä»ã§ã¯å¹æçãªãµãŒããŒãœãªã¥ãŒã·ã§ã³ãæäŸã§ããªãããšãç解ããŠããŸãã Unityã²ãŒã ã®é«å質ãªãã¹ãã£ã³ã°ãå®çŸããããã«ããã°ããåã«Multiplay瀟ãè²·åããŸããã ç§ãã¡ã¯åå¥ã«ãããã¯ãŒãã³ã°ãè¡ãããšã³ãžã³ãæé©åããŠãããå€ãã®ãã®ãæšãŠãããšãã§ããããã«ããŠããŸãã ãããã£ãŠããã¹ãŠãæã£ãæç¹ã§ãåªãããã«ããã¬ã€ã€ãŒãœãªã¥ãŒã·ã§ã³ãå®çŸããŸãã
Pixonic DevGAMM Talksãšã®ãããªãè¬æŒ
- Consulã䜿çšããã¹ããŒããã«ãµãŒãã¹ã®ã¹ã±ãŒãªã³ã° ïŒIvan BubnovãDevOps at BIT.GAMESïŒ;
- CICDïŒããŠã³ã¿ã€ã ãªãã®åæ£ã¯ã©ã¹ã¿ãŒã·ã¹ãã ãžã®ã·ãŒã ã¬ã¹ãªå±é ïŒEgor PanovãPixonicã·ã¹ãã 管çè ïŒ;
- ã²ãŒã Quake Champions ïŒRoman Rogozinãããã¯ãšã³ãéçºè Saber InteractiveïŒ ã®ããã¯ãšã³ããã©ãããã©ãŒã ã§ã¢ã¯ã¿ãŒã¢ãã«ã䜿çšããç·Žç¿ ã
- Tacticoolã¢ãã€ã«ãªã³ã©ã€ã³ã·ã¥ãŒã¿ãŒã¡ã¿ãµãŒããŒã¢ãŒããã¯ã㣠ïŒPavel PlattoãPanzerDogã®ãªãŒããœãããŠã§ã¢ãšã³ãžãã¢ïŒ;
- éçºã«ãããKISSåå ïŒKonstantin Gladyshevã1C Game Studiosã®ãªãŒãã²ãŒã ããã°ã©ããŒïŒ;
- ã¯ã©ã€ã¢ã³ããšãµãŒããŒã®äžè¬çãªã²ãŒã ããžã㯠ïŒPixonicã®å¯æè¡è²¬ä»»è ãAnton GrigorievïŒã
- Cucumber in the CloudïŒè£œåã¹ãã¬ã¹ãã¹ãã«BDDã¹ã¯ãªãããäœ¿çš ïŒALICE Platformã®ãã¯ãã«ã«ãããã¯ããããŒãžã£ãŒãAnton KosyakinïŒã