Since mid-October I’ve been trying out some tools for 2D game development and getting into game projects again. Normally I work on the graphics part, but this time I’m interested in the programming part as well so I’ll mention the tools I’ve been using so far for both.
I keep using the same work-flow I’ve been using before to create computer graphics:
- Draw thumbnails and sketches. Most of the time I use traditional pencils for this, and sometimes I use MyPaint.
- Clean up drawings. Taking thumbnails and sketches as reference, I clean up the lines and add colours using Inkscape. I use it for mock-ups, backgrounds, characters and props. If the resource I’m cleaning up is supposed to be animated, I use Inkscape layers to draw each frame of the animation.
- Export the final images to PNG.
Since many games use one sprite sheet for all actions a character can perform in the game, I wrote a Python script to do that for me. It takes a directory with SVG files as input and generates the sprite sheet as output.
For example, I’m currently working on a character for a Gamebox game codename Foxy. This character has many actions like run, jump, shoot, etc. So I create a directory for the character or actor and save all its actions in it. I draw every action in an Inkscape SVG file, using layers as frames. The final directory looks like this:
tripper ├── burn.svg ├── idle.svg ├── jump.svg ├── rotation.svg ├── run.svg └── shoot.svg
Then, when I create a new action or edit any existing one, I run the Python script and generate the updated sprite sheet for the character. For example:
$ python ink2sprites.py -i /home/sirgazil/actor/tripper -x 64 -y 64
The “x” and “y” options allow you to specify the target size of each sprite. I haven’t packed the script for the general public, but if you’d like to use it, get the source from my Python laboratory.
If I can’t test animations in the game itself, I import the individual frames as layers in GIMP and preview the animation using the animation filter. Using the GIMP, animations can be exported as animated GIFs that may be useful to show to your co-workers for quick feedback. I also use Blender video sequence editor or Pencil for previewing animated 2D graphics with larger sizes (HD resolution, for example).
I’m using Python and Pygame to learn about 2D game development. I’m slowly getting familiar with Pygame and its documentation, and I’ve found it very fun. So far I’ve just managed to get a character on the screen and move it using the keyboard and a joystick.
For the joystick, I’m using a cheap PlayStation-like gamepad. It works pretty well, but I haven’t figured out how to use the rumble feature. If I remember correctly, a PlayStation controller will vibrate if you activate the analog mode, but the one I’m using does nothing.