In this lecture, we'll discuss the big topic of programming in Unity. There are two primary programming methods in Unity as of Unity 2020. There's the traditional method of writing text-based code and the C#p language. This has been the primary way to code in Unity for many years. A newer method of programming in Unity is through using a visual scripting language. In Unity 2020, bolt visual scripting was added. There are several other third-party visual scripting tools available through the Unity Asset Store, and Unity plans to roll out yet another visual scripting language of their own in a future version of Unity. While visual scripting has the potential of making programming easier for non-programmers, it has more limitations over using C# and it is still in flux within unity. Therefore, in this course, we will focus on the tried and true method of writing C# code. I want to help non-programmers and programmers alike get into programming within Unity. Therefore, I'm going to attempt a balancing act to bridge between providing some foundational programming concepts for beginners, while also discussing some Unity specific concepts for everyone. If you are already a programmer, bear with me as I quickly cover some basics. If you are not a programmer, bear with me as well. Don't freak out or get nervous if some of these things don't immediately make sense. With time, effort, and experience, they'll become second nature to you. This lecture is just meant as a first step. Now, I want to 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 on your own. If you cannot write code, you limit yourself to the will of others on the team. 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 artist's perspective, it allows you to greatly expand your craft. For example, with programming skills, you can go much farther and tools like Maya, not to mention Unity. It also helps you to 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 open yourself up to many more jobs including programmer, technical artist, technical designer, and level designer. Lastly, learning to program is very obtainable. I have found that 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 brain and suddenly they get it. When it comes to programming, there are many levels of understanding. 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 higher levels of understanding. When you first start with a language, you have a very primitive understanding. This may be where you are right now with Unity and C#. You really have no knowledge of the language, but you may be able to use other people's code to get things working. But if something doesn't work, you're stuck. Next, we have a basic understanding. It takes a bit more effort to achieve this level of understanding. Here you have basic knowledge of the language. You understand the syntax and some basic commands. With this, you can 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 really understand it. If it doesn't work, you are stuck once again. 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, except when doing something out of the ordinary. Going from advanced to expert usually just 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 the engine. In terms of programming in C# within 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. As a programmer, I recommend trying to get to an advanced level SAP and strive to become an expert overtime. What are our goals in this course? Well, first off, this is not a comprehensive programming course. If you've 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 course will be a good introduction to you. You may feel that things are a bit over your head at times. Don't be nervous, don't freak out. Just proceed on through 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 course will be a great introduction to you. What we're going to do is introduce programming in C# within Unity. Our primary technique to teach programming is through a number of code walk throughs that should introduce both beginner and season programmers to the concepts of programming within the Unity environment. Finally, I will hopefully provide you with the resources you need to continue your learning beyond this course.