Finally...

After a week of hammering out this beast, it's time to find out its value. So many sacrifices were made along the way, but they were necessary to meet the deadline. I hope that which was left was worth the effort.

Panda3D is certainly one of the least used engines in PyWeek. And with a large SDK that entrants had to download before, it is understandable that it's been seen to be a suboptimal choice for this challenge. However, thanks to the 1.7.0 release last January, all that has changed. Now others can install a very small runtime distribution of Panda3D and games can be packed in a highly optimised executable. I do hope this entry will demonstrate to other PyWeek competitors that Panda3D really isn't as bad a choice as it may have appeared to be in the past.

As for the prototype itself, I must say I was surprised when "Wibbly-Wobbly" won the vote. And yet initially I knew it would score highly due to sounding like a nice little challenge. I actually expected Eleventh to win due to its broad nature, but that didn't happen.

As with PyWeek 9, I wanted to build a puzzle-filled adventure prototype with a child as the main character (as children are unfortunately rarely the main characters of games outside the genre of "children's games"), but I knew (from experience of failure to go solo last time) that I would need help. Sure, my experience with Panda3D and software engineering in general had grown quite a great deal since last August, but still I felt a teammate would be the best approach. I asked my good friend, rdb, if he wanted to partner up with me, and he eagerly agreed. And after a week of design discussion and preparation, the challenge began.

Starting the minute of 00:00:00 UTC, I began building the framework for our prototype; lower level stuff like engine configuration, camera control, class flow... the little necessary things. After that, it was all about building game logic. It was a good thing I sought out partnership with a skilled and knowledgeable guy like rdb as there were points during development that simply lost me. And rdb being a good friend of mine made the partnership more enjoyable as well.

Being the mad symbolist I am, I revelled in weaving symbolism throughout this prototype. Everything from the relative direction of the entryway to the number of statues and the relative direction of the control panel is symbolic to me. Even the title is embedded with symbolism.

Well, seven days later, we came up with a single room and a single theme-related puzzle. We realised too late that it was too easy a puzzle, but we hadn't time to improve it. I built the underlying mechanics of a tile sliding puzzle as well, but we didn't have time to finish that either. Ah well. I hope this will be enough to impress the other competitors.

All in all, a rather satisfying experience. And I finished a prototype. I feel accomplished. And I couldn't have done it so well (if at all) without my friend and partner rdb. I have many thanks for him.


~ Xidram

(log in to comment)

Comments

Very nice - I too am glad panda3d seems to be a viable choice these days. You are right, the puzzle is rather easy.  A few sound effects would go a long way to increase the 'wow' factor of the game.

A few minor annoyances I encountered:
1. I grabbed the source zip and when I unzipped into my pyweek10 folder everything was just dumped there - it's generally preferable to package as the skellington script would and put everything inside a folder in your archive.  Also having a 'run_game' script to start the game (rather than 'main') would make it launch like most other pyweek games.

2. WASD controls are lousy on a dvorak keyboard (arrow keys would be better)

3. being able to change perspective (rotate around) the puzzle platform would be cool

4. For some reason the game totally hung when I exited (command line printed :TaskManager: TaskManager.destroy() ) and I had to switch to a terminal session to kill the process in order to get my mouse back.


Nice work.
Thanks. 1) Yeah, I considered the Skellington directory structure, but figured this way would be cleaner. I didn't expect anyone to try to merge directories with other PyWeek entries. Had I, then I would have definitely tried to stay with the template. 2) Shoot, I didn't even think of that. During development, I had the idea that maybe I should map the Up, Down, Left and Right arrows to movement while away from the controller. But I figured these were the standard controls, and I ended up not having time to implement a key-map settings screen. (I was actually in the process of building a settings menu, as you may be able to see in the source code, but--yeah, I didn't have the time.) 3) Huh... I didn't think of that either. There I was trying to mark just the right spot in Blender totally (and unintentionally, be assured) neglecting the idea that view rotation was a possibility. I suppose I may have thought of that had I put more effort into camera cinematics (rdb was the one who whipped up the quick turn-around cinematic near the beginning as I simply figured such a thing would take too much time for too little benefit, though he disproved that). 4) Yikes! That doesn't sound good. See, with all my other Panda3D experiences, even when in mouse-look, the window never refuses to let go of the cursor when keys such as as Alt+Tab are pressed. But for some reason, this one didn't cooperate. As for the hanging, it sounds like it might be an audio issue (as crazy as that may sound). I recall for a while having to configure the engine to not use OpenAL since that wasn't terminating properly (rdb probably would know more about the internals of this since he's actually looked into this particular issue before). Heck, OpenAL was giving issues on non-Linux systems as well, so alas we resorted to using FMOD for Windows and OS X, and keeping it set to OpenAL for Linux. It would suck if that Linux-OpenAL clean-up issue is still effective. Thank you for the feedback.
And man, I'm seriously going to have to get used to these things requiring HTML tags to detect newlines.
@Xidram - is it not a WYSIWYG editor for you?
Ah, yea I wouldn't be surprised if it's a sound related issue - many of the pyglet entries (also using openal) that I play also don't quite terminate, but I can do them with a ctrl-c in the terminal I launched them from cause the window is usually closed or at least isn't grabbing my mouse so I can change focus.  I thought I tried alt-tab before bailing to the terminal session, but maybe I didnt. . .
On Linux, the hang on shutdown is indeed an OpenAL issue, I believe. I've heard that it can be resolved on Ubuntu by removing the "bluez-alsa" package, although I haven't verified if that actually works.
We're talking with the OpenALSoft guys to see if this can be resolved in future versions.
@richard: Heh... look at that. I never allowed scripts on the PyWeek site. Wow. That would usually be the first thing I'd check. Ah well. Thanks for bringing it up.