- Girl-bots like flowers...
- Girl-bots need money...
- There's something about those curiously adorable heart-boxes...
Ratings (show detail)
Post-competition update source
Top Hat Bot
Little visible progress
Animation is always fun
Alex is making me draw stuff and won't let me muck around. Here is what I've done so far.
Day 1: tiles n maps
Clearly we're making an FPS ;-)
Not shown is the neato map editor that opens a new window (thanks, pyglet!) at the touch of a key. Most of the afternoon was spent trying different approaches for collision detection and response until it felt right and had no glitches.
This is how I roll
|While Alex is off being a code monkey and writing stuff up, I'm being an Artist and doing arty stuff (and not my home work)
Last night I drew character design for our little robo character. Today I was playing around and made this little gif. Yay it rolls!
It also has a lamp on it's head =D
Day 2: animation
Having an artist on board is really cool, I have lots more time to write code. On the other hand, there's already more art assets than any of my previous games had at their conclusion.
Pictured is the animation editor I wrote today. Images from Biccy come in as Photoshop files with 30-40 layers corresponding to different body parts and stages of animation. I use ImageMagick to split each layer into a separate PNG file (this is a bit glitchy and needs careful attention; I also tried PIL but no success).
I then draw a bounding box around each layer in a 128 line pyglet program that calls ImageMagick again to do the cropping and writes the bounding boxes to a file (which can later be loaded for editing). This is just to save space on image sizes.
The pictured program is used to assemble large sprite pieces ("anims") out of individual layers. The "select" window lets the user page through all the layers and add or remove them from the current anim shown in the "composite" window. Along the bottom of the composite window is a timeline scrub; as layers and the origin are moved around with the mouse, keyframes are inserted automatically and the animation can be played back immediately. Each "anim" is named and saved into a text file that stores all animation data, bounding boxes and references to the required images.
Finally, another script picks up this text file and copies the images that were actually used into the resource directory, scaling them down along the way (we haven't decided on a sprite size yet, which is why this is so late in the pipeline).
Constructing simple idle and movement animations is proving to be quick, so I'm optimistic that the time spent setting all this up pays off in the long run.
Day 3: animation variants and movement
Today didn't seem that productive, mostly I fixed a lot of animation glitches and finished the work I started (and thought I'd finished) yesterday. Movement is now entirely controlled by the attached animation, and the characters can be built up out of multiple animations. The screenshot above is missing some animations (such as the background colour for the legs), but this can be entirely blamed on the artist ;-)
I've fixed a couple of bugs in pyglet in the making of this game so far: one was in pyglet.resource.location, the other in Texture.get_transform (the anchor was not being transformed). These fixes are available in r1990.
We also discovered that ImageMagick treats Photoshop layers saved out of Photoshop differently from those saved out of OpenCanvas. Rather than recode large sections of the animation tool I politely requested that the artist stick with just one application, if she pleases :-)
Way behind schedule on getting everything done on time.
Alex made this cool editor that allows me to drag tiles from one window onto our game map, it makes building the level quick n' easy (and fun!).
The image above shows a sample of tiles I made last night.
Day 4: game features
Day 3 was pretty much a write-off. Like Richard, I was stranded in the city after a category 3 cyclone walked through Melbourne, shutting down the public transport system and cutting power to my house for 30 hours.
Thankfully I was able to leech power and wireless at my Mum's house, and got back into writing new code for the game, rather than addressing old collision and loading bugs. The main gameplay trick is now mostly finished as of 3 AM last night.
The on-demand map loading is sensitive to camera motion, so I replaced the previous follow-with-lag strategy with a spring+dampening model, which looks a little like handheld footage and plays nicer with the loader.
If you wrote a game in pyglet this time round and ran into any problems: a bug, a workaround that was needed, something that wasn't documented correctly, something that you couldn't figure out... please let me know! I'm not (very) clairvoyant and don't hear about these problems unless you tell me :-)
Also, if you're playing someone's game that you think uses pyglet and are having some problems that are possibly platform-related, I'd be keen to learn about them too.
I understand that filing a bug report is an awful lot of trouble, so please feel free to just add your comments here.
Make Me: Post-competition release
We've put together a polished release of our game "Make Me", which we think addresses most of the comments brought up in the judging. Most of these we already knew about, and we've been working on fixing them this past week; but we also modified the game to address many respondents' complaints about the speed of the game and introduction to the blueprints screen.
I've uploaded source code and Mac OS X and Windows packages to my website at http://www.partiallydisassembled.net/make_me. The Mac OS X and Windows packages have no dependencies; the source code requires only Python and AVbin (pyglet's included).
This newer version features:
- Many bug fixes, including graphics glitches on old and new cards, sound problems, memory leaks, collision bugs, and enemy A.I. bugs.
- Saved games are now saved to disk.
- A much larger world to explore, including some new robot parts to pick up with unique features.
- Changes to the existing map to better introduce how to play the game.
- Improvements to the menu interface to make the operation more clear.
- Graphical improvements to some of the tiles.
- Many new sound effects, and a new soundtrack.