Video of 12-year-old app developer. Copyright © 2017, FPP, LLC. All rights reserved.

Tech Workshops: Game Development

We welcomed presenter John Williams, who has many decades of game development experience.

Features of Corona SDK.
Features of Corona SDK. Copyright © 2017, FPP, LLC. All rights reserved.

John began his Game Development presentation by having everyone tell about their gaming interests and programming background—so he could direct his talk appropriately. Then he explained his background: including his schooling at Berkeley which eventually led to an internship with some grad students. The company they worked for ended up being quite successful.

The year after he graduated from Berkeley, he started his own design company. They contracted for “interactive fire-fighting” gigs, writing software for other companies. He ended up working on about 100 different projects, with the trade name of Midnight Design hidden amidst the code. John ran that company for about 10 years, and always kept his staff at about 15-20 employees, in order to remain manageable.

Then John decided to go out on his own and make serious money developing his own products. He now owns several design companies, and was able to retire about 10 years ago at the age of 40. Now he spends his time volunteering.

One of John’s companies, based in Ashland, is Must Have Menus (MHM). The web-based company offers the following services to restaurants: creating, editing, storing and printing a variety of menus. MHM’s staff consists of 25 people that service 20,000 restaurants.

John emphasized the breadth of his experience: he’s made games for a lot of different companies, he’s been a team member of groups that have developed a lot of different games, and he has been a director of game development. His favorite game development tool is Corona SDK.

John displayed a photo of his first computer: A Commodore PET (Personal Electronic Transactor), that sported an onboard Datasette Reader (1970s state-of-the-art Thumb Drive).

Commodore PET
Commodore PET. Courtesy of Wikipedia.

He played Atari 2600 on his Commodore PET.

John then displayed some statistics showing top industries for gaming, startups, and investments. Software Startups dominate all other types of startups.

Video Game Developers statistics:

  • Most go to college
  • Most have degrees
  • Average Salary: $90,000

MakeSchool is a venture-capital-funded startup based in Silicon Valley with a unique financial model: The degree is completely free; you must then give back 10% of your salary for the first two years.

John then discussed why game development is a really fun—and rewarding—career. Games require not only coding but art, sound, and content (the story). He emphasized that video games are story-driven, and said that he encourages writers, artists and other non-technical people to participate in game development.

John shared some photographs of the interior office spaces for some game development companies, showing the unusual features offered to their staff. For example, Xbox HQ has a bike repair shop inside the corporate office.

As for the future? There is a huge shift towards online gaming.

The comment, “A.I. is something that is hot right now,” prompted the question: Where do you see VR going? John replied that, in the early 90s VR was hot but then turned out to be a real dud; the technology seemed to cool. Then a couple of years ago, he started hearing more about VR, and how the technology is much smoother now.

A student volunteered that SOU has purchased an Oculus Rift and is letting students develop software for the device.

People interested in AI, VR, MR, AR are encouraged to read The Fourth Transformation.

The following experiences are beneficial to future game developers:

  • Graduate from college
  • Build websites
  • Build apps
  • Learn as many tools as possible
  • Travel to understand other parts of the world
  • Read/Write Stories

As the discussion turned to storyboards, John explained that the whole idea of storyboards is to figure out some sort of graphical direction for the key parts of the game.

In response to a question about lacking artistic ability, John emphasized that good software development is a team project. So, if you’re not a good artist, partner with an artist; if you’re not a great storyteller, team-up with a storyteller. Likewise, add typographer and clothing designers to your game development team.

John also encouraged an art student in the audience to believe in himself, and to highlight older works as examples of past work so he might be able to show more recent versions and demonstrate his growth. He recalled the old days of his career (20 years ago), and told stories about how long the hardware took to render a drawing. He offered a critical assessment of his older work, as an example of how to view work that does not represent his current abilities.

John displayed resources that are free and open source; you merely need the energy and the interest in doing things. Examples include:

  • Twine: an open-source tool for telling interactive, non-linear stories.
  • Stencil: image creation tool for social media marketers, bloggers & small businesses.

John showed examples of products that use visual tools to let you create the whole structure of the game; for example, what happens when you drag around an object and reconnect it to another object, like with a flowchart. Unreal is one such tool. What you’re doing is telling the game how the logic is going to act as people make different choices.

Favorite Game Engines:

  • Corona SDK, which is the one we will try today.
  • Lumberyard from Amazon
  • Unity3D: favorite for 3D Development: number of examples, tutorials, plug-ins, very ubiquitous.

John pointed out that learning HTML, Java and JavaScript are the most useful tools for game developers to learn.

Why Corona SDK? John believes Corona SDK is best because of the following features:

Corona SDK Features:

  • Build iPhone or Android games; works with both phone- and tablet-size devices.
  • Uses Lua Scripting Language that’s really easy to learn; like JavaScript.
  • #1 games with 10+ million downloads like run Run, Freeze, Blast Monkeys
  • Flexible: develop one code base that works on Windows or Mac, and you can output either Android or iPhone games.
  • Integrated into several text editors
  • Built-in physics engine. You can attach physical characteristics to any object without having to figure out the math.
  • Mature product
  • Free

We all downloaded a .zip file that contained an example game, and launched a text editor to make changes. Most students automatically gravitated to using Text Wrangler. Then John mentioned that TextWrangler has been sunsetted. He recommended two other Text Editors that have text coloring built-in as well as auto-complete feature:

Once everyone had successfully relocated all the necessary modules to a working directory, the reward was to see a red balloon superimposed over an image of a phone floating against a background of a blue cloud.

When the user clicks on the balloon, the balloon rises. A double-click caused the balloon to rise twice as far as the default.

We played around with the various parameters to trigger:

  • Relocating the base rectangle
Relocated Rectangle Base.
Relocated Rectangle Base. Copyright © 2017, FPP, LLC. All rights reserved.
  • Increasing the number of balloons.
Two Red Balloons.
Two Red Balloons. Copyright © 2017, FPP, LLC. All rights reserved.
  • Decreasing the size of the balloon.
Tiny Red Balloon.
Tiny Red Balloon. Copyright © 2017, FPP, LLC. All rights reserved.
  • Defying gravity.
Defying gravity; balloon bounced below ground level.
Defying gravity; balloon bounced below ground level. Copyright © 2017, FPP, LLC. All rights reserved.
  • Making balloons overlap.
Overlapping Balloons.
Overlapping Balloons. Copyright © 2017, FPP, LLC. All rights reserved.

All-in-all a great deal of fun!

And only about one paragraph of code was required for this simple game!

John reviewed the backgrounds of very successful game developers and highlighted the fact that many of them had an interesting background from which to elicit great stories.

We wish to thank John Williams for volunteering to show us how easy it is to create a game with the amazing tools now available for free! John also provided encouragement to all students, from all disciplines, to investigate the Game Development Industry.

In closing…

"Stay hungry, stay foolish." Quote from Steve Jobs.
“Stay hungry, stay foolish.” Quote from Steve Jobs. Copyright © 2017, FPP, LLC. All rights reserved.


One question came up that triggered some further research: Why are (most) wireframe images segmented into triangles?


(Courtesy of Jason DeShazer, my Math Consultant)

Basic Math: The minimum number of points required to define the face of a plane is 3.

Because triangles are polygons with 3 sides (and more importantly 3 points) triangles are guaranteed to be co-planar (all points existing in the same plane) no matter where the triangle’s points are placed in a 3 dimensional space.

You can divide a surface using other polygons [Quads and Hexagons are popular options], but as the number points increase, it’s possible that non-planar shapes (not all points existing in the same plane) will be created.

Rendering engines will sometimes fail to correctly render a non-planar shape because it has to calculate the position of each point, then subdivide the shape into smaller shapes that are co-planar.

It’s better to initially subdivide a wireframe into shapes that guarantee this co-planar property.

This decreases the chance that wireframes will be rendered incorrectly and saves the rendering engine the trouble of having check each point of a polygon to determine whether it’s non-planar or co-planar before the rendering process is launched.

Drilling Down…further research:

What’s a wireframe and why do we care how a wireframe is segmented?

A wireframe serves as a fill-in-the-blank image that is produced as an interim template, in preparation for the rendering process; where multiple layers of effects—realistic lighting, shadows, atmosphere, color, texture, and optical effects such as motion-blur—are added to give the shape a realistic appearance when the image is displayed on a screen.

The math modules that perform this fill-in processing need boundaries for the various effects. The rendering process is complicated if there are more points per boundary because the location of those points must be calculated before rendering can begin. If only three points are used, as happens when multiple triangles are used, less computation is necessary, thus speeding-up the rendering process. And in online games, where rendering takes place in real-time, speed matters.


Author: Karen
Written: 4/14/17
Published: 4/14/17
Updated: 4/24/17
Copyright © 2017, FPP, LLC. All rights reserved.