Setup and packaging tips (especially for first-timers!)

I started a list of suggestions for setting up and packaging your PyWeek entry. A lot of these are things that frustrate judges if you don't do them. I recommend you read the list once before the competition, and after you're done with the game and packaging it, come back and go down the list to make sure you remembered everything.

First off, you should read the PyWeek Rules, and it's recommended you use the Skellington linked to from there.
Setup tips:
README tips:
Packaging tips:
  • Don't include any file that the player doesn't need, like version control history, TODO.txt, packaging scripts, .pyc files, __pycache__ directories, and __MACOSX directories.
  • Include any pure-python libraries (eg pyglet) that you use, since this will help with any version differences.
  • Put all your files in a single zip file. The zip file should contain a single directory, which then contains all the files (ie, no tarbombs).
  • Name your zip file and the main directory within it the same name as your game. Team name is also acceptable. Whatever you do, don't call them pyweek14.
  • zip format is preferred over rar
After uploading your entry:

Okay, that's all I got. Any other PyWeek veterans, feel free to add your own.

(log in to comment)


Lots of these problems could be solved better with distribute:

Game data can be loaded with pkg_resources; this doesn't then require os.path.join or anything.
Pure-python dependencies can be automatically installed. will automatically generate a .tar.gz that can be automatically installed with pip.
Sounds good. Do you want to make a "distribute 101" post with a list of everything someone would need to do to use it, for people who don't have time to get familiar with it before the competition?
Good advice, thanks for putting that together :)

I just want to add that it's really easy to make key bindings etc configurable using the ConfigParser module.

For pyweek I wouldn't bother creating fancy menus to edit this stuff, but just making them possible to change could be the difference between a playable/unplayable entry.

Here is my config file from last pyweek:
Yeah that's a good idea.

Also we're (almost) all python programmers here. If your key bindings are hard-coded in, you can just give the module name and line number if people want to tweak them. I like to hard-code all my (potentially configurable) settings in a module. People can tweak the numbers to make the game easier too, if they want.
Thanks for the tips!:)
It's a pity the packaging tips can't just be, "upload a python package to pypi".