Here's why I stopped teaching Unity first.

My confession as a teacher who loved how easy it made (the wrong) things.

Dear Future Game Developer,

Tools like Unity and Unreal are fast, powerful, and convenient. They make it easy – essentially automatic! – to...

• Release on a variety of devices and digital shops.
• Incorporate animated graphics into your games.
• Show off modern effects for lighting, cameras, and particles.
• Re-use chunks of well-designed code.
• Add to your game from a huge store of parts.
• Render high-poly models and high-res images.
• Use realistic physics-based collisions.

Despite those advantages I've witnessed too many new developers shortcut to these tools only to then struggle. Their games feel broken to play.

The gameplay even works as intended: when A hits B such and such happens. Jump button jumps. But there's something missing. Something smells.

These are smart, determined, passionate people working with one of the best tools in history. So what's with their awful, unfinishable pile of half-games? The problem is in what they can't see.

I'll elaborate. Here's why I recommend you use an engine like Unity second.

But first, an important disclaimer, lest I give anyone the wrong idea:

I'm not anti-Unity. I've used it. And taught it. A lot.

screenshot of my old Unity video course

I've taught Unity in multiple university courses. I've led and been on dozens of teams that finished games with it. I've founded two clubs that together create a handful of new Unity games every year. I wrote a positive review of Unity for the Tools section in Game Developer Magazine. Tens of thousands of strangers got their start with Unity from introductory videos I made.

I've even used Unity (and Unreal, too) as a professional game developer.

I am a Unity advocate. I don't oppose Unity. I oppose starting with Unity.

As a private game development trainer over the past year I've helped dozens of people make their first games. In all but one very unusual case – he's a senior professional programmer – people who skipped to Unity for their first game programming eventually put it on hold to return to code-only fundamentals.

You probably should use Unity. It's amazing and I love it. Just don't use it first.

Here's what people pushing Unity as Step 1 aren't saying:

(Including me in 2012, back before I knew any better. Sorry y'all.)

Remember that list of bullets I opened with about the incredible things Unity and Unreal make easy or automatic for you? Fancy lighting, tons of devices supported, animated high quality models and such?

Here's the problem: none of those are useful in the hands of a beginner.

Here's the bigger problem: those distract from what's useful to a beginner.

Here's the biggest problem: Unity and Unreal hide and overcomplicate and try to completely handle for you exactly what a beginner needs to learn.

graphing calculator

It's kind of like putting a graphing calculator in the hands of someone taking intro math, and thinking that means they can simply skip learning how to do all the basics on paper. We all know that isn't how it works. To leverage the power of technology it helps tremendously to first gain a solid understanding of what it's doing for you.

These tools are really designed and intended for intermediate and advanced developers who already know those concepts from games that they've programmed before using Unity.

Beginners benefit from knowing about how to code core input, space, angles, motion, and collision. That's tough to learn inside an engine that automatically tries to handle your input, space, angles, motion, and collision.

Instead of learning to make these things you learn to ask Unity to do things for you, unsure how to do things your own way.

Most developers reaping the benefits of these engines have programmed code-only games. They know what the engine does for them. They know how to override it to set their games apart. This gives them a huge advantage over developers who can't see it.

Tools and engines save you time by making tons of assumptions. Without an understanding of those assumptions you're left with a default, bland, generic feel and world. Code-only practice first, without engines, helps a lot.

1,000 people every month begin this way instead...

Start ridiculously simple, start completely (truely!) in 2D, and start classic.

"But Chris," I hear, "why not use Unity or Unreal to make simple 2D games?"

Unity2D screenshot captioned Way more complex than introductory 2D gameplay has any reason to be

Unity and Unreal were purely 3D tools for over 8 years before adding 2D support. Their 2D is in many ways more complicated to use properly than their 3D capabilities. Even then they're still hiding a ton of huge assumptions in how your game works – assumptions you want to know how to override when doing so will make your game look and feel different.

There's actually a really easy, straightforward way to:

✅ ...Finish a project tonight.
✅ ...Practice in a progression.
✅ ...Know every line of code.
✅ ...Follow a clear recipe.
✅ ...Make all your own art.
✅ ...Learn the fundamentals.
✅ ...Avoid tool assumptions.

And just what exactly did I mean by "start classic," anyway?

Learn the basics by being unoriginal!

I know, I know, that's a dirty word. Among gamers and developers clones are seen as The Man's creatively bankrupt sin against underappreciated artists.

I agree! I was a victim of cloning in the marketplace when a knockoff outperformed my innovative entertainment app. Mine was the result of 219 days of daily prototyping. Theirs was the result of seeing mine in the charts.

I'm not endorsing unoriginal as a business strategy. I'm recommending it as a learning strategy. Why? Because it's how you learned everything you know.

animation from Hands-On Intro to Game Programming

When you were new to math, you were solving problems many other people solved. Nobody learns math by first spending 3 years stuck on an equation no one has ever done before. That's what math Ph.D.'s do, not how beginners start.

If you learn to play piano or guitar, you first learn to play unoriginal songs. Beginners learn how to play it exactly. With experience comes skill to riff.

People new to cooking follow recipes. Closely, at first. Master chefs deviate.

You begin small and unoriginal, but with each new project you ratchet up the size and how much of your own style you mix in.

If you don't yet know how to write code, historical practice projects are simple enough that you can pick up most of it as you go. If you already know how to program but never tried coding games, you'll tear through these projects even faster, seeing that with little guidance you're ready to make games.

Speaking of the (initial total lack of) coding complexity:

Keep your mistakes in your code at first.

image from How to Program Games video course

Many errors in Unity or Unreal happen from incorrect drag-and-drops, checkboxes in hidden tabs, or misunderstanding the engine's complex built-in features. When a new developer can't tell whether an issue is in the code or hundreds of widgets it's a nightmare to fix. If you're confident in your code it's easier to trace errors.

When you begin by programming 100% of your game as code you get total control. Errors that happen must be someplace in your typing, never in the tool's options. You fully understand what's going on because the only things happening are what you make happen, and exactly as you make everything happen.

This is why I start people in modern JavaScript for HTML5 Canvas.

And, importantly: without any libraries, add-ons, or engines. Those are all trying to do too much for you, too. It helps to learn the basics by working, at least at first, with just the graphics canvas and your code.

html5 logo

With HTML5 there's no complex environment to set up so you can start tonight, basically now. You can code and run your games with what's already on your computer: a text editor and a web browser. Because HTML5 is browser-based your code and games are automatically cross-platform.

You won't need permission or approval process hold up from Apple, Nintendo, Sony, a crowd of KickStarter backers, the bank loan agent, or the gate guardians of Steam Greenlight (which, for your first practice projects, fighting those barriers isn't worth the hassle anyway) to create and share whatever, whenever, with whoever.

Here is how I started. Except better, easier, updated and tested.

hands-on intro to game programming book

When I began learning this way – I started back before shortcutting to Unity was even a consideration – I heard that same kind of advice from more experienced developers: remake classic genres first as practice. Even knowing that's exactly what I needed to do, I still had to struggle to stitch together scraps to create my own steps out of dozens of books, forums, and fragments of examples from incompatible sources.

To help my private training clients I updated and streamlined the journey I followed. I adjusted every project in the sequence to focus on practicing specific skills, modernized it for a newer development platform, and turned it into a digital textbook (500+ pages on six genres) that I use to teach this material.

Now I've taken it further, capturing my private training approach into hours of instructional video. A textbook simply works so much better when it's taught by a teacher (it may work even better, still, when the teacher's the one who wrote it). The approach is now straightforward, affordable, and available to anyone.

The video course recreates exactly what I've been doing in one-on-one private instruction over Skype to start most of my clients. (Some of whom moved on to using Unity to create more original and ambitious 3D games. Others also moved on to grander projects but chose to stay with HTML5 for now. Fortunately HTML5 is a modern platform, too, legit in its own right.)

It's a strong foundation, and a launching point for you to gain comfort with gameplay code. It opens doors to begin making many more advanced kinds of games. It trains you in a process to learn easily in a natural progression.

If you choose to tackle Unity or Unreal next there'll be less magic in what they're doing for you, so you can step in and redo things your way when your game would benefit from doing so.

This material used to be 1-2 months of weekly training, 4-8 hours or more of private instruction. Now that it's recorded (well, not just recorded, but completely adapted for video) I can offer it at a fraction of my rate.

"The best Javascript course I ever found"

screenshot of free video course on Udemy Code Your First Game

That's the title from Mattia's review of Code Your First Game, a free video course I made showing how I start training clients. Mattia's review continues, "Being a complete beginner in the "coding world" I've been looking for a good course for a long time... this one by Chris DeLeon is the best one I found..."

That course will show you tonight, in hours, how to program your first game.

Let me repeat that: it's FREE. Program your first game. In hours. (And you don't need any special software.)

1,000 people each month make their first game in hours with my course.

Timur's review began with "Highly recommended." Terence's response backs that up: " of the best, if not definitively *the* best, introductory courses for game development." He calls this course a "must-take for budding game developers." Heidi describes this as "Just the course I was looking for."

Sergio mentioned, "I didn't know anything about game programming but this course helped me..."

(If you doubt these are real responses – I'm a bit of a skeptic, too – find their full names and reviews – plus much more said from the 94% of 1,700+ user reviews with 4-5 stars out of 5 – on my intro course's Udemy page.)

Here's Randi about how much he learned: "...I have learned more about using JavaScript with this course than I did with an entire course on"

"I've never programmed a game before... I was still able to produce this," Jerry's review began, before he also mentioned my commitment to providing excellent service: "In addition to the course being informative and easy to follow, Chris quickly answered questions when I had some." Ronald echoed that point, "Chris was also a great help! response led to a great experience."

(Which reminds me: you're not just getting hours of videos. I check twice-a-day to personally help students in my courses fix errors and to clarify anyone's questions. Since my first course began I've directly answered every question asked by the 25,000+ students, and always within 24 hours. My video courses include unlimited support from me with the material at no added cost. Even the free intro course!)

Jason mentioned it's still beneficial if you already know how to program: "Even though I already had some programming experience this course was not too elementary... This is an excellent course and I absolutely recommend it..."

Jacob added that if you've made some games it's still worthwhile: "I created games before, but this was a great way to learn how to start making games in Javascript."

Several people commented on having a wonderful experience. Auro commented that he, "totally had fun doing this course... go ahead and take it..." Lewis noted, "This is the fifth programming tutorial I have watched. This is the first one I feel was very interesting. I was able to understand coding faster and easier." Reuben: "Awesome course." Sean: "Wow! Excellent!" Samuel: "Purely Amazing!"

If your previous attempts to get into game programming didn't evoke those kinds of responses I'm here to show you that there's a better way to learn it.

I'm giving you that first video course, free, covering your first game because I know it will work for you. After you've seen your results – your game on your screen from your code, today – let's talk next steps.

Learn Your Next Few Game Types in the New Followup Course

First, just a few more review excerpts from that intro course:

Ramon mentioned: "Wish he had more lessons."

Diego: "I am waiting for the second part!"

Philip: "TAKE THIS COURSE. This teacher's amazing. If they had another one that was paid and more thorough, I would definitely enroll."

That free course was based only only the first section of my book. Recently (launched Sept 10, 2015!), in response to student demand, I've created a new followup course. It's over twice the length, covers multiple projects, has higher production values, and includes new animations to help you visualize explanations.

In this new course I'll show how to code your next few games in order to build a bridge to making projects, features, and innovations of your choosing:

The course is How to Program Games.

...and it includes a full digital copy of my textbook plus its code.

Even though I've been teaching this material one-on-one over Skype for more than a year, this video adaptation has only been out for a few weeks, so there aren't many reviews of this newest course yet. Reviews take awhile when your course includes a substantial amount of content to work through.

This is among the first reviews:

review by Luis Alvarado titled Brilliant Gaming Course body reads I have done close to 30 different courses from at least 9 different sites. This would be the first time I can actually say that this course is a must. This is not the normal course that you take several hours to have something working and then a couple of more hours to learn what you did. You get everything for each section in less than 30 minutes and I can fully understand how it works. Just amazing.

I recently received this feedback from a happy Udemy customer about the book included with this course:

"The book is awesome! I wish I had it years ago when I thought that game programming was too complicated for me to pick up, or a year ago when I started with random online tutorials and was completely lost. The depth of guidance is just perfect - enough to get started and get some confidence. And explanations, man, you rock with explanations." -Anna Kruglaia

And here's a response from a private training client who learned through the live version of my Skype training (exactly what this new video course is based on):

headshot of Gamkedo training client Adrian Sanders"I've learned more working with Chris DeLeon's book and training than I have in five years of doing it myself." -Adrian Sanders

I've taken that kind of one-on-one training exprience and bottled it as the combination of this video course, the included digital textbook, and my daily support on the site. It's available at your convenience.

I'll show you how to program games.


When I teach this material 1-on-1 it's over $400 of training, but you receive the same instruction in convenient video form for a fraction of that price. The course includes my $48 digital textbook.

If you have questions at any time during the course you can post them there and I'll reply in detail, usually the same day. I'll be there personally each day to help troubleshoot or clarify uncertainty.

Get lifetime access to the course, with unlimited support for the material, plus the complete digital guide:

Find out How to Program Games for only $45 $29

30 day money back guarantee.
It works for you, or it's free.

Join the course to start making games, a better way!

Undecided? Code Your First Game in the free course to try it tonight.

About Chris DeLeon

Chris DeLeon is a Los Angeles-based videogame development coach training clients worldwide. He's made dozens of games, including indie mobile and online games reaching millions of players. He's done game design professionally for Electronic Arts, a Silicon Valley start-up, and Will Wright's R&D company. Chris has taught game development skills to graduate and undergraduate classes at Georgia Tech, middle school students at Camp Galileo, and to adults in one-on-one lessons. He was selected for Forbes 30 Under 30, established Carnegie Mellon's game development club, and co-chair's IndieCade's workshops for new developers.

Or Get the Textbook Only

Hands-on Intro to Game Programming book

Hands-On Intro to Game Programming

Buy it for $48

(NOTE: the whole book is included with the course, it's currently the better deal.)

If you're not happy with it one month after purchase email me for a full refund.

Questions? Email or dial 917-GAME-DEV.
(If it goes to voicemail I may be on a training call, please leave a message and I'll call back.)

Frequently Asked Questions

Is Hands-On only about coding in HTML5/JS?

"I'm really enjoying Hands-On Intro to Game Programming, loving every second of it! It's just what I needed to get into game programming."

photo of Hands-On Intro to Game Programming customer David Daitallica Parfitt-David "Daitallica" Parfitt

Although all of the example code and programming in the book is specifically in HTML5/JavaScript, my goal is to prepare you for a lifetime of making games on a variety of platforms and programming languages. Because of that, I avoided JavaScript-specific features or techniques in favor of more common, simple game programming style that you can also adapt, recognize, or build upon to get quick results if/when starting with other programming languages such as C/C++, ActionScript 3, Objective-C, Java, C#, or Python.

An earlier version of this book – the entirety of which is included for free with this new version – used the Java environment Processing for the examples yet many readers found that they could largely follow the same steps instead using C#/XNA, ActionScript 3, and HTML5/JavaScript. Likewise in this new edition if you're more comfortable in another programming language, or focused on learning a different platform, you can likely adapt the process as you go and still get a lot from the book's steps and exercises.

Is the book a digital or physical product?

Digital-only at this time, completely DRM-free. No shipping, available virtually anywhere in the world (anywhere Gumroad or PayPal can process payment), future updates free by email, and you can obtain your materials immediately after purchase. This also means you can keep a copy on your personal computer as well taking them with you on the go with any smartphone, tablet, or PDF-compatible eReader.

What is Gumroad?

Gumroad is a secure online store for handling sales of digital goods. It works much like the App Store, except for general computer files, and supports secure payments either without custom account creation or using your existing PayPal account. Gumroad also enables me to send out free future updates.

Gumroad is only used if you buy the book-only, it isn't part of the payment processing if you choose to purchased the course (which includes the same complete book and source code as a download).

Can I buy the book-only with PayPal?

Yes you can. On Gumroad's checkout page simply click the PayPal option.

animation of how PayPal is an option on Gumroad

What's the refund policy?

If you got my book on Gumroad and it isn't helping you learn how to develop your own videogames simply let me know via email within 30 days for a full refund. If you've joined the course through Udemy's system you can request a refund through their automated system within 30 days.

I stand by what I do, and I believe it shouldn't benefit me unless it benefits you. Results, or refund.

P.S. Could I have continued charging $50+/hour to only teach this material to new people one-on-one, or in exclusive small group classes forever, always doing the training live, instead of spending months of late nights working to adapt it into video form I can make available at a small fraction of the price earned from live instruction? I guess. But I genuinely want as many people in the world as possible making their own games! This is my way to help make that happen.

P.P.S. Also, I admittedly prefer to coach and support people one-on-one on creating their more unique personal, original, and advanced games that they wish to develop. I'm excited for more people to be on the other side of these standard introductory projects. I was motivated by that, too.

P.P.P.S. Remember: this course is only $45 $29 – much less than it used to go for when done live, but still includes unlimited support from me with the material at your convenience. You get lifetime access when you sign up for the course, so you can start it today, take a break from it as needed, then come back later when your schedule allows.