
ãããã.ioã²ãŒã ã¯ããã©ãŠã¶ããŒã¹ã®å€§èŠæš¡ãªãã«ããã¬ã€ã€ãŒã¢ã¯ã·ã§ã³ã²ãŒã ã§ãããå€ãã®äººãäœæã«èŠåŽããŠããŸãã 倧èŠæš¡ãã«ããã¬ã€ã€ãŒ-ããã¯ãã²ãŒã ãå ±éã®å Žæã§ãã¬ã€ããå€æ°ïŒæ°çŸ+ïŒã®ãã¬ã€ã€ãŒã®å€§èŠæš¡ãªãã«ããã¬ã€ã€ãŒã¯ã©ãŠãã§ããããšãæå³ããŸãã ããã¯ãã¹ãŠã²ãŒã Agar.io ïŒãããªç¿ã®ã»ã«ïŒããå§ãŸã£ããšããæèŠããããŸãã ä»ã®æåäŸã«ã¯ã Slither.io ïŒããïŒãšDiep.io ïŒ tanchiki ïŒãå«ãŸããŸãã çµ±èšãä¿¡ãããªãããããã®ã²ãŒã ã¯æ¯æ¥äœçŸäžäººãã®ãã¬ã€ã€ãŒã«ãã£ãŠãã¬ã€ãããŠããŸãã ä»æ¥ãããŸããŸãª.ioã²ãŒã ãããããã®ã»ãšãã©ã¯ioã²ãŒã ãªã¹ãã®ã°ãŒã°ã«æ€çŽ¢ã§èŠã€ããããšãã§ããŸãã
éããã®ä»ã®æµ·æŽçç©ã«é¢ããã²ãŒã ã§ãã.io-game Oceanar.ioã®äœææ¹æ³ã«ã€ããŠèª¬æããŸãããŸããã·ã¹ãã å šäœã®äžè¬çãªæè¡æ§é ã«çŠç¹ãåœãŠãæ§ãããªãã³ãã瀺ããŸãã
ã·ã¹ãã ã®ããã€ã¹ã¯ãã³ãŒãã«å ¥ããã«ãæã§æããããããã圢åŒã§ã§ããã ãç°¡åã«èª¬æããããã«ããŸãã
ã²ãŒã ãã¬ã€
æåã«ãã²ãŒã ã®å 容ã決å®ããå¿ èŠããããŸããã æãæåãã2人ã®ä»£è¡šã§ããã¢ã¬ãªãªãšã¹ãªãµãªãªã®ã²ãŒã ã¡ã«ãã¯ã¹ãæ€èšããçµæãã²ãŒã ã«ã¯æ¬¡ã®ç¹æ§ãæãããããšã決å®ãããŸããã
- èªå°ããããã£ã©ã¯ã¿ãŒã¯ãæéã®çµéãšãšãã«åŸã ã«åãç²åŸããªããã°ãªããããã®åã®ã»ããã¯èŠèŠçã«åæ ãããªããã°ãªããŸããã
- éåžžã«é·ãæé-äœæéãç¶ããŠãã¬ã€ããã®ã¯çã«ããªã£ãŠããå¿ èŠããããŸãã 5æéè² ãããã¬ãŒã€ãŒã¯ã3æéè² ãããã¬ãŒã€ãŒããã確å®ã«æå©ã§ãã
- ã²ãŒã ã®å©ç¹ã¯ãã²ãŒã ã«è²»ããæéã ãã«äŸåããã¹ãã§ã¯ãããŸããã ãã¬ã€æéãšã²ãŒã ã¹ãã«ã®éã«ã¯é©åãªãã©ã³ã¹ãå¿ èŠã§ãã æ°åãã¬ã€ãã人ã¯ãæ°æéãã¬ã€ããŠãã人ãåãããšãã§ããã¯ãã§ãã ãããéåžžã«å°é£ã«ããããã§å¹žéèŠå ãå¿ èŠãšããŸããããã®ãããªæ©äŒãããã¯ãã§ãã
- ä»ã®ãã¬ã€ã€ãŒã®åå©ã®çµæãšããŠåãåã£ãããŒãã¹ã¯ãåè ã«ç¡æ¡ä»¶ã«æäžãããã¹ãã§ã¯ãããŸãã-ä»ã®ãã¬ã€ã€ãŒã¯ãããã®äžéšãã€ããããšãã§ããã¯ãã§ãã
- å°ãªããšããªãªãžãã«ã®ãã®ããããŸã:)
ã²ãŒã ã¯ãªãŒãã£ãŒã®åŒ·åºŠãçŽæ¥å¢å ããã®ã§ã¯ãªãããããã®ã¯ãªãŒãã£ãŒã®æ°ãå¢ãããšããªãªãžãã«ã«ãªããšèšç®ããŸããã 2çªç®ã®ã¢ã€ãã¢ã¯ã匱ãã¯ãªãŒãã£ãŒã®ãã¢ã1ã€ã®åŒ·ãã¯ãªãŒãã£ãŒã«çµåããæ©èœã§ãã ãããã£ãŠãæåã¯ã¯ãªãŒãã£ãŒã1ã€ãããæçµçã«ããã¯ã«æé·ããããã¯ã¯ããå°æ°ã®ãã匷åãªã¯ãªãŒãã£ãŒã«æ»ããŸãã æåã®ã¬ãã«ã®ã¯ãªãŒãã£ãŒã®ãã¢ã¯ã2çªç®ã®ã¯ãªãŒãã£ãŒã«ã2çªç®ã®ã¯ãªãŒãã£ãŒã®ãã¢-3çªç®ã®ã¯ãªãŒãã£ãŒã«ããšããããã«åŽ©å£ããããšãã§ããŸãã ãããã£ãŠãææ°é¢æ°çã«æžéãããã³ãã³ã°ãååŸããã»ãŒç¡å¶éã®æéãã¹ã€ã³ã°ã§ããŸãã
èžè¡çèŠçŽ ãéžæããããšã¯ä»ã§ãæ®ã£ãŠããŸãã 埮çç©ããŠã€ã«ã¹ããã¯ããªã¢ãåççç©ãããªãªã³ãæµ·æŽçç©ã®çŸ€ã-éãã«ããã¯ã©ã²ã®çŸ€ãããéžæããŸããã ããã€ãã®èãã®åŸãéãæ¯æããŠéžæãè¡ãããŸããã ããã§èžè¡çãªéšåã¯çµäºããæè¡çãªèª¬æã«ç§»ããŸã:)
ç§ã¯æ¬æ ŒçãªMMOã²ãŒã ãäœæããçµéšã¯ãããŸããããéå»ã®ãããžã§ã¯ãã§ãã³ããèç©ããããŸããŸãªéçºè ã®çµéšïŒ ããšãã° ïŒãèªãã ããšã§ã.ioã²ãŒã ã®ã¯ã©ã€ã¢ã³ããµãŒããŒã¢ãŒããã¯ãã£ã¯ä»ã®ãã®ãšæ ¹æ¬çã«ç°ãªããªããšããæèŠããããŸããMMOã²ãŒã -ããã¯ã»ãŒåãã¢ã€ãã¢ã«åºã¥ããŠããŸãã .ioã²ãŒã ã®éèŠãªïŒãããŠåäžã®éçºè ã«ãšã£ãŠã¯æ¥œããïŒéãã®1ã€ãšããŠãå€§å¹ ã«ç°¡çŽ åãããã²ãŒã ã«ãŒã«ãéžã³åºããŸããæ·±å»ãªMMORPGã§ããµãŒããŒã®ãŽããªã³ã®é ã«xãåœãã£ãå Žåã®ãã¡ãŒãžãèšç®ããã«ã¯ãã«ãŒã«ã®æå šäœããã¬ã€ããå¿ èŠããããŸãã io-gameã¯ã1è¡ã®ã³ãŒãã§ç°¡åãªåŒã«ãªããŸãã ã€ãŸãã.ioã²ãŒã ã¯ãå€æ°ã®ãã¬ã€ã€ãŒãæã€åãMMOã§ãããå éšæ§é ãæŽçãããšããç¹ã§ã¯ã¯ããã«åçŽã§ãã åäžã®ããã°ã©ããŒïŒã¯ã©ã€ã¢ã³ããšãµãŒããŒã®äž¡æ¹ã®éšåïŒã§äœæã§ããã»ã©åçŽã§ãã
ã客æ§
ã²ãŒã ã¯ã©ã€ã¢ã³ãã¯ãhtmlããŒãžãéããããã©ãŠã¶ã§ãã ãã¯ãããžãŒã¯ãä»ã®ã»ãšãã©ã®.ioã²ãŒã ã®ãã¯ãããžãŒãšåãã§ããã€ãŸããããã°ã©ãã³ã°èšèª-JavaScriptãã°ã©ãã£ãã¯ã¹-WebGL ãã²ãŒã ãµãŒããŒãšã®ããåã-WebSocketsãä»ããŠããŸãã ãã®ããã.io-ã²ãŒã ã¯çºèšããããšãèªããããŠããªãã®ã§ïŒããã«é¢ããæè¡çãªå¯èœæ§ã¯ãã¹ãŠå©çšå¯èœã§ããïŒãã²ãŒã ããµã€ã¬ã³ãã«ããããšã決å®ããŸããïŒè·å Žã®ãã¹ããããŸã泚ç®ãããªãããã«ããããïŒã
ç°¡åã«èšãã°ããã¹ãŠã®åãã¯ãµãŒããŒäžã§çºçããã¯ã©ã€ã¢ã³ãã¯ãã®åãã®ã¢ãã¿ãŒããžã¥ã¢ã©ã€ã¶ãŒã«ãããŸããã ã¯ã©ã€ã¢ã³ããååçãªèŠèŠå以å€ã«ã§ããããšã¯ããã¬ãŒã€ãŒã®ã¢ã¯ã·ã§ã³ããµãŒããŒã«éä¿¡ããããšã ãã§ãïŒãã®å ŽåãããŠã¹ã«ãŒãœã«ã®åº§æšãšãã¿ã³ã®ç¶æ ïŒã ã¯ã©ã€ã¢ã³ãã¯ãã以äžäœãã§ãããã§ããŸãããã¯ã©ã€ã¢ã³ãã§ã²ãŒã ããžãã¯ãå®è¡ããªãã§ãã ãããããããªããšãå³åº§ã«äžæ£è¡çºã®æ©äŒã«ãªããŸãã ãããã£ãŠããœãããŠã§ã¢ã®èŠ³ç¹ããèŠããšãã¯ã©ã€ã¢ã³ãã¯æ¬¡ã®ãããªãªããžã§ã¯ãã§ãã
- ãŠãŒã¶ãŒã¢ã¯ã·ã§ã³ããµãŒããŒã«éä¿¡ã§ããŸãã
- ãµãŒããŒããã¡ãã»ãŒãžãåä¿¡ãããããããã£ã¹ãããããããšãã§ããŸãã
- èŠéå ã«ã²ãŒã ã®äžçã®ã³ããŒãä¿æããŸãã
- ã²ãŒã ã¯ãŒã«ãã®ä¿åãããã³ããŒãã¬ã³ããªã³ã°ããŸãã
ã¯ã©ã€ã¢ã³ããã¡ãã»ãŒãžãåŠçããããã®ã¡ãã»ãŒãžãšã¢ã¯ã·ã§ã³ã®äŸã次ã«ç€ºããŸãã
äœçœ®äœçœ®ã«ãããé床ãã¯ãã«é床ãæã¡ãowner_idèå¥åãæã€ãã¬ãŒã€ãŒã«å±ããcreature_type_idã¿ã€ãã®éã§ãããcreature_idèå¥åãæã€éã衚瀺ããŸãã
JavaScriptã®èŠ³ç¹ããã¯ã次ã®ãããªãªããžã§ã¯ãã«ãªããŸãã
{ message_type_id: 1, creature_id: 68328, creature_type_id: 2, owner_id: 9306, position: { x: 1.436, y: -39.32 }, velocity: { x: -0.17235, y: -0.1157 } }
ãã®ãããªã¡ãã»ãŒãžãåä¿¡ãããšãã¯ã©ã€ã¢ã³ãã¯éã®ãããã«éãè¿œå ããã²ãŒã ã·ãŒã³ã®ã¬ã³ããªã³ã°ã«é¢ããŠã¯ãç»é¢ã«éã衚瀺ãããŸãã
id idã®éã¯id id2ã®éãåã¿ãŸããã
ãã®ã¡ãã»ãŒãžãåä¿¡ãããšãã¯ã©ã€ã¢ã³ãã¯id id2ã®éã®åº§æšãååŸããåã座æšã®ããã«ãããã«é åã«è¿œå ããè¡æ¶²æè²ãè¡æ¶²æè²é åã«è¿œå ããŸãã ããã«æç»ãããšãç»é¢ã«è¡šç€ºãããŸãã
ãããã£ãŠããµãŒããŒããã¯ã©ã€ã¢ã³ããžã®ã¡ãã»ãŒãžã¯ãåºæ¬çã«ã¯ã©ã€ã¢ã³ãã®èŠéã§äœããèµ·ãã£ããšããéç¥ã§ãããšèšããŸãã ãããé©åãã€ç解ã§ããããã«ïŒã°ã©ãã£ãã¯ã§ïŒãã¬ãŒã€ãŒã«éç¥ããããã«ãã¯ã©ã€ã¢ã³ããç¥ã£ãŠããã¹ãããšã ä»ã®çš®é¡ã®ã¡ãã»ãŒãžã®äŸ-ãã²ãŒã ããã®ãããªã¹ã³ã¢ã§çµäºããŸããããããã®ååã®ãã¬ã€ã€ãŒãã²ãŒã ã«åå ããŸãããããããã10ãã¬ã€ã€ãŒã®ãªã¹ãããããã¹ãŠã®ãã¬ã€ã€ãŒãšãã®åº§æšã®ãªã¹ããïŒãããã«è¡šç€ºããããïŒ ããªã©ã
ãµãŒããŒ
ãµãŒããŒã¯ãã²ãŒã å šäœãå®è¡ãããã¢ããªã±ãŒã·ã§ã³ã§ãã ãµãŒããŒã¯ã²ãŒã ã«ãŒã ã§æ§æãããŠããŸãã ã²ãŒã ã«ãŒã ã¯ãã²ãŒã ãã±ãŒã·ã§ã³ã®ã€ã³ã¹ã¿ã³ã¹ã§ãã ãã®éšå±ã«ã¯ãã²ãŒã ãã¬ã€ã«é©ãã幟äœåŠçãªå¯žæ³ãšãããã«ãããã¬ã€ã€ãŒã®æ°ã«å¶éããããŸãã ãã¹ãŠã®ã²ãŒã ã«ãŒã ããã£ã±ãã«ãªããšããµãŒããŒã¯æ°ããã«ãŒã ãäœæãããã¬ã€ã€ãŒã¯åŸã ã«å æã«ãŒã ãšç©ºãã«ãŒã ã«åçã«åæ£ãããŸãã ã²ãŒã ã«ãŒã ã¯çžäºã«æ¥ç¶ãããŠããããäºãã«å®å šã«ç¬ç«ããŠåäœããŸãã æé«ã¬ãã«ã§ã¯ããµãŒããŒã¯çä¿¡æ¥ç¶ãåãå ¥ããå¿ èŠã«å¿ããŠé©åãªã²ãŒã ã«ãŒã ãéžæããæ°ããã²ãŒã ã«ãŒã ãäœæããŠãéžæããã«ãŒã ã«ãã¬ãŒã€ãŒãéä¿¡ã§ããŸãã
ãµãŒããŒã¯C ++ã§èšè¿°ãããŠããããµãŒãããŒãã£ã©ã€ãã©ãªã®Boostã䜿çšããããããã¯ãŒã¯éšåã¯Boost.Asioã§ãã éçºãšãã¹ã-Visual Studio / WindowsãéçšãµãŒããŒ-GCC / Linuxã
ã²ãŒã 宀
ããã¯ããã¹ãŠã®ã²ãŒã ããžãã¯ãçºçããå Žæã§ãã éšå±ãšã¯ãç¹ã«æ¬¡ã®ãã®ãå«ããªããžã§ã¯ãã§ãã
- ã²ãŒã ãªããžã§ã¯ãã®ã³ã³ããïŒã¯ãªãŒãã£ãŒãé£ç©ããªãã¶ãŒããŒïŒãæ ŒçŽããŸãã
- ã¯ã©ã€ã¢ã³ãããã¡ãã»ãŒãžãåä¿¡ããŠââãã£ã¹ãããã§ããã
- éšå±ã§çºçããã€ãã³ãã«ã€ããŠé¡§å®¢ã«éç¥ããããšãã§ããŸãã äžéšã®éç¥ã¯ããããã®ã€ãã³ããã¯ã©ã€ã¢ã³ãã®èŠéã§çºçããå Žåã«ã®ã¿éä¿¡ãããŸãã
- Anç¶æ ããAn + 1ç¶æ ãžã®éšå±ã®é·ç§»ã®æ©èœãå®è£ ããŸãïŒã²ãŒã ã¯ãŒã«ãã®æŽæ°ïŒã
- å®æçã«ã²ãŒã ã¯ãŒã«ãã®æŽæ°ãå®è¡ããŸãïŒãã®äŸã§ã¯ã1ç§éã«10åïŒã
æ¬äŒŒã³ãŒãäžã®ãã¡ããããªãŒã²ãŒã ã«ãŒã ã€ã³ã¿ãŒãã§ã€ã¹ïŒ
class room { methods: join(user); update(dt); dispatch(protocol::kill_creature); dispatch(protocol::consume_food); dispatch ... dispatch ... dispatch ... properties: container<creature> creatures; container<food> foods; container<observer> observers; }
ã²ãŒã ã¯ãŒã«ãã¢ããããŒã
ããã¯ãäžå®æédtïŒãã®å Žåã¯0.1ç§ïŒã«ããã£ãŠçºçããã²ãŒã ã¯ãŒã«ãã®å€æŽãå®è£ ããé¢æ°ã§ãããã®é¢æ°ãupdateãšåŒã³ãŸãã äžè¬çã«ãã²ãŒã ã«ãŒã ã®æŽæ°ã¯ãã²ãŒã ãªããžã§ã¯ãã®æŽæ°åŒã³åºããã€ãŸããäžè¬çãªãã®ããç¹å®ã®ãã®ãžã®éçŽã©ããŒã®ããã«äžã®æŽæ°åŒã³åºãã§ãã ç°¡åãªäŸïŒéãäœçœ®åº§æšã«ãããé床ãã¯ãã«é床ã§ç§»åããŠãããšããŸãã ãã®æŽæ°é¢æ°ã¯ãdtæéã§ã®äœçœ®ã®èšç®ã§ãã
next_position = position + dt * velocity;
éã¯ç§»åããããšã«å ããŠããã®ããã«ä»ã®å Žæã«ç§»åããããšã決å®ã§ããŸãããããŠãæŽæ°ã®çµæãšããŠã座æšã®æŽæ°ã«å ããŠãé床ãã¯ãã«é床ãå€åããå ŽåããããŸãã æ¬äŒŒã³ãŒãã§ã¯ãéšå±ã®æŽæ°ã¯æ¬¡ã®ããã«ãªããŸãã
room::update(dt) { message_queue.dispatch(); // , , foreach(creature in creatures) { creature.update(dt); } foreach(food in foods) { food.update(dt); } foreach(observer in observers) { observer.update(dt); } spawn_food(); spawn_npc(); }
åºç€ãšãªãæŽæ°ïŒããšãã°ãã¯ãªãŒãã£ãŒã®æŽæ°ïŒã®å®è¡ã®çµæãšããŠãã¡ãã»ãŒãžãéšå±ã«éä¿¡ããã次ã®æŽæ°ã§åŠçãããŸãã ããšãã°ãã«ããéãåã¿ãéãæ»ãã ã éã®ã³ã³ããããæ»ãã éãåãé€ããæ»ãã éã®å Žæã«é£ã¹ç©ãäœãããã¬ã€ã€ãŒã«éã®æ»ãšé£ã¹ç©ã®åºçŸã«ã€ããŠéç¥ããå¿ èŠããããŸãã ãããè¡ãããã«ãæŽæ°å ã®ã«ãã¯éã殺ããããšã瀺ãã¡ãã»ãŒãžãéšå±ã«éä¿¡ãããã®ã¡ãã»ãŒãžã®éä¿¡äžã«éšå±ã¯å¿ èŠãªãã¹ãŠã®ã¢ã¯ã·ã§ã³ãå®è¡ããŸã-éã®é€å»ãé£ã¹ç©ã®äœæã顧客ãžã®éç¥ã
ãã¬ã€ã¹ããŒã¹ãåå²ãã
ã²ãŒã ã®ããžãã¯ãå®è£ ããå€ãã®ã¢ã«ãŽãªãºã ã§ã¯ããã®ãªããžã§ã¯ãã«æãè¿ããªããžã§ã¯ããæŽçã§ããå¿ èŠããããŸãã ããšãã°ããŠãŒã¶ãŒã«èŠçå ã®ãã¹ãŠã®éãèŠãããããã®éãèªåã®ç°å¢ãã誰ããåãŸãªããã©ããã確èªãããããŸãã ããããããšãããããã®ååã«åŸã£ãŠãªããžã§ã¯ãã®ãã¢ãæŽçããå Žåã2次ã®è€éããåŸãããšã«ãªããCPUã§ããã©ãã£ãã¯ã§ããããã¯å¿ èŠãããŸããã
2次ã®è€éããåãé€ãããã«ã次ã®æ¹æ³ã䜿çšããŸããã¹ããŒã¹ã¯ã»ã«ã«åå²ãããåã»ã«ã«ã¯ã²ãŒã ã¹ããŒã¹ã®ãã®ã»ã¯ã·ã§ã³ã«ãããªããžã§ã¯ãã®ãªã¹ããæ ŒçŽãããŸãã 座æšã«ããã»ã«ã®ãªã¹ããžã®ã¢ã¯ã»ã¹ã¯ãåžžã«è€éã§ãã
ããã«æãè¿ããªããžã§ã¯ãã®ãªã¹ãã«é¢å¿ãããå Žåãæå®ããããªããžã§ã¯ããé 眮ãããŠããã»ã«ã®ãªã¹ããšãé£æ¥ããã»ã«ã®ãªããžã§ã¯ãã®ãªã¹ããèŠæ±ããŸãã åèš9ã»ã«ã
ã»ã«ãžã®åå²ã¯ã2ã€ã®ç¬ç«ããéãªãåã£ãã¬ã€ã€ãŒã§è¡ãããŸã-è¡çªãå¬å·ãé£äºãªã©ã®è¿ãã®çžäºäœçšã確èªããå°ããªã»ã«ãšãèŠçã®åé¡ã解決ãã倧ããªã»ã«-ãã¬ã€ã€ãŒã®èŠçã«ãªããžã§ã¯ããå ¥ããŸãã
ãããã£ãŠãã¢ã«ãŽãªãºã ã®è€éãã¯2次ã®ãŸãŸã§ãããéšå±å ã®ã²ãŒã ãªããžã§ã¯ãã®ç·æ°ã¯2ä¹ãããã¢ã«ãŽãªãºã ã®èŠéå ã®æ°ã®ã¿ã§ãã
ãããã³ã«
å¥ã®åé¡ã¯ããµãŒããŒãšã¯ã©ã€ã¢ã³ãã®çžäºäœçšã®ãããã³ã«ã§ãã ãããã³ã«ãšã¯ããµãŒããŒãšã¯ã©ã€ã¢ã³ãã亀æããã¡ãã»ãŒãžã®ã»ãããšæ§é ãéä¿¡æã®ã·ãªã¢ã©ã€ãŒãŒã·ã§ã³ãåä¿¡æã®ãã·ãªã¢ã©ã€ãŒãŒã·ã§ã³ãšãã£ã¹ãããã®èª¬æãæå³ããŸãã ç§ã¯ãç¬èªã®åçŽåãããèªè»¢è»ãœãªã¥ãŒã·ã§ã³ã䜿çšããŸãã-JSONããã±ãŒãžèšè¿°åããã®ã³ãŒããžã§ãã¬ãŒã¿ãŒïŒããŸããŸèµ·ãã£ãïŒã èªè»¢è»ã§ã¯ãªããæ¢è£œã®æ¬æ Œçãªãœãªã¥ãŒã·ã§ã³ãå¿ èŠãªå Žåãããã¯ru.wikipedia.org/wiki/Protocol_Buffersã§ããããããã³ãŒããžã§ãã¬ãŒã¿ãŒã§ãã
ãªãã³ãŒãçæãªã®ãïŒ
- æã§æžãå¿ èŠãããã³ãŒããæå°éã«æããããšãã§ããŸãã
- é床-ã³ãŒããžã§ãã¬ãŒã¿ãŒã§ã¯ãã«ãŒã«ã«å¶éãããã䜿çšããèšèªã®ãã¬ãŒã ã¯ãŒã¯å ã§æéã®ã³ãŒããçæã§ããŸãã
- 転éãããããŒã¿ã®é-å¿ èŠã«å¿ããŠããŒã¿ãå¯ã«ããã¯ã§ãããã©ãã£ãã¯ãæå°éã«æããããšãã§ããŸãïŒããã«ã€ããŠã¯åŸã§èª¬æããŸãïŒã ã³ãŒããžã§ãã¬ãŒã¿ãŒã§ã¯ããããã®ãã£ãŒã«ãã®ãããã³ã°ã«ãŒã«ãæå®ããè¿œå ã®å±æ§ãã¡ãã»ãŒãžãã£ãŒã«ãã«å°å ¥ãããšç¹ã«äŸ¿å©ã§ãã
ã¡ãã»ãŒãžãã¥ãŒ
ã«ãŒã ã¡ãã»ãŒãžã®éä¿¡ã«ã¯ãè€æ°ã®ãããã¥ãŒãµãŒãšåäžã®ã³ã³ã·ã¥ãŒããã¥ãŒã䜿çšãããŸãã 顧客ã«ã¡ãã»ãŒãžãéä¿¡ãã-åäžã®çç£è ãåäžã®æ¶è²»è ã ã©ã¡ãã®ã¿ã€ãã®ã©ã€ã³ãèªå·±åŸªç°åã§ãã ããããBoost.Lockfreeã䜿çšã§ããŸãããç¹°ãè¿ããŸããããŸãã«ãããªããŸããã ãµãŒããŒå ã移åããã¡ãã»ãŒãžãã·ãªã¢ã«åããã³ãã£ã¹ãããããã«ã¯ããããã¯ãŒã¯çµç±ã§ã¡ãã»ãŒãžãéä¿¡ããå Žåãšåãã³ãŒãçæã¡ã«ããºã ã䜿çšãããŸãã
ã·ã¹ãã å šäœã®æ§é ãå®å šã«ææ¡ã§ããããã«ãã²ãŒã ã®äžè¬çãªæ§é ãšãç§ã®æèŠã®ç¬éã«éèŠãªåå¥ã«åãããããã€ãã®æ§é ã説æããããšããŸããã ç§ããã£ãããšãé¡ã£ãŠããŸã
ãã³ã
.io-gameãäœæããå Žåã¯ã1ã€ã ãèšãããšãã§ããŸã-ãããåãããããè¡ãïŒ :)ãããŠãããã€ãã®ãããããªãã³ãããããŸãïŒ
ããã
ã¯ã©ã€ã¢ã³ãããã³ãµãŒããŒãšäžç·ã«ãããã«ããããäœæããŸãã ããã«ããããã¯ãã¯ã©ã€ã¢ã³ããšåããããã³ã«ã䜿çšããŠãããã¯ãŒã¯çµç±ã§ãµãŒããŒã«ã¢ã¯ã»ã¹ããå®éã®ãã¬ãŒã€ãŒãšåãæ å ±ããèŠããå¿ èŠããããŸãã ããã«ãããããã°ãå€§å¹ ã«å®¹æã«ãªããæŠéã«è¿ãç¶æ³ã§æ¶è²»ããããªãœãŒã¹ãè©äŸ¡ããããšãã§ããŸãã ãµãŒããŒã¯äœäººã®ãªã³ã©ã€ã³ãã¬ãŒã€ãŒããã«ããŸããïŒ CPUããããã¯ãŒã¯ã®åž¯åå¹ ãæ¯æžããã®ã¯ãã€ã§ããïŒ ãããã¯ããããã®è³ªåããã®ä»ã®è³ªåã«çããã®ã«åœ¹ç«ã¡ããªãªãŒã¹åŸã®äžæå¿«ãªé©ãããããªããæããŸãã ããã«ããããã¯ãã©ã€ããã¬ã€ã€ãŒãã»ãšãã©ããªãéããã²ãŒã ãéå±ã«ããããŸããã
ãããã¯ãŒã¯ãã©ãã£ãã¯
ãããã£ãŠããããã¯ãŒã¯ãã©ãã£ãã¯ãæå°éã«æããŸãã éåžžããã¹ãã£ã³ã°ãããã€ããŒã®ãã©ãã£ãã¯ã¯ãã«ãŠã³ã¿ãŒã§æ¯æãããè³Œå ¥ãªãã·ã§ã³ä»ãã®ããªãã€ãããã±ãŒãžããŸãã¯ç¡å¶éã§ãããå®éã«ã¯ããã»ã©ç¡å¶éã§ã¯ãªããšããå 責æ¡é ä»ãã®è泚ããããŸã-ç¹å®ã®éé¡ã䜿çšãããã®ãåŸ ã£ãŠããŸãããšãã°ããã£ãã«ã®å¹ ãåããªã©ã®åœ¢ã§ã®æ²çœ°çæªçœ®ããŸãã¯äžããæ¯æãå¿ èŠããããŸãã ãããã£ãŠããããã³ã«ãæ éã«æ€èšãããã¹ãŠã®ãã€ããç¯çŽããŠãã ããïŒ æ¥äžã«ãã¬ã€ãã10,000人ã®ã©ã€ããã¬ã€ã€ãŒãããŠããã®æ¥äžã«çŽ200ã®ã¬ãã€ãã®ã²ãŒã ãã©ãã£ãã¯ãçæããŸããã ããããããã¯ããã»ã©å€ããªãããã«æãããããããŸããããæ¶è²»ããããã©ãã£ãã¯ã®éãèŠèŽè ãšãšãã«å¢å ããããšãå¿ããªãã§ãã ããã 1ã€ã®ãã±ããã«æ°ãã€ããä¿åãããšã1æ¥ã«æ°çŸã¡ã¬ãã€ããŸãã¯æ°ã®ã¬ãã€ãã®ãã©ãã£ãã¯ãç¯çŽã§ããŸãã
ã²ãŒã ããã¯ã®çš®é¡ã®ã¬ã€ã¢ãŠãã䜿çšããŠããã©ãã£ãã¯çµ±èšãä¿æããŸãã ã»ãšãã©ã®å Žåãæ°åçš®é¡ã®ã²ãŒã ããã±ãŒãžããããšããäºå®ã«ããããããããã©ãã£ãã¯ã®å€§éšåã¯ãããã®ããã€ãã«åœãŠã¯ãŸãããšã«æ°ã¥ãã§ããã-ãããã«ã¯ç¹å¥ãªæ³šæãæãå¿ èŠããããŸãã
Https
VKontakteã§iframeã²ãŒã ãå«ãã²ãŒã ãäœæããå Žåã¯ãvk.comèªäœãHTTPSãä»ããŠæ©èœãããããHTTPSã«åŒ·å¶åãæ¿ãããå¿ èŠããããŸãããã®å Žåãå éšã®iframeããåããããã³ã«ãå¿ èŠã«ãªããŸãã HTTPSã§å®è¡ãããŠãããµã€ãã¯ãSSL Webãœã±ããã§ã®ã¿æ©èœããŸãã
æè¡ãªã¹ã
.ioã²ãŒã ãäœæããããã«å¿ èŠãªãã¯ãããžãŒã®å®å šãªãªã¹ãã¯æ¬¡ã®ãšããã§ãã
- HTML / CSS-ããŒãžã¬ã€ã¢ãŠãã
- JavaScript-ã²ãŒã ã®ã¯ã©ã€ã¢ã³ãéšåãããã°ã©ã ããŸãã
- WebGL / OpenGL ES Shading Language-ã°ã©ãã©ã³ãäœæããŸãã
- WebSocket-ãããã¯ãŒã¯ãäœæããŸãã
- ãããã³ã«ãããã¡/èªè»¢è»-ã¯ã©ã€ã¢ã³ããµãŒããŒéä¿¡ã®ãããã³ã«ãäœæããŸãã
- ã²ãŒã ãµãŒããŒãèšè¿°ãããèšèªã ããã§ã¯ãJavaãScalaãC ++ãRustãErlangãHaskellãªã©ãéžæè¢ãèšå€§ã§ããããªãã®éã ããæããã®ã§ãã
- ...
- å©çïŒ
çµæ
ç§ãã¡ã®ã²ãŒã ã¯ãŸã ããŒã¿çã§ãããçµæãä»ããèŠãããšãã§ããŸãïŒ oceanar.io ïŒãããŸã§ã®ãšããããã¹ã¯ããããã¢ãã€ã«ãã¿ãã¬ããã®ããŒãžã§ã³ã§ã®ã¿åäœããŸãïŒã
ãæž èŽããããšãããããŸããã ã³ã¡ã³ãã§ç§ã¯ããªãã®è³ªåã«çããŸãã