The April 2013 PyWeek Game Programming Challenge opens in a couple of week's time. We asked its organizer, Richard Jones, an active member of the Python community, what inspired this event that is open to both teams and individuals.
First could you fill me in on you background with Python - how you came to be involved with it/ how you are currently involved with it.
I was introduced to Python by a good friend back in the mid 90s when Python was very young. It was such a breath of fresh air at a time when the alternatives were C, Java and TCL and Perl. I learned it by working through Guido's free tutorial; in half an hour I learned all I needed to and could write Python code. That blew me away.
I immediately became active in the Python community by helping out on the Python mailing list (the only real community focus point at the time). I was so keen I paid some small amount of money to be a member of a fledgling Python online user group housed at starship.python.net.
Over the years I've contributed to the Python core, I created the Python Package Index, aka Cheeseshop, and still run it and have created or contributed to too many Open Source Python libraries to recall.
I've just attended PyCon 2013 where I gave an afternoon tutorial, Introduction to PyGame, teaching people to write games in Python and also helped with the Young Coders tutorial. And of course I started PyWeek about 8 years ago.
To put that into context - how did you get into computing in the first place?
I got into computing in the mid 80s when my family got a Commodore 64 and I discovered that not only could I play games I could write my own.
As Eben Upton, creator of the Raspberry Pi, said of devices like the Commodore 64 and BBC B (which I also had exposure to in my first ever job) during his PyCon keynote, it that era "you had to choose not to program the computer." So I learned some BASIC programming, and that was just too much fun to ignore. Later I migrated to the Amiga 500 which, with its GUI desktop, was less up-front about its programmability but I was already hooked.
What other languages do you have in your background and what are the strengths and weaknesses of Python compared to the others?
Python currently seems to be a language of choice for beginners - do you think it's a good choice and if so why?
Python has fewer concepts than most other popular languages that need to be learned before a beginner can get something done. A reduced syntax means less structure needs to be learned. All this leads to beginners being able to accept challenges to program that actually do something interesting much earlier. Additionally, the total knowledge
required to be productive is less than other languages. Finally, the interactive interpreter is a great tool for allowing beginners to experiment without fear of breaking anything.
PyWeek is your contest in which individuals and teams write a game using Python in the space of a week. What prompted you to start it? Why games and why just a week?
I've always loved video games and in 2004 I discovered the Ludum Dare 48 hour challenge. It reintroduced me to the understanding that I could write games on my computer - something that I'd somehow forgotten after I no longer had my Commodore 64 or Amiga 500. After entering LD48 a couple of times and running it once, I decided a few things; firstly that 48 hours is a long stretch to dedicate to just writing a video game (when you have a young baby to look after). A week is more relaxed and allows people to spend a smaller amount of time each day working on their game. I also wished to form a team with my friends, and LD48 was at the time a solo-only competition. Finally I really liked Python and wanted to promote its use for writing games - added to which writing games is an excellent introduction to Python and programming in general .
Can you tell me a bit about how Pyweek has evolved and how it operates.
PyWeek is a bi-annual contest that was first run in August 2005 and has happened twice a year ever since. It attracts between 150 and 300 developers, depending on how well the particular challenge is publicized beforehand. The last one, for example, had a very low turn-out because I spent almost no effort publicizing it (I simply had no time). I am hopeful that the next one will be better-attended because I (and others) have spent more time promoting it.
The challenge was always intended to be for fun and peer recognition. I'm careful to not call it a competition as that implies prizes and if there were prizes I believe the nature of the challenge would change (and also I'd be ineligible to enter!) So on that note it was always an important aspect of the challenge that the other participants were the ones who judged the entries, rating them and providing valuable feedback.
The challenge has attracted a number of solo and team entries that come back regularly. A couple of solo entrants have done the challenge almost every time (something even I can't claim to have done). Most of the entrants come and play once or twice and I'm very happy I can provide a place for them to do that. There's also no restrictions on the size of teams. I've seen huge (20+ members) teams and also teams comprised of kids attending a community center programming class.
PyWeek was inspired by LD48; games must be developed from scratch. Existing libraries may be used but it's now allowed to write a game using an existing game engine (writing a plugin for an existing game would not be acceptable). I am more relaxed regarding the use of existing art assets - mainly because I'm a terrible artist and I recognize that most solo programmers also are. I am careful to remind entrants that they must have license to use any art created by others in their game.
Each Pyweek has its own theme which is determined by a vote in the week leading up to the challenge. The theme exists to serve two purposes: to inspire entrants at the start of the challenge so you don't have an entirely blank canvas) and to discourage cheating as you can't just submit a ready-made game. A list of five themes is drawn up by an independent person who isn't a participant and everybody who is a participant gets to place them in order of preference. The winner of the vote is announced at the point that the challenge begins.
As we reported recently, the next contest, which is the 16th in the series starts on April 14 - for more details see Registration Opens for PyWeek. Do you want to attract some newbies?
Absolutely! Registration for new users is restricted to 1 month before the challenge starts to reduce my administrative burden but it is currently open. All you need to do is fill in a form at http://pyweek.org/register/.
Does the entire game have to be written in Python?
What advice do you have for newcomers, for example people reading this article and considering entering?
1. Try a practice run before the week. Try to create a simple little game so you become familiar with the library you're intending to use, and also you can be sure it works for you.
2. If it's your first ever game then you have to start small (don't be too ambitious) and be prepared to fail. Not necessarily that the game won't work, but that it might not match your vision. This happens to *everyone*.
Richard has more advice on PyWeek's Help page and if you want more help with creating a game using Python here's the tutorial he gave at PyCon which discusses different types of game genres, looks at game mechanics, settings and themes and then goes through the steps of constructing a simple game using PyGame.
You can also review the entries to previous challenges on the PyWeek site.