With Spacecrash we’ve seen how to complete a game. Here are my conclusions and next steps.
I started the Spacecrash one-week-game series with a question: “Can you write a game in one week?”. But the main point was addressing the reasons why people get stuck trying to complete their first game: be it for lack of technical skills, excessive scope, or a lack of a clear game concept and focus. After dedicating the whole last week to doing the project and sharing it, I’d like to review the thoughts of that first day in the light of what we have done.
[Note: I am not calling this a postmortem because there is one pending thing I still have to do, which is to balance the gameplay difficulty and content generation. I plan to do this in the next few days and do a proper postmortem after that. But I did want to think about and post the conclusions shortly after finishing the series.]
How did Spacecrash help with the main reasons why peple don’t finish games? Here are the details:
- Regarding technical skills, I hope Spacecrash showed how you can completely produce a fully functional game with very basic technical skills. I used simple C without pointers, so the programming language requirements are very low. I used only a few OpenGL calls to draw sprites for game elements, so we’re able to create our game world with a couple dozen OpenGL calls. We have used very little math: there is a bit of vector addition/substraction and normalization, but there isn’t even a hint of trigonometry in the whole source code, or matrices, or anything like that. For those who are struggling with these core skills, I hope this project clarified how you can complete a game with the minimum. Do not do rotations, do not do physics, use a simple language, and the technical skills will be no problem for your first complete game. Of course, it’s great that you invest in improving your technical skills, but I recommend you finish complete games along the way, not at the end, even if they are somewhat basic.
- With regards to sensible project scope for the available resources: my resource availability was very scarce, just one week of work, using a pre-established set of graphics (though very cool!), and so I set a very clear scope that was adequate to this. A simple core mechanic, a progression of randomly-generated levels, and very few variations. This part worked because I set up an initial plan with deadlines, and I was ruthless in moving to the next stage even if I was not happy with a part on a given stage. This was key to finishing the project, and now I have all the information and the whole context so that I just have to go back and address the only critical issue (gameplay difficulty / content-generation). If I had stayed with gameplay in day 2 or 3, I wouldn’t have known that the end game would be 9 levels, which now certainly affects how I address the gameplay issues. Of course, the most important point was starting with a simple concept and a clear roadmap, but sticking to the rigid schedule was key to getting somewhere at the end of the week. If your project has been dragging along for too long without a clear end in sight, I recommend you cut the scope of the project to something reasonable (it always seems what you are cutting down to is too simple, but don’t worry, it will show its true complexity afterwards), and once you have a manageable scope, set a reasonable calendar and rigidly stick to it. This doesn’t mean you should enter death-march mode, just that you be ruthless when leaving things in the form you were able to come up with in the allocated time, and move on to the next stage, so that you will complete a game even if it’s not perfect!
- Finally, with regards to game concept focus, you can see how I’ve kept adamantly on the focus that you would steer around obstacles and shoot things as a secondary mechanic. This is a simple concept, and being sure what the game was about from the first moment was key to finishing it. If you find yourself kind of lost in this with your game, I totally suggest you stop everything and review this in detail. There are many tricks that can be done here: play other games and wholesale steal the core mechanic from them, implement the core gameplay with an incredibly basic prototype with blocky graphics to ensure you know what the gameplay is about, etc… Don’t forget that many popular games, even most of them, have incredibly simple game mechanics. Very often you can get stuck trying to do your game because you’re trying to do something complex, only because the obvious ideas seem too simple in your mind. Stop that! Simple ideas work well. You can add the complexity later in subtle interactions and game/level progression, while the core mechanic should really be something simple.
Hopefully this project showed some ways to get over common obstacles, including the mistakes or dead-ends I found during development. Myself, I will point people to this series in the next few years when they ask me how and what to do for their first game project.
Spacecrash: next steps
Doing the project has also been an interesting experience for me. Apart from the pace which was a bit excessive, I have enjoyed it greatly, especially the gameplay and design challenges. Choosing a narrow scope provides a great frame where you can enjoy highly satisfying creative work.
But mainly, while doing this, I have come up with a lot of little-project ideas I’d like to do based on this. Let me list a few of them:
- Porting it to iOS and Android
- Porting it to HTML5+JS using something like Emscripten
- Publishing it on different markets and experimenting ways to monetize
- Doing a C++ version to show the differences with basic C, and help people learn C++ for games development
- Preparing a version with modern, custom-graphics, and experimenting how the market reception changes
- Implement a simple rule-based scripting language I have in mind and use it to build much more content for the game
- Build a much deeper game based on this (various ships and weapons), and seeing how the market responds
- Trying some crazy theme idea for the game instead of sci-fi, maybe something controversial, and see how the market responds
- …and many more
I am not going to do all of these, as my time is very limited and I have to choose very well what things I do. But I will do some of these: they are all interesting tasks for me to do, they are interesting enough to write about, and they would be of interest to many upcoming game developers.
So I’m going to use Spacecrash as a central theme to do other things: use it to probe the market in “minimum-viable-product” fashion, try gameplay and design variations and see how players receive them, do small technology tests in a well-controlled framework, etc… I will share the details, and that way it will be a good learning experience for many.
After I’ve addressed the gameplay/difficulty issue, watch out for the first mini-project which is most likely porting to iOS and publishing on Apple’s app store. Flash advance: I will first publish it as a paid app, and after I have collected the sales results for some time, I plan to switch to a free ad-supported model.
From here on: doing, sharing & training
My plan for the next few months is to ramp up my work in games. There are main areas where I plan to put in work:
- I’ve joined forces with a great artist with a huge amount of experience, and we will do one or more projects, also small (although larger than Spacecrash), and with an intent on publishing them and trying to get some traction. I know by now that all tech, and especially games, are a really difficult market where getting any ROI at all is never guaranteed, so we’re not counting on making bank – but we’ll definitely make something good.
- I’m going to do many smaller experiments: tech, gameplay, and especially business, testing specific hypotheses, and I will share the experience on the blog
- Apart from the free articles and materials I will share on the blog, I will also offer paid materials and courses. Earlier this year, I joined forces with Jean-Paul Boodhoo to offer a one-week game programming bootcamp called Gamecrash. We will offer more of these and hope to help developers in other areas dive into game development and get up to speed in a single week. I’m also considering authoring more elaborate guides, and offering them as paid ebooks.
The plan is that the paid training products and services will financially support the other parts (the other experiments, and the actual game-making itself). Let’s see how it works out, I’ll definitely have to tweak and adjust as I go along to make everything work out.
So watch out for new material coming often, and let me know what you would find interesting.
And on the last week of October, we are actually holding a new edition of the Gamecrash bootcamp in Calgary (Canada). It will be a hyper-intensive one-week games-development course I’ll be teaching for a small group of people, developers with experience in other areas who want to become games developers as fast as possible. Here you have a video explaining all the details:
Gamecrash: Become a Games Developer in One Week from Jon Beltran de Heredia on Vimeo.
Hope you like it, and if you are a developer who wants to get started in games in a single high-intensity, highly engaging week full of content, I hope you can come to Calgary for a week and see you there! Here are the links to sign up for the course (in-person is best, but remote attendance via online streaming is also possible at half the price).
Sign up for remote attendance:
Hope to see you there!
And if you want to be notified when I publish new materials to help you become a games developer, just fill in the form below:
Thank you so much for your posts about creating a game in one week. I’ve started with a little delay due to a retake exam in September but just finished. I’ve learned a lot and now I’m thinking about writing my own simple game 😀 Cheers from Poland!
porting to android that what i waiting for. Nice tut man :]
iOS first, but Android will come after that 🙂
sooo blog is dead???