КОД 6 :: Rainbow Dance
Фух, надеюсь, меня простят за такое опоздание (:
Количество цветов радуги вызвало у меня ассоциации с количеством ступеней диатонического звукоряда, и я решил сделать просто очередную ритмоигру наподобие beatmania. Вроде, вышло неплохо.
В архиве лежит один недоделанный трек, так что есть возможность даже немного поиграть (аж целых полминуты). Если честно, сам не могу пройти с нормальным результатом то что там наворотил, лол. Музыка не моя, за нее говорим спасибо Ренарду.
Инструментарий практически тот же — Python+pyglet, графика нарисована в Inkscape, звуки недолго думая сгенерировал с помощью sfxr.
Если имеет место мешающая игре задержка, можете попробовать поизменять число во второй строке файла data — это смещение в миллисекундах.
И да, совсем забыл про управление. Нужно вовремя нажимать клавиши Z, X, C, V, B, N, M. Вовремя — это когда соответствующий клавише цветной блок пересекается горизонтальной линией примерно посередине.
- 04 июня 2012, 12:45
- 06
Traceback (most recent call last):
File "..\..\Documents\pyglet-1.1.4\pyglet\window\win32\__init__.py", line 849, in _wnd_proc
File "..\..\Documents\pyglet-1.1.4\pyglet\window\win32\__init__.py", line 918, in _event_key
File "..\..\Documents\pyglet-1.1.4\pyglet\window\__init__.py", line 1219, in dispatch_event
File "..\..\Documents\pyglet-1.1.4\pyglet\event.py", line 340, in dispatch_event
File "rd\tracklist.py", line 70, in on_key_press
File "rd\game.py", line 26, in __init__
File "rd\track.py", line 19, in __init__
File "..\..\Documents\pyglet-1.1.4\pyglet\media\__init__.py", line 1386, in load
File "..\..\Documents\pyglet-1.1.4\pyglet\media\riff.py", line 202, in __init__
pyglet.media.riff.WAVEFormatException: AVbin is required to decode compressed media
При этом сам AVbin лежит рядом с exe-шником.
По-моему какой-то бред при компиляции случился.
Этот traceback вываливается после нажатия Enter на заставке.
Если честно, понятия не имею, почему он его не видит. Как вариант, можно этот dll скинуть в System32, чтоб уж наверняка.
По трейсбэку он почему-то все библиотеки из экзешника распаковал куда-то в "..\..\Documents", хотя это путь не от cwd, потому что у меня там такой папки нет. И AVbin естественно там не находится.
Что-то с настройками компилятора, не должен он так делать...
И вдогонку - в system32 он его тоже не находит :) pyglet, что ли поставить...
Интересно, ты первый, у кого такая проблема (: знакомые в количестве четырех человек протестировали — у всех все работает.
Может у знакомых уже pyglet стоял? Или хотя бы avbin?
Не, это маловероятно.
Кстати, если все еще хочешь поиграть, попробуй запустить исходники с битбакета что ли.
pyglet'а нет. И не ставится - радостно пишет, что python 2.4 required ;-) Как ему объяснить, что у меня 2.7 стоит - я не знаю. Будет время - поковыряюсь с исходниками pyglet'а. Но не сейчас.
Это тебе его инсталлер так пишет? Не используй его, он у него кривой. Ставь через easy_install/pip или вообще вручную, тогда все работает.
Поставил из исходников. Вернулся туда-же: AVbin is required to decode compressed media.
Скачал AVbin. По инструкции распаковал в system32.
Снова: AVbin is required to decode compressed media.
Перезагрузился, воткнул AVbin в cwd, в python и даже в side-package/pyglet/media.
И снова: AVbin is required to decode compressed media.
Есть еще идеи, как его заставить найти AVbin? (Windows 7, x64)
Хм, у одного из знакомых как раз 64-битная семерка, и все работает, так что идей у меня больше нет. Единственное, что могу предложить — на официальном сайте есть неизвестной стабильности сборки распоследних ревизий под 64 бита, но гарантировать работоспособность, понятное дело, никто не может.
Твою мать! (извините)
Я это сделал.
It's a kind of fcuken windows magic.
32-битную библиотеку avbin.dll нужно сложить в SysWOW64.
The operating system uses the %SystemRoot%\system32 directory for its 64-bit library and executable files. This is done for backward compatibility reasons, as many legacy applications are hardcoded to use that path. When executing 32-bit applications, WoW64 transparently redirects 32-bit DLLs to %SystemRoot%\SysWOW64, which contains 32-bit libraries and executables.
Перевожу на русский: папочка system32 содержит 64-битные бинарники, из загадочных соображений обратной совместимости. А вот 32-битные бинарники хранятся в папочке SysWOW64, куда автоматом WOW64 редиректит все запросы от 32-битных приложений.
Определённая логика в этом, наверное, есть.
Но почему ни на сайте pyglet'а, ни на сайте avbin'a это не написано большими буквами на первой странице???
Еще раз извините за эмоции :)
А игре, на мой взгляд, очень не хватает нарисованных буковок на падающих, э-э-э, цветных каплях :)
А так - весьма симпатично.
А я на буквы вообще не смотрел. Да и не нужно на них смотреть - это только путатет. Тут нужно скоординировать движения пальцев просто.
Ну а как иначе быть с system32. Там число "32" ничего не говорит уже. Мать её "обратная совместимость", наследие.
А кстати странно, что этот путь вообще выводится. ..\..\Documents\pyglet-1.1.4 — это был путь до pyglet на моем компьютере, я его указал в параметре --include-path. Видимо, это делается не так.