Intro to Mobile Game and App Development and Corona SDK 2015
4.6 (20 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
129 students enrolled
Wishlisted Wishlist

Please confirm that you want to add Intro to Mobile Game and App Development and Corona SDK 2015 to your Wishlist.

Add to Wishlist

Intro to Mobile Game and App Development and Corona SDK 2015

Learn how to make your very own games using Corona SDK. You'll start with the basics and wind up with your own game.
4.6 (20 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
129 students enrolled
Created by Daniel Williams
Last updated 3/2016
English
Current price: $10 Original price: $20 Discount: 50% off
5 hours left at this price!
30-Day Money-Back Guarantee
Includes:
  • 3.5 hours on-demand video
  • 6 Articles
  • 2 Supplemental Resources
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
What Will I Learn?
  • Learn about the LUA programming language
  • Have a better understanding of Corona SDK
  • Be able to create a catching the coin mobile game
  • Understand how to create a 2d space shooter
View Curriculum
Requirements
  • System Requirements: Mac OS® X 10.10 or later, Intel Mac. For iOS builds, requires Xcode 6.3 or later
  • Corona SDK Device Support: iOS 6.0 or greater. Android OS 2.3.3 or greater (ARMv7). Corona-built apps will not install on ARMv6 devices.
Description

How many apps do you have on your mobile device? And out of those apps, how many are games? Chances are you've probably downloaded more than a few. After all, gaming is one of the most popular uses for mobile devices.

“According to App Annie Intelligence, games contributed around 80% of revenue and 40% of downloads generated globally on iOS and Google Play combined in December 2014." – App Annie

If you've always wanted to build and develop mobile games, there's no better time than now to learn and act on that dream. With “mobile gaming [driving] nearly half of all app downloads" (App Annie), this is a field that is going to continue to grow.

Think it's an expensive investment? Not at all – it's now possible to start your game development career without breaking the bank, thanks to a recent update from Corona Labs.

With the release of Corona SDK Starter – a free tier that allows you to download and use Corona for free, as well as publish your game to Google Play, iTunes, the Amazon App Store, and more – it has never been easier or cheaper to start building mobile games for millions of players worldwide.

With Intro to Mobile Game and App Development and Corona SDK 2015, you'll learn about the Lua language, programming concepts, Corona basics, and game development.

Here's what you will learn in this course:

  • The Programming Language Lua – Build a solid understanding and foundation of the Lua programming language.
  • Corona Basics – Here, you will discover some of the foundational pieces that make up Corona SDK, such as display objects, events, widgets, physics, and composer. Put Your
  • Knowledge to Work – Learn By Doing. In this section of the course, you'll build a game called Bob the Catcher to help jump-start your game development career.
  • Building More – This segment will cover how to create a 2D space shooter game filled with spaceships, lasers, and UFOs.

This online game development course is recommended for individuals who are just starting out in game development, but it can be just as useful for those who have already started their careers. From beginners to the slightly more advanced, every student will find something useful to take away from this course.

Some of the topics covered in this course are:

  • Variables, Operators, and Tables
  • For and While Loops
  • If/Then Statements
  • Functions
  • Display Objects
  • Event Listeners and Physics
  • Widgets
  • Composer Scene Management

This course uses the latest public build of Corona SDK, graphics 2.0, and the official scene management tool by Corona – Composer.

Learn how to build games faster and better with Corona SDK and advance your game development career!

Who is the target audience?
  • This course is meant for individuals that are looking to create their first mobile game but don't know where to start. Although a basic understanding of programming will help, no programming knowledge is needed for this course.
  • During this course, we'll cover the basics of programming concepts, the LUA language, and Corona SDK. This course is not meant to cover advanced topics because I want you to focus on releasing your first game.
Students Who Viewed This Course Also Viewed
Curriculum For This Course
62 Lectures
03:27:50
+
Getting Started
3 Lectures 03:33

What is Corona SDK?

Corona SDK is a tool that allows anyone to build a mobile app quickly and easily. If you're looking to build a game, Corona makes it easy to incorporate physics, to respond to player interaction, and so much more.

If you're looking to build an app for a business or non-game related app, Corona has made it easy to use common GUI elements such as buttons, wheel pickers, and more.

You can view more information about Corona at www.CoronaLabs.com.

Preview 01:05


Here are links to all of the text editors I pointed out in this lecture.


Sublime Text
http://www.sublimetext.com/


Corona Editor
https://coronalabs.com/products/editor/


Notepad++
https://notepad-plus-plus.org/


TextWrangler available in app store


Lua Glider
http://www.mydevelopersgames.com/Glider/

Preview 02:21

A Quick Note about HD Videos
00:07
+
Bootcamp Basics
11 Lectures 54:32

In this section, we will be covering the basics of the Lua programming language. This section is not meant as an in-depth coverage of Lua. Instead, it's meant to get you jump-started into coding games right away. If you would like more information about Lua, head on over to Lua.org or go right to their reference manual at http://www.lua.org/manual/5.3/.

If you are already familiar with the Lua programming language, please feel free to skip to the next section – Corona Basics.

What We Will Cover
00:22

Check out the full list of Lua scripted video games at http://en.wikipedia.org/wiki/Category:Lua-scripted_video_games. For more information on Lua, head on over to Lua.org.

Preview 02:07

In this lecture, we'll be discussing variables. Variables allows you to store information in your app such as name, age, number of coins, or current level. You'll learn about the 3 basic data types - numbers, strings, and boolean values.

Variables - Everything has a Place
05:10

This lecture discusses operators. Operators allow you to add, subtract, multiply, divide, compare and more. Watch this video to learn more.

Operator - Add, Subtract, Multiply, and Divide
06:07

Tables allow you to store multiple types of variables in one neat location. You can store numbers, strings, and boolean values.


Tables use indexes and values to store data. Indexes reference the location of a value within a table. Indexes can be either numbers or names, otherwise known as associative arrays.

Tables - Storing Them Away Neatly
07:53

For Loops! For loops allow you to perform repetitive actions for a known number of times with fewer lines of code.

For Loops - Repeat, Repeat, Repeat
06:58

While loops can accomplish the same task as a for loop, but they are best used when your app needs to run a loop for an unknown number of times. It's all about using the right tool for the job!

While Loops - Stop Me If You've Heard This Before
03:25

The if then statement is useful for making decisions in your app. With Lua, you also have access to the if/else statement which is useful for deciding between multiple options.

If Then Else - Decision Making
04:14

A function is a code group that performs a specific task. You can break down your projects into functions to make building your next game manageable. Functions also allow you to repeat code, such as updating scores, from one place so you can reuse the same piece of code.

Functions - Reduce, Reuse, and Recycle
08:46

When to use and when not to use global variables can be a confusing subject. For further clarification on the topic of local vs global, please visit the following resources.



Corona Labs Blog - https://coronalabs.com/blog/2013/05/28/tutorial-goodbye-globals/

Corona Geek - https://www.youtube.com/watch?v=eYRxlhs4Mi4

Lua.org, local variables and blocks - http://www.lua.org/pil/4.2.html

And finally, locals vs. globals as discussed on lua-users.org: http://lua-users.org/wiki/LocalsVsGlobals

Local vs Global - It’s All About Position
05:27

In this lecture, we will go over some of the best coding practices. This lecture doesn't cover all of the best coding practices or the coding styles, however, you'll be exposed to some of the basics to help keep your code clean and organized.

Some Best of Coding Practices
04:03
+
Corona Basics
13 Lectures 40:23

In this section, you will learn about some of the core concepts of Corona SDK. These core concepts will create a solid foundation for your game development career. Some of the concepts you'll learn about are:

  • Corona Project Setup
  • Displaying Images
  • Displaying Shapes
  • Events
  • Widgets
  • Composer
  • And More!
An Introduction to Corona Basics
3 pages

Downloads for Corona Basics
00:08

In this lecture, you'll find out where to download Corona SDK from. In case you missed, you can download Corona for free at CoronaLabs.com.

Preview 01:25

We'll quickly set up our project for Corona Basics.

Preview 01:42

We'll take a quick look at our project setup for the Corona Basics section.

Looking Over Our Project Files
01:01

Get familiar with the Corona Console and Corona Simulator. The console will give us feedback on what's going on in the simulator and the simulator will give us a real time representation of our app.

Getting Oriented - Console and Simulator
00:58

The print statement is a foundational piece in any programming course. Learn how to use it to print simple statements to the console.
Print Statement - Starting with the Foundation
02:20

You'll learn how easy it is to display images with Corona SDK. You'll be using the following line:

display.newImage()

Displaying Images - Make It Look Nice
04:20

Corona allows us to easily create basic shapes for our apps. This lecture will go over some of the options that you have available. Below are the shapes that we discussed:

display.newCircle( xCenter, yCenter, radius )
display.newRect( x, y, width, height )
display.newRoundedRect( x, y, width, height, cornerRadius )
display.newLine( x1, y1, x2, y2 )
display.newPolygon( x, y, vertices )

You can always find more information about each of these shapes at https://docs.coronalabs.com/.

Displaying Shapes - Basic Shape Creation
05:24

With event listeners, you'll learn how to make your app interactive using Corona's even driven programming. Here's an example - alien:addEventListener("tap", alienTapped)

Event Listeners - Make Me Move It
08:32

Widgets allow us to easily add interactivity to our app by using buttons, picker wheels, steppers and more. To view widget demos, use the sample code that comes bundled with Corona. Or, if you just want to read a list of widgets offered, head on over to https://docs.coronalabs.com/api/library/widget/index.html.

Widgets - Push Me, Tap Me, Scroll Me
03:23

Physics allows us to easily add gravity and help with collision detection to our Corona built applications. This lecture is meant as a high level overview to physics with Corona. To read more, head on over to https://docs.coronalabs.com/guide/physics/index.html for more information about physics.

Physics - Gravity At Work
03:18

Composer is the official scene management library supported by Corona. Composer allows you to switch between scenes and manages memory management for your app. You can learn more about Composer at https://docs.coronalabs.com/api/library/composer/index.html.

Composer - Easily Manage Your Game
07:52
+
Putting Our Knowledge to Work - Bob the Catcher
15 Lectures 40:13
For our first game, we'll be building a coin catching game called Bob the Builder. This game features some simple game mechanics that you'll need in your game development career.
Preview 01:06

Downloads for Bob the Catcher
00:19

You'll set up your first project using Corona's built-in new project feature. The new project will use the default settings in the project set up. Please make sure to copy over the images that you've downloaded in a previous lecture to your project.

Setting Up Our Project for Our First Game
01:17

main.lua is the place where every Corona built app starts and we'll start our game development here.

main.lua - Where Everything Starts
01:22

In this lecture, you'll create a new file called menu.lua and add the scene template from Corona's documentation. You can find Corona's documentation at http://docs.coronalabs.com and the scene template is located here - https://docs.coronalabs.com/api/library/composer/index.html#scene-template

Menu Scene Part 1 - Setting up Our Menu Scene
01:17

With our menu scene setup, we'll continue working on this scene by adding display objects. We'll add a background, ground, Bob, and a game title.

Menu Scene Part 2 - Adding Display Objects
07:08

We'll close up our menu scene by adding a widget for our play button.

Menu Scene Part 3 - Adding a Play Button with Widgets
03:46

For part 1 of our game scene, we'll create game.lua and enter in the scene template from http://docs.coronalabs.com.

Game Scene Part 1 - Setting up Our Scene
00:56

You'll be setting up forward declares and functions in Part 2 of setting up the game scene.

Game Scene Part 2 - Forward Declares and Functions
03:24

We'll be adding Bob the Catcher to our game along with the background, ground, and text objects.

Game Scene Part 3 - Adding Bob The Catcher
07:13

We'll use timer.performWithDelay to create a timer to send coins in our game every 1250 milliseconds. A timer is built using this call -

 timer.performWithDelay( delay, listener [, iterations] ) 

Where delay is in milliseconds, the listener is the name of the function, and iterations is how many times to call the function.

Game Scene Part 4 - It's Raining Money!
04:24

You'll be coding the function moveBob to allow Bob to move back and forth on the screen. Bob will move according to the tap position on the device using event listeners.

Game Scene Part 5 - Making Bob Work For It
02:42

In this lecture, we will set up global collision detection for Bob the Catcher. Using physics for collision detection, the game will detect for collisions between Bob and the coins.

Game Scene Part 6 - Detecting Collisions
03:11

We'll wrap our game by adding functionality to our menu button.

Game Scene Part 7 - Add Functionality to Our Menu Button
02:00

Download Code so Far
00:08
+
Adding Some Polish to Bob the Catcher
3 Lectures 07:07

When we built Bob the Catcher, we used display.newImageRect() to display images in our game. The final step to enable retina display images is to edit our config.lua file.

Inside of the image suffix table, we already have [“@2x”] = 2. The @2x is the image suffix that is added to all retina images and the number 2 is the scale factor.

The scale factor tells Corona when to use retina images. In our case, it's going to be when the device is 2 times the size of width and height.

Enabling Retina Display Images
01:41

We'll add a coin catching sound to our game to make our game a little more appealing for all players. Please download the coin.mp3 file from the resources located in this lecture.

Adding a Coin Sound
01:31

We'll add some more polish by remove event listeners, canceling timers, and removing scenes.

Remove Scenes
03:55
+
Building UFO Slayer 1983
14 Lectures 55:08

This lecture will give you an idea of what to expect while we developer UFO Slayer 1983.

A note about the sounds: The background music is from Deceased Superior Technician or DST. The website is located at nosoapradio.us. The UFO destruction sound comes from LittleRobotSoundFactory. I did not create these sounds, but they are available for free with attribution.

Preview 01:27

In this section, you'll learn about the project layout and download the project template that will be used throughout this course.

Going Over Our Project Setup
01:00

We'll quickly go over main.lua, build.settings, and config.lua. I want to power through these files so we can get to the good stuff. I feel that you already know the basics and there's no reason to reiterate them here. If you need any clarification on any of these files, I'll happy to answer your questions.

main.lua, build.settings, and config.lua
02:05

The forward declares added in this lecture are as follows:

local width = display.contentWidth -- width of screen
local height = display.contentHeight -- height of screen
local top = display.screenOriginY -- Top
local left = display.screenOriginX -- Left
local right = display.viewableContentWidth - left -- Right
local bottom = display.viewableContentHeight - top -- Bottom

Feel free to copy and paste the forward declares from here. You can also download the scene template on Corona Labs at https://docs.coronalabs.com/api/library/composer/index.html#scene-template.

menu.lua Part 1 - Setting Up Our Menu Scene
05:10

In this lecture, we will be adding some background sound to our game. Please check out the credits file to see who created this awesome track.


The code added in this lecture is:


local backgroundMusic = audio.loadStream("sounds/background.mp3")
audio.play(backgroundMusic, {loops = -1})

menu.lua Part 2 - Adding Background Music to Our Menu Scene
01:52

The code that was used for this lecture is below. This lecture will wrap up the menu scene by adding two graphics, a start button, clean up code for the game scene.

Part 1
local background = display.newImageRect(sceneGroup, "images/background.png",
display.actualContentWidth, display.actualContentHeight)
background.x = width * 0.5
background.y = height * 0.5

local title = display.newImageRect(sceneGroup, "images/title.png", 480, 183)
title.x = width * 0.5
title.y = top + 75


local function onStartTouch(event)
if(event.phase == "ended") then
composer.gotoScene("game", "fade")
end
end

local btn_start = widget.newButton{
width = 273,
height = 71,
defaultFile = "images/btn_start.png",
overFile = "images/btn_start_over.png",
onEvent = onStartTouch
}
btn_start.x = width * 0.5
btn_start.y = height * 0.75
sceneGroup:insert(btn_start)


---

Part 2
local previousScene = composer.getSceneName("previous")
if(previousScene) then
composer.removeScene(previousScene)
end

menu.lua Part 3 - Finishing Our Menu Scene
09:02

In this lecture, we will be using the scene template from https://docs.coronalabs.com/api/library/composer/index.html#scene-template as the basis for our game scene. Once implemented, we will add in the widget library and the physics library.

The code used for this lecture is:

local widget = require("widget")

local physics = require("physics")
physics.start()
physics.setGravity(0,0)

game.lua Part 1 - Setting Up Our Game Scene
02:17

This lecture is all about setting up the variables that we will be using throughout the game scene. A forward declare is basically creating and defining a variable before it is used. The code used for this lecture is as follows:

local width = display.contentWidth
local height = display.contentHeight
local top = display.screenOriginY
local left = display.screenOriginX
local right = display.viewableContentWidth - left
local bottom = display.viewableContentHeight - top

local player, txt_playerscore, txt_playerlives, txt_menu
local tmr_sendenemies, tmr_sendbullets
local enemy = {}
local enemyCounter = 1
local bullets = {}
local bulletsCounter = 1
local playerScore = 0
local playerLives = 3

local laser = audio.loadSound("sounds/laser.mp3")
local ufoHit = audio.loadSound("sounds/ufohit.mp3")

game.lua Part 2 - Creating The Variables For Our Game Scene
04:22

In this lecture, we will be adding in the follow functions. We will code these in at a later lecture.


local function returnToMenu()

end

local function sendEnemies()

end

local function movePlayer()

end

local function sendBullets()

end

local function onGameOver()

end

local function onCollision()

end

game.lua Part 3 - Setting Up Our Functions
01:46

As promised, here's the code I copied and pasted into this file. I believe we are at a point where we can take this shortcut. However, I've added a few comments below to explain what each piece does. If you have any questions, please let me know!


-- Create the background

local background = display.newImageRect(sceneGroup, "images/background.png", display.actualContentWidth, display.actualContentHeight)

background.x = width * 0.5

background.y = height * 0.5

-- Create the player ship

player = display.newImageRect(sceneGroup, "images/player.png", 30, 40)

player.x = left + 50

player.y = 50

player.name = "player"

physics.addBody(player, "static")

-- Create a text object for the player score

txt_playerscore = display.newText(sceneGroup, "Score: "..playerScore, 0, 0, native.systemFont, 14)

txt_playerscore.x = right - txt_playerscore.width

txt_playerscore.y = bottom - txt_playerscore.height

-- Create a text object to track player lives

txt_playerlives = display.newText(sceneGroup, "Lives: "..playerLives, 0, 0, native.systemFont, 14)

txt_playerlives.x = left + txt_playerlives.width

txt_playerlives.y = txt_playerscore.y

game.lua Part 4 - Add Graphics and Making Our Game Run
04:24

In this lecture, we will learn how to send the player back to the menu, send enemies from the right side of screen to the left side of the screen, and send bullets. We will be attaching physics objects to our objects and using transition.to().

game.lua Part 5 - Return To Menu, Sending Enemies, And Player Movement
06:54

We are getting close to wrapping up! This lecture will cover how to send bullets from the player ship and how to create the game over function.

game.lua Part 6 - Send Bullets and Creating the Game Over
04:15

In this lecture, we will learn how to code the on collision detection function. This is the biggest part of our game and one of the longer lectures of this course. However, you will learn what makes a game run by properly handling physics collisions. When we have a collision in our game, we'll remove a ufo ship, end the game for the player, or add some points for our player.

game.lua Part 7 - Collision Detection
10:19

Download UFO Slayer 1983
00:15
+
Where To Go For Help
3 Lectures 03:46

For help for your Corona related questions, head on over to http://forums.coronalabs.com/ to get some great answers. Just remember, be nice and post your code!

Corona Forums
01:43

The code exchange is located at https://code.coronalabs.com/ and you can find some valuable pieces of code from the community for your next project.

Code Exchange
01:09

Corona Documentation is located at https://docs.coronalabs.com/ and is the resource for building your Corona app. Even I forget some APIs from time to time so be sure to reference the documentation as often as possible!

Corona Documentation
00:54
About the Instructor
Daniel Williams
4.6 Average rating
109 Reviews
727 Students
3 Courses
Game Developer

The instructor for this course, Daniel Williams, has experience with online marketing, web development, and game development. He's a seasoned veteran with Corona SDK and has been developing apps using Corona's platform for quite some time. Daniel has published over 100 apps under his accounts and several more for clients. These apps have ranged from business apps, such as calculators for engineers and cookbooks for healthy eaters, to game apps, such as word games, educational games, and casual games.

In addition to his game development experience, he's had his hands in all aspects of online marketing such as search engine optimization, content strategies, retargeting ad campaigns, and web development.

Daniel has a passion for teaching and has written a book on Corona SDK. The written book covers the basics of Corona SDK and even goes over the basic game mechanics some popular game genres. Daniel also has written several online tutorials for the community and maintains a blog discussing some how-to's for Corona SDK and PHP. He hopes to share his knowledge with anyone that is willing to listen.