Share
Embed
Gamedev, where to start with Unity3D
In this talk, Tiago Martins talks about how to start with Unity3D
Sharednode
May 27, 2016
Transcript
35 slides
-
About me - Software developer at Scott Logic - Video
games enthusiast - Web developer Github: https://github.com/TiagoJSM Linkedin: https://www.linkedin.com/in/tiago-martins-19712568 -
What to expect - Some ideas about the current state
of the game development industry - Pros and cons of being a game developer - What makes a team of game developers - The technologies around game development industry - Unity3D introduction and basics about the engine -
Unfortunatelly a small business in our country Why? Isn’t it
profitable? Lack of knowledge by developers? Lack of interest by the people? Lack of project ideas? -
More a combination of: - Lack of investment - Being
a topic that’s still a “taboo” between older crowds -
The Witcher 3 cost aproximatelly 81 million USD to develop
For a period of 3.5 years By a team of 240 in-house staff and 1500 people all around the world Sold 6 million copies in 6 weeks The company made a net profit of aproximatelly 62.5 million USD in the financial period -
But it’s a “small” development cost compared to 265 million
USD from Grand Theft Auto V -
Indie games cost much less, and don’t require so many
people to develop them, and usually don’t need to be technical juggernauts Sometimes a simple and fun idea can go a long way… like Minecraft! -
So it seems to be a market for all types
and sizes, are there any reasons not give it a go? -
Sometimes games don’t produce enough revenue and companies close Just
this year Lionhed Studios and Evolution Studios closed, two major studios from Microsoft and Sony -
Criticism is difficult to accept and may spread negativity among
developers Battlefield 1 is the most liked trailer on Youtube and Call of Duty: Infinite Warfare is the most disliked one, due to a lot of conflict between the fanbases -
What types of jobs can be found in the game
industry? - Programmers - Animators - Artists - Sound producers - Management - Level designers - Testers - UX designers - Writers - And many more, depending on the company, there’s room for all taste! -
Where to start as a programmer? There are a variety
of ways to start learning about game development as a software developer The first question you should ask yourself is “Do I want to create an engine or a game?” -
When the answer is “create an engine” An engine is
a software framework that handles the core mechanisms and joins all the core libraries allowing for the game logic to “slip” in easily in a predictable and well defined flow Usually engine programmers deal more with low level software architectures whose code handles graphics, physics, networking, sound and input as the main pillars of the engine. -
When the answer is “create a game” Developers that prefer
to spend more time creating a game, instead of having to deal with low level problems, use an already established engine created by third parties The most well known engines that can be acquired from third parties are: - Unreal Engine - Unity3D - Cryengine -
Then what else can we do with them? With introduction
of Virtual Reality the creation of interactive applications that use 3D graphics has grown significantly Like IKEA’s virtual reality kitchen experience and production of movies -
Tell me some cool things about it - Unity3D is
possibly the most portable game engine in the market, runs from a huge array of devices, from the smallest mobile devices to the most powerful consoles and computers - Allows to use C#, UnityScript (very similar to JavaScript) and C++ for native plugins - Has different business models, one of them is the free version - Supports the newest technologies, like VR and always tries to keep itself up to date - Huge friendly community -
And now the not so cool things - Can be
difficult to optimize - Some undocument libraries that have to be dug out by the community - Lack of some more fundamental tools used in AAA production -
Unity’s inversion of control In Unity the entry point is
not your code, the way of interacting with Unity is by building components, Components inherit MonoBehaviour and define methods with reserved signatures that are called by the engine The common practice in Unity is to use Component composition in Game Objects, having simple components with less functionality allowing to divide the different logical concerns making components reusable in different Game Objects without the need to inherit functionality from other Components that are not needed -
Most used methods Update - this method is called every
frame and as the name suggests it’s used to update the component FixedUpdate - commonly confused with Update this method is called every fixed framerate frame, it’s a callback to deal with physics data Start - called when a script is enabled before any update Awake - called when the component instance is loaded, always before Start -
Place objects on the screen In Unity’s editor we can
simply drag and drop assets from the project folders to the scene view Not all assets allow this, since they don’t have a proper representation as a scene object While others need to be dragged on top of other objects, like shaders for example -
Great! Now I want to make a character, a bit
like Mario For this we can use Unity’s physics, we will attach a rigid body to our character, so we can make him move when we press some buttons and let him fall when not touching any surface -
He just fell of the platform, why? Back there I
talked about Unity’s physics system, is this a game about a guy that crosses walls and scares people? No It’s true that we added a rigid body to our character, but that is not enough, we need to tell what our scene which objects the character should collide and how For that we need colliders! -
Yey! Now he doesn’t fall into the void! But it’s
still pretty boring, because our character can’t do anything else Then let’s make him move when we press some buttons For this we will need to use Unity’s input system and apply forces to our character -
But now there’s the problem that we can’t see him
well This happens because when we move the character the camera doesn’t follow him So let’s just do like all those big internet companies and follow his life everywhere For this we will need to move the camera when the character moves -
How about some interaction? Is it possible? Yes There’s multiple
ways to interact with other objects, it all depends of what you want to do Let’s try to create a proximity sensor, when the character gets close to a place something else happens Colliders can help us on that -
I’m one of those guys that really likes music There’s
also support for audio in Unity Let’s change our scene a bit so when the character get’s close to the sensor we get some music