Gamecrash: learn games programming in one week!

Posted on by jonbho
Reply

spacer A few months ago, I was discussing new opportunities over Skype with Jean-Paul Boodhoo from Develop with Passion® fame. He came up with an intriguing concept I wouldn’t have thought of: why not offer developers from different backgrounds a hyper-intensive bootcamp on games development? A one-week bootcamp at that? And have developers who have no background in games programming become actual game developers n one week?

spacer

See, JP has been teaching greatly successful bootcamps on advanced development techniques for years. Over 1,000 students across the globe can attest to the efficiency of such a course – feedback often ranges from “amazing” to “life-changing”. The concept is great: you set everything up at a hotel or similar venue, and decide to dedicate EVERYTHING during 5 days to transmitting the relevant knowledge. Days last 12 hours or more. The idea is that people should leave everything aside, and put all their effort into advancing to the next level in their software development skills and careers. With a passionate and experienced instructor, and focused and motivated students, it can truly be an amazing learning experience.

JP suggested that with my games background, it could be an interesting idea to offer such a course, to teach games development to developers from other fields. With JP’s experience in setting up such courses successfully, and my knowledge of games development, we could provide something incredibly valuable that hasn’t be available before. spacer This meshed up nicely with a lifelong interest of mine, which is teaching. Back in the day, I taught an assembly-language programming course online, and then turned it into a book, actually, the book I would have liked to have when I was learning assembly language myself. Then, I’ve taught courses several times, and starting last year, I have been directing a Master’s degree in games development in a new high-end university in Madrid.

There were several principles neither JP nor I were willing to drop:

  • We want to get students to master fundamentals. We don’t want them to learn any tool are method that is useful today, or for limited-scope projects, and have their skills be useless when technology advances or they tackle larger projects.
  • We want to have students create actual games at the course. Even if fundamentals are about understanding the theory and the basics, we want them to actually apply the skills, and especially in games, you want to see an actual game using those principles. Nothing like teaching the geometry of how entities collide, and then writing an example that shows balls realistically bouncing around the screen with sound effects!
  • We want the games students create to be a realistic first step towards writing games that can be published. We don’t want to work with a language which is great for learning (say, Python), and then, have very few options of turning what they write into an actual product. Be it free or commercial, players will need to download and install the games on the platforms they usually play on. So Python, no matter how much we love it (and I really love it!), is not an option.

We wanted to create a course that would provide incredible value in fundamentals of games development, and practical tools to create games that can actually be published. We wanted to set students on their path of writing games. All this, for students with no previous experience in games. And what’s more, all in one week! Definitely a tall order. Could we find a way? Such goals required choosing very carefully the set of concepts that are included, limiting the scope so that we can cover things well, but not limiting it so much that we don’t obtain the course goals. Some aspects were key to a successful course:

  • Game type: definitely, the games covered have to be 2D games. It will already take quite some time to cover the math/geometry/graphics tools to write rich 2D games – there is just not enough time to cover 3D. The good thing is that all the game fundamentals are the same, and students will be able to apply them to 3D games when they take up 3D math/geometry/graphics. And, also, even today, many of the most popular games are 2D, so it’s clear that 2D is a rich enough medium for great games!
  • Programming language: it took a while to reach a good solution here. Very nice and very high-level languages such as Python are not a viable medium to write a complete, redistributable game. For C# or Javascript, there are options to use specific frameworks, but then you are completely tied to that framework. HTML5 is eternally almost there. Also, if you want to write games for most platforms, and even work your way towards a career in games development, most real work is done in C/C++. But this is a problem: we couldn’t count on students knowing C/C++, as they may come from a background like Java, C#, VB, PHP… And it’s simply impossible to teach C++ classes, inheritance, etc… in a short amount of time. A first strange thought made me think of using C, as a way of simplifying things. But even if we go for C, this involves pointers, and it’s not easy for people to pick up pointers. I don’t want students wrapping their head around pointers for a week, I want them wrapping their head around games! What could we do? I spent many hours pondering this, and came up with an option that sounded radical and weird, but which seemed to solve the problem: we could use plain old C, and get rid of the biggest obstacle, pointers, by simply not using them. We would need to use arrays for most things, and code can be a bit more verbose because of this, but C without pointers is simple enough to use and understand for developers of any background. And not only that, using pure C, you can write games for Windows, Mac, iOS, Android, and even for consoles! Students can complement this in the future by learning more advanced C and C++, and this is much easier to take up on their own once they are actually writing games. So, the answer was clear, the course was going to use the weird but wonderful C without pointers.
  • Platform: desktop platforms are the most immediate platforms to work on for a first stint in games programming. Both Mac OS X and Windows are great environments for developing games, and not only that, you can use C for both of them. Together with OpenGL for graphics and OpenAL for audio, you have a quite nice common platform. A bit of system-dependent glue-code is necessary to set up OpenGL and read input events on each platform, but this is about 100-200 lines of code which can be easily covered. Thus: Mac OS X and Windows are our chosen targets. Good thing: we can have some students working on Macbooks and other students working on Windows laptops, and apart from a a couple of hours at the beginning for each of them to write their OpenGL set-up code, all the rest of the course is 100% identical!

One important comment with regards to the platform: mobile platforms are probably the most attractive platform to develop games for right now, but setting everything up for iOS or Android development on the course, for people without previous experience, would not be feasible in the time available. I took the following approach: I’ve made sure that you can easily jump to mobile development after the course. Games for both iOS and Android can be written in the type of C we are learning. Once you set up the development environment, and learn how to adapt from standard OpenGL to the mobile dialect (OpenGL ES), you will be writing games for mobile in no time.

With these three big decisions (2D games, written in C without pointers, running on Windows+Mac OS X), it seemed like the main axes of the course were ready. I had to prepare the content and all example code to make sure things fit and make sense. For the past few weeks, I have been preparing the course contents, detailing the core concepts to focus on, and writing all these tiny, little, beautiful samples and mini-games, using only C without pointers, and making sure everything can be grasped by the intended audience in the limited time available.  It’s been a pleasure to work on the code, writing in C without pointers has turned out to be surprisingly a pleasant experience, and the samples look good, too! It’s good to know that during the course, students themselves will be able to write these (or variations thereof). Here are a few cool screenshots:

spacer

Newtonian physics, collisions, sound, and cute character jumping around!

spacer

Fire particle effects for fun and profit

spacer

Hard-to-control spaceship clearing a minefield

Software development in general is still a young and informal discipline. Unlike architecture, where it’s mostly well known what you have to do to plan and build a building that won’t top over, in software development we are still figuring what the key elements are to build a solid system. I hesitate to call it “software engineering” since, well, frankly, I don’t think it can still be called “engineering” most of the time, more than cooking can be called “meal engineering”.

Thus, the way knowledge is communicated is over informal media: web sites, blogs, work experience, and good habits communicated from one generation to the next. This is even more so for games than for other types of software. Even today, if someone asks me what they should study to become a good games developer, I would have a hard time choosing what materials to recommend.

But what remains true is that many developers, no matter if they work on web projects, internal company IT applications, or mobile applications, would LOVE to develop and create their own games. Games are a really exciting medium: as an entertainment just for playing them, as a commercial product that can be either a direct revenue generator or  an industry where to build a career, and as a creative medium to enjoy delving in.

Games development has remained a difficult area. It can be quite hard to get started, with a myriad options of languages, engines, APIs and platforms to choose from, some math to learn too which can be intimidating if you don’t know where to start, and many other difficulties inherent in a medium that covers creativity, graphics, physics, music, sound, and so many other disciplines. But if you knew exactly what road to go, it’s attainable, and not necessarily too time-consuming.

All in all: I think there are many developers out there who have the inclination, the motivation, and the background to tackle games programming, but who haven’t really done it because the way to get started is not easy or clear. And I feel we can really help them jump-start their games-development career.

I think we have found a very interesting area here, a type of project that can be very interesting and satisfying for us and for students, and that Gamecrash courses will be very successful, turning scores of students into game developers with this ambitious but realistic plan. I’m really eager for the day I’ll be posting an article here announcing a game released by one of the students. And I’d say that is just a few months away!

We are holding the first edition of the course in Austin, Texas, from February 18 to February 22, just two weeks from now. Several students have already registered, but there still are seats available. You can sign up here. If you want to develop your own games, and you have a non-games background as a developer, I can’t think of a faster or better way to do it. You’ll save a ton of time exploring the wrong ways to do things, and get started straight with the approach that works. If you’d like to attend online, virtually, we are thinking on offering it too at a discounted pricing – let us know. Get in touch with us if you’re interested in attending, online or virtually, or if there is any other areas where you’d like to get our input!

More info:

  • All Gamecrash course details and contents (what we’ll actually be covering)
  • New Course Announcement – Gamecrash Bootcamp (JP’s announcement)
  • Gamecrash: new hyper-intensive game development boot camps (my announcement)
  • Questions and answers from attendees (with regards to everything imaginable)
  • Austin course venue and hotel dicount (for travelling arrangements)
  • More details on C without pointers
  • The Gamecrash is Near (a few more screenshots

PS: Graphics courtesy of the following artists: Tyrian and other graphics by Daniel Cook (www.lostgarden.com/), Fuzed graphics by Marc Russell (www.spicypixel.net), Zombie sprites by Clint Bellanger (opengameart.org/content/zombie-sprites). Thanks guys!

Posted in General | Leave a reply

The Gamecrash is Near!

Posted on by jonbho
Reply

Plane tickets to Austin, TX: purchased. Macbook Air: loaded up. Hotel: booked. Instructions to students on how to prepare their laptops: sent. All cool Windows & OS X example code: up and running. Everything ready for Gamecrash on February 18th!

Here are some screenshots from the samples you will be coding during the course (the first ones, I’ll post more advanced ones in a few days) (and of course you will have creative freedom to do your own variation of these!):

spacer spacer

spacer spacer

spacer

Spaceships. OpenGL graphics. Simple “C without pointers” so that we can focus on programming games instead of neverending mumbo-jumbo. Bubbles. OpenAL audio. Game physics. Bouncy balls. Characters walking, jumping, shooting. Keyboard and mouse-based controls. Zombies. AI. Worlds and levels. Explosions. Graphics effects. What else can you ask for?

There are still seats available, if you want to learn games development in the best way possible and in the shortest amount of time, you should definitely join here! (All the course details here.)

I’m enjoying incredibly programming all these minigames. Even more so doing it in this refreshing, simplified C. It is an incredibly valuable language for learning, and it also feels like getting rid of a lot of cruft and going back to the really valuable roots!

PS: Graphics courtesy of the following artists: Tyrian and other graphics by Daniel Cook (www.lostgarden.com/), Fuzed graphics by Marc Russell (www.spicypixel.net), Zombie sprites by Clint Bellanger (opengameart.org/content/zombie-sprites). Thanks guys!

Posted in General | Leave a reply

Gamecrash: writing games using “C without pointers”!

Posted on by jonbho
Reply

The concept for the Gamecrash course was clear from the first moment: really focused course to get people to actually learn to develop games in one week. Focus on fundamentals, such that people learn the core skills. But be sure to create an actual game – this is not a theory-only course, we need results! Of course you can’t write the latest advanced 3D consoles first-person-shooter with amazing AI in a week. But the core game-development skills and the skills to write 2D action/puzzle games can definitely be taught in one week, and they can be the best foundation on which to build future knowledge for more complex types of games (3D, etc…).

It’s clear that if you want to create a one-week course that really gets students to the “next level” you are going to have to be very precise on what things you want to cover and which ones you want to leave out. You have to make sure the whole contents are a solid structure that holds itself together well, that can be used without any extra content to actually develop games, and which can later become a great base upon which to build a full professional career if students want to pursue that road.

A key question here was the base language and technology to use. There were several options: most professional games are done using C/C++, but more and more frameworks and libraries allow you to write games in Javascript or C#. Also, languages such as Python are easier to pick up than C/C++, maybe we should go that way?

Also, students will come from different backgrounds. All of them will have software development experience, but not games development experience. That means that some of them will be fluent in Java, others in Ruby or Javascript, and some others even in PHP. We have to make two things very sure: (1) that it is possible to attain the goals we have set out to cover, and (2) that we actually choose the contents and design the course such that we actually get everyone to be developing games by Friday.

First, it was easy to dismiss options such as using Python with some games/graphics library, or similar high-level languages. They are a great environment, but it’s difficult to actually build a full game of production quality using those. Many commercial games embed Python or similar for the scripting of the game content, for which it’s great, but the games itself is usually written in C/C++.

Second, Javascript would be one language to think of, but developing a game for the browser has it’s own challenges: it’s still a games-platform struggling to become established! Also, we are after creating the type of games that people actually play (and pay for!) every day on Windows, Mac, mobile, consoles, etc…

Third option, frameworks such as Unity and the like allow you to develop cross-platform games in not-hard-to-pick-up languages such as C# or Javascript. But I didn’t want to center the course around a specific framework, technology or library: we want students to learn the fundamentals, to take their game-development career to the platform they are interested on, to have freedom to develop their own games in the way they like – and this requires another approach.

Finally, everything seemed to point towards using C/C++ with OpenGL, which are actually used for most games development out there, and with which, apart from games, you can build a professional career if you feel so inclined. But this road had its own difficulties: programming in C and C++ is notoriously hard. Learning classes, inheritance, templates, etc… for C++ development is just not doable in one week. On the other hand, even if you go for C, which is simpler but equally powerful, there are difficulties. Most developers have had contact with C, and have been bitten by its quirks, mainly, the dreaded pointers. For those of us coming from assembly language development, pointers come naturally, but for a Java developer joining the course, covering pointers would be hard. And not only that – I don’t want to waste a full dear day out of just five that the course consists on!

And so, I started considering how I could simplify things, and I came up with an intersting idea: is it maybe possible to write a complex program such a game in C, using only a subset of its features, and mainly, avoiding the use of the dreaded pointers?

It seemed a bit shocking, I don’t think I’ve ever seen or written C/C++ without using pointers, but it still seemed like it could work. This meant using just variables, functions, arrays, and structs (for non-C-ers, they are something like records/dictionaries where you can pack several related values in a new type for your variables). Nearly all developers will be familiar with these concepts, are they are the basic building blocks of programming in any language.

So I started writing some sample code using this approach, and it turned out it is amazing! Really simple to write and to comprehend, using simple arrays and variable types, but still able to express everything games development needs.

The advantages are twofold:

First, that it’s really easy to pick up. I expect to dedicate a grand total of about two hours to teaching “C without pointers” – and thus have all the rest of the time to actually create and develop games.

And second, really importantly, what you learn is pure, actual games development in the way that commercial games are done on nearly all platforms! It’s not a toy language or technology, C and OpenGL are the base of everything, and it turns out our best didactical choice is also a great choice career-wise. After the course, you can add more C and C++ knowlege, which is not that difficult to do on your own, and you are progressively becoming an experienced games developer that can work in creating commercial games, be it “indie” or in the games industry.

After this awesome didactically-motivated discovery, I’m happy I’ve found “C without pointers”, a great tool that I’ll be using for many years to come in Gamecrash courses and similar initiatives. And I look forward to the feedback from students when they start using it!

Posted in General | Leave a reply

Gamecrash Austin course venue & hotel discount

Posted on by jonbho
1

Two important pieces of news: we have changed the venue for the course to a hotel right next to the Fickett center where the course was initially going to take place.

This is the hotel:

Marriott Fairfield Inn and Suites Austin North | Parmer Lane
12536 N. IH35, AUSTIN TX 78753
T 512.687.6315 F 512.833.9656
www.marriott.com/hotels/travel/auspl-fairfield-inn-and-suites-austin-north-parmer-lane/

The hotel and its installations are great, and the second important piece of news, we have been able to secure a great room rate ($85 per night!) for course attendees. We will send you the discount code so that you can book your room upon registering for the course.

Several people from Austin and other places have already registered, hope to see you there!

Posted in General | 1 Reply

Stirring up some interest for the Austin Game Crash course

Posted on by jonbho
Reply

We’ve started announcing the Game Crash bootcamp due on February 18th in Austin, and we’re finding there’s quite a lot of interest out there! Here are some selected reactions and questions:

“I’m very interested, in fact I’m just a few clicks away from signing up, but I wanted to check and see if the cost of the hotel is included in the course registration fee, or if we have to make our own arrangements. Thanks!”

Actually, the cost of the hotel is not included in the course fee. There are several nice hotels 2 minutes away from the venue where the course will take place, and we’re trying to see what they can offer to attendees, we’ll post about it here too.

I’m curious about the facility, so I’ve looked it up. Apparently this is the Boy Scouts facility;

www.bsacac.org/about/fickettcenter [EDIT January 12: we have changed the actual course venue to a hotel right next to this center, where we also get great room rates for attendees, see details at jonbho.net/2013/01/12/gamecrash-austin-course-venue-hotel-discount/]

That looks like a nice size training room but if you filled it it could get tight especially if spending 12 hours a day shoulder to shoulder. How many people are you maxing at?

I may spend the night right there at that Marriot. Do we get a discounted/group rate?

We are maxing at 16 people, since we don’t want the group to be too large, for best results of the course. In JP’s experience, that’s the right limit for this type of course.

We are right now talking to the hotels nearby to see if we can get a discounted rate for course attendees, we’ll post here as soon as we have the info.

[EDIT We got great rates, $85/night at the Marriott, all details here]

“This sounds really really exciting. If there is enough interest in the Australia/New Zealand area to warrant a course, I would definitely be very interested. What about a Webinar type course for those of us in far places?”

Of course, if there are enough people, we’re more than happy to visit the kiwi land and the land down under. And we are considering offering live assistance to the bootcamp too, we’ll announce it here.

“How very awesome, Commandos was my favorite game, it’s the only games (1 and 2) I still have on my shelf, the rest I have either sold or given away. So your development have had a deep impact on me, hehe.

This course is in Austin Texas as far as I can understand, are you planning any courses in Europe? (as far as I understand you actually live in Spain right?)”

Indeed, I’m based in Spain, and we will be offering courses in Europe down the road. Let us know exactly where you’d be interested in attending, we’ll organize courses as we find enough people wanting to attend in each area

Just a quick note that I’m definitely interested in this course if it comes to UK/London.

In the event it does – do you an idea of what the approximate cost would be?

It’s most likely we will be offering it in London quite soon, we’ve received several requests from different places in Europe, and London is probably where most interested people concentrate. The full price for Develop With Passion® bootcamps is $3,000 in the US and $4,000 in Europe, due to the higher cost of everything in Europe. For the first few iterations, we are offering the Game Crash course for $2,000 in the US and $3,000 in Europe, and signing up early gets an additional $500 discount, so it will be $2,500 in Europe – about £1,600 (making sure you sign up early for the first course we offer in London!). For other EU countries – about €1,900 with all early discounts (of course, variable exchange rates making this an approximate figure).

What is “C without pointers”? Static declarations, pass everything byval and no arrays?

Indeed, something in that line: module and global variables, structs and arrays only. It results in quite simple code, while it is usable, we can use OpenGL, and it can be used for developing production-quality games. I’ll do a full post on this choice in the next few days.

Hopefully we’ll be able to offer this in many other cities and countries in the coming months!

Posted in General | Leave a reply

Gamecrash: new hyper-intensive game development boot camps

Posted on by jonbho
2

I am happy to announce that I have joined forces with the awesome Jean-Paul Boodhoo, of Develop with Passion fame, and we are going to start offering a revolutionary new type of crash-course on games development. Combining his concept of highly-intensive one-week bootcamps, and my game development and teaching skills, we are going to start offering extremely high value courses for general developers to gain all the core game development skills as quickly as humanly possible.

The focus will be on combining a strong grasp of the fundamentals of games development with a highly practical approach. The goal is that developers with no previous experience in games or graphics programming will come to the course on Monday at 9am with all the motivation and energy, we will turn on the turbo and work for 12+ hours a day until Friday, and they will be leaving having learned and actually applied all the main elements of game programming on Friday evening, with a simple but nice and working game under their belt (it’s best if you bring your own graphics!), and with all the necessary core skills to develop your own games personally or professionally!

We’ve decided to work using OpenGL, basic C without pointers, and work on 2D games, so that any reasonably proficient general developer can become productive as a games developer in one week. You will need to be ready to put in all the necessary effort and energy, but if you know your way around variables, loops and functions, you will be developing games by the end of the course!

The first course will be starting on Monday February 18 in Austin, Texas, and it will last until Friday, February 23. This first edition of the course is offered at a discounted pricing for Develop with Passion courses, so take advantage of being an early adopter! We plan to offer the same course in other cities in the US, Canada and Europe. If you’d be interested in having this in your area, let us know and we’ll try to address that.

You can see JP’s announcement here, all the Gamecrash course details and contents here, and you can see the Eventbrite event page with the location and pricing details and the sign-up options here, and I will be happy to