pyDDR 0.6.5 observations (long)

dododge at smart.net dododge at smart.net
Sat May 31 10:58:41 EDT 2003


I built 0.6.5 a few hours ago and have been playing with it.  I
have 387 songs loaded, all using mp3 music and converted from DWI
files with the 0.6.5 version of dwi2step.

The list of things installed for pyddr: Python-2.2.2, Numeric-23.0,
SDL-1.2.5, freetype-2.1.4, SDL_ttf-2.0.6, libogg-1.0, libvorbis-1.0,
smpeg-0.4.4, SDL_mixer-1.2.5, SDL_image-1.2.3, pygame-1.5.5, and
pyddr-0.6.5. The system is i686 Linux 2.4.18, generally running
on a Celeron 500 though I also boot the drive on an Athlon 800
occasionally.

First I'll just say the program in general is working very well!
The improvements in recent versions are great, such as the new song
browser. This particular release is definitely _much_ better at
handling songs with stops and tempo changes; some of those were
basically unplayable in 0.6.3. Thanks for all the work you're
putting into this. Hopefully I'll get my pad wired up soon and
get to try out pyDDR with my feet instead of just my fingers.

Now onto the bad stuff... :-)


Play problems:

The stock code won't load any of the converted step files. This was
not a problem in 0.6.3. The issue here is that the step files do not
include the filenames of the associated mp3 files, and the StepFile
code only seems to look for ".ogg" files automatically. Here's a
workaround:

--- old/fileparsers.py	Sat May 31 00:55:25 2003
+++ new/fileparsers.py	Sat May 31 02:03:46 2003
@@ -112,7 +112,7 @@
     dir, name = os.path.split(filename)
 
     for t in (("banner", ".png"), ("banner", "-full.png"),
-              ("bg", "-bg.png"), ("file", ".ogg"),
+              ("bg", "-bg.png"), ("file", ".ogg"), ("file", ".mp3"),
               ("filename", ".mp3"), ("movie", ".mpg")):
       if self.info.has_key(t[0]):
         if not os.path.isfile(self.info[t[0]]):

Another fix would be to edit each of the step files to have a "file
whatever.mp3" line (but the above patch was easier :-). I did also try
using a "filename whatever.mp3" line in a step file, but that did
not seem to work.

The program crashes on the song selection screen. It only seems to do
this in full-screen mode, and I can't force it to happen. It usually
occurs if I've been playing full-screen for 10-20 minutes. I think
it always occurs right when I move in the song list. On the command
line I don't see much useful information:

  Audio: Skipping 45.000000 seconds...
  Pygame Parachute Traceback:
  Segmentation fault

The crash wouldn't be a big problem except that it leaves the screen
resolution changed and the mouse disabled. The keyboard does work,
so to fix it I do something like switch to another virtual console
and briefly run frozen bubble full-screen. After that the mouse is
working again, and I can do ctrl-alt-kp+ to switch back to my normal
resolution.

While stops are working better, there still seems to be some timing
issues. There sometimes looks like an adjustment period where the
arrows might drag a bit after or during the stop, rather than the stop
being an instant stop and start operation. For all I know this
might have to do with the step data. The arrows do at least seem to get
back in sync with the music after the stop ("Max300" might be an
exception, but I don't play that well enough to be sure).

The other issue with stops is that sometimes the arrows at the top of
the screen light up during the stop for no apparent reason. It's
really obvious if you usually watch the top of the screen to gauge
your progress. "So Fabulous, So Fierce" definitely shows the problem
when it hits its six stops in a row.


Documentation issues:

The manpage pyddr(6) references instep(1), but there's no such
manpage and the "instep" program does not get installed anyway.

pyddr(6) references "stepfile.txt", which is not installed.

The steps.py code references "docs/fileparsers.txt" and
"docs/dance-spec.txt", neither of which are installed.

Most of this stuff can be found in the source tarfile, but I'm looking
at what's left on the system after doing a "make install" and removing
the source tree.


Interface issues/wishlist:

In the main menus, it's not obvious when there are more menu items
off-screen. For example if I go to "Interface Options", it would
nice if there was an arrow underneath the "Gratuitous Extras" button
to indicate that more things are available if you keep moving down.

I don't see any way to toggle autofail interactively.

It sometimes takes 2-3 seconds to get a visual response after
hitting the start button on the song selection screen. It would
be nice if there was "something" that happened instantly to let
you know that the start button was noticed; perhaps an audio
response of some sort.

The song music is not looping on the song selection screen. I don't
know if this is intentional or not.

After a song, the grading display takes something like 4 seconds to
fade in. That's way too long for an impatient player :-). It would be
nice if you could hit the start button while the data is appearing
and skip the rest of the fade-in.

For players with large song lists, a faster way to get through the
list would be useful. If I just hold down the page-down button, it
takes over a minute to rotate through my song list; that makes getting
to a particular song a bit of a pain. A collapsed alphabetic sort
mode might be useful (like the one supported by the console and
arcade versions).

Along those same lines, it would be nice if the song list would
remember your last position if you temporarily go back to the
main menus for some reason.

The left/right cursor keys do work in the song selection screen,
but the up/down do not. Is that intentional? Personally I'd like
them to work everywhere in the interface that ijkl also work, since
I don't like the ijkl keys at all :-)

Has there been any thought to keeping player high scores/grades in
~/.pyddr? You do have the issue of the song list possibly changing
every time the program is run, but one idea might be to use a strong
hash (such as SHA1 or MD5) of the step file itself as a way of
identifying a song for record-keeping purposes. The current
high grade could then be shown in the song selector (the same way
as in the recent console versions).

The drawing order for arrows seems to shift occasionally. For example
if two arrows overlap, then sometimes they swap which one is "on top"
while they're scrolling up the screen. It's not really a gameplay
problem, but can be distracting. I'm not sure exactly what triggers it.
It seems to happen near the top of the screen, and I think I've seen
it with both freeze and regular arrows. "Secret Rendezvous" didn't
seem to have the problem despite having plenty of overlapping arrows,
but "Twilight Zone" and "Never Gonna Make" did show it.


Compilation/install issues:

It would be nice if you could optionally relocate the config file from
/etc to be under your PREFIX during the install process. For example I
have pyddr and related files installed in /opt/pyddr-0.6.5, and I want
its master config file to be in "/opt/pyddr-0.6.5/etc" rather than
"/etc". Currently this requires making code changes to the Makefile
and constants.py because /etc is hardcoded. I also end up modifying
pyddr.posix.cfg to look under /opt/pyddr-0.6.5/share instead of
/usr/share and /usr/local/share.

My main principles here are "it's all in one place", "nothing gets
installed in system directories", and "the install steps must be
unprivileged". I realize you're following the FHS/LSB. I can keep
doing code changes as necessary for my own freaky requirements, but
figured I'd mention this as something that did come up. If you could
make it possible to easily adjust these hardcoded paths during the
setup or install process, that might be useful.

                                        -Dave Dodge/dododge at smart.net



More information about the pyddr-discuss mailing list