BACHELOR THESIS

Transcription

BACHELOR THESIS
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