Nine Tales of the Kitsune
The skaapsteker is an alert, somewhat nervous snake that is capable of very rapid movement on a hot day.
A team entry by members of CTPUG.
Collect the tails needed to progress from a tailless fox to a challenger for the nine-tailed Kitsune.
A team entry by members of CTPUG.
Collect the tails needed to progress from a tailless fox to a challenger for the nine-tailed Kitsune.
Awards
Scores
Ratings (show detail)
Overall: 3.8
Fun: 3.7
Production: 4.1
Innovation: 3.5
Files
File | Uploader | Date |
---|---|---|
nine-tales_0.2-0~pyweek0_all.deb
Nine Tales 0.2 (Debian DEB) - trunk |
stefanor | 2011/04/10 21:22 |
nine-tales_0.1.1-0~pyweek0_all.deb
— final
Nine Tales 0.1.1 (Debian DEB) - bugfixes |
stefanor | 2011/04/10 21:16 |
nine-tales-0.2.dmg
Nine Tales 0.2 (Mac DMG) - trunk |
jerith | 2011/04/10 19:39 |
nine-tales-0.1.1.dmg
— final
Nine Tales 0.1.1 (Mac DMG) - bugfixes |
jerith | 2011/04/10 19:29 |
r608-celestial-plane-small.png
Day 8: r608 Celestial Plane |
stefanor | 2011/04/10 19:25 |
nine-tales-0.2.zip
Nine Tales 0.2 (Windows ZIP) - trunk |
hodgestar | 2011/04/10 18:33 |
nine-tales-0.2.tgz
Nine Tales 0.2 source (unix) - trunk |
stefanor | 2011/04/10 18:32 |
nine-tales-0.1.1.zip
— final
Nine Tales 0.1.1 (Windows ZIP) - bugfixes |
hodgestar | 2011/04/10 18:28 |
nine-tales-0.1.1.tgz
— final
Nine Tales 0.1.1 source (unix) - bugfixes |
stefanor | 2011/04/10 18:25 |
r561-road.png
Day 7: Final PyWeek Screenshot |
hodgestar | 2011/04/10 00:17 |
nine_tails-0.1.tgz
— final
Nine Tails 0.1 r560 source tarball |
stefanor | 2011/04/10 00:09 |
r325-sud.png
Day 6: r325 showing health bar and scroll and tofu counters. |
hodgestar | 2011/04/08 23:26 |
r259-temple-dialog.png
Day 5: r259 showing dialogue boxes |
hodgestar | 2011/04/07 23:55 |
r222-temple.png
Day 4: r222 The new temple level with shiny bits |
drnlm | 2011/04/06 23:40 |
r167-level1-small.png
Day 3: r167 Level 1 |
jerith | 2011/04/05 22:45 |
r128-level1-small.png
Day 2: r128 Level 1 |
stefanor | 2011/04/05 09:25 |
r76-level2-small.png
Day 1: r76 Level 2 |
stefanor | 2011/04/05 09:25 |
Diary Entries
A hot day
"The skaapsteker is an alert, somewhat nervous snake that is capable of very rapid movement on a hot day"
The morning started out nervous, but things got pretty hot later into the evening.
We came into this PyWeek thinking we'd like to write a platformer of some sort. We then spent the morning designing 3 completely different games (inspired by the theme) before finally settling on a platformer. Hopefully we'll remember those designs, and implement them in the future.
Our coders are overjoyed this PyWeek, as we can all code and don't have to learn how to draw. We really scored by getting not only a dedicated artist (oliverh), but a story designer (Ravenna) too.
Status: The broad game layout is done, and we have a full story in progress. We have a level loader, some dummy graphics, a couple of backgrounds and main character animations drawn, and a bunch of crazy levels (that probably (hopefully?) bear no relation to the final game). We have crazy bouncing physics (which apparently mean we should have used a physics engine).
Next steps:
The morning started out nervous, but things got pretty hot later into the evening.
We came into this PyWeek thinking we'd like to write a platformer of some sort. We then spent the morning designing 3 completely different games (inspired by the theme) before finally settling on a platformer. Hopefully we'll remember those designs, and implement them in the future.
Our coders are overjoyed this PyWeek, as we can all code and don't have to learn how to draw. We really scored by getting not only a dedicated artist (oliverh), but a story designer (Ravenna) too.
Status: The broad game layout is done, and we have a full story in progress. We have a level loader, some dummy graphics, a couple of backgrounds and main character animations drawn, and a bunch of crazy levels (that probably (hopefully?) bear no relation to the final game). We have crazy bouncing physics (which apparently mean we should have used a physics engine).
Next steps:
- Implement the player character
- Hook up events and interactivity.
- Write the introductory mission and playtest.
When fox and fate collide
Despite seriously considering changing the team name to Maandagsteker, decidedly non-zero progress was made today including:
- Detailed outline for the first half of the story
- Arrival of the player fox complete with controls and animations
- Far too much bouncing
- Shiny new collision detection (now more flexible and with completely different bugs to the previous implementation! Includes ramming, Mr Sulu!)
- Script for generating tile images from textures
- New images including an oni, a monk and attacking kitsune!
- Ninja scrolling level window
- A FPS display (useful for making sure we're not introducing performance issues)
- Start of global game and story state tracking.
- Embellished tiles (late addition, not shown in screenshot -- you'll have to wait for tomorrow's pillow book entry)
Subtle successes
Not much large-scale structural change today, but quite a number of little cleanups and tweaks to our existing behaviour.
The list above represents more work than it looks like, and not very much of it was done by me. Besides the general day-job craziness (too many major deadlines landing in the same week), I spent part of the evening pleasantly engaged in dinner with a trio of charming women. They didn't even seem to mind that much when I rushed off between courses to debate the virtues of Newtonian versus Aristotelian physics for player motion in the game.
All in all, a fairly successful midweek day. We have tentative plans to get together tomorrow evening for some group hacking, which should give us a bit of a productivity boost. Being able to gesticulate wildly while extolling the virtues of one's pet implementation detail adds a certain air of madcap enthusiasm to the proceedings, provided one remembers not to do so while holding a bowl of miso soup.
- Collision detection changed a few times through the day. We still get stuck in the ceiling sometimes, but rather more tastefully than we did before.
- Camerawork improved to avoid the Blair Witch Effect when animation changes the bounding box dimensions.
- We started work on NPC dialogue trees and other general state stuff. Nothing we can take screenshots of yet, though.
- Tile generation was automated and curlicues were added to make things more interesting.
- New art arrived! Squeee! (We'll make use of it Real Soon Now.)
The list above represents more work than it looks like, and not very much of it was done by me. Besides the general day-job craziness (too many major deadlines landing in the same week), I spent part of the evening pleasantly engaged in dinner with a trio of charming women. They didn't even seem to mind that much when I rushed off between courses to debate the virtues of Newtonian versus Aristotelian physics for player motion in the game.
All in all, a fairly successful midweek day. We have tentative plans to get together tomorrow evening for some group hacking, which should give us a bit of a productivity boost. Being able to gesticulate wildly while extolling the virtues of one's pet implementation detail adds a certain air of madcap enthusiasm to the proceedings, provided one remembers not to do so while holding a bowl of miso soup.
Day 4: Killing things
Although one member of our team has been laid low by the lurgi, the rest of us bravely faced latent infection and got together for a hacking session in the evening (and so the mead was broken out purely as a medicinal precaution). The session was fairly productive, and the game is almost, but not quite, at the stage where the first level is playable.
Numerous tweaks and fixes were made, and some of the code moved from marginally OK to horribly hack'ish but kinda works, but overall the results are starting to look good. Basic support for attacks, some support for interacting with items, various tweaks to the game to behave more like a tradional platform game, and a whole lot of work on the NPC's happened, and we've also started with the design of the final game levels.
There are still a few key features to iron out, but we should be able to add those quickly now. Then we just need to fill in all the planned content before the deadline, and everything will be fine.
Numerous tweaks and fixes were made, and some of the code moved from marginally OK to horribly hack'ish but kinda works, but overall the results are starting to look good. Basic support for attacks, some support for interacting with items, various tweaks to the game to behave more like a tradional platform game, and a whole lot of work on the NPC's happened, and we've also started with the design of the final game levels.
There are still a few key features to iron out, but we should be able to add those quickly now. Then we just need to fill in all the planned content before the deadline, and everything will be fine.
Day 5: NPCs can interact
Work in the morning and roleplaying in the evening ate into previous game development time today. Stefano was our one hope for a productivity but unfortunately his battle with the Lurgi remains delicately in the balance. Only 28 commits made it into the repository since last night -- there's now a scary amount left to do before Saturday night.
Lest it appear that all is doom and gloom, let me list things that did get done today:
Lest it appear that all is doom and gloom, let me list things that did get done today:
- A lot of new artwork was created but hasn't made it into the repository yet.
- Tests for NPC dialogue trees were created and these turned up a few bugs that are now fixed.
- Our kitsune hero gained attack animations.
- Initial support for background music tracks.
- Torii were added for moving between levels.
- Made a good start on displaying NPC dialogue in game.
- You only get one fish.
Day 6: Onwards and upwards
A good evening of development but still a lot to do tomorrow. I think every PyWeek we enter ends more frantically than the previous one. Not a good trend. :)
Highlights of the day:
Highlights of the day:
- Fixed our first Windows-specific bug.
- Yip when hit.
- Doorways for moving between levels.
- Support for double-tap key interactions and a sprinting fox.
- Support for ethereal objects that one can collide with without being physically impeded.
- Draft versions of all of the intended levels.
- Creating a limbo for storing items that aren't anywhere else.
- More work on dialogue state machines.
- Item dropping and swapping.
- Moar images!
- Snout Up Display including inventory, health bar, tail indicator, tofu and scroll counts.
Not quite making it
The uploaded version of the game has a a fair portion of the game playable, be we alas ran out of time before hooking up the final few bits. By poking at the debugging flags [1], it's possible to see most stuff, but the game can't be completed.
The outstanding items will not actually take us long to add [2], but we are currently too wasted to do that now. We also have a bunch of packaging issues to sort out as well, which we will look at after sleeping.
We'll probably fix the outstanding issue tomorrow as well, since we are so close to having something completely playable and post a link to the completed version here for anyone interested.
[1] enabling DEBUG in constants.py and running with --all-tails (and maybe some other things)
[2] Estimates vary from 30 minutes to 2 hours, depending on how awake we are.
The outstanding items will not actually take us long to add [2], but we are currently too wasted to do that now. We also have a bunch of packaging issues to sort out as well, which we will look at after sleeping.
We'll probably fix the outstanding issue tomorrow as well, since we are so close to having something completely playable and post a link to the completed version here for anyone interested.
[1] enabling DEBUG in constants.py and running with --all-tails (and maybe some other things)
[2] Estimates vary from 30 minutes to 2 hours, depending on how awake we are.
A slow packaging day
After a good night's sleep (well 5 hours or so), it turned out that our final upload last night wasn't that buggy. There were a couple of obvious crashes to fix, and some packaging improvements to be made.
Summary of the changes from 0.1 to 0.1.1:
- Don't crash if Oni collides with a player after being bounced off the floor
- Don't steal life from skulls
- Don't remove kaneda from the geisha room too early (crash)
- Debugging rectangles off by default (they were already off when DEBUG=False, as in the upload)
- py2exe & py2app packaging
- Correct the game title in the packaging
- Document all keypresses in the Usage screen
- Require both rice destruction and document alterations for agreement to fall through
- Made agreement table square (easier to stand on)
- Fix bug in Kaneda's dialogue tree
- Remove Kaneda from scene again (when appropriate)
- Finish hooking up geisha fish subplot
- Require 8 tails to enter the celestial plane
- Fix crash bug when closing dialogue panes
We are still all pretty gutted after the Saturday sprint to the finish, and haven't done much more development, but we have uploaded our current trunk version (0.2, not marked as a final upload). It has a couple more minor tweaks, but nothing vital. Hopefully there are no remaining serious bugs in the 0.1 series.
We wrote a quick walkthrough, should you get stuck:
http://stefanor.uctleg.net/skaapsteker_docs/walkthrough.html
All in all, we are reasonably happy with the result. The art is beautiful, the game is playable and hopefully fun. It's got a good few warts, which we'll hopefully get to once this PyWeek is over. We were probably a bit ambitious, the game only came together as something playable at the end of the week. (Thus all the last-minute bug fixes.) In fact, a few of us hadn't even played the game through until today. Maybe next time, something simpler -- maybe "Nine Tales Forever"?