LINUX.ORG.RU

Ионизированный Awesome и бегающий лодырь

 , , lode runner,


1

1

Первым моим тайловым WM был ion3. После его гибели я перешел на Awesome (в 2008-2009). Поскольку я тогда был еще мал, юн да глуп я не придумал ничего лучше, чем притащить в Awesome с собой хоткеи из ion'а. Закрытие окна у меня до сих пор по Alt+C, переход по тегам по Alt+, и Alt+. и т. п. Так что, дух ion'а живет у меня и до сих пор.
Визуально с 2009 мало что изменилось, разве что перешел с GNU/Linux на FreeBSD и с Firefox на QuteBrowser. Все тот же Awesome, все та же цветовая схема и иконки.

Как-то я заигрался в NES'овский Lode Runner в браузере, потом наткнулся на ремейк оригинальной игры. Поскольку, он был на JavaScript и играть приходилось в богомерзком браузере, то я решил попробовать сделать своего бегуна, с ямками и бегающими мужичками. Писал не один в один как у китайца а делал с нуля, читая его код для понимания как должно быть и стараясь повторить поведение. Ресурсы, понятное дело, взял у него практически без изменения.
На скринах, собственно, сама игра, пропатченный QuteBrowser, Emacs и самодельный проигрыватель с ffmpeg под капотом.

У QuteBrowser есть один назойливый недостаток — он сортирует историю не по частоте использования URL'ов (frecency), как это делает Firefox, а по времени последнего посещения. Мне это показалось дико неудобным и я еще в 2018 запилил в нем поддержку frecency. Автор QuteBrowser достаточно странный, в отношении сторонних патчей и разработчиков. По тому, что я наблюдал, он очень неохотно смотрит чужие патчи и вовлекает других людей в разработку. Одним словом, не пускает в свою песочницу чужих. В общем, патч мой в upstream так и не попал. В 2020 ему предложили альтернативное решение, которое он тоже все обещал, обещал принять и по традиции забил. Приходится постоянно патчить.

Проигрыватель похож на смесь mpd и mocp — демон с хорошей поддержкой CUE и представлением треков в виде файловой системы (как у mocp).

★★★★★

Проверено: CrX ()

Выглядит очень круто! Несколько вопросов/наблюдений:

  1. С таким сетапом нужно трекать как минимум STABLE ветку и собирать порты самому в отдельном jail’е c poudriere :)
  2. Почему QuteBrowser а не какой-нить LibreWolf, к примеру?
  3. Игра огонь, 1 звезды на github явно не достаточно, есть в портах?
dsl ★★
()
Ответ на: комментарий от dsl

С таким сетапом нужно трекать как минимум STABLE ветку и собирать порты самому в отдельном jail’е c poudriere :)

Да я в BSD человек новый. Чуть больше года как перешел. На другом ноуте еще OpenBSD ганяю, там CURRENT.

Почему QuteBrowser а не какой-нить LibreWolf, к примеру?

Главным критерием для меня было это наличие vim-like интерфейса. Перешёл с Firefox когда закрылся Vimperator/Pentadactyl. Потому, альтернатив QB особо не вижу.

Игра огонь, 1 звезды на github явно не достаточно, есть в портах?

Спасибо. :) На самом деле, я её еще не закончил. Дотестировал пока до 43 уровня только. Но так, вроде, больше известных ошибок нет. Так, мелкие недочёты. Например, одновременно проигрывается только один звуковой эффект.
В портах пока нет. Но попасть туда цель есть.

urxvt ★★★★★
() автор топика
Ответ на: комментарий от dsl
  1. Почему QuteBrowser а не какой-нить LibreWolf, к примеру?

Не знал, что это одоробло работает уже на FreeBSD

Pinux001
()

демон с хорошей поддержкой CUE и представлением треков в виде файловой системы

Мне не совсем понятно, как cue может это обеспечить? Разные испольнители треков, разные исполнители альбома (я реально сталкивался в одном сue), разные жанры, и как? Можно все отредактировать, но не проще реальная ФС - треки + мета? По качеству нарезка никак не отличается от образа, но более гибкая во всех аспектах.

dmitry237 ★★★★★
()
Ответ на: комментарий от sparkie

Не без нюансов, но в целом хорошо. Мелочи вроде редких падений и бана в Cloudflare [1] я готов терпеть ради удобства использования и нормального внешнего вида.

[1] Под Linux у меня работало а вот под BSD проверку не проходит.

urxvt ★★★★★
() автор топика
Ответ на: комментарий от dmitry237

Навигации по жанрам нет. Навигация как и в moc или файловом менеджере — каталог с исполнителем, в нем список каталогов-альбомов, в них список файлов-треков.
Поддержка CUE тут заключается в том, что в списке файлов-треков вместо одного жирного flac отображаются отдельные треки из этого flac.

Как-то так

$ ls -1 'Judas Priest/1988 - Ram It Down'
CDImage.ape
CDImage.ape.cue
Libreto 1.jpg
Libreto 2.jpg
Libreto 3.jpg
Libreto 4.jpg
back.jpg
cd.jpg
front.jpg
inside.jpg
$ chubc list '/Judas Priest/1988 - Ram It Down'   
CDImage.ape:1
CDImage.ape:2
CDImage.ape:3
CDImage.ape:4
CDImage.ape:5
CDImage.ape:6
CDImage.ape:7
CDImage.ape:8
CDImage.ape:9
CDImage.ape:10
CDImage.ape:11
CDImage.ape:12

urxvt ★★★★★
() автор топика
Ответ на: комментарий от urxvt

У меня структура немного не такая:

$ dir './Music/Foreign/Accept/1983. Balls To The Wall/' -r                                

    Directory: ~/Music/Foreign/Accept/1983. Balls To The Wall

UnixMode     Num   UID   GID      LastWriteTime    Size Name
--------     ---   ---   ---      -------------    ---- ----
drwxr-xr-x   755  1000  1000   08.04.2024 13:34         ART
-rw-r--r--   644  1000  1000   13.03.2025 15:42   40,3M 01 - Balls To The Wall.flac
-rw-r--r--   644  1000  1000   22.12.2024 09:59   28,4M 02 - London Leatherboys.flac
-rw-r--r--   644  1000  1000   22.01.2025 17:44   25,3M 03 - Fight It Back.flac
-rw-r--r--   644  1000  1000   22.12.2024 09:59   31,2M 04 - Head Over Heels.flac
-rw-r--r--   644  1000  1000   23.03.2025 19:08   36,5M 05 - Losing More Than You Ever Had.flac
-rw-r--r--   644  1000  1000   04.02.2025 14:59   26,3M 06 - Love Child.flac
-rw-r--r--   644  1000  1000   22.12.2024 09:59   36,8M 07 - Turn Me On.flac
-rw-r--r--   644  1000  1000   22.12.2024 09:59   31,7M 08 - Losers And Winners.flac
-rw-r--r--   644  1000  1000   22.12.2024 09:59   31,7M 09 - Guardian of The Night.flac
-rw-r--r--   644  1000  1000   22.12.2024 09:59   32,8M 10 - Winterdreams.flac
-rw-r--r--   644  1000  1000   08.04.2024 00:13  101,6K cover.jpg

    Directory: ~/Music/Foreign/Accept/1983. Balls To The Wall/ART

UnixMode     Num   UID   GID      LastWriteTime    Size Name
--------     ---   ---   ---      -------------    ---- ----
-rw-r--r--   644  1000  1000   08.04.2024 13:34  153,9K band.png
-rw-r--r--   644  1000  1000   08.04.2024 13:29  172,2K cd.png
lrwxrwxrwx   644  1000  1000   08.04.2024 00:14      12 cover.jpg -> ../cover.jpg

dmitry237 ★★★★★
()
Ответ на: комментарий от dmitry237

Ну примерно то же, только у тебя дополнительный уровень Foreign. А скачанные flac'и, я так понял, ты просто нарезаешь на отдельные треки? Тоже вариант.

urxvt ★★★★★
() автор топика
Ответ на: комментарий от urxvt

ты просто нарезаешь на отдельные треки?

Да, главным образом из-за того, что в основном слушаю случайные треки (random по 10 из 6500). Конечно есть то, что отдельно слушать просто нельзя, когда альбом нечто цельное, как история. Ну и второе, это «помешанность» на статистике, люблю все хранить в базе данных, сколько прослушиваний, какой рейтинг, когда последний раз попадался трек. Иногда бывает, что слушал 600 дней назад, а иногда всего 6, в этом есть эффект неожиданности.

dmitry237 ★★★★★
()
Ответ на: комментарий от dmitry237

Да, главным образом из-за того, что в основном слушаю случайные треки (random по 10 из 6500)

Я почти никогда отдельные треки не слушаю, только альбомы целиком.

Ну и второе, это «помешанность» на статистике, люблю все хранить в базе данных, сколько прослушиваний, какой рейтинг, когда последний раз попадался трек. Иногда бывает, что слушал 600 дней назад, а иногда всего 6, в этом есть эффект неожиданности.

Я себе аналог last.fm (не в смысле рекомендаций, а для сбора статистики) запилил. Поскольку проигрыватель это демон то такое делается очень легко, по сути это просто еще один клиент, который смотрит, что играется и сохраняет в БД.

urxvt ★★★★★
() автор топика

на лоре появилась карусель, нифига ж себе.

Rastafarra ★★★★
()

У QuteBrowser есть один назойливый недостаток — он сортирует историю не по частоте использования URL'ов (frecency), как это делает Firefox, а по времени последнего посещения

По-моему это не недостаток а наоборот правильное поведение.

firkax ★★★★★
()
Ответ на: комментарий от firkax

Это точно. Историю показывать в хронологическом порядке, а статистику – по частоте использования или суммарного времени просмотра.

u-235
()
Ответ на: комментарий от firkax

Ну это же не просто история, а история-посказка при открытии нового URL. Вот представь, ты походил по ЛОРу, полистал десяток тем. Спустя время ты снова хочешь зайти на ЛОР, открываешь строку навигации, вводишь «linux» и оно тебе следующий список на выбор.

https://www.linux.org.ru/gallery/screenshots/18032258?cid=18032590
https://www.linux.org.ru/forum/talks/18032423?lastmod=18032958
...

Такая же ситуация с YouTube (и всеми другими). Зачем мне подсказки про ролики, которые я смотрел час назад? Очевидно же, что я хочу попасть на главную (ну или tracker, как в случае с ЛОР).

Не зря же во всех браузерах это работает именно через freshness score (коэффициент актуальности), это не моя придумка.

urxvt ★★★★★
() автор топика
Ответ на: комментарий от treflip

Помню, натыкался на него. Кажется, понравился перегруженностью (глянь на скрине таблицу с подсказками, в буфере ввода адреса новой страницы) и WebKitGTK.
Но я мельком смотрел, уже и забыл про него. Может и альтернатива. Нужно будет глянуть детальней.

У меня, кстати, еще идея крутилась сделать морду для Ladybird. Но они на Swift переходят. А с ним на тех же BSD проблемы, на сколько мне известно.

urxvt ★★★★★
() автор топика
Ответ на: комментарий от urxvt

И там тоже надо показывать последние. Да, возможно надо и топ-3 частых в ним добавлять, но последние нужны точно.

И вообще в фф эту подсказку с каких-то версий очень испортили. Раньше её можно было интерактивно листать и удалять из неё (и из журнала соответственно) нежелательные варианты, сейчас тупо 10 пунктов, выбранных по какому-то непонятному дурацкому критерию (видимо та самая частота), и без возможностей посмотреть другие (приходится открывать журнал отдельным окном и в нём тоже проблемы с удобством).

firkax ★★★★★
()
Ответ на: комментарий от firkax

И там тоже надо показывать последние. Да, возможно надо и топ-3 частых в ним добавлять, но последние нужны точно.

А зачем они там нужны?
То что их нет в популярных браузерах тоже намекает на то, что одноразовым ссылкам там не место.

Так то они там, конечно, есть, но достаточно далеко внизу и нужно искать.

И вообще в фф эту подсказку с каких-то версий очень испортили.

Есть такое.

и без возможностей посмотреть другие (приходится открывать журнал отдельным окном и в нём тоже проблемы с удобством).

Так в том то и дело, что это достаточно редкая необходимость и для нее есть отдельный функционал.
ЛОР я открываю по 100 раз на день а найти тему в истории посещений мне нужно раз в месяц.
И, снова же, все ссылки тут тоже доступны, просто они «уплывают» ниже. Искать их достаточно легко и удобно по названию заголовка страницы.

urxvt ★★★★★
() автор топика
Последнее исправление: urxvt (всего исправлений: 1)
Ответ на: комментарий от urxvt

А зачем они там нужны?

Очевидно зачем: я вчера посмотрел какую-то страницу (первый и единственный раз) и хочу вернуться на неё без лишних действий.

в популярных браузерах

Это не показатель, гугл творит нерелевантную дичь, файрфокс к сожалению пытается её заимствовать.

Так в том то и дело, что это достаточно редкая необходимость и для нее есть отдельный функционал.

У меня она часто использовалась, и именно в окне подсказок был наиболее удобный интерфейс к ней.

просто они «уплывают» ниже

Так оно не листается, уплыло вниз значит исчезло.

firkax ★★★★★
()
Ответ на: комментарий от firkax

Очевидно зачем: я вчера посмотрел какую-то страницу (первый и единственный раз) и хочу вернуться на неё без лишних действий.

С тех пор я посморел еще 100500 страниц. Все они внизу. Листай вниз, ничего не мешает.

Это не показатель, гугл творит нерелевантную дичь, файрфокс к сожалению пытается её заимствовать.

Так было всегда.

Так оно не листается, уплыло вниз значит исчезло.

1. Повторюсь, оно уплыло в любом случае.
2. Как ты ее искать собрался? По урлу? Нет. По заголовку, наверное. В таком случае удобно ввести «youtube Bazinga» и тебе сразу выведет вчерашний ролик. Да хоть из прошлого года.
3. Самое главное: ты пытаешься сделать редко используемый сценарий удобным в угоду *самого частого* сценария, который используется по 100 раз на день.

urxvt ★★★★★
() автор топика

перешел с GNU/Linux на FreeBSD

Как во фряхах обстоят дела с запуском игр? Насколько я понимаю, официального приложения Steam для FreeBSD не существует и вообще фряха больше подходит для серваков, нежели для домашних десктопов.

basilic ★★★
()
Ответ на: комментарий от skyman

Это другое. Баллы зависят не просто от частоты посещения страницы, но и от того, как долго ее посещают и когда посещали в последний раз.

Например. Страница, которую посещают раз в день последний год будет иметь больше баллов чем страница, которую посетили сегодня в первый раз, хоть и 100 раз.
Также, если страница посещалась 100500 раз в день раньше но уже не посещается, то он будет постепенно терять баллы, как неактуальная.

В доках Firefox они описывают формулу. Также ее можно увидеть в моем PR.

https://firefox-source-docs.mozilla.org/browser/urlbar/ranking.html
https://en.wikipedia.org/wiki/Frecency

urxvt ★★★★★
() автор топика
Ответ на: комментарий от basilic

Как во фряхах обстоят дела с запуском игр? Насколько я понимаю, официального приложения Steam для FreeBSD не существует и вообще фряха больше подходит для серваков, нежели для домашних десктопов.

К сожалению, не подскажу. Я в игры практически не играю. А если и играю то что-то из NES в эмуляторе или примитив типа tomatoes.

urxvt ★★★★★
() автор топика
Ответ на: комментарий от urxvt

2. Как ты ее искать собрался? По урлу? Нет. По заголовку, наверное. В таком случае удобно ввести «youtube Bazinga» и тебе сразу выведет вчерашний ролик. Да хоть из прошлого года.

Этот аргумент и к сортировке по частоте можно применить.

3. Самое главное: ты пытаешься сделать редко используемый сценарий удобным в угоду *самого частого* сценария, который используется по 100 раз на день.

Откуда инфа что это редкий сценарий?

firkax ★★★★★
()
Ответ на: комментарий от firkax

Этот аргумент и к сортировке по частоте можно применить.

Как? Писать постоянно «youtube Стартовая Страница»?

Откуда инфа что это редкий сценарий?

Чисто эмпирическое наблюдение.

urxvt ★★★★★
() автор топика

Ion3 это было отлично. Я его хоткеи себе частично в fvwm перетащил тогда же.

yoghurt ★★★★★
()
Ответ на: комментарий от urxvt

Но так, вроде, больше известных ошибок нет

Нуу… :) Вот в общем: https://github.com/vchimishuk/loderunner-ng/pull/1

Но сразу скажу, что скомпилял под aarch64 в два счёта! Порт можем притащить сразу под две архитектуры минимум.

dsl ★★
()
Ответ на: комментарий от dsl

Но так, вроде, больше известных ошибок нет

Нуу… :)

Ох уж эти программисты, ох уж эти оптимисты. :)

Спасибо, за патч. Я в процессе допиливания. Я ещё все 150 уровней не прошел (56 только). Хочу сначала убедиться, что она проходима без явных глюков. Потом можно будет портировать.
Было бы здорово, в портах LodeRunner'а иметь, а то я раньше хотел его погонять и нормального так и не нашел. Еще скучаю за NES'овским Bomberman'ом. Тоже нормального не нашёл.

urxvt ★★★★★
() автор топика
Ответ на: комментарий от urxvt

По-моему, я смогу заапрувить и закоммитить новый порт. В принципе, сейчас всё равно нет времени что-то серъёзное продолжать пилить для FreeBSD, а так хоть порт смогу поддерживать/обновлять время от времени.

UPD: Я, наверное, и сам создать порт смогу :) Но удовольствие создания порта отбирать не хочу.

UPD2: Лучше порт делать уже сейчас, так как в квартальные попадёт значительно позже. Десять раз сможете перепройти.

dsl ★★
()
Последнее исправление: dsl (всего исправлений: 2)
Ответ на: комментарий от dsl

Для порта мне нужно кое-что еще подготовить. Мне нужно пару дней, как минимум. Я вернусь с этим. Спасибо.

urxvt ★★★★★
() автор топика

Хм.

X – dig hole right to the runner Z – dig hole right to the runner

Наверное, слева он копает-то с помощью Z?

jackill ★★★★★
()
Ответ на: комментарий от piyavking

На сколько мне известно, то только такой NES порт и есть, как у тебя по ссылке. Мне он очень нравится, отличный порт.

urxvt ★★★★★
() автор топика

Люблю LodeRunner, в детстве часами зависл в редакторе карт, наверно это была первая игра вообще с редактором карт. Жаль код не собирается под линуксом.

Вместо rand/srand там в коде написаны random/srandom, еще есть какой-то asprintf, которого нет, в мейне какая-то неопределенная переменная /src/loderunner-ng/main.c:142:40: error: ‘optarg’ undeclared (first use in this function)

uname -srvmo
Linux 6.12.35+deb13-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.35-1 (2025-07-03) x86_64 GNU/Linux
masa ★★★
()
Ответ на: комментарий от masa

Ну вообще если поменять random на rand, отключить дебаг сообщения и обработку параметров командной строки, то все собирается, прикольно

masa ★★★
()
Последнее исправление: masa (всего исправлений: 1)
Ответ на: комментарий от urxvt

Хороший порт, дай бог каждому, но в детстве я играл не в него, а в тот LR, что на твоей картинке...

piyavking ★★★★★
()
Ответ на: комментарий от masa

Спасибо за отзыв.

Под Линуксом починил следующим патчем (закоммитить на Гитхаб смогу только завтра).
https://0x0.st/85Pp.patch

Правда, на Дебиане (12) оно не собирается через старую sdl2_mixer. Но там можно Mix_PauseAudio() отключить, при необходимости.

urxvt ★★★★★
() автор топика
Ответ на: комментарий от urxvt

Супер! работает, спасибо!

PS: у меня 13 Debian, тут свежий sdl - все ок

masa ★★★
()
Последнее исправление: masa (всего исправлений: 1)

1. За awesome респект, сам уже не помню сколько на нём езжу.

2. И что, стОит с линуха валить на фрибсд?

piyavking ★★★★★
()
Последнее исправление: piyavking (всего исправлений: 2)
Ответ на: комментарий от piyavking

2. И что, стОит с линуха валить на фрибсд?

Все от целей зависит. Я вот жалею, что давно не свалил. Для себя я тут нашел больше UNIX'а, скажем так. Больше возможности поковыряться в системе (отчасти потому, что чаще что-то не работает или не поддерживается).

urxvt ★★★★★
() автор топика

Как-то я заигрался в NES'овский Lode Runner в браузере

для некоторых NES игр например вопрос подьема FPS раза в 2, это фактически микрооптимизация небольших участков горячего кода. вот реально микропатчиком на несколько десятков байт можно поднять FPS в разы иногда. потому что очень часто игра сделана с упором даже не на 30, а на 20FPS (потому что постоянно сроки горят, и очень часто люди были без многолетного опыта разработки игр под эту платформу в этом задейстованы в качестве исполнителей, прям вчерашние студенты).

скорее всего там NROM, поэтому так что дело явно не в маппере.

не было желания улучшить оригинал? современные эмуляторы типа messen имеют вполне продвинутые дебаггеры (и всякие дополнительные фишечки о которых тогдашние разработчики не могли и мечтать, которые могут в профилировании когда).

В общем, патч мой в upstream так и не попал. В 2020 ему предложили альтернативное решение, которое он тоже все обещал, обещал принять и по традиции забил. Приходится постоянно патчить.

типичный итог. а разве когда-то было иначе? допинать патч до релиза - это самая настоящая full time job, а не просто пару строчек кода и емейлов отправить. печально что не только крупные и популярные проекты в этом погрязли, так и всякая относительная мелочь. видимо разработчики даже маргинальщины переросли свои беззаботный возраст в 20лет с хвостиком и теперь лишь тормозят прогресс проекта и не могут его тянуть так же как это было раньше. да и новых на их замену не находится.

n_play
()
Ответ на: комментарий от n_play

не было желания улучшить оригинал? современные эмуляторы типа messen имеют вполне продвинутые дебаггеры (и всякие дополнительные фишечки о которых тогдашние разработчики не могли и мечтать, которые могут в профилировании когда).

Честно говоря, я понял о чём ты. NES'овский вариант нормально работает в эмуляторе. А проект с которого я стянул ресурсы и подсматривал в код написан на JavasScript.

типичный итог. а разве когда-то было иначе? допинать патч до релиза - это самая настоящая full time job, а не просто пару строчек кода и емейлов отправить. печально что не только крупные и популярные проекты в этом погрязли, так и всякая относительная мелочь. видимо разработчики даже маргинальщины переросли свои беззаботный возраст в 20лет с хвостиком и теперь лишь тормозят прогресс проекта и не могут его тянуть так же как это было раньше. да и новых на их замену не находится.

Я еще в пару проектов патчи отправлял, и вот среди всех QB мне показался самым странным. Хотя, пару мелких патчей туда все же приняли. Он не вливает даже ПРы которые прошли аудит. Пишет, что вот в след релиз это примет и потом молчит. И такая карусель там годами. В других проектах тебе сразу говорят — фича не нужна, не вписывается в идеологию проекта. Если автор не собирается её принимать.
А в QB он крутит карусель из пары раундов аудит-изменения и потом молчит.

urxvt ★★★★★
() автор топика
Ответ на: комментарий от urxvt

Хорошая работа!
Друг, а ты не хочешь помочь одному хорошему человеку (мне то есть:) на базе одного варианта лоадраннера чуть-чуть переделать, как было на Электронике-85 под ПРОС. Игра называлась Пещера или LR. Суть в том, что не одинаковые мужички там бегали, а 5 разных очень забавных чудиков. Реально, это лучший LR из всех, что я видел. вот такое.
Подробности, в чем затык, скину

Alphaer ★★
()
Последнее исправление: Alphaer (всего исправлений: 3)
Ответ на: комментарий от Alphaer

Да, давай рассказывай. Может что придумаем. Пиши на почту.

urxvt ★★★★★
() автор топика
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.