ð ãã®èšäºã¯ Zenn ã«æçš¿ããå 容ã®ã¢ãŒã«ã€ãã§ãã
ã¯ããã«
ã²ãŒã ãšã³ãžã³ã®èšèªã®è©±ã«ãªããšããããããªå¯Ÿæ¯ãåºãŠããŸãã
Unity 㯠C#ã
Unreal 㯠C++ ãš Blueprintã
ãã®éãããã ã®å¥œã¿ã§ã¯ãããŸããã
ãšã³ãžã³ã®èšèšææ³ãã®ãã®ã«é¢ãã£ãŠããŸãã
C# ãåªããŠãããšããC++ ãå€ããšããããããåçŽãªè©±ã§ã¯ãªãã
äž¡è
ã¯ããããç®æããŠããéçºäœéšãéãã®ã§ãã
Unity ã蟿ã£ãèšèªçµ±äžã®æŽå²
ä»ã§ãããUnity ãšããã° C#ããšããå°è±¡ããããŸãããæåããããã ã£ãããã§ã¯ãããŸããã
åæã® Unity ã§ã¯ãéçºè
ã®ããã¯ã°ã©ãŠã³ãã«åãããŠè€æ°ã®èšèªãéžæã§ããã®ãç¹åŸŽã§ããã
å ·äœçã«ã¯æ¬¡ã®3ã€ã§ãã
C#
UnityScript ïŒJavaScript 颚ã®ç¬èªèšèªïŒ
Boo ïŒPython 颚ã®èšèªïŒ
åœæã® Unity ã¯ãã¹ã¯ãªããèšèªã®èªç±åºŠãã売ãã®äžã€ã«ããŠãããWeb éçºè 㯠UnityScriptãPython ç³»ã«æ £ããŠãã人㯠Booããšããå ·åã«éžã¹ãããã«ãªã£ãŠããŸããã
ãããããã®æ¹éã¯é·ãã¯ç¶ããŸããã§ããã
Unity 2017 é ããæ®µéçã«éæšå¥šãšãªãã
Unity 2019.1 ãæåŸã« UnityScript ãš Boo ã¯å®å
šã«åé€ ãããŸãã
çµæãšããŠãUnity ã®ã¹ã¯ãªããèšèªã¯ C# ã®ã¿ ã«çµ±äžãããŸããã
åè
https://discussions.unity.com/t/which-release-removed-support-unityscript-and-boo/1624299
ãªããããªã£ãã®ããçç±ã¯ããã€ããããŸãã
ãŸããè€æ°èšèªã®ç¶æã³ã¹ãã§ãã
ãšã³ãžã³åŽã¯ã³ã³ãã€ã©ãããŒã«ãã§ãŒã³ããããã°ç°å¢ãªã©ããã¹ãŠãµããŒããç¶ããå¿
èŠããããŸãã
ããã«éèŠãªã®ã¯ãUnityScript ãš Boo ã®å®æ
ã§ãã
ãããã¯èŠãç®ããå¥èšèªã§ããããå
éšã§ã¯ Mono äžã§åäœããã¹ã¯ãªããã§ããã
ã€ãŸãã
å®è¡ç°å¢ã¯å ±éïŒMonoïŒ
ææ³ã ããéã
ãšããç¶æ ã ã£ãã®ã§ãã
ãã®çµæãã³ãã¥ããã£ã§ãåŸã
ã« C# ãäž»æµã«ãªã£ãŠãããŸããã
ãšã³ã·ã¹ãã ïŒã©ã€ãã©ãªã»ãã¥ãŒããªã¢ã«ã»Asset Store ãªã©ïŒã C# äžå¿ã«çºå±ããŠãããŸãã
ããã㊠Unity ã¯æçµçã«ã
ãC# ã第äžèšèªãšãããšã³ãžã³ã
ãšããçŸåšã®åœ¢ã«èœã¡çããŸããã
Unity ã C# ãäžå¿ã«æ®ããçç±
Unity ãå°ãè§ŠããšããåãããŸããããã®ãšã³ãžã³ã¯ããªãããŒã«å¯ãã§ãã
ã€ã³ã¹ãã¯ã¿ãŒã§å€ãè§ŠããªããåäœãèŠãã
ãšãã£ã¿æ¡åŒµãæžãã
å°ããäœã£ãŠããåããã
ãã®ã¯ãŒã¯ãããŒãš C# ã®çžæ§ã¯ãæ£çŽããªãããã
å®éã« C# ã§ããŒã«ãæžããããšããã人ãªãåãããšæããŸããã
Reflection ããšã«ãã䟿å©ã§ãã
äŸãã° Unity ã§ã¯ã
[SerializeField][Range]
ã¿ãã㪠Attribute ãä»ããã ãã§ãã€ã³ã¹ãã¯ã¿ãŒã®æåãå€ãããŸãã
ãããå
éšã§ã¯ Reflection ã§åæ
å ±ãèªãã§ããŸãã
ã€ãŸã Unity ã®èšèšã¯ã
ã³ãŒãã«ã¡ã¿ããŒã¿ãæžããŠãããŒã«åŽããããèªã
ãšããã¹ã¿ã€ã«ã§ãã
ãã®ä»çµã¿ã C++ ã§ããããšãããšããªãé¢åã«ãªããŸãã
C# ãªãæ¯èŒççŽ çŽã«æžããã
ããã ãã§ãããšã³ãžã³ã®éçºäœéšã¯ããªãå€ããã
C# ã®ãã¡ããã©ããã
ããäžã€å€§ããã®ããèšèªãšããŠã®æ±ããããã§ãã
GC ãããã®ã§ã¡ã¢ãªç®¡çã¯ããªã楜ã
ã³ã³ãã€ã«ãéãã
äŸå€ãæ®éã«äœ¿ããã
C++ ã§ã²ãŒã ããžãã¯ãæžããŠãããšã
ãã«ãåŸ
ã¡ã®æéã«ã³ãŒããŒãããäžæ¯å
¥ããããªãç¬éããããŸãã
Unity ã®ã¹ã¯ãªããéçºã¯ããã®ã¹ãã¬ã¹ãããªãå°ãªãã
ãšã³ãžã³ã®ã³ã¢ã¯ãã€ãã£ãã
ã²ãŒã ããžãã¯ã¯ãããŒãžãã
Unity ã¯ãã®å²ãåããããªãæ©ã段éã§æ±ºããŸããã
çµæãšããŠãC# ãäºå®äžã®ç¬¬äžèšèªã«ãªã£ãããã§ãã
Unreal ã¯æåãã C++ ã®äžçã ã£ã
äžæ¹ã® Unrealã
ãã¡ãã¯æåããC++ ãäžå¿ã®ãšã³ãžã³ ã§ãã
ãããæ®éã® C++ ã§ã¯ãããŸããã
Unreal ã®ã³ãŒããèŠããšããããªãã¯ãã倧éã«åºãŠããŸãã
UCLASS()
UPROPERTY()
UFUNCTION()
æåã¯ãã ã®ãã¯ãã«èŠããŸãã
ã§ãå®éã«ã¯éãã
ããã㯠UnrealHeaderToolïŒUHTïŒ ãšããããŒã«ã§è§£æããã
ãšã³ãžã³ã®ãªãã¬ã¯ã·ã§ã³æ
å ±ãçæãããŸãã
ã€ãŸã Unreal ã¯ã
C++ ãããŒã¹ã«ããç¬èªã®ã¡ã¿èšèªç°å¢
ãšèšã£ãæ¹ãè¿ãã
ãã®æ§é ã®äžã«ã
GC
ã·ãªã¢ã©ã€ãº
ãšãã£ã¿é£æº
ãå šéšä¹ã£ãŠããŸãã
UObject ãš GC ã®æ·±ãçµã³ã€ã
Unreal ã® GC ã¯ãæ®éã® GC èšèªãšã¯å°ãéããŸãã
UPROPERTY ãéããŠåç
§é¢ä¿ã远跡ãã
UObject ãååããŸãã
ã€ãŸãã
UObject
UPROPERTY
GC
ãã®3ã€ã¯å®å šã«äžäœã§ãã
ããã« C# ãæã¡èŸŒããšã©ããªããã
ãããŒãžã GC ãš UObject GCã
GC ãäºéã«ãªãã
ãªããžã§ã¯ãã®å¯¿åœç®¡çã¯ããªãè€éã«ãªãã§ãããã
ãšã³ãžã³ã®æ ¹ã£ããããã話ã«ãªããŸãã
ããäžã€ã®åé¡ïŒãã€ãã£ãå¢ç
C# ããšã³ãžã³ã«çµã¿èŸŒãå Žåãå¿ ãåºãŠããåé¡ããããŸãã
ãã€ãã£ãå¢çã§ãã
C# ãã C++ ãåŒã¶ã
ãã®ãã³ã« P/Invoke ãã©ãããŒãéãã
æ®éã®ã¢ããªãªãåé¡ã«ãªããŸããã
ã§ãã²ãŒã ãšã³ãžã³ã¯å°ãäºæ
ãéãã
æ¯ãã¬ãŒã ãäœååã API ãåŒã³ãŸãã
Transform ãèªãã
ã³ã³ããŒãã³ããååŸããã
Actor ãçæããã
ãã®å¢çã³ã¹ãã¯ç¡èŠã§ããŸããã
AAA ã¿ã€ãã«ãæ³å®ãã Unreal ã«ãšã£ãŠã¯ã
ããªãæ°ã«ãªãéšåã ã£ãã¯ãã§ãã
C# ãããã€ãã£ãã³ãŒããåŒã¶å Žåãé垞㯠P/Invoke ãªã©ã®ä»çµã¿ã䜿ããŸãã
https://learn.microsoft.com/en-us/dotnet/standard/native-interop/pinvoke
Unreal ãã¹ã¯ãªããèšèªãæšãŠãçç±
å®ã¯ Unreal ã«ãæã¯ã¹ã¯ãªããèšèªããããŸããã
UnrealScript ã§ãã
UE3 ãŸã§ã¯ã
C++
UnrealScript
ãšãã2å±€æ§é ã§ããã
ããã UE4 ã§ Epic ã¯ãã®èšèªãæšãŠãŸãã
çç±ã¯ããã€ããããŸããã
äžçªå€§ããã®ã¯ã¡ã³ããã³ã¹ã³ã¹ã ã§ãã
èšèªã2ã€ç¶æããã®ã¯åçŽã«å€§å€ã§ãã
ã³ã³ãã€ã©
ãããã¬
ã©ã³ã¿ã€ã
ãã€ã³ãã£ã³ã°
å šéšå¿ èŠã«ãªããŸãã
ããã§ Epic ãéžãã ã®ãã
C++ + Blueprint
ãšããæ§æã§ããã
Blueprint ã¯ãå¥ã®çãã
Blueprint ã¯ã¹ã¯ãªããèšèªã§ã¯ãããŸããã
ããŒãããŒã¹ã®ããžã¥ã¢ã«ã¹ã¯ãªããã§ãã
ãã ãäžèº«ã¯å®å šã« C++ åŽãšé£æºããŠããŸãã
UFUNCTION ãä»ãããš Blueprint ããåŒã¹ããUPROPERTY ãä»ãããšãšãã£ã¿ã«åºãã
ã€ãŸã Blueprint ã¯
C++ ã¡ã¿ã·ã¹ãã ã®ããã³ããšã³ã
ã§ãã
æ°ããèšèªãå¢ãããããã§ã¯ãªãã
C++ ã®äžçãããŒã«ã§æ¡åŒµããã ãã
ããã Unreal ã®çãã§ããã
ããã§ã C# ã Unreal ã§äœ¿ããã人ãã¡
ãšã¯ãããC# ã Unreal ã§æžããããšãã人ã¯ãã£ãšããŸãã
å®éãã³ãã¥ããã£ã§ã¯ããã€ãã®ãããžã§ã¯ããäœãããŠããŸãã
äŸãã°
UnrealCLR
ã
UnrealSharp
ã©ã¡ãã .NET ã Unreal ã«æ©æž¡ããã詊ã¿ã§ãã
å ¬åŒã§ã¯ãããŸããããé·ãç¶ããŠãããããžã§ã¯ãã§ãã
ããã ã C# ã®éçºäœéšã«é åãããããšããããšã§ããããŸãã
çµå±ãèšèªéžæã¯ãšã³ãžã³ã®ææ³
ãããŸã§èŠããšãæ§å³ã¯ãããšã·ã³ãã«ã§ãã
Unity ã¯
ããŒã«ãšéçºé床ãéèŠãããšã³ãžã³ã
Unreal ã¯
ãã€ãã£ãçµ±åãšããã©ãŒãã³ã¹ãçªãè©°ãããšã³ãžã³ã
ãã®çµæãšããŠã
Unity 㯠C# ãéžã³ã
Unreal 㯠C++ ã«æ®ã£ãã
ã©ã¡ããæ£ãããšãã話ã§ã¯ãããŸããã
ãšã³ãžã³ã®ææ³ãéãã°ã
éžã°ããèšèªãå€ããã
ããã ãã®ããšãªã®ã§ãã
远èšïŒUnrealãC++äžå¿ã«ãªã£ããæä»£ããšãVerseãçãŸããçç±
ãã®èšäºã«å€ãã®åé¿ãããã ããããããšãããããŸãã
ããã€ãè£è¶³ããŠããããç¹ãåºãŠããããã远èšããŸãã
ãŸãäžç¹ç®ã¯ãUnrealãC++ãäžå¿ã«èšèšããããæä»£èæ¯ãã«ã€ããŠã§ãã
å代Unreal Engineãç»å Žããã®ã¯1998幎ã
åœæã¯ãŸã .NET ã C# ããã®äžã«ååšããŠããŸããã§ããã
ä»ã®èŠç¹ã§èŠããšããªãC#ãæ¡çšããªãã£ãã®ãããšããè°è«ã«ãªããã¡ã§ããã
åœæã¯ã²ãŒã ãšã³ãžã³ïŒãã€ãã£ãã³ãŒãïŒC++ïŒã絶察çãªåæã ã£ãæä»£ã§ãã
UnityïŒ2005幎ç»å ŽïŒã®ããã«ããããŒãžãèšèªãåæãšããèšèšã¯ã
åœæã®ã²ãŒã ãšã³ãžã³ã§ã¯ããªãçããã¢ãããŒãã§ããã
ãã®ãåºçºç¹ãã®éãããçŸåšã®äž¡ãšã³ãžã³ã®ã¢ãŒããã¯ãã£ã®æ ¹å¹¹ã«ã
ä»ãè²æ¿ãæ®ã£ãŠããã®ã ãšæããŸãã
ãããŠããäžç¹ãè§ŠããŠããããã®ã æ°èšèªãVerseã ã®ååšã§ãã
ãGame Developers Conference 2024ïŒGDC 2024ïŒããªã©ã®è¬æŒã§ãè§ŠããããŠããŸãããã
Epicã¯å°æ¥çã«UE6äžä»£ã§Verseãããæ·±ãçµ±åããŠããæ¹éã瀺ããŠããŸãã
ããã§ããããªãä»ããã§ãC#ãæ¡çšããã°ããã£ãã®ã§ã¯ïŒããšããçåãæµ®ãã³ãŸããã
Verseã®èšèšææ³ãèŠããšããã®çãã¯åãªããã¹ã¯ãªããèšèªã®çœ®ãæããã§ã¯ãªãããšãããããŸãã
Verseãç®æããŠããæ¹åæ§ãšããŠã
å
¬éãããŠããè¬æŒãè³æãèŠãéãã§ã¯ã
ç¹ã«æ¬¡ã®ãããªèšèªçç¹åŸŽã匷調ãããŠããããã«èŠããŸãã
倱æã³ã³ããã¹ãïŒfailure contextïŒïŒ
Verseã§ã¯åŠçã®æåã»å€±æãèšèªã¬ãã«ã§æ±ãä»çµã¿ãããã
æ¡ä»¶ã«å¿ããŠåŠçãå®å
šã«äžæãããã
ã²ãŒã ããžãã¯ã®æŽåæ§ãä¿ã¡ãããããèšèšã«ãªã£ãŠãããšèª¬æãããŠããŸãã
åŒããŒã¹ã®èšèªèšèšïŒ
Verseã¯ãåŒïŒexpressionïŒããäžå¿ã«æ§æãããèšèªã§ããã
å€ãã®åŠçãå€ãè¿ãåŒãšããŠèšè¿°ã§ããããèšèšãããŠããŸãã
ããã¯åŸæ¥ã®åœä»€åèšèªãšã¯ããç°ãªãã¹ã¿ã€ã«ã§ãã
ãŸããèšèªã¬ãã«ã§äžŠè¡åŠçãæ±ããç¹ãã
ç¹åŸŽã®äžã€ãšããŠç޹ä»ãããŠããŸãã
ãã¡ããããããã®åŠçèªäœã¯C#ã®ãããªæ±çšèšèªã§ã
å®è£
ããããšèªäœã¯å¯èœã§ãã
ãããVerseã§ã¯ãããããã©ã€ãã©ãªããã¬ãŒã ã¯ãŒã¯ã§ã¯ãªãã
èšèªæ©èœãšããŠæäŸããããš ãç¹åŸŽã ãšèª¬æãããŠããŸãã
ãã®ãããåŸæ¥ã®ã²ãŒã ã¹ã¯ãªããèšèªã®å»¶é·ãšãããããã
颿°åã宣èšçãªã¢ãããŒããªã©ãåãå
¥ããã
æ°ããããã°ã©ãã³ã°ã¢ãã«ãå¿åããèšèªèšèšã«ãªã£ãŠããããã«èŠããŸãã