ã¿ãªããããã«ã¡ã¯ïŒ ç§ã¯åžžã«ãä»ã®äººã®å®éã®çµéšã«é¢ããèšäºãèªãã§ããã¬ãŒãµãŒã¬ãŒããŸãã¯ã¬ãŒããééããããšã«éåžžã«èå³ããããŸãã ãããã£ãŠããã®èšäºãå§ããŠããŠãããã§ã®ã²ãŒã ã®äžçã§ã®ãããããªçµéšãå
±æãããŠãããã§ã®äœæ¥ã®ä»ã®äººã®çµéšã«ã€ããŠããã«åŠã³ãããšæããŸãã
ããã§ãæšå¹Žã®11æã«ãç§ãã¡ã®ããŒã ã¯ã¯ã©ã€ã¢ã³ãã»ãã·ã§ã³ã»ãã·ã§ã³mnogoshochkaãäœãå§ããŸãã-è»ã«ä¹ã£ãŠãæµãæã¡ãŸãã ç§ã¯ãããŒã ããŠãããã§æåãããããžã§ã¯ãã®çµéšããã§ã«æã£ãŠãããšèšããªããã°ãªããŸãããããã¯æ¥è§Šã®ããã®3Dã¬ãŒã¹ã§ããã ãã®ããããŠãããå
ã®è»ã®ããŒãã¯ãã§ã«ããç¥ãããŠããããããç¯çŽããããšãèšç»ãããŠããŸããã æåã«æ±ºããããæåã®ããšã¯ãæŠå¿µå®èšŒãå¯èœãªéãè¿
éã«äœæããããšã§ãã-ã²ãŒã ã®ãã¢ãå¯èœãªéãæ£ç¢ºã«ç€ºãããšã§ãã ãã®ã€ãã³ãã®ç®çã¯çè§£ã§ãã-ã²ãŒã ã«åãŸããªããã¹ãŠã®ãã®ãã§ããã ãæ©ã鮿ããããšã§ãã ããã«ããµãŒããŒãšã³ãžã³ãéžæããŸããã ã¯ã©ã€ã¢ã³ãã§ããã«ãã¹ãŠãæããã«ãªããŸãããUnity3dããã¹ãŠã§ããããµãŒããŒãšã³ãžã³ãšããŠäœãéžã¶ã¹ãã§ããããã ãããåé¡ã§ãã ããã«ã€ããŠããã«è©³ãã説æããŸãã
ãã®ãããæ¬¡ã®å¿åè
ãèŠã€ãããŸããã
1.
ãã©ãã³2.
Smartfox3.
çµã¿èŸŒã¿ã®Unityãããã¯ãŒã¯4.
ElektroServer5.
uLink6.
CrystalEngineUnityã®çµã¿èŸŒã¿ãããã¯ãŒã¯ã¯ããã«æåŠã
ãŸããã ãã®ãœãªã¥ãŒã·ã§ã³ã¯ãµãŒããŒäžã®ç©çåŠããµããŒãããŠããŸãããããã¯å®å
šã«æš©åšãããµãŒããŒãæå³ããŸããããã®å Žåãæ°ãããããã«ãŒã ãéå§ããã«ã¯ããµãŒããŒäžã§æ°ããUnityã€ã³ã¹ã¿ã³ã¹ãäœæããå¿
èŠããããŸããããã¯éåžžã«é«äŸ¡ã§ãã
ElektroServerã¯ãéžæã®æç¹ã§ã¯ãä»ã®å¿åè
ã»ã©ããŒã¹ãéããªãããã«æããã®ã§ãå¿ã®
åºããè¯ããããããŸããã ããã«ãWebãµã€ããèŠããšã倧倿°ã®é¡§å®¢ã¯ElektroServerãäœæããã¹ã¿ãžãªã®ãµãŒãã¹ã泚æããŠããããµãŒããŒãœãªã¥ãŒã·ã§ã³ããªã¢ãŒãã§æ³šæãã顧客ã¯å°æ°ã§ãã ãããã£ãŠãElektroServerãæåŠããŸããã
uLinkã¯è峿·±ããã®ã§ãããçŸæç¹ã§ã¯éåžžã«æ°ãããã®ã§ãã ããã«ãç§ãèŠããŠããéãã§ã¯ãuLinkã¯ãŠãããå
ã«ååšããã¯ã©ã€ã¢ã³ãããµãŒããŒããããã£ãŠãµãŒããŒããã©ãŒãã³ã¹ã®åé¡ãçºçããŸãã ååãšããŠãããšãã°ã«ãŠã³ã¿ãŒã®ããã«ããã¬ãŒã€ãŒèªèº«ã詊åã®ããã«ãµãŒããŒãäžããããšãã§ããããã«ããå Žåããœãªã¥ãŒã·ã§ã³ã¯è¯ãã¯ãã§ãã å€èгã§ã¯ããŠãããã«çµã¿èŸŒãŸãããããã¯ãŒã¯ãããuLinkã®æ¹ãã¯ããã«å€ãã®å©ç¹ããããŸãã
CrystalEngineã¯è¥ããé²åãããšã³ãžã³ã§ãã å©ç¹-éçšåã®ãã¢ãäœæããæç¹ã§ãç§ãã¡ã®ããŒã ã¯ãã®ãšã³ãžã³ã®äž»ãªéçºè
ã§ããã ãã€ãã¹é¢ã®ãã¡ããšã³ãžã³ã¯è¥ãããŠãããã¥ã¡ã³ãã®æ¬ åŠãšå€§ããªã³ãã¥ããã£ã®æ¬ åŠã«çŽé¢ããŠããŸãã ãããã£ãŠããã®ãšã³ãžã³ã䜿çšããªãããšã«ããŸããã
åèšã§ã2人ã®ãã¡ã€ããªã¹ããæ®ã£ãŠããŸãã
Photon vs
Smartfoxæ®å¿µãªãããéçšåã«äž¡æ¹ã®ãœãªã¥ãŒã·ã§ã³ããã¹ãããæéã¯ãããŸããã§ããã äž¡æ¹ã®ãšã³ãžã³ãå°æ¬ãåŒã³èµ·ãããã²ãŒã ãããã¥ã¡ã³ããæŽ»æ°ã®ããã³ãã¥ããã£ããªãªãŒã¹ããŸããã ãã®ããããšã³ãžã³ãéžæããäžã§éèŠãªåœ¹å²ãæãããã®ã¯ãç§ããã§ã«ã¹ããŒããã©ã³ã«ç²ŸéããŠããŠããããè¯ãé¢ã§ããç¥ã£ãŠããªãã£ããšããäºå®ã§ãã ææ
®æ·±ããçè§£ããããIPAãèšå€§ãªæ°ã®ç«ã¡äžããããžã§ã¯ããLinuxã§åäœããŸãã äžè¬çã«ãSmartfoxãåã¡ãŸããã ãµãŒããŒããã¹ãããããã®ãã¢ãäœæããŸãããããªãã£ã¹ãã700ã¯ã©ã€ã¢ã³ããŸã§ããèµ·åããŸããã§ãããããã®åŸããªãã£ã¹ãããã¯ãŒã¯ã¯ãã§ã«ãã£ãããšæ»ã«å§ãããµãŒããŒã¯ã»ãšãã©è² è·ãæããŸããã§ããã ããã«é¢ããŠãç§ã¯è³ªåããããŸã-誰ããã²ãŒã ãµãŒããŒã®è² è·ãã¹ããããŸãããïŒ ãããããªããã©ã®ããã«ãã¹ããããŸãããïŒ
ããã§ã¯å
ã«é²ã¿ãŸãããã ããã°ã©ããŒã®ãã¢ã®äœæã®æåã«ãããŒã ã«ã¯3ã€ã®ã¡ã€ã³ãµãŒããŒããããŸãããã¡ã€ã³ãµãŒããŒã§ãããçããµãŒã¯ã«ã§åºãç¥ãããŠããNeodropïŒUnity3dããã³ãµã€ã
unity3d.ruã®ãã·ã¢ã®ã€ã³ã¿ãŒãããã³ãã¥ããã£ã®åµèšè
ïŒã ãµãŒããŒãšã³ãžã³ãšããŠSmartfoxãéžæãããåŸãç§ãã¡ã®ãµãŒããŒã®äººã¯å»ããŸããã ããã§ããµãŒããŒããã°ã©ãã®ãµãããå§ããŸããã
ããªãããã¯ã·ã§ã³ã®1ãæåã®éãæ¬¡ã®ãã¢ãéå§ããããšã倿ããŸããã
1.å
±æãã£ããã«ãŒã ã®ããã¬ã¬ãŒãžããããŸãã
2. 2ããŒã ã®æŠããéå§ã§ããŸãã
3.åãã¬ã€ã€ãŒã¯4å°ã®ãã¡1å°ç®ã«ä¹ããŸãã
ã¹ã«ãŠããéè£
ç²è»ãããµã€ã«çºå°æ©ããŸãã¯ãšã³ãžãã¢ãªã©ããã¹ãŠãå
æ°ã«é転ããåããå€ããå°æ®ºããæ®ºãåããŸããã ãããWorld of Tanksã«äŒŒãèŠçã·ã¹ãã ããŸã ãããŸãããããã¡ããããã»ã©ã¯ãŒã«ã§ã¯ãããŸããã§ããã
å°æ¥ãèŠæ®ããŠã次ã®äºå®ã«æ³šç®ãã䟡å€ããããŸãããã®ãããªãã¢ã®äœæã«ã¯ã1ãæãããããŸããã§ããã ãã®åŸãçç£ã®ããã«ã³ãŒãããããããã«ããããã«ãã¹ãŠããŒãããæžãçŽãããšã«ããäžè¬ã«ã¢ãžã¥ãŒã«ãæ©åšã®å€æŽãªã©ã®å¿
èŠãªæ©èœããã¹ãŠå¯èœã«ãªã£ããšãããã®ãããªãã¢ã®ãã¬ã€ã¢ããªãã£ã®ã¬ãã«ã«å°éã§ããã®ã¯2ã3ãæåŸã§ãã ããã«ã2人ã§ã¯ãªã6-7人ãããã°ã©ã ã«åå ããŸããã ããã¯ããã¢ã§ã¯å®è¡æã«ã¢ãžã¥ãŒã«ãæ©åšã倿Žããããšãäžå¯èœã ã£ãããã«èµ·ãããŸããããã®å¯èœæ§ã¯æçµè£œåã«ããã¯ãã§ãã ãã®ããã1ã€ã®æ©èœã§äººä»¶è²»ãå¢å ããå ŽåãããããšãããããŸããã ïŒãã¡ãããããã¯1ã€ã ãã§ã¯ãããŸãããæçµè£œåã§ã¯ã管çããã«ã§ç®¡çã§ãããã®ãšãã¹ãã§ãªããã®ã¯ãã¹ãŠããããæ¥œããã§ããïŒ
äœããæè©ãå·ã€ããããšã倿ããã®ã§ãããå°ãæè¡çãªè©³çްã远å ããŠã¿ãŸãã ãããžã§ã¯ãäžãããªãã®æ°ã®åé¡ãåé¡ã衚é¢åããŸããããããã¯å°ããªãããžã§ã¯ãã«ã¯ã»ãšãã©é¢ä¿ããªãããã»ãšãã©ç¡é¢ä¿ã§ãããå€§èŠæš¡ãªãããžã§ã¯ãã§ã¯äœæ¥ãé
ããªããªãããã«è§£æ±ºããå¿
èŠããããŸãã
æåã«ééããåé¡ã¯ãã¯ã©ã€ã¢ã³ããšãµãŒããŒéã®éä¿¡ãããã³ã«ã§ãã ã¹ããŒããã©ã³ã§ã¯ããã¹ãŠã次ã®ããã«é
眮ãããŸãã
1.ã¯ã©ã€ã¢ã³ãã³ãŒãã¯ã次ã®ã¿ã€ãã®ã€ãã³ãã«ãµãã¹ã¯ã©ã€ãããŸãã
smartFox.AddEventListener(SFSEvent.EXTENSION_RESPONSE, OnExtensionResponse);
2.ãµãŒããŒããã³ãã³ããåŒã³åºãããšã«ãããã¯ã©ã€ã¢ã³ãäžã®ãã¹ãŠã®ãµãã¹ã¯ã©ã€ããŒã¯ããµãŒããŒãããã©ã¡ãŒã¿ãŒãéä¿¡ããã¡ãœãããæã¡ãŸãã ãµãŒããŒããã®ãã©ã¡ãŒã¿ãŒã¯ãã³ãã³ãåæååãšãããã·ã¥ããŒãã«ã«é¡äŒŒããç¹å®ã®
SFSObject
ã®åœ¢åŒã§éä¿¡ããããµãŒããŒããã¯ã©ã€ã¢ã³ãã«éä¿¡ããããã¹ãŠã®ããŒã¿ãå«ãŸããŸãã
ãããã£ãŠããµãŒããŒããã³ãã³ããå®è¡ããã«ã¯ãé©åãªå Žæã§ãµãŒããŒã¡ãã»ãŒãžããµãã¹ã¯ã©ã€ãããå¿
èŠããããã¡ãœããå
ã§ãããå¿
èŠãªã³ãã³ãã§ãããã©ããã確èªãããããæ£ããã³ãã³ãã§ããå Žåã
SFSObject
ããå¿
èŠãªãã¹ãŠã®ããŒã¿ã
SFSObject
ãæåŸã«ã³ãã³ããå®è¡ããŸãã åœç¶ãç§ã¯åžžã«ãã³ã§ãããããããããŸããã§ããã ããã«ç§ã«èµ·ãã£ãæãç°¡åãªããšã¯ããã®ã€ãã³ãã«å¯ŸããŠ1ã€ã®ã²ãŒã ã³ã³ãããŒã©ã«çœ²åããä»åŸã¯æç€ºçã«åå¥ã®ã³ãã³ããåå¥ã®ãã©ã¡ãŒã¿ãŒãå«ãã€ãã³ããäœæããããšã§ããã æ¬¡ã®ããã«ãªããŸããïŒ
public class SFSExtensionsController : MonoBehaviour { public delegate void ExtensionResponceDelegate(string cmd, SFSObject parameters); public static event ExtensionResponceDelegate onExtensionResponce = null; void Start() { smartFox.AddEventListener(SFSEvent.EXTENSION_RESPONSE, OnExtensionResponse); } static void OnExtensionResponse(BaseEvent evt) { string cmd = (string)evt.Params["cmd"]; SFSObject sfsParameters = (SFSObject)evt.Params["params"]; if (onExtensionResponce != null) { onExtensionResponce(cmd, sfsParameters); } } }
ããããæªãã¯ãããŸããããååä¿¡è
ã®è§£æãã©ã¡ãŒã¿ãŒã®åé¡ã¯äŸç¶ãšããŠæ®ã£ãŠããŸãã ãããã£ãŠã次ã«è¡ãããã®ã¯ã
onExtensionResponce
ã€ãã³ãã«ãµãã¹ã¯ã©ã€ãããã³ã³ãããŒã©ãŒã®å°å
¥ã§ãããã³ã³ãããŒã©ãŒå
ã§ã¯ãè«ççã«äžå¯æ¬ ãªããŒã ã®äžéšãã€ã³ã¿ãŒã»ããããŸããããšãã°ãç§»åã®ã¿ããŸãã¯å°æã®ã¿ãæ
åœããããŒã ãã€ã³ã¿ãŒã»ããããã²ãŒã ããžãã¯ã®æºåãæŽã£ãããŒã¿ã§ã€ãã³ããæäŸããŸãã
ãã®ãããªãœãªã¥ãŒã·ã§ã³ã«ã¯å©ç¹ããããŸã-ã²ãŒã ããžãã¯å
ã§ã¯ãå¿
èŠãªãã£ãŒã«ããååšãããã©ã
SFSObject
æ¯å確èªããå¿
èŠã¯ãããŸããã ããããååãªãã€ãã¹ããããŸã-ã€ãã³ããçãå°éåãããŠããŠããã®ãµãã¹ã¯ã©ã€ããŒã1人ã ãã§ããå Žå-ããã®ããã«ãç§ã¯ãŸã£ãã倧éšãããããããŸããã ããã«ããã®ãããªã³ã³ãããŒã©ãŒã倿°ããå Žå-ç®çã®ã€ãã³ããé
眮ãããŠããã³ã³ãããŒã©ãŒãèŠã€ããæ¹æ³ã¯ïŒ ãŸãã
SFSObject
ã«ã¯èªå
SFSObject
ããªãããšãå¿ããªãã§ãã ããããããŸã§ã®ãšãããã¯ã©ã€ã¢ã³ããšãµãŒããŒã®äž¡æ¹ã§ç®çã®ã³ãŒããèšè¿°ããããšã«ãããåã¯ã©ã¹ãæåã§ã·ãªã¢ã«åããå¿
èŠããããŸãã ïŒã¯ãã
SFSObject
ã«ã¯
SFSObject
ä»»æã®ã¯ã©ã¹ã
SFSObject
åããã¡ãœããããããŸããããã®æ©èœã®ãããªãã®ã¯
SFSObject
ãŸããã§ãããæŽçããæéã¯ãããŸããã§ãããïŒã¯ã©ã€ã¢ã³ãããã³ãµãŒããŒäžã®ã³ãã³ãã®æåååã®IDããã³ã§ç¶æããããšãå¿
èŠã§ãã ç¥ã¯çŠããããŠããŸãã誰ããã©ããã«å°å°ãããŠããŸãã ãã®ãããSmartFoxã®ãã¯ãŒãšææ
®æ·±ãã«ãããããããããããã®ãŸãŸäœ¿çšããŠãè€æ°ã®äººãè¡ãããšã®ã§ããªããããžã§ã¯ãã®æ¥œãã¿ã«äœ¿çšããããšã¯ã§ããŸããã
ããã... ...ãã¹ãŠã®æ¬ ç¹ã«ã€ããŠãäžèšã®ã·ã¹ãã ã¯ã¿ã¹ã¯ãå®äºãããã¢ã¯å®å
šã«æ©èœããŸããã ãããããã®å Žæã¯çç£æ®µéã§æåã«æçŽããããŸããã 解決ãã¹ãããã€ãã®ã¿ã¹ã¯ããããŸããã
1.ããŒã¿äº€æãããã³ã«ã®ã³ãã³ãã®IDãããã³ã¯ã©ã€ã¢ã³ããšãµãŒããŒéã§
SFSObject
ãã
SFSObject
ã®æ§é ã
2.ã²ãŒã ããžãã¯ããŒã¿ã®èªåã·ãªã¢ã«å/éã·ãªã¢ã«åã
3.ã²ãŒã ããžãã¯ãæäŸããã¯ã©ã¹ããã®äŸ¿å©ãªã¡ãã»ãŒãžã®éåä¿¡ã
é 調ã«è¡ããŸãããã
ãã€ã³ã2ïŒèªåã·ãªã¢ã«å/éã·ãªã¢ã«åã äºçްãªããšã®ããã«æããŸã-ãªãã¬ã¯ã·ã§ã³ã䜿çšããŠãã¯ã©ã¹ã®ååãªã©ã®å¿
èŠãªè¿œå æ
å ±ããã¹ãŠ
SFSObject
ããã°ã幞çŠãåŸãããŸãã ããããããã¡ãã¯ãªã¢ã«ã¿ã€ã ã§ãããæ©æ¢°ã®äœçœ®ãé床ãã¿ã¬ããã®å転ãªã©ãçµ¶ããå€åããããŒã¿ã®å€§èŠæš¡ãªã¹ããªãŒã ã§ããããããã®å Žåã®å¹žçŠã¯å®å
šã«ã¯ã»ã©é ãã§ãããã ãªã© ãã®ããŒã¿ã®å€ãã¯ããµãŒããŒãšã¯ã©ã€ã¢ã³ãã®éã§æ¯ç§æ°åéä¿¡ãããŸããåéšå±ã«ã¯32人ã®ãã¬ãŒã€ãŒãèšç»ãããŠããŸãããããã®éšå±ã¯ããããžã§ã¯ããç Žç£ããªãããã«å°ãªããšã50ã®ãµãŒããŒã«å¿
èŠã§ãããããã£ãŠããœãªã¥ãŒã·ã§ã³ã¯é¡ã«åãŸããŸããã ãããŠã次ã®ã¢ã€ãã¢ãç§ãã¡ã®å©ãã«ãªããŸããã
SFSObject
ã²ãŒã ããŒã¿ãããã¯/ã¢ã³ããã¯ããããã®ã³ãŒãã¯ç°¡åã§ãããã°ã©ã ã§ãããã®ã³ãŒããäœæã§ããŸãã åèšã§ãå
¥åã§æå®ããã圢åŒã®iksmãã¡ã€ã«ãåãåããåºåã§ãœãŒã¹ã³ãŒãä»ãã®2ã€ã®ãã¡ã€ã«ãåºåãããŠãŒãã£ãªãã£ãäœæãããŸããã1ã€ã¯Unityã®CïŒã§ããã1ã€ã¯Smartfoxã®Javaã§ãã çµæã®ãã¡ã€ã«ã«ã¯ã
SFSObject ToSFSObject()
ãš
void FromSFSObject(SFSObject sfsObject)
2ã€ã®ã¡ãœãããæã€ã¯ã©ã¹ãå«ãŸããŸãã
CïŒçšã«ããã°ã©ã ã§çæãããã¯ã©ã¹ã®äŸ
public class StartMultipleArtilleryShootProxy : ISFSSerializable { public int userId { get; set; } public long barrelId { get; set; } public long projectile { get; set; } public Vec3fProxy position { get; set; } public List<Vec3fProxy> direction { get; set; } public float startSpeed { get; set; }
iksmlãã¡ã€ã«å
ã®ãã®ã¯ã©ã¹ã«é¢ããã¬ã³ãŒãïŒ
<StartMultipleArtilleryShootProxy userId-ui="int" barrelId-bi="long" projectile-pr="long" position-p="Vec3fProxy" direction-d="Vec3fProxy array" startSpeed-s="float"/>
ãããã³ã«ã倿Žããå Žåãxmlãã¡ã€ã«ã倿ŽãããŠãŒãã£ãªãã£ãå®è¡ãã
SFSObject
ãå¿
èŠãªã¯ã©ã¹ã«ãã°ããã·ãªã¢ã«å/éã·ãªã¢ã«åã§ããã³ãŒããååŸããŸãã ã¯ã©ã€ã¢ã³ããšãµãŒããŒã®ãã¡ã€ã«ã眮ãæããã ãã§ãïŒ
xãã¡ã€ã«ã®åœ¢åŒãéçºããã¯ã©ã€ã¢ã³ããšãµãŒããŒéã§éä¿¡ãããããŒã¿ã ãã§ãªããã³ãã³ãã®ååãããã«ä¿åããããšã«ãããæåã®ãã€ã³ãã解決ããããšã¯è«ççã§ãã ããã...ã¿ã€ã ã©ã€ã³ã¯åžžã«ãªã³ã«ãªã£ãŠãããçŸæç¹ã§ã¯ãã®ãããªããšãããæéã¯ãããŸããã ãããã£ãŠãããŒã åã®ã¿ã€ããã¹ã®åé¡ã¯ããã©ã°ã©ã3ã解決ããããã»ã¹ã§éšåçã«è§£æ±ºãããŸããã
ãµãŒããŒããã¡ãã»ãŒãžãåä¿¡ããããã®äžå€®ã³ã³ãããŒã©ãŒã®ã¢ã€ãã¢ã¯ããã»ã©æªããªãã£ãã®ã§ããã®ã³ã³ãããŒã©ãŒãæ®ãããšã«ããŸããã ããã«ããµãŒããŒããã®ã€ãã³ãããšã«ãåŠçããã³ãã³ããšåºåããããŒã¿ãæ£ç¢ºã«ææ¡ããç¬èªã®å°ããªã¯ã©ã¹ãäœæããããšã決å®ãããŸããã ãã®ãããªã¯ã©ã¹ããã¹ãŠ1ã€ã®å Žæã«ããã·ã¥ãããããã«é©åãªååãä»ããŠãã¢ããªã±ãŒã·ã§ã³ã®éå§æã«ããããåæåã§ããŸãã ãããã£ãŠãã¯ã©ã€ã¢ã³ãããžãã¯ã¯ãããããçš®é¡ã®ã¹ããŒããã©ã³ã«ã€ããŠç¥ãå¿
èŠã¯ãããŸãããã³ãã³ãã¹ãã¢ã«ã¢ã¯ã»ã¹ããã ãã§ååã§ãã
SFSProtocol.Protocol.BATTLE.HitRivalRequest.onGetResponce += OnGetHitRivalResponce;
ã€ãã³ããã³ãã©ãŒã¯ãã²ãŒã ããžãã¯ã«å¿
èŠãªæ¢ã«å³å¯ã«åæå®ãããããŒã¿ãååŸããŸãã
void OnGetHitRivalResponce(HitResultProxy hitResultProxy) {
ãããŠä»ãå°ãéæ³ããããŸããããã¯ãUnityãããèªäœã®å
éšã§ã·ã³ã°ã«ã¹ã¬ããã³ãŒããããã¢ãŒããããµãŒããŒããã®ã€ãã³ãã1ã€ã®ã¹ã¬ããã§åŒã³åºããããšããäºå®ã«åºã¥ããŠããŸãã ãã®ã·ã³ã°ã«ã¹ã¬ããæäœã®ãããã§ãã¹ããŒããã©ã³ãšçŽæ¥éä¿¡ããå¯äžã®ã³ã³ãããŒã©ãŒã§ã誰ãããµãŒããŒããã®ã³ãã³ããåŠçãããã©ããã確èªãã誰ãåŠçããŠããªãå Žåã¯ãããã«ããããã°ã«å«ã¶ããšãã§ããŸãã ç°¡åã«èŠããïŒ
cmdWasCatched = false; if (onExtensionResponce != null) { onExtensionResponce(cmd, sfsParameters); } if (!cmdWasCatched) { Debug.LogError(string.Format("SFSExtensionsController.OnExtensionResponse cmd={0} was not catched!", cmd)); }
ããã«ããã®ãããªã¢ãŒããã¯ãã£ã«ãããã¯ã©ã€ã¢ã³ããšãµãŒããŒã®éä¿¡ã«çµ¶å¯Ÿã«å¿
èŠãªããšãè¡ãããšãã§ããŸããïŒãµãŒããŒããã®å¿çã®ã¿ã€ã ã¢ãŠãããã§ãã¯ããã²ãŒã ããžãã¯ããŒã¿ã«å ããŠè¿œå ã®ãµãŒãã¹ãã£ãŒã«ãã远å ããŸãïŒããšãã°ãã¯ã©ã€ã¢ã³ãããã®èŠæ±ãæ£åžžã«åŠçããããã©ããã倱æããå Žå-説æãµãŒããŒãšã©ãŒãïŒ
èšäºã®æåŸã§ãèžã¿èŸŒãã ãã1ã€ã®ã¬ãŒãã«èšåãã䟡å€ããããŸãã ãããã³ã«ã§ã®æ°ããã³ãã³ãã®äœæãç°¡çŽ åããããã«ããã©ã¡ãŒã¿ãŒåå¯èœãªã¯ã©ã¹ãäœæãããŸããããã®ã¯ã©ã¹ããããµãŒããŒã«éä¿¡ããããŒã¿ã®ã¿ã€ãããµãŒããŒããåä¿¡ããããŒã¿ã®ã¿ã€ããæå®ããã³ã³ã¹ãã©ã¯ã¿ãŒãã«ããã§ããŸãã ãã®ã¯ã©ã¹å
ã®ãªããžã§ã¯ããéã·ãªã¢ã«åããã³ãŒãã¯æ¬¡ã®ããã«ãªããŸããã
public class SFSRequest<TReqData, TRespData> : DataTransporter where TReqData : ISFSSerializable, new() where TRespData : ISFSSerializable, new() { âŠ.......... protected override void Execute(Sfs2X.Entities.Data.SFSObject sfsParameters) { responceData = new TRespData(); responceData.FromSFSObject(sfsParameters); OnGetResponce(); } }
ãããŠããã¹ãŠãããŸãããããã«èŠããŸããã1ã€ã®å€§ããªããšããããŸãããã®å Žåã
new TRespData()
ã³ã³ã¹ãã©ã¯ã¿ãŒã¯ãªãã¬ã¯ã·ã§ã³ã䜿çšããŸãã ãã®çµæã圌ãã¯æŠã£ãŠãããã®ã«ééããŸããïŒåå°ããŸã 䜿çšãããŠããããã§ã«æŠéã§8人ã®ãã¬ã€ã€ãŒãæžéããŠããããšãé¡èã§ãã ç¶æ³ãä¿®æ£ããããã«ãããŒã ã®ã¯ã©ã¹ã«ããªã²ãŒãçšã®2ã€ã®ãã£ãŒã«ãã远å ãããŸããããããã®ãã£ãŒã«ãã¯
TReqData
ãš
TReqData
äœæ
TRespData
ã
TReqData
ã ãã®ãããåºæ¬ã¯ã©ã¹ãã³ãã©ã¯æ¬¡ã®ããã«ãªãå§ããŸããã
protected override void Execute(Sfs2X.Entities.Data.SFSObject sfsParameters) { responceData = respDataConstructor(); responceData.FromSFSObject(sfsParameters); onGetResponce(); }
ãããŠãç¹å®ã®ã³ãã³ãã®æçµã¯ã©ã¹ã¯æ¬¡ã®ãšããã§ãã
public class MultipleArtilleryShootStartRequest : SFSRequest<StartMultipleArtilleryShootProxy, StartMultipleArtilleryShootProxy> { public MultipleArtilleryShootStartRequest(string sendCommand, string receiveCommand, Func<StartMultipleArtilleryShootProxy> reqDataConstructor, Func<StartMultipleArtilleryShootProxy> respDataConstructor) : base(sendCommand, receiveCommand, reqDataConstructor, respDataConstructor) { } }
ã¡ãªã¿ã«ãHabrããã®èšäºã¯ãæ®å¿µãªããç§ã倱ã£ããªã³ã¯ãèŠã€ããã®ã«åœ¹ç«ã¡ãŸããã
ãããã®æ¹æ³ã¯ããŸãæŽç·ŽãããŠããŸããããéåžžã«äŸ¿å©ãªã¯ã©ã€ã¢ã³ããµãŒããŒéä¿¡ã§ããããšãããããŸããã 質åãã³ã¡ã³ããããå Žåã¯ããæ°è»œã«ã³ã¡ã³ãããŠãã ããã ãã®èšäºãæåŸãŸã§èªãã 人ã«ãšã£ãŠãå°ããªãã³ãšã¯
ãã€ã³ã¿ãŒãããã§æãåºãããã²ãŒã ãšã³ãžã³ã®ãã©ã¡ãŒã¿ãŒã®æŠèŠè¡šã§ã ã