[MUSIC] In this lecture, I'll talk about learning to program in Unity, and what our goals are. Now, I wanna speak with the non-programmers for a minute. I truly believe that everyone on the game development team should learn to program. From the traditional programmer to the designer to the artist. Programming is truly empowering. It unlocks the potential that you can solve problems yourself and build things yourself. If you cannot write code you limit yourself to the will of others on the team. And if you don't have a team, you severely limit what you can do. Learning to program really helps you understand how games are made. From a designer perspective it allows you to come up with ideas that are not only creative but technically possible. From an artistic perspective it allows you to greatly expand your craft. For example, with programming skills you can go much farther in tools like Maya not to mention Unity. It also helps you communicate better with the technical team. If you can speak the language of the technical team, not only will they respect you more, you will also be able to communicate in a way that will make their job easier which in turn makes your life easier. If you become a strong programmer, you'll open yourself up to many more jobs including programmer, of course, technical artist, technical designer, and level designer. Lastly, learning to program is very obtainable. I've found that with many of my students that have struggled with programming in the past, when they get to programming within Unity to make games, something clicks in their brains and suddenly they just get it. When it comes to programming there are many levels of understanding or expertise. It takes effort to move to higher levels of expertise. This graph represents the learning curve, or the amount of effort it takes to move to a higher levels of understanding. When you first start with the language, you have a very primitive understanding. This maybe where you are right now with Unity in C sharp. You really have no knowledge of the language, but like in the last two projects, you're able to use other people's code to get things working. But if something doesn't work, you really are stuck. Next we have a basic understanding, it takes more effort to achieve this level of understanding. Here you have basic knowledge of the language, you understand the syntax and some of the basic commands. With this you could probably write some basic scripts, you can borrow code and insert it into your own code. But unless it's very basic code you might not understand it. So, if it doesn't work, once again you're stuck. The amount of effort or the learning curve is the steepest while achieving intermediate understanding. Within this level you grasp the core language. You can borrow code, understand it, and modify it. But you often must use example code to get started or at least a good reference to create your own code. The most effort is required to move from intermediate to advanced understanding. With advanced understanding, you can generate complex code from scratch. You don't really need to borrow code or refer to a reference that often, except when you're doing something out of the ordinary. Going from advanced to expert usually takes time and practice. Not necessarily more effort. With expert understanding you are proficient at writing quality code very quickly. You are the go to person on the team whenever anyone has a question about how to do something. You understand all the intricate details of the language and of the environment. In terms of programming in C# in Unity your goal expertise level probably depends on your role on the game development team. As an artist you should have at least a basic understanding of programming. As a designer I recommend an intermediate understanding given that you have to be more hands on with the code and often work closely with the programmers. And of course as a programmer, I recommend trying to get to an advanced level of understanding as soon as possible, and strive to become an expert over time. So what are our goals in this course? Well, first off, this is not a comprehensive programming course. If you have not programmed before and you really want to build your programming knowledge, I encourage you to seek out additional introduction to programming courses to complement what you're doing here. However, even if this is the case I believe this week will be a good introduction to you. You may feel that things are a bit over your head at times, but don't be nervous, don't freak out. Just proceed on with the content. With time and practice things will start to click. If you are a programmer, but are new to Unity and game development this week's content will be a great introduction for you. What we're going to do is introduce Programming in C# within Unity. We'll do this through a number of code walkthroughs that should introduce both beginner and season programmers to the concepts of programming within the Unity environment to makes games. Finally, I'll hopefully provide you with resources you need to continue your learning beyond this course. In the next lecture, I'll discuss some important programming concepts in Unity. [MUSIC]