Character Manager

Character Manager

Леонид Козарин
DeskChan с загруженным плагином character_manager на фоне IntelliJ IDEA
Свежий майский билд DC

Последнее время, в свободные от сдачи академических долгов часы, я пилил небольшой плагин для так называемого DeskChan Project. Ознакомиться с тем, что это за проект, и скачать последнюю сборку программы можно на сайте или в группе.

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

Дополнение от 28 мая: с тех пор функционал стандартного набора ещё больше вырос, но он до сих пор не предоставляет возможность создавать паки полноценных персонажей, поскольку скины находятся в одном месте, а фразы — в другом.

Итак, фишки плагина:

Как и стандартный менеджер спрайтов, он позволяет выбирать персонажа из нескольких. При этом персонажи должны располагаться в папке data/character_manager/characters. У каждого персонажа должно быть две папки: sprites (в которой должен быть как минимум файл normal.png) и phrases (как минимум — default.txt).

  • Поддержка кастомных спрайтов (до 4 штук: normal.png, night.png, morning.png и evening.png) и спокойно редактируемые любым текстовым редактором списки фраз (default.txt, day.txt, night.txt, morning.txt, evening.txt).
  • Изменение спрайта и набора фраз в зависимости от времени суток. Собственно, тут и раскрывается потребность в 4 спрайтах и 5 наборах фраз. Пример файла с фразами можно увидеть на скриншоте выше.
  • Периодические сообщения с настраиваемым интервалом (что дублирует плагин random_phrases и talking_system (дополнено), но использует не набор кучи фраз из Интернета, а позволяет тебе вручную редактировать фразы в текстовых файлах¹) и сообщения при клике по персонажу.
  • Небольшой аналог тамагочи. У персонажа есть сытость, удовлетворение и "насыщенность кислородом" (дополнено). На разговоры он тратит характеристики, а с помощью функций кормления, "шаловства", гуляний и прочих (дополнено) можно их повышать.
  • (добавлено в версии 1.1.0) Наличие звукового сопровождения! Теперь в папке персонажа могут находиться ещё две папки: sound и music. В первой могут находиться, в свою очередь, два файла: click-reaction.mp3 (проигрывается, когда ты кликаешь по персонажу) и petting-reaction.mp3 (проигрывается, когда ты ласкаешь его/её мышкой). Во вторую же можно кидать любые MP3-шки, которые будут проигрываться при выборе в меню пункта Послушать музыку/Listen to music.
  • Как и в самом приложении, поддерживаются русский и английский языки, но только для фраз.
¹ На самом деле talking_system тоже позволяет задавать собственные наборы фраз, но делать это нужно либо в формате XML, либо в Google Docs и скачивать, например, через меню отладки специальной командой. По сильному настоянию автора этого плагина, вероятно, в скором времени может появиться форк character_manager под эту систему и её формат.

Скачать плагин можно:

Последняя версия:
Старые версии:
Всегда актуальная, но порой не совсем стабильная:
  • особо прошаренные могут склонировать ветку из репозитория и собрать самостоятельно.

А распаковывать всё это дело (ну кроме последнего варианта, само собой) нужно в папку с программой. В принципе, сам плагин из папки plugins может находиться где угодно (дополнение: но автоматически при запуске грузятся всё равно только плагины из этой папки, так что смысла держать их в другом месте нет), но спрайты нужно всё равно скинуть в %DeskChan%/data/character_manager/characters.

Для корректной работы версии 1.1.0 нужна версия DeskChan не ниже 0.1.7!

Большей частью этот плагин создавался с познавательно-обучающей целью, а также для личного использования во славу Чоколе. Хотя может кому сгодится и в качестве ещё одного примера работающего плагина.

Плагин вполне может быть сырым и содержать кучу ошибок, так что кидайте баг-репорты и будем исправлять. Я всё-таки второй раз в жизни на Java писал.

Хе, ну к маю-то я, надеюсь, что-то начал смыслить в Java и Groovy. Хотя проблемы с архитектурой плагина идут ещё с тех мартовских деньков.


Немного о структуре файлов с фразами

Общие фразы для всех времён суток задаются в файле default.txt. Остальные фразы загоняются в файл для соответствующего времени суток.

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

Затем идут остальные секции, которые задаются ключом из двух составляющих: действия и условия. Ключи прописываются в квадратных скобках, а составляющие разделяются двоеточием. При этом и действие, и условие может быть упущено.

Список возможных действий:

  • WELCOME — приветственные сообщения, одно из которых будет отображено при загрузке плагина
  • CLICK — сообщения, отображающиеся при клике по персонажу.
  • FEED — сообщения, отображающиеся при выборе пункта меню Покормить/Feed.
  • NAUGHTY — сообщения, отображающиеся при выборе пункта меню Пошалить/Do naughty things.
Действия, введённые с версии 1.1.0:
  • WALK — сообщения, отображающиеся при выборе пункта меню Погулять/Walk outside.
  • PLAY — сообщения, отображающиеся при выборе пункта меню Поиграть во что-нибудь/Play some game, если не был задан список игр, ассоциированных с персонажем².
  • WATCH — сообщения, отображающиеся при выборе пункта меню Посмотреть аниме/Watch anime, если не был задан список ссылок на аниме, ассоциированных с персонажем².
  • PET — сообщения, отображающиеся, когда ты гладишь свою няшу! Ну, в смысле водишь по ней курсором.

Список возможных условий:

  • FED — сообщения отображаются, если персонаж накормлен выше нормы.
  • HUNGRY — сообщения отображаются, если персонаж голоден.
  • SEXUALLY_SATISFIED — сообщения отображаются, если персонаж удовлетворён выше нормы.
  • SEXUALLY_HUNGRY — сообщения отображаются, если персонаж жаждет секса.
Условия, введённые с версии 1.1.0:
  • WANNA_GO_OUTSIDE — сообщения отображаются, если персонаж хочет гулять.
  • WANNA_SIT_HOME — сообщения отображаются, если персонаж уже пресыщен кислородом и хочет посидеть дома.
² С версии 1.1.0 можно в папке персонажа размещать файл info.txt, в котором могут быть две секции: GAME_STEAM_IDS и ANIME_WEBSITE_URLS. Под первой пишутся номера игр в Steam, связанных с персонажем, а под второй любые URL-адреса на сайты с аниме или вообще сразу на конкретные страницы с аниме, из которого персонаж родом. При выборе пунктов меню, описанных выше, выбирается случайный элемент из этих списков. Если же они не заданы, то выдаётся фраза (если она, опять же, есть).

История минорных изменений:

  • В версии 1.1.1 исправлено поломанное в предыдущем обновлении переключение фраз в зависимости от времени суток, а также добавлено больше звуков.


Что дальше?

Дальше я планирую расширять функционал DeskChan, но уже в рамках других плагинов. Примерный список желаемого мной функционала таков:

  • Таймер. Must-have для жильцов квартир с газовыми плитами и убитой электропроводкой. Ставишь ночью чайник без свистка, уходишь к компьютеру, просишь свою няшу напомнить тебе о нём через 5 минут и не выжигаешь бедный чайник.
  • Заметки. Зачем отвлекаться и идти в Google Keep, OneNote, Evernote или что ещё, если твоя няша ждёт твоего внимания прямо перед носом? Тем более, что DeskChan позиционируется как кроссплатформенная программа и в будущем будет приложение, как минимум, под Android. Если что, разыскиваются разработчики с Маками для создания приложения под iOS.
  • Планировщик. Календарик с задачами, которые должен заполнять и выполнять, чтоб хоть чего-то добиться в жизни, ленивое ты существо.
  • Ресивер сообщений из ВК, Телеграмма и т. п. Простенький аналог панели уведомлений Windows для просмотра входящих особщений и написания небольших ответов.
  • Интерпретатор плагинов на Python. Ну не всё же на Groovy писать?

Пока всё. Со временем список будет расширяться и, я надеюсь, закрываться ссылками на готовые плагины. По срокам и порядку реализации сказать ничего не могу, ибо есть ещё учёба, другие проекты, да и я вполне опять могу впасть в очередную депрессию, когда опускаются руки и ничего не хочется делать.