Spacecrash day 1 of 7: game skeleton

shot0Time to get started. Today I am going to set up the main project skeleton, project directory, get it to compile on both Windows and OS X, set up loading textures, and get a spaceship to fly over some kind of scrolling background. Plus possibly have a few things flying around.

Setting things up will be a bit painful, since there are a lot of small things to configure correctly. Projects, modules, etc… if you are not all that fluent in C/C++, and something isn’t easy to understand, don’t despair: follow the instructions to set it up, ask your doubts on the comments, and remember that we will only be doing this type of stuff today, since once things are set up we will be concentrating in the game code. I am going quickly here, so you will be able to put in the time and effort after this week, and be able to understand all the details of today’s work when you look at it more slowly.

Read the rest of this entry »

Spacecrash: designing a one-week game

So we’re going to make a game from scratch in one week. We better define our goals quite well beforehand, or we will waste the time allotment just making up our minds. Also, the scope better be limited, or there is no way we will get it done in such a short timeframe. But if we really focus, and we use every trick in the book, it’s likely we can do something pretty cool.

Goals and constraints

Here are the main driving factors when thinking up what to do:

  • This is not a toy example. The game has to be cool enough to play and show around. We need interesting gameplay, a few effects and some polish.
  • We only have one week. A week passes by fast. So: few variations of enemies/puzzles/skills if any, no complex physics or behavior. No time to do detailed level design, so go for simple procedural content generation, tweaked to provide some sense of progress.
  • We don’t have a graphics artist for this project. I am collaborating with a great artist in a project I’m working on, but I don’t want to abuse his time. So we’ll have to either use abstract programmer art, or get some graphics available online.
  • We’re trying to keep things simple for instructional purposes. Try to use a simple set of techniques.

Apart from these constraints, there are a couple of extra things I want to contemplate:

  • Mobile-ready: although we’re going to develop the game to run on desktop systems, I’d probably like to port it to mobile later on. This means I have to be careful about some things. For example, the size of the screen (classic iPhone aspect ratio is 2:3, Android is all over the place). But mainly, the game controls and experience should consider mobile: short sessions, small touchscreen, no keys… Many modern mobile games amazingly only use a single control (“push anywhere on the screen”). Some games go even as far as merging the two main actions into one, such that a single screen tap will do both: fly & shoot (Jetpack Joyride), or jump and punch (PunchQuest). We are not going to do something so ultra-focused, but let’s keep this kind of thing in mind.
  • Read the rest of this entry »

One-week-game: getting ready

Ok, so if you want to benefit the most from the one-week game I’m going to “live develop”, the best thing you can do is to follow and develop along. You can just read the source code and other materials I post, but nothing beats doing it with your own hands too, and seeing the thing grow from nothing into a cool little game.

Let me review the two most important things now: the previous knowledge you should have, and how to set up your development environment.

Required knowledge

First thing, you need to know some programming. It’s impossible to get up to speed from zero into game development in one week.

But if you have some experience programming in nearly any common language (java, javascript, python, php…), then it should be really easy for you to get up to speed.

Read the rest of this entry »

Can you write a game in one week?

Do you have half a dozen unfinished game projects lying around? Have you switched tools or programming languages more than once trying to get that first game finished? Does it feel like your enthusiasm for a new game project takes off like a rocket ship, but then dwindles and crashes into the ground with too little to show for it?

If so, don’t despair: there are many issues to overcome, so getting started is understandably hard.

The problem

If you have put time into writing a game of your own, and you haven’t been able to complete it, there are three main likely reasons:

Read the rest of this entry »

New Gamecrash course: Calgary in May!

Calgary, Canada (courtesy of 117Avenue, Wikimedia)

[EDIT: this course has been moved back to Fall 2013… watch out for the announcement!]

After everything learned in Gamecrash Austin last month, we are now bringing it in a new and better edition to Calgary (Alberta, Canada). The course will take place from May 27 to May 31 (Monday through Friday) at the Residence Inn Marriott Airport.

The concept is simple but very powerful: you can come on Monday at 8am as a developer who has never done games, and leave on Friday at 8pm as a developer who already knows how to make games, has learned all the main fundamentals, and has even written their first cool game!

Read the rest of this entry »

Gamecrash Austin was great!

So I’m finally back home after having had a blast with the Gamecrash – Develop with Passion® course last week in Austin, TX! (Note: check at the bottom of the post how to help us decide where to hold the next edition.)

The course was a great experience! It was a small group of highly-motivated developers, and we were able to cover a lot of ground: basic game loops, OpenGL, textures, rotations and matrices for general transform in 2D and 3D (using homogeneous coordinates even), game physics, animation, sound and music support, tile-based maps, pathfinding, character behavior, and even some actual 3D graphics and gaming on the last day!

I went to the back of the room while people were concentrated stabilizing their hand-written physics engine.

By the end of the course, all attendees were convinced that writing a game is a very doable project, and so I feel proud and happy with how it went! Two of the attendees, even, were working on their own games by the end of the week (a zombies game and an infinite runner). I’m really eager to see what they come up with, and I’ll be the first promoter for their games as soon as they’re published.

The language choice proved great: we used C without pointers, which is as readable as code can get, and we lost exactly zero hours to issues with the programming language during the whole course. It was all games, games, games and games!

Here are some more pictures from the course:

Read the rest of this entry »

Gamecrash: learn games programming in one week!

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?

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. 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.

Read the rest of this entry »

The Gamecrash is Near!

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!):

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 (, Fuzed graphics by Marc Russell (, Zombie sprites by Clint Bellanger ( Thanks guys!

Gamecrash: writing games using “C without pointers”!

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?

Read the rest of this entry »

Gamecrash Austin course venue & hotel discount

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

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!