unity introduction for programmers

Post on 18-Jul-2015

138 Views

Category:

Engineering

21 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Unity3D Introduction Meeting

GarageGeeks HQ

25 / 1 / 2012

Hi !

● I am Noam Gat● (Ex) Game Developer at Omek (with Unity)● Team member in Ogre3D graphics engine● GameIS Member (Join us!)

And you are...

● Mostly programmers● Little to no experience in game-dev

● Disagree? Raise your hand!

Lama Anglit?

כי זה יותר נוח!●, עדיף שיהיו מקושריםמושגים נלמד כמה ●

לסביבה שנעבוד בה. אני מפחד מעברית.●

Mission Statement

What are we NOT going to do ?

● Learn how to program / design games● Learn enough to develop a game on our own● Be 100% punctual and exact

Mission Statement

So what are we going to do ?

● Understand what a GAME ENGINE is● Get a broad sense of how to work with unity● Be able to work / talk with other UNITY devs

What is a game ?

Lets look at it from a

programmer's point of view...

What is a game ?

My “Hello world” program :● Has a start point and an end point

int main(){

print(“Hello world”);}

Often called a “procedural” program

What is a game ?

My “GUI / Forms / Widgets” program :● Doesn't have a known end point / time.

void OnButtonDown(){

MessageBox.Show(“Hello world”);}

Often called an “event based” program

What is a game ?

But why does “OnButtonDown” get called?

● Because the RUNTIME ENGINE invokes it.

We already don't control everything, but have

just enough power to do what we need.

What is an event ?

Depends on who you ask.

● GUI Apps? Mouse and keyboard movement

and presses, socket connections etc.● Games? Input, network, physics, and

(IMO the difference) - Time

What is a game ?

“A game is just an event-based application

in which things happen even if nobody does

anything”

Noam Gat, “Unity 3D Introduction Meeting”, 25.1.2012

What is a game engine?

A GAME ENGINE is an environment that

manages the different ENTITIES and

SUBSYSTEMS of a game and sends the

correct events to the code that the

developer writes.

What subsystems?

Central managers of different aspects● Scene graphs (Hierarchy)● Presentation (Graphics and Audio)● Input (On-site and remote)● Resources (Art and tech - Project)● Logic (Physics, AI, Behaviors)

Entities ?

● ENTITIES are a design pattern in which

systems are broken down into small

pieces that work together to create

complex behavior. In UNITY these are called

GAME OBJECTS.

Hello box

Hello box

What's in the box?● A TRANSFORM (position in the world)● A MESH (visual geometry)● A MATERIAL (rendering properties like color)● A COLLIDER (physics geometry)● A RIGID BODY (physical properties like mass)

Hello box

TRANSFORM

MESH

COLLIDER

MATERIAL

RIGID BODY

Do we always need everything?

Modularity

If we don't need physics, we can remove components.

Can we remove any more components?

Unity Editor

The INSPECTOR shows the components of an object

The SCENE view shows us the world as it is

The GAME view shows us the world from the camera

The HIERARCHY shows us the objects in the current scene

The PROJECT shows us all of the assets in the project

I want to code !

Coding in Unity is done via custom BEHAVIORS written

in the Mono (like .NET) environment.

Unity supports C# and variants of javascript, python.

We will use javascript / C# today.

I want to code

But first : How to navigate in the world in the editor.

MOVIE

Exercise #1 : Spinning Cube

1. Split into groups of 2 – 4 people

2. Create a new (empty) unity project

3. Create a scene and put a box in it, without physics

4. Create a javascript script in the project, and put the

following line in the Update function :

transform.RotateAroundLocal(Vector3.up, 1);

5. Attach the script to the cube in the scene

6. Press play and watch the magic happen!

Exercise #1 : Post Mortem

What happened?

1. The cube has a BEHAVIOR on it

2. UNITY calls its Update() function (why? docs)

3. The cube spins around a bit :

transform.RotateAroundLocal(Vector3.up, 1);

4. After spinning a bit for a lot of frames, it spins a lot

Exercise #1 : Post Mortem

Do we really know what is happening?

How fast is the cube spinning?

Exercise #2 : In Control

In the same group, modify the script so that

A: It contains a modifyable rotating speed, called

“turns per second”. Do this with this line :

public var turnsPerSecond = 1.0f;

B: The cube rotates along that speed. Hint :

Time.deltaTime, Mathf.PI

C: Try changing the parameter at

Runtime!

Exercise #2 : In Control

Solution :

transform.RotateAroundLocal(Vector3.up,

Time.deltaTime * turnsPerSecond * Mathf.PI * 2);

(Not important if you missed the 2)

Exercise #2 : In Control

We just learned how to configure our entities!

- It makes it easy to separate logic (code) from design

decisions (parameters for components).

- Even <Insert none-coder stereotype here> can

control the spinning cube!

Exercise #2.1 : In Control-er

Its not a game if we don't have any gameplay...

OMG LETS CONTROL THE SPINNING SPEED!!!

1. Declare two new parameters :

public var turnMoreKey = KeyCode.D;

public var turnLessKey = KeyCode.A;

2. Use Input.GetKey(...) to control the spinning speed.

Prefabs

After a few components your objects could get complicated.

You might want to classify a “cube with a transform spinner”

A “spinning cube”.

Exercise #2.2 : In Control-est

1. Create a prefab by dragging the cube to the project view.

2. Create one instance of the prefab for each team member

by dragging it to the scene.

Give each instance different control keys.

3. Battle it out for the spinningest cube!

Summary

Yadda yadda yadda.

I'll crowdsource this one.

Congratulations !

You now know Unity!

You can do anything you want with it!

Lets play spinning cube!

No, really.

You understand how different systems connect to each

other (we used the INPUT subsystem to control a

TRANSFORM COMPONENT of a specific

GAMEOBJECT)

Lets try to learn how to learn.

Exercise #3 : Gone Fishing

We want to know how each player is doing.

For each cube, display an on-screen string in the form of :

“Dudu's cube : Y rotation is 121.221 degrees”

How will we do this?

Help → Manual / Reference Manual / Scripting Reference

We are looking for a Graphical User Interface (GUI)

No cheating (Forums / internet) for this one please!

Hierarchies

Pretty good video here as well, I'll just play it

Exercise #4 : Tabletop

1. Create a simple scene of a table, a tray on the table

and some fruits on the tray.

2. Use parenting to create a correct hierarchy.

3. Place transform spinners on many elements in your

scene. Check that the scene makes sense when you

move them.

Summary

What have we learned?

● What should a GAME ENGINE give us● How does UNITY separate itself into different

SUBSYSTEMS and COMPONENTS● How can we extend UNITY and make our code run in it● How to answer our own questions about UNITY

Exercise #5 : Explore!

1. Open the “Angry Bots” sample project.

2. Spend about 5-10 minutes looking around, another

three minutes deciding on something to do in it,

then take 15-20 minutes to do it (if time permits).

3. GL HF!

What now ?

You don't know how to make games... YET

Be like the squirrel

You should (hopefully) be able to take a big problem

(“how to create a game?”) and rip it apart to smaller

questions and research into them on your own.

Give it a whirl

1. Global game jam

2. Advanced unity meetings

3. Facebook groups.

4. The only limit is yourself.

This weekend!

Israeli Unity3D developers UNITE!

Israeli Unity3d developers

Welcome to zombo.com

Questions?

Cheers!

top related