Unity 5 versus Unreal Engine 4: Artificiële intelligentie van 3D vijanden voor een HTML5 project

Matthias Caryn
Rusty Bolt is een Belgische indie studio. Deze studio wilt een nieuw project starten voor een 3D spel in een HTML5 browser die intensief gebruik zal maken van kunstmatige intelligentie en WebGL. Na onderzoek via een requirements-analyse van verschillende mogelijkheden van game engines komen we terecht bij twee opties namelijk Unity 5, die Rusty Bolt al reeds gebruikt, of de Unreal Engine 4, wat voor hen onbekend terrein is. Qua features zijn ze enorm verschillend, maar ze voldoen elk niet aan één voorwaarde die Rusty Bolt verwacht van een game engine. Zo biedt Unity Technologies wel een mogelijkheid om software te bouwen in de cloud. De broncode van Unity wordt niet openbaar gesteld, tenzij men er extra voor betaalt. Deze game engine is dus niet volledig open source in tegenstelling tot Unreal Engine 4.

We vergelijken dan verder ook deze twee engines, namelijk Unity 5 en Unreal Engine 4. We tonen aan dat deze engines visueel verschillen van features, maar ook een andere implementatie van de artificiële intelligentie (AI) hanteren. Zo beperkt Unity zich voornamelijk op path finding van de AI, terwijl Unreal Engine 4 daarbij ook Behaviour Trees bij betrekt. Technisch zitten er ook verschillen in beide engines. Men kan de Unity engine op meer verschillende systemen draaien dan de Unreal Engine 4. En Unity 5 heeft ook lagere systeemvereisten dan Unreal Engine 4. Unity is verder ook enorm populair en heeft ook een groot marktaandeel, terwijl Unreal Engine 4 de grootste groei toont aan populariteit sinds 2015. Beide game engines gebruiken een verschillende objectgeoriënteerde programmeertaal, Unity 5 maakt gebruik van C# en JavaScript, terwijl Unreal Engine 4 enkel geschreven kan worden in C++ maar hebben wel een eigen visuele scripttaal via Blueprint Visual Scripting. Maar als we echter kijken hoe ze hun geschreven code omzetten naar een werkend HTML5 geheel gebruiken beide hiervoor eenzelfde tool gemaakt door Mozilla genaamd emscripten.

In beide game engines maken we ook een basis AI prototype in vergelijkbare omstandigheden en omgeving. Op dat prototype voeren we een aantal tests en metingen uit. Zo komt duidelijk naar voor dat de ruimte die nodig is om een nieuw project aan te maken bij Unreal Engine meer dan vier keer groter is dan voor Unity 5.3. Het laden van de editor gaat bij Unity slechts één seconde sneller. Bij Unity 5 maakt het laden op verschillende browsers, zoals Firefox en Chrome, wel een verschil van ongeveer drie seconden langer wanneer men cache gebruikt. Als we gaan kijken bij Unreal Engine 4 is er nauwelijks tot geen verschil is tussen de snelheden van de verschillende browsers.

Uiteindelijk komen we tot de conclusie dat de engines enorm verschillen en toch hun taak goed volbrengen. De keuze voor een bepaalde game engine is dan ook iets persoonlijk en varieert van project tot project. Deze keuze wordt dan best gecombineerd met de verwachtingen van een game engine in functie van het bedrijf en het project.

Het belang van artificiële intelligentie

Artificiële of kunstmatige intelligentie is een belangrijk onderdeel van de toekomst. Recent nog hebben vijf grote technologiebedrijven, Google, Facebook, Amazon, IBM en Microsoft, besloten om samen te werken op gebied van artificiële intelligentie. Het bedrijf Partnership on AI is bedoeld om de maatschappij vooruit te helpen.

Stel nu, je bent een ontwikkelaar en zou graag een spel ontwikkelen die werkzaam is in alle browsers. Je focus ligt voornamelijk op een 3D spel die intensief gebruik zal maken van artificiële intelligentie. Om het spel heb je een tal van mogelijkheden en het is dus moeilijk om uit te maken welke software je het beste zal gebruiken. Maak ik gebruik van een framework of zal ik eerder een volledige softwaresuite gebruiken.

Dit werd onderzocht voor Rusty Bolt BVBA. Momenteel zijn ze in deze indiestudio bezig aan het afwerken van hun spel REVOLVE die in 2017 op de markt komt. Men is nu dan ook al aan het nadenken over een nieuwe game. De bovenstaande beschrijven zou dan een mogelijke game zijn die men kan ontwikkelen. Rusty Bolt gebruikt voor REVOLVE momenteel Unity 4. Is het beter om dan over te stappen naar Unity 5 of is er een ander softwarepakket dat beter bij hen zou passen.

 

Uiteindelijk heeft Rusty Bolt twee mogelijkheden. Men kan bijwerken naar Unity versie 5 of men kan kiezen voor Unreal Engine 4 die ook aan al hun eisen voldoen. Beide pakketten verschillen natuurlijk in hun vormgeving, maar ook de manier dat ze AI aanpakken. Unity 5 legt de focus voornamelijk op het zoeken van de kortste weg. Hierbij wil men dus zo snel van startpunt naar de gewenste eindlocatie geraken. Unreal Engine 4 legt daarnaast ook focus op gedragsbomen die worden voorgesteld als algoritmische bomen en een systeem waarbij men steeds vragen kan stellen aan de omgeving om zo meer te weten te komen over de omgeving.

 

Aan de hand van een prototype worden ook enkele performantieverschillen worden aangetoond. Unity 5 heeft minder ruimte nodig op de schijf. Unreal Engine 4 vindt de kortste weg toch iets sneller, maar ondervindt problemen met de schaalbaarheid. Via het onderzoek kwam ook naar boven dat Firefox toch iets beter omgaat met de projecten in vergelijking met Chrome.

Ook al is het van belang om goed na te denken over kunstmatige intelligentie. Rusty Bolt kan met Unity 5 of Unreal Engine 4 eigenlijk geen verkeerde keuze maken, men zal natuurlijk zelf de keuze moeten maken aangezien men het team en historische kennis ook in acht hoeft te nemen wat varieert van project tot project.

Bibliografie

Aleksandr. (2014, september 3). Documentation, Unity scripting languages and you.
Geraadpleegd op 6 augustus 2016, via http://blogs.unity3d.com/2014/09/03/
documentation-unity-scripting-languages-and-you/
Batchelor, J. (2015). Unreal Engine 4 « 2. The Tech List, 8.
Batchelor, J. (2016, maart 17). Tim Sweeney reveals that seven Unreal-powered have
grossed more than $1bn. Geraadpleegd op 7 augustus 2016, via http://www.
develop-online.net/news/2015-was-the-best-year-ever-for-unreal/0218044
Bleszinski, C. (2010, februari 23). History of the Unreal Engine. Geraadpleegd op 6
augustus 2016, via http://www.ign.com/articles/2010/02/23/history-of-theunreal-engine
Bloomberg Business. (2015, augustus 5). Bigger Than Hollywood: The Numbers Behind
Video Gaming. doi:http://bloom.bg/1SMpmiR
Busby, J., Parrish, Z. & Wilson, J. (2009). Mastering Unreal Technology, Volume I.
Sams Publishing.
Calunod, J. (2016, juli 13). Web Browser Market Share Wars for June 2016: Google
Chrome vs Microsoft Internet Explorer vs Mozilla Firefox vs Edge vs Safari.
Geraadpleegd op 1 augustus 2016, via http://www.christianpost.com/news/
web-browser-market-share-wars-for-june-2016-google-chrome-vs-microsoftinternet-explorer-vs-mozilla-firefox-vs-edge-vs-safari-166387/
Chayes, J. (2014, juni 19). Card Life. Geraadpleegd op 3 april 2016, via http : / /
unity3d.com/showcase/case-stories/hearthstone
Cludts, D. (2015, juni 1). Game Mania lanceert eerste Belgische eSports-toernooi.
Geraadpleegd op 21 december 2015, via http://www.zdnet.be/nieuws/167606/
game-mania-lanceert-eerste-belgische-esports-toernooi/
Cowley, D. (2015, juni 10). Unreal Engine 4.8 Released! Geraadpleegd op 7 augustus
2016, via https://www.unrealengine.com/blog/unreal-engine-48-released
Coyote, R. (2013, mei 16). Why Are Most Indie Games 2D Instead of 3D? Geraadpleegd
op 23 december 2015, via http://rampantgames.com/blog/?p=5934
Crecente, B. (2015, augustus 11). Superdata: Hearthstone pulls in $20 million a month
as it disrupts the card game industry. Geraadpleegd op 3 april 2016, via 
http://www.polygon.com/2015/8/11/9130779/superdata-hearthstone-pulls-in…
Dyer, M. (2014, maart 19). GDC: Epic Games’ Unreal Engine 4 adopts subcription
model. Geraadpleegd op 7 augustus 2016, via http://www.ign.com/articles/
2014/03/19/gdc-epic-games-unreal-engine-4-adopts-subscription-model
Dyer, M. (2016, juni 1). Unreal Engine 4.12 Released! Geraadpleegd op 7 augustus
2016, via https://www.unrealengine.com/blog/unreal-engine-4-12-released
Echterhoff, J. (2014, april 29). On the future of Web publishing in Unity. Geraadpleegd
op 29 juli 2016, via http://blogs.unity3d.com/2014/04/29/on-the-future-ofweb-publishing-in-u…
Emscripten Contributors. (2016, juli 7). If you love something, set it free. Geraadpleegd
op 6 augustus 2016, via http:// kripken.github.io/ emscripten - site/ docs/
introducing_emscripten/release_notes.html
Epic Games. (g.d.-a). Behavior Trees. Geraadpleegd op 14 augustus 2016, via https:
//docs.unrealengine.com/latest/INT/Engine/AI/BehaviorTrees/
Epic Games. (g.d.-b). Blueprints Visual Scripting. Geraadpleegd op 14 augustus 2016,
via https://docs.unrealengine.com/latest/INT/Engine/Blueprints/
Epic Games. (g.d.-c). Content Cooking. Geraadpleegd op 21 augustus 2016, via https:
//docs.unrealengine.com/latest/INT/Engine/Deployment/Cooking/
Epic Games. (g.d.-d). Environment Query System. Geraadpleegd op 14 augustus 2016,
via https://docs.unrealengine.com/latest/INT/Engine/AI/EnvironmentQuerySyst…
Epic Games. (g.d.-e). Getting Started: Developing HTML5 Projects. Geraadpleegd op
6 augustus 2016, via https://docs.unrealengine.com/latest/INT/Platforms/
HTML5/GettingStarted/
Epic Games. (g.d.-f). How Unreal Engine 4 Behavior Trees Differ. Geraadpleegd op 14
augustus 2016, via https://docs.unrealengine.com/latest/INT/Engine/AI/
BehaviorTrees/HowUE4BehaviorTreesDiffer/index.html
Epic Games. (g.d.-g). Navmesh Content Examples. Geraadpleegd op 14 augustus 2016,
via https://docs.unrealengine.com/latest/INT/Resources/ContentExamples/
NavMesh/index.html
Epic Games. (g.d.-h). UDK Licensing. Geraadpleegd op 8 augustus 2016, via https:
//wiki.unrealengine.com/Recommended_Hardware
Epic Games. (2005, augustus 18). Rein: ’We’ve been working on Unreal Engine 4 for
two years’. Geraadpleegd op 6 augustus 2016, via https://web.archive.org/web/
20140110101539/http://www.computerandvideogames.com/123639/reinweve-been-working-on-un…
Epic Games. (2013, januari 29). Epic Games Releases “Epic Citadel” for Android.
Geraadpleegd op 6 augustus 2016, via https://www.epicgames.com/news/
epic-games-releases-epic-citadel-for-android/
Epic Games. (2014). Tappy Chicken. Geraadpleegd op 29 juli 2016, via https://www.
unrealengine.com/html5/
Epic Games. (2016a). About Unreal Engine 4. Geraadpleegd op 7 augustus 2016, via
https://www.unrealengine.com/unreal-engine-4
Epic Games. (2016b). UDK Licensing. Geraadpleegd op 7 augustus 2016, via https:
//www.unrealengine.com/previous-versions/udk-licensing-resources
Epic Games. (2016c). What is Unreal Engine 4? Geraadpleegd op 29 juli 2016, via
https://www.unrealengine.com/what-is-unreal-engine-4
Futter, M. (2016, mei 18). Batman: Return to Arkham. Geraadpleegd op 6 augustus
2016, via http: / / www. gameinformer. com / games / batman _ return _ to _
arkham/b/playstation4/archive/2016/05/18/batman-return-to-arkham-isreal-with-both-games-using-unreal-engine-4.aspx
Grubb, J. (2015, februari 24). Unreal 4 gets native HTML5 exporting and support for
giant worlds. Geraadpleegd op 25 januari 2015, via http://venturebeat.com/
2015/02/24/unreal-4-gets-native-html5-exporting-and-support-for-giantworlds/
Haas, J. (2014). A History of the Unity Game Engine (masterscriptie, Worcester Polytechnic
Institute, 100 Institute Rd, Worcester, MA 01609, United States).
Hagedoorn, H. (2016, februari 8). Video: Real-Time Cinematography in Unreal Engine
4. Geraadpleegd op 8 augustus 2016, via http://www.guru3d. com/ news -
story/video-real-time-cinematography-in-unreal-engine-4.html
Helgason, D. (2005, juni 6). Unity Technologies Delivers Unity 3. Geraadpleegd op
3 april 2016, via http : / / www . marketwired . com / press - release / unity -
technologies-delivers-unity-3-1325564.htm
James, P. (2016, juni 6). Unreal Engine 4.12 is Out Now, Gets ‘VR Editor’, OSVR
and Google VR Support. Geraadpleegd op 25 januari 2015, via http://www.
roadtovr.com/unreal - engine - 4 - 12 - is - out - now - gets - vr - editor - osvr - and -
google-vr-support/
Jarvis, M. (2015, december 8). Unity 5 makes WebGL support official. Geraadpleegd
op 16 april 2016, via http://deve1op.net/1Nfuynw
Jarvis, M. (2016, juni 17). Rocksteady moves to Unreal Engine 4 for Batman Arkham
VR. Geraadpleegd op 6 augustus 2016, via http://www.develop-online.net/
news/rocksteady-moves-to-unreal-engine-4-for-batman-arkham-vr/0221876
Jones, B. (2016, juli 28). Microsoft releases Unreal Engine 4 fork with Universal Windows.
Geraadpleegd op 7 augustus 2016, via http://www.digitaltrends.com/
gaming/unreal-engine-4-universal-windows-support-microsoft/
Marketwired L.P. (2010a, september 11). Unity Technologies Delivers Unity 3. Geraadpleegd
op 3 april 2016, via http://www.marketwired.com/press-release/unitytechnologies-delivers-uni…

Marketwired L.P. (2010b, november 1). Unity Technologies Surpasses 250K Developers
Milestone and 35M Installs of Free Unity Web Player. Geraadpleegd op 10 april
2016, via http://www.marketwired.com/press- release/unity- technologiessurpasses-250k-
developers-milestone-35m-installs-free- unity- web- player-
1344670.htm
Marketwired L.P. (2012a, juni 12). The Next Generation of the Unity Game Engine
Unveiled. Geraadpleegd op 10 april 2016, via http://www.marketwired.com/
press - release / the - next - generation - of - the - unity - game - engine - unveiled -
1670512.htm
Marketwired L.P. (2012b, april 9). Unity Reaches One Million Registered Developers.
Geraadpleegd op 10 april 2016, via http: / / www.marketwired. com / press -
release/unity-reaches-one-million-registered-developers-1641486.htm
Marketwired L.P. (2013, augustus 28). Unity Reveals 2D Tools. Geraadpleegd op 10
april 2016, via http://www.marketwired.com/press-release/Unity-Reveals-
2D-Tools-1825422.htm
Masters, M. (2015, april 7). Discover the New Unity 5 Features. Geraadpleegd op 16
april 2016, via http://blog.digitaltutors.com/new-unity-5-features/
Matulef, J. (2016, augustus 12). No Man’s Sky isn’t going over well on Steam. Geraadpleegd
op 14 augustus 2016, via http://www.eurogamer.net/articles/2016-
08-12-no-mans-sky-isnt-going-over-well-on-steam
Noland, M. (2014, mei 22). Shipping Tappy Chicken. Geraadpleegd op 6 augustus
2016, via https://www.unrealengine.com/blog/shipping-tappy-chicken
Nutt, C. (2014, maart 21). Unreal Engine 2. Geraadpleegd op 6 augustus 2016, via
http://www.gamasutra.com/view/news/213647/Epics_Tim_Sweeney_
lays_out_the_case_for_Unreal_Engine_4.php
Nutt, C. (2016, maart 21). How Unity is pushing VR and better 3D graphics with its
game engine. Geraadpleegd op 16 april 2016, via http://www.gamasutra.com/
view/news/237853/Unity_5_released_with_upgrades_fullfeatured_free_
version.php
Parrish, K. (2011, februari 25). Ubisoft: 3DS Can Handle Unreal Engine 2. Geraadpleegd
op 6 augustus 2016, via http: / / www. tomsguide. com / us / Unreal -
Engine-2-Splinter-Cell-3DS-Nitendo-3DS,news-10601.html
Peterson, J. (2015, mei 6). An introduction to ILZCPP internals. Geraadpleegd op 27
juli 2016, via http://blogs.unity3d.com/2015/05/06/an-introduction- toilcpp-internals/
Pettit, N. (2013, september 3). 3D in the Browser: WebGL versus CSS 3D Transforms.
Geraadpleegd op 18 april 2016, via http://blog.teamtreehouse.com/3d-in-thebrowser-webgl-versus-css-3d-tran…

Plante, C. (2012, april 2). Better with age: A history of Epic Games. Geraadpleegd op
6 augustus 2016, via http://www.polygon.com/2012/10/1/3438196/betterwith-age-a-history-of-ep…
Rusty Bolt. (g.d.). Rusty Bolt BVBA. Geraadpleegd op 29 juli 2016, via http : / /
rustybolt.be/
Seyler, B. (2010, mei 19). Google, Android, and the futher of games on the web.
Geraadpleegd op 10 april 2016, via http://blogs.unity3d.com/2010/05/19/
google-android-and-the-future-of-games-on-the-web/
Shaw, P. (2012, februari 27). Unreal Engine 4 behind closed doors at GDC. Geraadpleegd
op 6 augustus 2016, via http://www.wired.com/2012/02/unreal -
engine-4-gdc/
Sieprawski, B. (2015, februari 24). Unreal Engine 4.7 Released! Geraadpleegd op 7
augustus 2016, via https://www.unrealengine.com/blog/unreal-engine-47-
released
Simpson, C. (2014, juli 17). Behavior trees for AI: How they work. Geraadpleegd op
14 augustus 2016, via http://www.gamasutra.com/blogs/ChrisSimpson/
20140717/221339/Behavior_trees_for_AI_How_they_work.php
Sweeney, T. (2015, maart 2). If you love something, set it free. Geraadpleegd op 25
januari 2015, via https://www.unrealengine.com/blog/ue4-is-free
Takahashi, D. (2015, maart 3). Unity 5 released with upgrades, full-featured free version.
Geraadpleegd op 16 april 2016, via http://venturebeat.com/2016/03/
21/clive-downie-interview/
Thier, D. (2012, juni 29). Epic’s Tim Sweeney on How Unreal Engine 4 Will Change
The Way Games Are Made, and Why You Care. Geraadpleegd op 6 augustus
2016, via http://www.forbes.com/sites/davidthier/2012/06/29/epics-timsweeney-on-
how- unreal- engine-4- will- change- the- way-games-are-madeand-why-you-care/
Tnw Deals. (2016, maart 24). This engine is dominating the gaming industry right
now. Geraadpleegd op 31 juli 2016, via http://tnw.to/e4mGGl
Tuffin, S. (2016, april 27). Recordaantal bezoekers Vlaamse film in 2015. Geraadpleegd
op 14 augustus 2016, via http : / / vertigoweb . be / recordaantal - bezoekers -
vlaamse-film-2015/
Unity Technologies. (2014, maart 18). Unity 5 announced at GDC 2014, pre-order
begins. Geraadpleegd op 10 april 2016, via https://unity3d.com/company/
public-relations/news/unity-announces-unity5
Unity Technologies. (2015a, maart 3). Unity 5 is here. Geraadpleegd op 16 april 2016,
via http://unity3d.com/company/public-relations/news/unity-5-here
Unity Technologies. (2015b, december 8). Unity 5 makes WebGL support official. Geraadpleegd
op 16 april 2016, via http://deve1op.net/1Nfuynw
Unity Technologies. (2016a). Building a NavMesh. Geraadpleegd op 21 augustus 2016,
via https://docs.unity3d.com/Manual/nav-BuildingNavMesh.html
Unity Technologies. (2016b). Building Height Mesh for Accurate Character Placement.
Geraadpleegd op 21 augustus 2016, via https://docs.unity3d.com/Manual/
nav-HeightMesh.html
Unity Technologies. (2016c). Get Unity. Geraadpleegd op 16 april 2016, via https:
//unity3d.com/get-unity
Unity Technologies. (2016d). Inner Workings of the Navigation System. Geraadpleegd
op 14 augustus 2016, via https://docs.unity3d.com/Manual/nav-InnerWorkings.
html
Unity Technologies. (2016e). Loading Multiple NavMeshes using Additive Loading.
Geraadpleegd op 21 augustus 2016, via https://docs.unity3d.com/Manual/
nav-AdditiveLoading.html
Unity Technologies. (2016f). Navigation Areas and Costs. Geraadpleegd op 21 augustus
2016, via https://docs.unity3d.com/Manual/nav-AreasAndCosts.html
Unity Technologies. (2016g). Navigation System in Unity. Geraadpleegd op 31 juli
2016, via https://docs.unity3d.com/Manual/nav-NavigationSystem.html
Unity Technologies. (2016h). SYSTEM REQUIREMENTS FOR UNITY 5.4. Geraadpleegd
op 31 juli 2016, via https://unity3d.com/unity/system-requirements
Unity Technologies. (2016i). The leading global game industry software. Geraadpleegd
op 10 april 2016, via https://unity3d.com/public-relations
Unity Technologies. (2016j). Unity. Geraadpleegd op 3 april 2016, via http://unity3d.
com/unity
Unity Technologies. (2016k). Unity Multiplatform. Geraadpleegd op 3 april 2016, via
http://unity3d.com/unity/multiplatform
Unity Technologies. (2016l). Using NavMesh Agent with Other Components. Geraadpleegd
op 21 augustus 2016, via https://docs.unity3d.com/Manual/nav -
MixingComponents.html
Unity Technologies. (2016m). Welcome to Unity. Geraadpleegd op 29 juli 2016, via
https://store.unity.com/
Waters, K. (2009, januari 12). Prioritization using MoSCoW. Geraadpleegd op 27 juli
2016, via http://www.allaboutagile.com/prioritization-using-moscow/
Wingfield, N. (2016, juli 26). Unity Technologies, Maker of Pokémon Go Engine, Swells
in Value. Geraadpleegd op 13 juli 2016, via http://www.nytimes.com/2016/
07/14/technology/unity-technologies-maker-of-pokemon-go-engine-swellsin-value.html

Universiteit of Hogeschool
Toegepaste Informatica
Publicatiejaar
2016
Promotor(en)
Joeri Van Herreweghe
Kernwoorden
Deel deze scriptie