Well, it's been about two months since my last upload here on the Junferno channel and
while I do refrain from getting into personal topics here I do
have to admit that I've been dealing with a bit of a tragedy recently...
called the modern education system. Nonetheless, what better way to take a break
from all the programming and 3d models than to learn a game engine. Let's talk about Unity.
Before game engines, video games were typically developed from the bottom up: all the way from
communicating with the display hardware to the actual game logic. However, as both hardware
and video games became more and more advanced, video games started having more and more similar
components: such as gravity, or collisions, or just drawing things on a screen. Developing games
pixel by pixel is a lot of work and as video games shifted to larger-memory home consoles
rather than arcade machines that have constantly changing hardware, there was very little reason
for why all the low-level programming had to be redone for every single game. And so, it
was only a matter of time before frameworks were developed to make the process a lot less painful.
A game engine is a software framework that provides the same core functionality to many
different games. One of the earliest notable game engines was Nintendo's in-house side-scrolling
game engine made for Excitebike for the NES and then later on reused for Super Mario Bros. Note
how both of them smoothly scroll between different speeds. By the time first person shooter games
such as DOOM and Quake came out in the 90s, the whole process of creating games - especially 3D
ones - had become exceedingly complicated. And as the saying goes, why do it when you can simply
not. And so rather than creating more first person shooters from the bottom up, other developers
licensed the core parts of the software that made the game a first person shooter game and then just
added their own content on top of it to make a new game. And thus, commercial game engines rose in
popularity. As time grew on, many new engines were developed while old engines added new features
to handle more parts of different games. A game developed on the current version of Unreal Engine
rarely has any resemblance to the original 1998 Unreal first person shooter. Nowadays, the game
engines available to the public are a wide array of software which can be as general or specific
to the type of game as you want. This ranges from "you can only display graphics" to "you can
only make visual novels about high school anime characters". Regardless, on the topic of game
engines, perhaps the one that comes to people's minds first and foremost - especially amongst
indie developers and people who can read the title - is Unity Game Engine. Unity Game Engine
is a cross-platform general purpose game engine that some people say makes game development easy.
However, it also makes terrible game development easy and so game development is
actually hard again. Nonetheless, being such a widespread game engine, even the most casual
of game developers has probably at some point in time installed Unity, opened it, closed it,
and then never touched it again. Well now that we know what a game engine is and what Unity is,
it should only be a short matter of time before we're making well-polished games, yeah?
Let's open Unity. Once we open an empty 3D project in Unity, we can see a drag-and-drop interface
with the renderer already clearly implemented. As Unity is a general purpose game engine,
it generalizes everything by representing everything as an object (as general things tend to
be represented by). More specifically, everything is represented by something called a GameObject.
This is because they are all objects that are in a game. Each GameObject is a combination of
its components. Every game object for example has the Transform component which tells the
renderer the position, rotation, and scale of the object in a scene. These components are what
define the GameObject. A camera for example is a GameObject with a Camera component. A light is a
GameObject with a Light component. Using these pre-defined components, one can set many common
properties onto their GameObject, including things like physics, effects, audio, etc.
For more custom behavior, you can also add scripts in C#. If you're unfamiliar with C#, imagine Java
So how about 3D models? How would you represent a 3D object with components?
The structure of a 3D object is defined by its mesh, which is just a set of vertices in
a certain order that maps out the edges of the model. And so, a 3D object GameObject needs some
type of mesh renderer component to render the mesh. Now, usually when demonstrating 3D models
in Unity we use something useless such as a cube or a bean. I will be using Shinji from
Evangelion. Having just a static 3D object is fine but what's a game without some cool animations.
And so, we can use a tool like blender to rig our Shinji with some bones. A bone is an invisible
object that attaches to a segment of the mesh - just like real bones! That way, if we want to
animate that segment we simply just have to move the bone and the vertices will move along with it.
Once we've rigged our armature of bones we can make an animation by opening the animation tab
and then closing the animation tab and going to miximo.com to steal this joke. From there,
we can animate our rigged model by taking our animation file and putting it into an asset called
the Animator Controller which we can then attach to an Animator component on our object. Finally,
simply hit play and congratulations you've achieved
[incomprehensible disappointment noises]
Ultimately, all of that was just a simplification of just one feature on Unity Game Engine and to be
quite honest it's probably all I'm qualified to talk about anyway. However, there is a
sentiment amongst a select group of programmers who believe that using a game engine like Unity
is in a sense not real programming, perhaps due to its simplicity or its drag-and-drop interface.
My opinion is that Unity is just another tool, and like all game engines, was designed to make things
easier. Even though it's simpler to use, a good or bad game still depends on the developer. There are
plenty of poorly designed games made with Unity but there's also Bad Piggies. Of course, there
are plenty of reasons for why you would want to use a different game engine or even make your own,
but the idea that using Unity somehow invalidates the programming is a bit
absurd and impractical. Anyway, that's all I had to say about it.
How do i usually end these videos...
lol