ããã«ã¡ã¯ Rustã§ã²ãŒã ãéçºããŠããŸãããããã«ã€ããŠã話ããããšæããŸãã
ç§ã®æåã®èšäºã¯ãRustã§ã²ãŒã ã®äœæãéå§ãããããã©ã®ããã±ãŒãžïŒ ã¯ã¬ãŒã ïŒã䜿çšãã䟡å€ããããã²ãŒã éçºè ã«ãšã£ãŠRustãšã³ã·ã¹ãã ã§äœãèµ·ãã£ãŠããã®ããããããªã人ã«åœ¹ç«ã¡ãŸãã
å°ããªäœè«-ãªããããã¹ãŠã§ããïŒ æºåãã§ããXã¯ãããŸããïŒ
ãã®ããã©ãŒãã³ã¹ã«æéãåããŠãHaskellã§ã²ãŒã ãšã³ãžã³ãæžãå§ããŸããã ç©äºã¯ããŸããããŸããã§ããããã¬ã³ããªã³ã°ã¢ãã«ãã·ã³ãã«ãªç §æãå°ãã®ãããã¯ãŒã¯ãæžããŸããã
Haskellã¯ãã©ã³ã¿ã€ã ãã§ãã¯ããåã·ã¹ãã ã«ã³ã³ãã©ã¯ãã移åããããšãå¯èœã«ããŸããã ãŸããã«ãŒããã¯ãèªãæ®ãã®ããšã¯ãé¢æ°ããã®åã§å®£èšããããšãæ£ç¢ºã«è¡ãããšã確èªããããšã§ãã ã²ãŒã ã³ãŒãã®å®éã®æ£åŒãªæ€èšŒã«å°ãè¿ã¥ããŸããã€ãŸããçè«çã«ã¯ããã¹ãããŸã£ããè¡ããªããŠãæ£åžžã«åäœããããšãä¿èšŒããŸãã
ããããHaskellã«ã¯ããã€ãã®åé¡ããããŸãã-ãªã¢ã«ã¿ã€ã ã®3Dåºåã§ã¯ããªãé ãã§ãã ã²ãŒã ã«é¢ããã³ãã¥ããã£ã¯ãããŸããã§ããã ã²ãŒã ã«å¿ èŠãªã©ã€ãã©ãªãååã§ã¯ãããŸããã§ããã
Rustã䜿çšãããšããã¹ãŠãããã«æ¥œãããªããŸããã
ç§ã®æèŠã§ã¯ãRustã¯ã²ãŒã éçºè ãå¿ èŠãšãããã¹ãŠã®ããããã£ãéåžžã«æ£ããæ¯çã§çµã¿åãããŠããŸãã
匷åã§ãããåæã«åçŽãªåã·ã¹ãã ã
æœè±¡åã®ããã©ãŒãã³ã¹ã¯ç¡æã§ã-æ瀺çã«äœ¿çšããªãæœè±¡åã«å¯ŸããŠã¯æéãæ¯æãå¿ èŠã¯ãããŸããã
- ã·ã³ãã«ã§å®å šãªãã«ãã¹ã¬ãã
ãŸããã³ãŒããæžãã®ã¯éåžžã«ç°¡åã§ãããèšèªã¯å°ããã·ã³ãã«ã§ãã
ãšã³ã·ã¹ãã ã«æ»ãïŒ
Windowsã§ã®äœæ¥ïŒ
Glutin - GLFW㮠代æ¿åã§ããã Servoã§äœ¿çšãããç©æ¥µçã«éçºãããŠããŸãã win / osx / linux / androidã«ãŠã£ã³ããŠãäœæããŸãã ãŸã iosã§åäœããŸããã誰ãããããæãã§ããŸãããã2015幎以éã誰ãããã«ã€ããŠèããããšã¯ãããŸããã
ãŸããéã©ã¹ã¿ã©ã€ãã©ãªçšã®ãã€ã³ããŒããããŸãïŒ glfw-rs rust-sdl2 rust-sfml ïŒ site ïŒã 3ã€ãã¹ãŠãçããŠããããµããŒããããŠããŸãã
ã°ã©ãã£ãã¯ã¹APIïŒ
OpenGL / DirectX / VulkanãçŽæ¥äœ¿çšããããšãã§ããããã«ãã©ã¹ã¿ãŒåºæã®ã°ã©ãã£ãã¯ã©ã€ãã©ãªãæ¢ã«äœæãããŠããŸãã
Glium-å®éã«ã¯OpenGLã®å®å šãªã©ãããŒ-äž»ã«OpenGL 3ãOpenGL <4ããã³OpenGL ESããµããŒãããŠããŸãã èè ã¯ãOpenGLã®4çªç®ã®ããŒãžã§ã³ã®ãã¹ãŠã®ããªãã¯ãåŠçããäºå®ã¯ãããŸãããããã«Vulkanã䜿çšããæ¹ããããšèããŠããŸãã çŸæç¹ã§ã¯ããªããã£ãããšçºå±ããŠããŸã-èè ã¯äž»ã«ç«å±±ã§ã®ã²ãŒã ãæ±ã£ãŠããŸãã
ããã«ãããããããPCäžã§ã¯ãgliumã¯ãã®æ©èœã管çããŸã-OpenGLã³ãŒããæžãã®ã¯æ¬åœã«äŸ¿å©ã§ãã
æç§æžå šäœããããŸãã å®å šã§ã¯ãããŸããããæåã¯éåžžã«äŸ¿å©ã§ãã
Vulkanoã¯gliumã®é¡äŒŒç©ã§ããã Vulkanã«äŒŒãŠããŸãã ã°ãªãŠã ã®äœè
ã¯åœŒã§ãããéçºã¯éåžžã«æŽ»çºã§ãã vulkanoã®ãã¬ãŒã³ããŒã·ã§ã³ã¯ãã¡ãããå
¥æã§ããŸã ã
Gfxã¯ãã°ã©ãã£ãã¯ããã¯ãšã³ãã®ãªããŠãããŒãµã«APIã§ãã çŸåšãOpenGLãšDirectXã®äžã§åäœãã MetalãšVulkanã¯ãŸããªãèšç»ãããŸãã ã°ãªãŠã ã«ãã£ãŠããç©æ¥µçã«éçºãããŠããŸãã ã°ã¬ã¹ãšã¢ãã€ã«ããã€ã¹ã§ã¯ãçŸæç¹ã§ã¯ãã¹ãŠãã°ãªãŠã ãããå°ãæªãã§ããããã®æ¹åã§éåžžã«æŽ»çºãªäœæ¥ãçŸåšè¡ãããŠããŸãã
GfxãšGliumã¯ã¿ã¹ã¯ãç°ãªããŸã-gliumã¯å®å®ããOpenGLã®APIãæäŸããã ãã§ãGFXã¯æå 端ã®ã°ã©ãã£ãã¯ããã¯ãšã³ãåãã®æ±çšæ§ãšã¿ã€ãã»ãŒããªAPIã«éç¹ã眮ããŠããŸãã
Kiss-3dã¯ãå°ããã·ã³ãã«ãªã°ã©ãã£ãã¯ãšã³ãžã³ã§ãã æ©èœã¯è±å¯ã§ã¯ãããŸãããããã®ããã«ã¯åªåããŠããŸããã ãŠã£ã³ããŠãäœæããã°ã©ãã£ãã¯ããªããã£ããæç»ã§ããŸãã ãµããŒããããŠããããã«èŠããŸããã掻çºãªéçºã¯ç¢ºèªãããŠããŸããã äžæ¹ããã§ã«å®å šã«æºåãæŽã£ãŠããããã®æ©èœãå®è¡ããŸãã
æ¢è£œã®ã°ã©ãã£ãã¯ãšã³ãžã³ïŒ
Piston PistonDevelopers-å®éãããã¯å ±éã®ç®æšã«ãã£ãŠçµã°ããèšå€§ãªæ°ã®ãããžã§ã¯ãã§ã-ãã€ãã¢ãžã¥ã©ãŒã²ãŒã ãšã³ãžã³ã«ãªããŸãã ããã¹ãŠã®ãããžã§ã¯ããå®å šã«ãã¹ãã³ãæã£ãŠããããã§ã¯ãããŸããããããããã«å°ããªãã¹ãã³ããããŸããïŒãRustã²ãŒã ãããžã§ã¯ãã¯ãã¹ãã³ã®ã»ãšãã©ã䜿çšããŸããããã»ãšãã©ã¯ãã¹ãã³ã䜿çšããŸãïŒãïŒ
ããæ°ãæã®ã¡ã€ã³éçºè ã¯ãã¹ã¯ãªããèšèªDyonãšãã®ãã¢ã²ãŒã ïŒ å°ææ ïŒã®ã¿ãæ±ã£ãŠããŸãã
PistonDevelopersãªããžããªããŒãã«ã¯ã»ãŒæºåãæŽã£ãŠããŸãããã»ãšãã©ã®å Žåããã¹ãŠéåžžã«æçåãããŠãããå®çšåã«ã¯ã»ã©é ãç¶æ ã§ãã
ã¢ã¡ãžã¹ãã¯ãã¹ãã³ãããã¯ããã«è¥ãããã®äœ¿çšç®çã«ã¯ãŸã ã»ã©é ãã§ãããç©æ¥µçã«éçºäžã§ãã BitSquid / StingrayïŒAutodeskããïŒã«è§Šçºããããã¶ã€ã³ã ã°ã©ãã£ãã¯ãã€ãã©ã€ã³ã転é/é 延ã¬ã³ããªã³ã°ãã¢ã»ãããã€ãã©ã€ã³ãyamlã«ããèšå®ãæ¢ã«ãããŸãã ã¡ã€ã³ã®éçºè ã¯å§¿ãæ¶ããŸããããã³ãã¥ããã£ã¯ããã«æŽ»çºã«æŽ»åããŠããŸãã
æ°åŠã©ã€ãã©ãªïŒ
Cgmath -gfxãšgliumã®äž¡æ¹ã®äŸã§äœ¿çšãããŸãã 圌ã¯ãRustã®ã²ãŒã ã®äž»èŠãªæ°åŠã©ã€ãã©ãªã«ãªããããšèããŠããŸãã
Nalgebra -ncollideããã³nphysicsã§äœ¿çšãããŸãã ncollide / nphysicsãå¿
èŠãªå Žæã§äž»ã«äœ¿çšãããŸãã
ãããŠããããæ©èœãããã¹ãŠã®åºæ¬çãªæäœããããŸãã
Glm-rs-ç§ãç¥ãéããcgmathã®åã«nalgebraã䜿ã£ãŠãéåžžã«æåãªGLMã«ãã€ã³ãããã ãã§ããã
è¡çªæ€çŽ¢ïŒ
Collision- rs-è¡çªæ€çŽ¢ã·ã¹ãã ãcgmathã䜿çšããŸãã cgmathã®äžéšãšããŠäœæãããŸããã æ®ããšã¯ç°ãªããcgmathã¯ããèªäœã䌎ããå¥ã®ç®±ã«å
¥ããããŸããã ãã¹ãŠã®å¿
èŠãªæ©èœãå®è£
ãããŠããããã§ã¯ãªãããã¹ãç¯å²ã¯ãŸããŸãã§ãããcgmathäžã«æ§ç¯ãããŠããããã2ã€ã®ç°ãªãæ°åŠã©ã€ãã©ãªããã©ãã°ããå¿
èŠã¯ãããŸããã
ncollideã¯ãnalgebraã䜿çšããnphsysicsããã®è¡çªã·ã¹ãã ã§ãã 掻çºã«éçºãããŠãããçŸãããµã€ãããããŸãã ãã¹ãŠã®nphysicsãŠãŒã¶ãŒããã¹ãããã³éçºããŸããã
ãšã³ãã£ãã£ã³ã³ããŒãã³ãã·ã¹ãã ïŒ
https://shaneenishry.com/blog/2014/12/27/misconceptions-of-component-based-entity-systems/
http://t-machine.org/index.php/2007/09/03/entity-systems-are-the-future-of-mmog-development-part-1/
ã²ãŒã ãèšèšããããã®ããªãäžè¬çãªã¢ã€ãã¢ã§ããããã§ã«æ¢è£œã®ã©ã¹ã¿ãŒå®è£
ããããŸãã
ä»æ§ïŒ https://github.com/slide-rs/specs ïŒã¯ãå¯äžã®çã®ãã«ãã¹ã¬ããecã§ãã ç©æ¥µçã«éçºãããã¢ã¡ãžã¹ãã§äœ¿çšãããŠããŸãã
https://crates.io/keywords/ecs-ä»æ§ã®åã«ååšããŠããã·ã¹ãã ã®éãŸãã§ãããããç¬èªã®ãã¥ã¢ã³ã¹ããããããããã«ã€ããŠèª¬æããŠããã®ã¯ãå¥ã®èšäºã®ãããã¯ã§ãã
ç§ãå§ãããšããã¹ããã¯ã¯ãŸã ãããŸããã§ããããããŠç§ã¯èªåã®èªè»¢è»ãæžããŸããã
ãªãœãŒã¹ãæäœããïŒ
obj -rastovy implementation .objãåäœããŸã:)
Assimp - assimpãžã®ãã€ã³ãã£ã³ã°-å€æ°ã®3Dãã©ãŒãããã§åäœããã©ã€ãã©ãª
ç»å -äžè¬çãªãã©ãŒãããã®rastovyå®è£
2dã åäœããŸããããã¥ã¢ã³ã¹ããããŸã-貚ç©ã§ã¯ãäŸåé¢ä¿ã®ãã€ããª/ãªãªãŒã¹ããŒãžã§ã³ããããã°ãã«ãã«æ¥ç¶ããæ¹æ³ããããŸããã Imageããããã°ããããããããã°ã¢ã»ã³ããªã§ç»åãéãã«ã¯éåžžã«é·ãæéãããããŸãã ãªãªãŒã¹ãã«ãã«åé¡ã¯ãããŸããã ä»ã®ãã©ã¡ãŒã¿ãŒã§äŸåé¢ä¿ã䜿çšããæ¹æ³ãåŠç¿ãã貚ç©ãåŸ
ã£ãŠããŸãã
stb-image-ã€ã¡ãŒãžã©ã€ãã©ãªã·ã¹ãã ã©ã€ãã©ãªã®ãã€ã³ããŒã æ©èœé¢ã§ã¯ãã€ã¡ãŒãžã«é¡äŒŒããŠããŸããããããã°ã®äŸåé¢ä¿ã®åé¡ã解決ããŸããã³ãŒãã¯ç¬èªã®ãã©ã°ã§ã¢ã»ã³ãã«ãããããããããã°ãã«ãã§ãè¿
éã«åäœããŸãã
zip-rs-åãªãzipã¢ãŒã«ã€ãããªãœãŒã¹ãå§çž®ããŸãã
ãµãŠã³ããæäœããïŒ
è³ã¯ãOpenAlã®åãªããã€ã³ãã£ã³ã°ã§ãã ç§ã¯é³ã®ããã«ããã䜿çšããŸã-ãã¹ãŠãæ£åžžã§ãã
vorbis - vorbisãžã®ãã€ã³ãã£ã³ã°ã
rodioã¯ãvorbisã䜿çšããé«ã¬ãã«ã®ä»äºã§ãã
GUIïŒ
ãããããããã®ã§ã¯ç©äºã¯ããŸããããŸããã å®ç§ãªã²ãŒã ã©ã€ãã©ãªã¯ãŸã ãããŸããã ãã ãã次ã®ãã®ããããŸãã
Imgui - imguiãã€ã³ãã£ã³ã°ã ã°ãªãŠã ã«æé©ã§ãã ããããããã¯éçºè
ããŒã«ã®åºç€ã§ãããã¹ãã³ããµããŒããããã«ã¹ã¿ã ãŠã£ã³ããŠãäœæããã®ã¯äžäŸ¿ã§ãã
Awesomium awesomium-rsã¯éã€ã³ã人ã«ãšã£ãŠã¯é«äŸ¡ã§ãããC APIãæã€ã®ã¯å€ä»£ããŒãžã§ã³ã®ã¿ã§ãã ããããããã¯ååã«é«éã«åäœããAPIã¯äŸ¿å©ã§ãã
éªšæ Œã¢ãã¡ãŒã·ã§ã³ïŒ
skeletal_animation-ãã¹ãã³ã¯ãããæã£ãŠããŸããããã§ã«æŸæ£ãããŠããŸãã Jsonã¯ãUnityã®Mecanimã«å°ã䌌ãã¢ãã¡ãŒã·ã§ã³ã°ã©ãã«ã€ããŠèª¬æããŠããŸãã GPUã¹ããã³ã°ããµããŒãããŸãã ããããæ®å¿µãªããããã¹ãã³ãšgfxã®äž¡æ¹ã«äŸåé¢ä¿ããããŸã-gliumã®ãããžã§ã¯ãã«çµ±åããã®ã¯ããã»ã©ç°¡åã§ã¯ãããŸããã
ç©çåŠïŒ
ç§ã¯ç©çåŠã«é¢ããã²ãŒã ãäœã£ãŠããã®ã§ãããã¯ç§ã«ãšã£ãŠéèŠãªè³ªåã§ãã ã©ã¹ã¿ã«ã¯github.com/sebcrozet/nphysicsã®ã¿ããããŸãã
nphysicsã¯ãnphysics2dãšnphysics3dã§æ§æãããŸãã 2Dã«ã€ããŠã¯ååã ãšèšããŸããã3Dã§ã¯ããã»ã©ã§ã¯ãããŸãããåãç®æ¡æžããŸã§ãå¯èœæ§ã¯ãŸã é ãã®ã§ãããªãå€ãè¿œå ããå¿
èŠããããŸããã ããããäœæ¥ã¯éåžžã«æŽ»çºã«é²è¡ããŠããŸãã
Bulletã䜿çšãããã®ã§ãããçŸåšã®ããŒãžã§ã³ã®C APIã«ã¯ãŸã 察å¿ããŠããŸããã
ããŒã«ãããïŒ
cargo-apk-貚ç©ãžã®è¿œå ãAndroidapkãã¡ã€ã«ãšã©ã€ãã©ãªãäœæããŠãã³ãŒãããAndroidç°å¢ãæäœã§ããŸãã
貚ç©ãããã¡ã€ã©ãŒ - 貚ç©ãä»ããvalgrindã®äœ¿çšã
hprof-ãã¬ãŒã ãããã¡ã€ã©ãŒãç§ãæžããhprofãèŠã€ããããŸããã§ããããããã«æªãããšã«-tinyprof ã åãã¬ãŒã ã§äœãèµ·ããããèŠãã®ã¯éåžžã«äŸ¿å©ã§ãã
ã·ãŒã³ããããªã¢ã«ãããã³ã²ãŒã ãšã³ãã£ãã£ã®ãšãã£ã¿ãŒãšããŠãBlenderã䜿çšããŸãã ããã¯ãããèå³ãããã°ã次ã®ããŒãã§èª¬æããŸãã äžè¬çã«-ç§ã¯æºè¶³ããå¿«é©ã§ãã
IDEã§ã¯ã次ã®ããšãè¡ãããŸãã
racerããããŸããããã¯ããšãã£ã¿ãŒã«ãªãŒãã³ã³ããªãŒããšã·ã³ãã«ãªããã²ãŒã·ã§ã³ã®ããã®ããŒã¿ãæäŸããå¥ã®ãããžã§ã¯ãã§ãã æ©èœé¢ã§ã¯ããŸã ghc-modã«ã¯éããŠããŸããã ãã¹ãŠã®äžè¬çãªãšãã£ã¿ãŒïŒVimãEmacsãAtomãVS Codeãªã©ïŒã®ãã©ã°ã€ã³ããããŸãã
æ¬æ Œçãªide-backend 'Oracle'ã¯ãã§ã«èšç»ãããŠããŸãã ããã¯åãã¬ãŒãµãŒã§ãããã³ã³ãã€ã©ããµããŒãããããå€ãã®äœæ¥ãè¡ããŸãã
EclipseãVisual Studioã®ãã©ã°ã€ã³ã¯å®å šã«ãããã°ã§ããŸã-æ©ãæ¹ãªã©
人æ°ã®ããIDEã®èª¿æ»çµæãèŠãããšãã§ããŸãã çµæã¯å¥åŠã§ã-Ideaãã©ã°ã€ã³ïŒç§ãç¥ãéãïŒã¯æ©èœãæãå£ã£ãŠããŸã-ã¬ãŒãµãŒã䜿çšãããIdeaãªãŒãã³ã³ããªãŒãã䜿çšããŸãã ããããããã¯ç©æ¥µçã«éçºãããŠããŸãã
æ å¢ã®è©³çŽ°ã«ã€ããŠã¯ãã¡ããã芧ãã ãã ã
éçºäžã®ãªãŒãã³ã²ãŒã ïŒ
https://github.com/bfops/playform
https://github.com/ozkriff/zoc
https://github.com/kvark/vange-rs
https://github.com/PistonDevelopers/hematite
https://github.com/kvark/claymore
https://github.com/PistonDevelopers/piston/wiki/Games-Made-With-Piston
ç§ãã¡ã®ã²ãŒã ïŒ
èšäºã®åé ã§ãç§ãã¡ã®ã²ãŒã ã®ãããªã²ãŒã ãã¬ã€ã¯ãåæç Žå£å¯èœãªãããã¯ãŒã¯ã·ã¥ãŒãã£ã³ã°ã²ãŒã ã§ãã ç§ãã¡ã¯ãããŸã§ã«ãã¬ã¢ã«ãã¡çã§ãå ¬éã¢ã«ãã¡çããã¬ã€ãã¹ãã®æºåãããŠããŸãã 人ãæ¢ããŠããŸã;ïŒ
ã³ãã¥ããã£ïŒ
ãã¬ã³ããªãŒãªrust-gamedevã³ãã¥ããã£ã¯ã irc ïŒïŒrust-gamedevïŒãŸãã¯ãã·ã¢èªã®gitterïŒ gitter.im/ruRust/gamedevã§ãã€ã§ã質åã«çããŸãã