Desktop Maze. Сборка два
Неожиданно дело пошло лучше, чем я ожидал. И пусть сделано не всё, что я обещал здесь, но всё равно не терпится показать промежуточный результат. Вся хорошая и красивая графика - Housegarden'а, вся плохая и некрасивая - моя.
Ссылка на exe здесь, на скрипты и байткод здесь (требуется Python2.6, pyglet, cocos2d).
Чтобы увидеть информацию о противнике, щёлкните по нему мышкой.
Известные баги:
- иногда персонаж появляется возле невидимого противника
- герой или противник оказываются в непроходимой области
О большинстве неприятностей игра пишет в папку Log, если что-то не работает, то копируйте информацию оттуда мне.
- 09 октября 2011, 01:37
- 05
http://i.min.us/iqpqwvIdFndn8.png
При запуске, и это окошко становится крайне сложно убрать, циклится и не закрывается
Хм, проверил комп на вирусы - ничего нет. Ну и окошечка тоже.
Спасибо.
У кого-то из скачавших ещё есть подобная проблема?
У меня такого нету.
Так она при это и не запускается
Реквестирую байткод.
Обновил ссылки, добавил байткод.
Нет, я догадываюсь, чем вызвана ошибка. Я даже уже сделал fromdos конфигурации. Но пробельные символы в конце значения параметра я бы убирал.
Довольно загадочная ошибка. Не могу понять, отчего бы так.
Спасибо.
Первую поправлю.
Вторая всегда появляется или это был единичный случай?
Скорее всего почему-то неправильно распарсились данные из текстовых файлов. Действительно, загадочно.
Запустил пару раз.
Сконвертировал все файлы в UNIX ending.
Запустил ещё пару раз.
Одно и то же.
Я б отладил, да вот...
Поделиться самими скриптами?
As you wish.
Я бы заодно поучился, как игры на пайтоне писать.
Ок, вечером кину.
Главное, чтобы не вышло, что ты поучишься, как их не надо писать :)
А мы ждём,
Ждём, ждём, ждём, ждём, ждём...
Сырцы
Известные баги там не исправлены, хотя я уже придумал другой алгоритм создания лабиринта, но его ещё не вставил (да, велосипед, но хотелось самому). Если увидите говнокод, не стесняйтесь писать мне об этом в личку :)
1. Всё совершенно внезапно не вывалилось с ошибкой.
2. Я заспавнился в тупике. Это нормально?
Сейчас было вдвойне эпично, заспавнился, а стены с четырёх сторон. Жаль, не сфотографировал.
Да, я ж написал про этот баг в топике. И написал, что алгоритм изменён, но я его ещё не вставил в исходники :)
Ага, понял, понял, осознал.
File 'mainmenu.py', in loadHeroNames:
62 if line.strip('\n') == 'begin':
У него оставалось 'begin\r', как обычно.
Во-первых, есть rstrip.
Во-вторых, есть ConfigParser.
Хм, не очень понимаю, в чём практическая польза от rstrip была бы больше, чем от просто strip. Только чтобы не проверять начало строки?
Про ConfigParser почитаю, спасибо.
Нет, вместо .strip('\n') просто .rstrip(). Это весь мусор удалит.
А, в этом смысле. Ок, спасибо.
От себя порекомендую генерить лабиринт DSU (системами непересек. множеств), чтобы не было тупиков, и потом рандомить циклы.
Я сегодня вечером докину изменения. Если новый алгоритм тоже будет не по вкусу, тогда погляжу.
Jazz, извини меня, пожалуйста, но... в общем, мне было нечего делать, и я слегка там переподогнал твой код генерации. Гарантирую связные лабиринты за приемлемое время. Посмотри, вдруг что-то адекватное присутствует. Ссылка.
Хе, может ты и четыре вида блоков в зависимости от соседей сделаешь? :)
Даже при учёте лишь четырёх соседей и вводя эквивалентность по отражениям и поворотам, получаем 6 разных типов.
O L T X - всего четыре, с учетом четырёх соседей, с отражениями. Одиночный, уголок, т-образный и полностью связанный с соседями.
Но вообще я тебя подкалывал - не будешь же ты за Джаза, его проект развивать. :) У тебя так много энергии, что давно пора что-нибудь своё сделать.
По-хорошему всё-же шесть. Одиночный "остров" (нет соседей), одиночный конец стенки (один сосед), уголок, линия, Т-образный, крест.
С четырьмя стыки стен придётся делать в полный размер тайла, что не очень красиво - все стены будут заканчиваться квадратными набалдашниками.
Не-а, ещё линеечка и мыс.
Видишь ли, написание игры от начала до конца не представляет из себя интересную алгоритмическую и/или математическую задачу. Все мои попытки заканчивались одинаково - я решал самое сложное, что может понадобиться, и оставался полностью удовлетворён, так и не написав ко всему этому счастью интерфейс.
С линеечками и торчками да, шесть, согласен, недосчитал. :)
Боже ж, ну и подход.
Нет, ну это же не моя работа. Кодинг удовольствие должен приносить. Нормальный подход, не хуже прочих.
Ок, дома погляжу.
403 по ссылке.
Извиняйте, второй день в этом вашем буржуйском Дропбоксе, не знал про публичные ссылки.
Интересный результат.
Я собираюсь вставить такой алгоритм:
http://pastebin.com/PxpLUTkR
if во втором цикле конечно же можно заменить на православную строку
maze[i][j] &= randint(1,10) > 7
Забавно. Оригинальная идея.
Можно, кстати, и квадратными кусками генерить.
Кстати, я тут на пальцах прикинул - 65% свободного места, не многовато?
PS: а с лабиринтами другого размера как? К тому же с горизонтальными ходами будет плохо, плюс чётные столбцы останутся пустыми навек.
PPS: random.random() > 0.5 честно гораздо быстрее random.randint(1, 10) > 5
Я сравнивал - в среднем выходит почти такой же процент, как и на первом "глючном" алгоритме, а там во время игры не особо много пустых мест; впрочем, это всё равно настраивается.
Лабиринты другого размера я особо не трогал (16 на 16 максимум вроде, брал), если брать randint(1,10) больше, чем 7, то да, начинаются проблемы с горизонтальными проходами. Может действительно посмотреть в сторону квадратов.
p.s. Кстати, а чем это сгенерирован файл .patch? Сильно походит на svn diff :)
diff -u же. Стандартный метод создания патчей.
А, ок, спасибо.
А чего тут загадочного. Ошибка заключается в том что движок обращается к элементу списка, которого не существует. Например: в списке 4 элемента, а ты обращаешься к пятому.
spisok = [1,2,3,4]
spisok[4]
C. O. to the rescue!
Странно то, что ошибка проявляется под конкретной платформой.
чёто так и подумал что окажусь кэпом )) Это просто мои предположения были насчёт ошибки.
А как в это играть?) Информацию про моснтров никак не получить, все столкновения с ними заканчиваются фатально..
Хе-хе, ну в целом да... Я поленился уже добавлять информацию по всем противникам в полпервого ночи :) Всё будет чуть позже.
Но! Пока я допиливаю интерфейс, есть возможность поиграться с балансом. В папке packs/original есть папки char и enemy, в них соответственно файлы cdescr.txt и edescr.txt, вот в них собственно содержатся статы персонажей и монстров. :)
1. Не хватает перемещения по диагонали.
2. После смерти не сразу понял, что рестарт, это Esc, я бы вообще на любую клавишу сделал или кнопку.
3. Меню на русском, а внутри игры всё на буржуинском, нелогично.
4. При нахождении рядом с врагом или, на худой конец, при нападении на него (если не хочется рассматривать варианты, когда рядом несколько врагов), надо отображать статы автоматически, иначе вообще непонятно что происходит.
5. Нужны плавные границы области видимости - сейчас непонятно, строится ли лабиринт на ходу или открывается область видимости.
6. Для того, чтобы на это было интересно графически моды делать, должна быть система различия блоков в зависимости от позиции в стене (чтобы гладкие углы делать) и, желательно, система задания анимации (например, если картинка многокадровая то циклить отображение с фиксированной или задаваемой скоростью).
7. Перемещение персонажа было бы неплохо сделать плавным, а не скачком сразу на тайл.
Ты хочешь повторить успех "Алхимии" в плане пользовательских модов? :)
Спасибо.
1. В рогаликах есть перемещение по диагонали? Его делать не буду, это точно :)
2. Да, потом там будут нормальные экраны победы и поражения, сейчас заглушки.
3. Ну HP и AP обычно и не переводят, а вообще проблема в том, что внутриигровые надписи пока захардкодены и локализация их не касается :)
4. После нападении на противника показывать статы часто бывает уже бесполезно. Чем конкретно не устраивает клик мышкой?
5. Какая разница?
6. Это вряд ли.
7. Ну я же руководствовался DD в конце концов :) А так это легко сделать, только не вижу особого смысла.
- это навряд ли. Там, насколько я понял, моды сильно отличаются от оригинальной игры. У меня (на данный момент) разница будет лишь в оформлении и балансе.
1. King's Bounty первоверсия.
3. Для русских русские надписи! :D ОД, ничем не хуже AP, а вообще можно и без дурацких аббревиатур обойтись - либо полными надписями, либо интуитивно раскрашенными шкалами, либо пиктограммами.
4. Конкретно не устраивает то, что его (клик) нужно делать. Основное управление на кнопках, тянуться рукой до мышки это неэргономично и в данном случае неоправданно. Подошел к врагу - ясен перец, хочу узнать его характеристики, нет никакого выбора "кликать-не кликать", поэтому это действие (показ статов) должно быть автоматическим. Вообще зачем такая жирная панель справа, если на неё ничего не выводится?
5. Разница в ощущении игрового пространства. Нет явного понимания, что карта существует, а я её открываю, целостность игрового мира нарушена, мне неуютно. Кстати, видимость всего на один ход даёт ощущение подслеповатости, тоже не очень расслабляет.
6. Жаль, это бы сильно улучшило внешний вид игры, а реализация совсем не сложная: просто вместо одного спрайта блока понадобится либо четыре, либо двенадцать. Вставляется тупым switch'ем (ну или чего там в Пайтоне для множественного ветвления).
7. Если даже такие мелочи не менять, то проще разместить ссылку на скачивание DD, чего напрягаться, если всё уже украдено до нас.
1. KB это рогалик? О_о
4.
- потому что там не выводится всё, что должно выводиться. Если в конце концов останется много места, урежу.
5. Это твой частный случай :) Единственное, я могу сделать блоки по периметру карты видимыми по умолчанию.
6.-7. Олег, я понимаю твоё стремление помочь, но давай определимся: на прошлой неделе ты говорил, что графика это фигня, давай мол геймплей, теперь ты получил изменяемый пользователем геймплей, но уже нужны украшательства. Рюшечки в виде анимации вероятно будут, но это лишь часть эволюции проекта. Конкретно для того, что ты пишешь, мне придётся вводить карты тайлов и дополнительные параметры ориентации в пространстве. Всё это решаемо в достаточно краткие сроки, но есть вещи приоритетнее, например, 3 (4?) бага, описанные в топике и комментариях.
1. КB в режиме карты очень похож на эту игру, которая тоже не рогалик.
Я продолжаю утверждать, что графика это фигня, пока в игре нет нормального геймплея, а его всё ещё нет. Если плюнуть на геймплей и двигать графическую часть, как ты сделал в этом релизе, то тоже есть куда расти - делать лабиринт лабиринтом, а не нагромождением кубиков.
Решать тебе, я-то что - страна советов. :]
как вариант, можно добавить/перевести управление на мышиное. Клик по квадрату рядом с собой - идти туда. Если там враг - напасть. Правый клик - показать информацию о враге/ячейке. Так будет довольно интуитивно, мне кажется.
К. О. спешит заметить, что для такой фигни, как ориентация блока в стене, он не стал бы заводить поле, а просто проверял бы соседей (с какой стороны от нас воздух).
Я не о том.
Если делать анимацию, то делать её нормальную - для движения в 4 стороны или даже 8 сторон. Дело плёвое, но его тоже нужно сделать.
p.s. исходники уже завтра будут :)
Ты будешь смеяться, но в том самом Rogue было перемещение по диагонали. :)
А еще в DD есть перемещение по диагонали. Но это ни в коем случае не попытка заставить тебя прикрутить перемещение по диагонали. Это я просто так, уточняю :)
Хм, посыпаю голову пеплом. В DD видимо никогда не ходил по диагонали просто :D
p.s. в таком случае я пожалуй немного поменяю управление, убив двух зайцев и сделав ходьбу по диагонали и просмотр информации о враге с клавиатуры.
По поводу управления:
думаю сделать wasd на перемещение и shift+wasd для получения информации об окружающих ячейках.
Норм?
Хотя, для движения по диагонали лучше конечно использовать num-клавиатуру.
Я 90% времени провожу за ноутом, поэтому num-клавиатура для меня - не вариант.
Кстати, если уж ты хочешь заточиться под рогалик, то вот тебе ссылка. Опять-таки не настаиваю...
Спасибо.
Не думал, что в рогаликах советуют использовать набор клавиш из vi :)
Аааа... Только не такое управление.. Это ж умом поехать можно. По-моему, проще так:
qwe
asd
zxc
Всяко понятнее, ИМХО.
Да ладно тебе.
h - слева, l - справа. j похожа на стрелку вниз, k осталась в одиночестве, а yubn даже по позиции совпадают.
По традиции, левая часть - мнемоники для действий, начинающихся на соотв. букву.
AZERTY
Используется во Франции и Бельгии и некоторых африканских странах. Её основные особенности:
поменяны местами A и Q
поменяны местами Z и W
QWERTZ
Используется в Германии, Чехии, Венгрии и Албании. Её особенность:
поменяны местами Z и Y
Картинки не мои. Я просто разместил объяву.
Зануда :)
uio
hjk
bnm
А вообще, пусть Jazz сам решает :)
Удобнее: tyu\ghj\bnm, так сдвиг клавиш с загибом правой руки совпадает. :) А вообще лучше всего дать пользователю самому настроить.
Лучше дать возможность в настройках изменять как хочется.
ОК :)
А карта так и будет вся сразу открыта или все-таки будет "туман войны"?
Разве она сейчас вся открыта?
Я по скринам смотрю. Думал, это только образец.
А, ну на скринах просто карта уже открыта, а так туман войны конечно же есть :)