Tutorial:Roblox Game Development 101

=How this Course Will Work=

Welcome to Roblox Game Development 101
The Roblox Game Development 101 is an open source, free tutorial dedicated to providing the best information sources to take you from zero to full-stack Roblox developer. More information can be found later on in the tutorial.

Introduction
In this unit, we’ll learn about how Roblox works and start thinking about the basics of Lua programming.

Each of the following sections and lessons represents essential baseline knowledge. Even if you have no intention of becoming a Roblox developer yourself, this material should help you gain a useful understanding of the moving parts involved in creating and serving games on Roblox.

We will start by getting familiar with Roblox. Next, we’ll work on setting up a development environment and learning about Rojo. Then, we’ll go over the basics of front end technologies like GUIs before stepping into the back end with Lua. We will finish by learning about Team Create so that you can team up to code with others around the world.

By the end of this unit, you should not only understand how Roblox works but also be able to identify and differentiate between all of the technologies that you will use to build your own games. You will be able to build a simple game, style it, and add minor elements of interactivity while working comfortably from the Roblox Studio.

This section intentionally covers a very broad range of topics. It’s silly to go diving straight into Roblox programming without having a context for what it is and why it’s useful (and why you should learn it!).

How It Works
This curriculum works by pulling together the best content from across the internet for learning a particular topic. In each lesson, we’ll introduce the topic and try to provide some useful context before pointing you to external resources made by others.

Most lessons will contain personal questions that you should be able to answer. In addition, we provide several projects throughout the curriculum to help you grow your understanding by actually building things. None of it is necessary, but it is necessary if you want to grow as a developer.

While most of this material should be fine to tackle on your own, the projects in particular are good opportunities to find a partner and do some Team Create. Give it a shot!

What Comes Next
Once you’ve completed this course, you should be pretty comfortable with the building blocks of game programming but itching to dig deeper. Though we spend a fair bit of time digging into each of the major topics in this course, it’s really just a taste of what comes next (and all the cool stuff you can do with it).

The courses that come after this one (Roblox Lua Tutorial, coming May 2020) are designed to take that foundation and build it into an applied understanding of the material. Those courses will focus on taking these raw building blocks and honing them into a highly functional skillset. Once you’ve completed Game Development 101, you’ll have built a strong foundation to take those next steps.

=Introduction to Game Development=

What Do Game Developers Do?
In short, game developers build and maintain games.

Game developers often work for clients who are trying to get their product or service onto the game markets. The work is typically very project focused and involves collaborating with a team that helps to coordinate the client’s needs into the end product. The client could be a an organization, a government, or game development studio. The work could involve front-end, back-end, or full-stack game development.

Game development could be a good profession for you if you like solving logical problems, building things to give joy to people, and experimenting with new technologies. Game developers are in high demand, generally have a good work/life balance, and command comfortable salaries. Google your specific location to get a better sense of your local game development job opportunities. There are even Roblox specific buildings for game developers.

For more details, Wikipedia describes the breadth of the game development profession in their entry on game design.

Types of Game Developers
Earlier, we mentioned that game development work could be in the front end, the back end, or the full stack. What exactly do these terms mean?

The front end is the stuff you see on the game including the presentation of content and user interface elements like the settings menu. Front-end developers use GUIs, and their relevant frameworks to ensure that content is presented effectively and that users have an excellent experience.

The back end refers to the guts of the application, which live on the ServerStorage. The back end stores and serves program data to ensure that the front end has what it needs. This process can become very complicated when a game has millions of active users (think popular games on the front page of Roblox). Back-end developers use programming languages like Lua to work with data.

Full-stack developers are comfortable working with both the front and back ends. In Roblox Game Development 101, we focus on teaching you full-stack development, covering all aspects of game development.

Tools of the Trade
These are some of the basic tools you will use regularly. You may not know what they are now, but you most certainly will going forward.


 * Computer


 * Google


 * Roblox Studio


 * Scripting Helpers


 * Rojo

Motivation
Learning to code is incredibly rewarding but can also be difficult and frustrating. The strongest assets you can have as a student are a desire to build, a problem-solving mind, and persistence in the face of setbacks.

The game development industry has a long history of successful developers with varying backgrounds, so people tend to care more about what you’ve actually built than how you got there.

Read this comprehensive blog post from Happy Bear Software about the journey to getting hired as a brief introduction to get a similar glimpse at what you will face ahead.

Why RGD101?
I want you to know that this will not be easy.

There are plenty of other online curriculums for beginners, but they are often taught in an extremely isolated and controlled environment and cover only a specific topic.

Roblox Game Development 101 takes a realistic view of what you need to know and has you set up and work in your own environment, much like what you’ll be doing when you get a job.

It acknowledges that you need a wide variety of skillsets and languages to reach an employable level.

RGD101 is constantly evolving because of people like you who get further along in the curriculum and pay it forward by incrementally improving our content over time (in fact, you can edit anything on here as you like.

Once you start to feel comfortable with the tools, start hacking on open source projects on Roblox (like Miner's Haven or Dungeon Life). The more you contribute, the more you will learn about what you can do, and the closer you will get to being hireable. These projects will also look great on your resume!

Conclusion
Hopefully, you’ve gained a better idea of what a game developer actually does and what your life might look like if you decided to take it on as a career. This has only been a teaser into the world of game development through Roblox.

In this course, “Roblox Game Development 101,” you’ll take a journey through the entire spectrum of topics that you will eventually need to know. This course jumps around to a variety of topics that you may be totally unfamiliar with, providing you a small taste of each and then moving on.

The following courses will dive deep into these topics. You will build dozens of scripts and games to cement those skills that will get you hired.

Getting all the way there is going to be challenging. In fact, you should check out the post “Why Learning to Code is So Damn Hard”so you have a good idea of what the journey ahead is like. But what worthwhile thing is truly easy?

Yes, it’s going to be challenging.

But it’s also going to be fun.

And it might even be life changing, too.

What are you waiting for?

=Installation Overview=

Introduction
The first step for building any website is having the right tools. For us, that means setting up a development environment for writing good code.

We won’t lie to you: installing packages, editors, and even entire operating systems can be very frustrating. However, having the experience of setting up a development environment to run the code you’ll write is an invaluable real-world skill you’ll carry with you for the rest of your career.

The Installation Plan
In the following sections, we’ll go over the steps for setting up your environment. These sections are the most important steps in the entire curriculum. Please take the extra time to double check what you’re typing or you may cause more headaches for yourself down the road.

In the next few lessons, we will walk through these installation steps together: At the end of this section, you’ll be able to show off this game to your friends and family! It may seem like a lot of steps, but we’ll get through it as painlessly as possible together! If anything goes wrong, remember to use these steps:
 * installing the operating system (OS) of your choice;
 * installing a code editor;
 * creating an SSH key (a personal “password” that will identify you to GitHub and many other sites you’ll be using); and
 * creating and deploying a very basic game to make sure it all works.
 * Parse the terminal output for the actual error.
 * Google, Google, Google.
 * Never be afraid to ask for help!

OS Options
“Woah, woah, woah! I like my OS just fine the way it is!”

Don’t worry! We’re not asking you to get rid of what you’re comfortable using. You’ve probably learned a lot of tips and tricks for your favorite OS and don’t want to lose everything you have on your computer. However, most OSs are developed with non-technical folks in mind, so they hide or make it difficult to use many of the languages and frameworks we’ll need to install. Having to work around these difficulties causes many new developers to give up before they’ve even started their journey to full-stack nirvana.

Modifying or dual booting a computer to work with the tools you’ll need will make it much easier to start programming, can help create a distraction-free environment, and will look good on your resume. Take a deep breath, and let’s look at your options.

Mac
If you’re using a Mac, you’re in great shape. Most professional developers rely on Macs for their coding (even badcc of Badimo, creators of Jailbreak, codes on a Mac!). By installing just a few programs, you will be up and running with your education in no time!

Windows
Windows is an operating system that works well with Roblox Studio. Most development tools are written to work natively with Windows. We’ll be using Windows 10, as it's the newest version and has some very key features. If you don’t use a Mac, we recommend that you use Windows. It’s that simple. =Prerequisites=

Introduction
Before we can continue, we need to set up a development environment.

This will work for both platforms, although there are some Windows-tailored ones.

Step 1: Install Roblox Studio
Installing Roblox Studio is an easy process. Just head to the Roblox Studio webpage and hit "Start Creating". The download process will begin immediately, and Roblox Studio will install on its own.

Step 2: Installing Vital Plugins
Once you're in Roblox Studio, create a new Baseplate, and look at the top for a "Plugins" section. Plugins are tools made by fellow users which are designed to improve your Studio experience. Many are free, although some cost Robux.

To install more plugins, you can use the Marketplace section in the Toolbox, or go to the following pages and add the plugins normally (some plugins need external tools to run on your computer)

Step 1.1: Installing Nexus Embedded VS Code and Nexus Unit Testing Plugin
Both of these plugins were created by TheNexusAvenger. To install them, go to Nexus Embedded VS Code and Nexus Unit Testing Plugin.

If you wish to install Nexus Embedded VS Code, you must also install Visual Studio Code, enable HTTPService on Roblox, and run the new release ofNexus Embedded Editor.

Nexus Embedded VS Code allows you to overlay Roblox on top of Visual Studio Code (we'll get into that later), and Nexus Unit Testing Plugin allows you to run tests with ease.

Step 1.2: Installing Rojo
Rojo allows you, the developer, to use VS Code and Git to edit your game. You can also stream models into your game in real time, deploy your game to Roblox from the command line, and more.

To install Rojo, download the newest release for your operating system here and install the plugin here.

Step 1.3: Installing Moon Animation Suite
Moon Animation Suite allows you to use tools such as weld editing and animations in Roblox Studio.

Unlike the others, MAS is simple to install. Install it from the plugins page here, and it should appear on Roblox.