Transcript
BACHELOR THESIS
A Graphic Artist's Workflow in Game Engine Tools
Anton Hjort 2015
Bachelor of Fine Arts Computer Graphic Arts
Luleå University of Technology Department of Arts, Communication and Education
A Graphic Artist’s Workflow in Game Engine Tools Thesis within the Computer Graphics Course, LTU.
Anton Hjort
1
Preface This paper contains the 10 week thesis project which ends my 3 year studies within the Computer Graphics Course in Luleå Univeristy of Technology, LTU in short.
The duration of the project I have been working with Gscept at Skellefteå. Gscept consists of the courses Computer Game Development and Computer Graphics in LTU and is mainly a team of programmers and graphic artists. They are currently developing their own variant of the Nebula game engine, which they use to educate the students at LTU. The students learn to create their own games and how game engine works. My work at gscept revolved around getting the documentation to a good start and also discover how the engine they are developing could be improved from an graphical artists standpoint. Anton Hjort
2
Sammanfattning Hur fungerar arbetsflödet i spelmotorer från en grafikers synvinkel? Denna avhandling kommer att behandla detta ämne och kommer även att undersöka hur utvecklarna har tänkt då de skapat dessa motorer. Från hur man arbetar med 3D-modellerings programvaran till att ta användning utav detta i spelmotorn. För att få ett bra arbetsflöde som passar både erfarna och nya användare är avgörande för att få en bra motor.
Abstract How does the workflow in game engines from an graphic artists standpoint? This thesis will address this subject and will look into how the developers has thought when they create their engines. From how to work with the 3D modeling software to taking use of it in the game engine. To get a good workflow which fits both experienced and new users is crucial to get a good engine.
3
Table of content 1.
2.
3.
4.
5. 6.
4
Introduction 1.1.1. Background 1.2. Question at issue 1.3. Purpose 1.4. Boundaries Method 2.1. Workflow outside the Engine 2.1.1. Preparation of Geometry and Textures 2.2. Engine Workflow 2.3. User Interface 2.4. Documentation 2.5. Development of the Nebula Engine Result 3.1. Workflow 3.1.1. Import, Objects and textures 3.2. Application of objects 3.2.1. Physics/Collision 3.2.2. LOD 3.2.3. Textures 3.2.4. Script/Blueprints 3.2.5. Name conventions 3.3. User Interface 3.3.1. Camera Movement 3.3.2. Viewport Interface 3.3.3. Content Browser 3.4. Documentation Discussion 4.1. Import 4.2. Application of objects 4.2.1. Physics/collision 4.2.2. LOD 4.2.3. Script/Blueprints 4.2.4. Namn conventions 4.3. Interface 4.3.1. Content browser 4.4. Documentation 4.5. Development of the Nebula engine 4.6. Future Conclusion Referenses
1. Introduction The gaming industry is getting bigger and bigger. Which requires advanced game engines which has an effective workflow which works both for smaller and bigger projects. Many functions may be descriped differently which would make sense for some users but not all, solving this gives the developers of the engine and the games earn more from their products they create. Obviously larger projects require a larger team, the larger the team the more it requires an effective and structured setup for how the team can work with the engine. A symbiosis between the advanced functions and a simple representation of how they work gives the team more accessability to the engine. This also lets the company driving the project save money by using the engines which their employees easiest can use. 1.1.1 Background Game engines are largely developed with an programmers viewpoint, this reveals a problem for the game artists which will later work with the engine. The programmers and graphical artists mostly doesn’t share the same mindset and experiences. This leads to issues which some parts of the engines gets the more focus than other parts, such as the technical parts of the engine gets better developed due of their inexperience of the graphical artists workflow. My tests are based on smaller teams and my experience while working with the engines during this project. The latest engines have begun to undestand that having an less steep learning curve will have an easier way to be introduced to new developers thus increasing their customer base. 1.2 Question at issue Issues which arise when an engine has advanced features which the UI or it being hard to understand alienates the users which are supposed to use them. When these issues comes it may lead to several variables to change, such as development length and cost of the project. The issues I will answer on this thesis are the following; ● How should a developer think when creating their engine as to not lose focus from other professional roles? ● How does one create userfriendliness in the game engine towards new users? Such as improving the import procedure for the 3D Artist. 1.3 Purpose The purpose of this project is to grasp an idea of how an game engine should be developed. With the help of several game engines as help to see how they have been developed themselves, the findings I get will be put to improve the workflow for graphical artists in the Nebula engine.
5
1.4 Boundaries Some limits has been to ensure that I don’t go overboard with a big topic such as this. Limiting my research towards user interface and learning curve. Also the problems which can come when optimizing an engine towards multiple different professional roles.
6
2 Method To answer the questions at issue I have chosen to research the most used engines used by smaller and larger developers; Unity, Cryengine and Unreal Engine 4. I chose to build a scene which I then import to the different engines. With this approach I will be able to see every part of the workflow when getting something from a chosen modelling software to the game engine. With this result I compare the differences that distinguish the game engines.
2.1 Workflow outside the Engine 2.1.1 Preparation of Geometry and Textures To make an analysis of the selected engines, I used materials from a library of geometry and textures that gscept provided for me. With the objects provided I built a scene which contained the key components used in game development. Such as Level of Detail, character, vegetation and various static objects with associated textures. The textures being used were diffuse, normal and specular maps on the majority of the objects. See Figure 1.
Figure 1. Scene with the key components which are needed in game development.
2.2 Engine Workflow First step is to familiarize myself with the tools which the engine gives to the graphical artist and how they are presented. As to see how far they can work without getting help from an programmer which controls the foundation of the game. 7
2.3 User Interface I decided to take a closer look how the tools are visually and mechanicly represented within the editors available in the engines. Such as camera movement in the level editor and other various tools.
2.4 Documentation I have also explored each engines documentation as to see how they give the information which new and experienced users may need when working with the engines. I chose to focus on the elements of the scene I will be importing to the engine and how they are explained.
2.5 Development of the Nebula Engine Based on the research of the documentation and the workflow of the selected game engines I will improve the existing workflow the Nebula engine uses.
8
3 Result The result is being presented through my analysis of the workflow the different game engines the graphics artists should follow and how they present the documentation. The analysis is taken through the documentation of the engines and the experiences throughout the project.
3.1 Workflow The workflow varies for the engines, from requirements on how the user should work when creating their models in a 3D-modelling software to how the engine handles these objects when importing and working with them in engine. Unity are the engine which often are being used by new game developers because of their user friendliness and price. More recently, larger engines have started to aim towards a more friendlier user interface and workflow. This can be seen on the engine development from Epic. From Unreal Engine 3 to Unreal Engine 4, focusing towards new developers and selling the engine for an affordable price. Cryengine has recently also started selling for an affordable price to keep up with the competition. Prices for the different engines are; Unreal Engine 4 $19/MO + 5% of revenue of games developed from the engine. [1] CryEngine ($/€)9.90/MO [2] Unity Pro $75/MO [3] 3.1.1 Import, Objects and textures Most of the engines allows import of several objects at once, with a few differences. Unreal Engine 4 supports import of any number of imports of any filetype at once, either through drag and drop into the content browser or with the import button in the content browser. The files are then handled one at a time which lets the user to modify each imported object to desired purpose. The tool allows objects which are of the same type and have the same settings to be imported at once instead of one at a time. The files are then modified to the engines own filetype. [4:1] CryEngine has created a plugin for the 3D modeling software which helps creating the filetype which the engine works with. Each type of object has their own file format after export; static objects being CGF files and animated objects 9
being CHR files. Files are then imported to the engine by being manually placed in the engines folder structure. [5:1] Unity has a similar import to CryEngine, but instead of using a file format unique to itself it uses the FBX file format. The FBX files are imported to the engine by manually being placed in a asset folder in chosen project folder. [6:1]
3.2 Application of objects The workflow varies from engine to engine, from how they expect one to work with the 3D modeling software and how the assets created are being handled within the engine itself. All references to this chapter can be found in; [4:2] [5:2] [6:2].
3.2.1 Physics/Collision Unreal Engine 4 handles the collision meshes by detecting naming conventions from the imported file. The detected naming conventions being; ■ UBX_: Cube primitives, non-deformed. ■ USP_: Sphere primitves, non-deformed. ■ UCX_: Convex objects, any convex 3d forms. The engine also has a tool to create physics meshes within the engine, either with rough objects with a small number of polygons or with a generator which allows the user to specify how many shells and polygons to be used. With CryENGINE requires a certain naming convention and a special placement in the grouping within the modeling software. Unity doesn’t allow the physics mesh to be imported at the same time as the object it will be linked to, the user has to import them seperatly and link them inengine. 3.2.2 LOD To create LOD objects for Unreal Engine 4 takes use of the LOD tools in the 3D modeling software. The engine recognizes the object and adjusts it to work in engine. The settings which were set in the modeling software can be modified in the engine, such as how the LOD should change mesh based on the cameras distance to the object. CryENGINE holds onto the requirement of the specific naming conventions it wants. It also wants the different LOD to sit in a specific grouping within the 3D modeling software. Modifying the object in the engine requires research for the different variables which it enables.
10
Unity has a similar workflow to both previous engines, it allows the user to use the 3D modeling software tools or using a naming convention to create the LOD. The levels are named; _LOD0, _LOD1 etc. Modifying the LOD settings in engine is a simple matter by visualizing it with a slider which when modified shows the camera placement in the viewport. Settings box shown in Figure 2.
Figure 2. Visualization of the LOD settings in Unity 3.2.3 Textures Depending on the program used to create textures for Unreal Engine 4 it requires that normal maps has to invert their green channel before being used in the materials in the engine. Missing this step might cause problems in the shading of the object. CryENGINE allows the regular maps but also allows subsurface textures and customized textures. Similar to meshes they also require a certain file format to be imported and then placed in the folder structure. A plugin is needed in photoshop to create the file format which the engine uses. Unity also allows the use of the most regular texture maps, except for the specular map. This is replaced by using a shader dependent on surface angle, light angle and viewing angle method. Many of the engines has also started to adjust to a physical based shading which helps to create a more realistic looking environment. 3.2.4 Script/Blueprints Unreal Engine 4, instead of working with the most used programming languages, such as C++. They have decided to take use of a visual node based programming language. Taking inspiration from The Foundry’s Nuke. CryENGINE takes use of Lua scripting, a simple programming language mostly used for scripting. 11
Unity allows scripting through C#, JavaScript and Boo. 3.2.5 Name conventions Naming conventions can hinder or be an advantage. If the naming convention is to difficult it makes it easier to be misspelled and will cause problems when importing to the engine. Thiugh having a simpler naming convention the workflow quickens and helps the production of the game. Unreal Engine 4 has a few name conventions. As mentioned earlier on physics meshes. Else it has been avoided and they mostly take use of tools in the 3D modeling software. In figure 3 below is shown a method which is required by CryENGINE that Maya users has to work after. In the figure is shown how the naming convention is being used when exporting a physics mesh and three LOD from Maya. This is required so that the information getting into the engine is being controlled.
Figure 3. An exampel on how CryENGINE handles naming conventions. Unity has Similarly to Unreal Engine 4 taken use of the built-in tools in the 3D-modelling software. In a few instances the user can choose to manage their objects with naming conventions, such as LOD objects mentioned before.
3.3 User Interface 3.3.1 Camera Movement Due the WASD keys is widely used and easily learned makes it a good choice to use, this makes that most engines takes use of it. To control the camera in Unreal Engine 4 and CryENGINE viewports it takes use of the regular FPS keys, the WASD keys, which in combination with the mouse enables a variety of different movements. [4:3] [5:3] ● ● ● ● 12
Unity allows three different movement schemes [6:3] ; With the WASD keys. By holding the Alt key in combination with the mouse. By only holding down the mouse wheel and the right mouse button.
3.3.2 Viewport Interface Unreal Engine 4 and Unity takes use of a smaller workspace to display the objects which exists in the level editor. If the scene contains a big amount of objects, the objects can be grouped which helps organizing ones work. This function doesn’t exist in Unity. [4:3] [6:3] To get an overview of the objects within CryENGINE one is required use the content browser and open the panel which displays the objects. The objects cannot be grouped. [5:3] 3.3.3 Content Browser The content browser in Unity and Unreal Engine 4 is designed with a visual overview of the objects and folders. Each object is diplayed with a small thumbnail showing the model or texture. [4:3] [6:3] CryENGINE’s content browser displays each object with a list of the objects properties. The viewer can be modified to show thumbnails but mostly only shows a textbox which says what sort of object it is. The objects are not sorted into folders but are instead sorted into the naming of each object. Making it such that the files are much more organized than the other engines. [5:3]
3.4 Documentation In Unreal Engine’s documentation each topic is separated into larger groups. Such as how they expect each object are imported and then being used in the engine and how the interface of the content browser and level editor works. Simple built and finding relevant information is easily accesible. [4] CryENGINEs documentation sorts topics similar to Unreal Engine, but also gives tips on how to create a good topology on meshes aimed towards games. [5] Unity works similary to the other documentations, with the exception on missing information on a few of the topics. This might be the cause of the recent update of the site which made it easier to find the information which it had. There is also a filter for accessing information for certain operatingsystems. [6]
13
4 Discussion With a user-friendly interface and a workflow supported with advanced features it allows the graphical artists to create advanced scenes without the help of a programmer. A positive experience in one’s first use helps to increase usage of the chosen engine. By thinking with the different professional in mind and how they interact the engine the developers can create an engine which contains the features needed for high standard game development.
4.1 Import CryENGINE requires a homemade file format, which causes more issues to think about when preparing to start a project using the engine. The graphical artists has to adjust their workflow to a new file format which cannot go through any more changes in the 3D modeling software. The other engines takes use of the FBX format which can be imported into the 3D modeling software if any changes needs to be done with that specific object. By using the FBX format it also avoids having to install a plugin to create a specific file format. The positive with this choice is that the engine has control on what it will work with, there may be some garbage information which follows the FBX format which is not needed.
4.2 Application of objects 4.2.1 Physics/collision The chosen engines has chosen a similar path to solve how to get a physics mesh. When creating the physics mesh they aim to have as few polygons as possible, simple forms and a naming convention to sort it out from the other meshes. Nebula has chosen a clever way to make the physics meshes to follow the skeleton, by grouping the physics meshes and naming them to the joints which they are aimed to follow. Unreal Engine 4 also takes a step forward by allowing the user to create generated in the engine. 4.2.2 LOD Nebula, Unreal Engine 4 and Unity takes use of the tools provided in the 3D modeling software to create the LOD objects. This speeds up the workflow by taking away the requirement to have a naming convention. CryENGINE still requires that a certain naming conventions should be followed, this is probably because the engine wants to have full control of what gets imported into the engine. 4.2.3 Script/Blueprints One of the pitfalls for the graphical artist. The majority doesn’t have any experience with programming which is one of the problems. A saving grace is the visuall tool which Unreal Engine 4 provides, by using a node based programming language. Each node containing a set of code which is explained by a few words. Even though it looks simple at a glance it is a massive tool which the initiated users can create large gameplay sets. With the other engines it is a requirement that the user knows some programming beforehand. This deter the artists to even touch it. 14
4.2.4 Namn conventions The less the user has to write to comply with the naming convention the engine requires the better it is. This is depending also on how much control the engine wants over what gets imported, which can be seen with CryENGINE. Which has chosen to use it for every part of the objects which needs to be imported. By instead using it as effective as possible by allowing one to detect by a few letters it gets much more simpler and speeds up the process.
4.3 Interface Camera movement is a vital issue, this is what most users first encounter and making it a pleasant experience in the environment is important. By giving the user several different ways to control the camera allows more users to quickly familiarize themselves with the engine. The common WASD movement is a good way to get users which wants to quickly test their game to avoid having to change their control of the camera. To allow a surveyable view of the objects in the scene which lets the user to easily select and change the settings on specific objects quickly. Allowing to group the objects helps organizing the project if the scene becomes big. 4.3.1 Content browser Access to the imported material should be a simple process and orderly. CryENGINE has chosen to allow a massive filter to replace of taking use of grouping. Immediately increasing the difficulty to find the objects one wants if not taking use of a strict naming convention. By using a easily overviewed grouping with thumbnails displaying what each object is helps a lot.
4.4 Documentation The chosen engines has a surveyable documentation. Information in Unreal Engine 4 and CryENGINE is easily found while Unity has the topics but is missing vital information regarding those topics.
4.5 Development of the Nebula engine With the result that I got from my analysis of the chosen engines and given that Nebula is a very new engine which allows some tools to be improved. Nebula already has a good foundation which helps the process to improve the workflow for the graphical artists. By improving the process to import by providing tools to ease the work in the 3D modeling software. Such as creating a tool which instantly import items into the game engine, another sulotion to speed up the process could be having presets to the most used settings used when importing objects and textures. The particle system is very poor with information which currently confuses the most users by not describing how to use the provided tools. Many of the attributes are missing information and the particle system is taking use of sin/cos math which most graphics artists doesn’t know. A sulotion to this could be an explanation in the documentation. The documentation was missing for the Nebula Engine. During the project I created a foundation which can be developed further.
15
4.6 Future The older game engines has had the basic mechanics and when introduced with more advanced features they have mostly been hard to implement into the engine. Many effects which are expected from movies are starting to be introduced to games and vice-versa. The boundary is fading and a more realistic representation of the world is starting to appear in both branches. By following the advances of how Unreal Engine has come from the third version to the current version, fourth version, one can see that a development towards a more accesable and easy to follow engine is the most profitable way to go. By managing to avoid ruining the advanced functions which exist. Unity is currently developing a new version which hopefully takes heed of what their competitors have created with their engines. In its current stage it’s missing lots of features which is crucial to create a good gaming experience. Knowing what the customers use for software and taking use of the tools which they have and use it in the engines favor increases accesibility. Taking the LOD tool in Maya and recognizing in Unreal Engine 4 as example simplifies the workflow dramaticly instead of requiring a specific naming convention.
16
5 Conclusion My game projects course which was during the last months of the second year of the course we took use of Nebula. The interface has not taken any major changes since then and had its minor problems, such as not explaining some of the parameters. This can be seen in the particle editor. If work continues on developing the documentation for the Nebula Engine it would to create a development group which provides feedback aimed towards their areas of expertise and taking use of the students which takes use of the engine during their second year game project course. The graphic artists perspective varies with each individual’s areas of expertise. The artists works within several different areas which leads to having a good communication between the proffesional roles to create the best engine they can.
17
6 Referenses Cost Reference [1] Unreal Engine 4, 2014 https://www.unrealengine.com/ Obtained 2014-08-10 [2] CryEngine, 2014
http://cryengine.com/get-cryengine/eaas Obtained 2014-08-10 [3] Unity, 2014
https://store.unity3d.com/ Obtained 2014-08-10 Documentation References [4] Unreal Engine 4 Documentation, 2014 https://docs.unrealengine.com/latest/INT/ Obtained 2014-08-10 [4:1] Unreal Engine 4 Doc: Import Your Content
https://docs.unrealengine.com/latest/INT/Engine/Content/QuickStart/4 /index.html [4:2] Unreal Engine 4 Doc: FBX Content Pipeline
https://docs.unrealengine.com/latest/INT/Engine/Content/FBX/index.h tml [4:3] Unreal Engine 4 Doc: Viewport Controls
https://docs.unrealengine.com/latest/INT/Engine/UI/LevelEditor/View ports/ViewportControls/index.html [5] CRYENGINE Documentation, 2014
http://docs.cryengine.com/display/SDKDOC1/Home Obtained 2014-08-10 [5:1] CRYENGINE Doc: Resource Compiler & Installing Exporter Plugins
http://docs.cryengine.com/display/SDKDOC2/Resource+Compiler http://docs.cryengine.com/display/SDKDOC2/Installing+Exporter+Plugi ns [5:2] CRYENGINE Doc: Art Pipeline
http://docs.cryengine.com/display/SDKDOC2/Art+Pipeline [5:3] CRYENGINE Doc:
The Viewport & Interface Basics http://docs.cryengine.com/display/SDKDOC2/The+Viewport http://docs.cryengine.com/display/SDKDOC2/Interface+Basics 18
[6] Unity Documentation, 2014
http://unity3d.com/learn/documentation Obtained 2014-08-10 [6:1] Unity Doc: Import Guide
http://docs.unity3d.com/Manual/AssetWorkflow.html http://docs.unity3d.com/Manual/HOWTO-importObject.html [6:2] Unity Doc: Asset Workflow
http://docs.unity3d.com/Manual/AssetWorkflow.html [6:3] Unity Doc: Scene Using the Scene View
http://docs.unity3d.com/Manual/UsingTheSceneView.html
19