Рабочее название: KINGPIN Жанр: упрощенная стратегия, текстовой квест, настольная игра. Автор: Darchan Kaen Движок: RPG Maker MV Графика: с бесплатных хостингов картинок Интернета. Музыка: с бесплатных хостингов музыки Интернета (а именно — общедоступные композиции Checkie Brown). Звуки: RTP. Время прохождения: 10-60 минут Время выхода: 24.04.2021 (завершена) Версия: 1.1.0
Описание:
Ваша маска: вы — Роберт Дуитмэн, бизнесмен средней руки, меценат, филантроп.
Ваша тайна: на самом деле вы — глава преступного клана «Треф», по ту сторону закона более известный как «Кингпин».
А еще вы скрываете от членов клана, почему именно сейчас вы начали бурную деятельность по переделу власти в Городе…
Особенности:
- Упрощенный клон игры «Reigns» в нуарно-криминальном сеттинге.
- Суммарно, 100 Карточек событий (большая часть из них открываются поэтапно).
- Атмосфера (но это не точно). Недостатки:
- Дичайший, неконтролируемый рандом и возможность проиграть при неверном выборе.
- Ограниченные сохранения и загрузка.
- Однообразный игровой процесс и, возможно, опечатки.
СпойлерСкриншоты:
СпойлерВидео:
Внимание!
Мышка не поддерживается!
СпойлерУправление:
Клавиатура:
Стрелка влево — выбор Левого варианта (или перемещение влево в меню).
Стрелка вправо — выбор Правого варианта (или перемещение вправо в меню).
Стрелка вверх — вызов меню Собственности и Кризисов.
Стрелка вниз — вызов меню Помощи и Выбора музыки.
Клавика ESCAPE — отмена выбора и вызов/закрытие меню.
Клавиша ENTER — подтверждение в меню/диалоге выбора.
Геймпад:
Стик/крестовина геймпада влево — выбор Левого варианта (или перемещение влево в меню).
Стик/крестовина геймпада вправо — выбор Правого варианта (или перемещение вправо в меню).
Стик/крестовина геймпада вверх — вызов меню Собственности и Кризисов.
Стик/крестовина геймпада вниз — вызов меню Помощи и Выбора музыки.
Y геймпада — вызов/закрытие меню.
B геймпада — отмена выбора.
A геймпада — подтверждение в меню/диалоге выбора.
Нейтральной полосе (rpgmaker.su) за моральную поддержку. Гаминатору (gamin.me) за конкурс. Арлекину за информацию о конкурсе (и баге). Веселому Роджеру — за вдохновение! Imaginatium - за убеждение (легкое, но решающее) сделать таки иконки Параметров, а не просто числа. Digre - за чудесный плагин, без которого данный проект был бы невозможен (да и другие мои проекты тоже)! Администрации rpgmakerunion.ru - за размещение игры и скриншоты, стянул у вас. =)
P.S:
Публикую здесь, так как Нейтральная полоса помогла созданию данного проекта - за что большое спасибо.
А также как лишнюю демонстрацию, что на мейкере можно делать не только РПГ.
И, так как проект разрабатывался специально для конкурса Гаминатор 2021, прошу не учитывать его в мероприятиях типа "Проект квартала / года".
Контент для данного проекта добавляться не будет.
Последний раз редактировалось Darchan Kaen; 20.05.2021 в 23:51.
Причина: Доофрмление
Небольшой бонус.
Если кому-то интересно, как сделать нечто подобное.
«Behind the scene», так сказать.
СпойлерBehind the scene:
СпойлерКратко:
1. Опция «Выход из игры» добавляется плагином «ExitGame» от Brian Howard.
2. Пункты игрового меню меняются плагином «YEP_MainMenuManager» от Yanfly.
3. В инвентаре типы предметов «Оружие» и «Броня» убираются плагином «Ruyk_AddTypeItem».
4. Для визуального отображения всех текстов (кроме Вступления) используется плагин «ScreenVariables» от Digre.
5. Иконки Параметров показываются стандартными командами мейкера для работы с изображениями.
6. 99% игры построено на использовании Общих событий.
7. Все Карточки событий подгружаются из внешних JSON-файлов.
8. Рандом генерируется в мейкере и применяется к Списку Карточек события, загруженному из внешнего JSON-файла.
9. Управление стрелками/геймпадом – тоже стандартное мейкеровское.
СпойлерПодробно про «сердце» игры – обработка Карточек событий из внешних файлов:
Для повышения гибкости разработки я решил не жестко прописывать все 100 Карточек событий в самом мейкере, а сделать систему загрузки «логики игры» из внешних источников…Ведь редактировать, по сути, текстовые файлы быстрее и проще, чем копаться в эвентах мейкера (для текстовой игры, во всяком случае). А так как MV (ну и MZ) основаны на JavaScript, то JSON для мейкера прямо таки родной формат.
Короче говоря, у меня получилось сделать простенький «интерпретатор», позволяющий читать JSON-файл и на основании его данных что-то в мейкере крутить – менять текст, картинки, включать/выключать Переключатели, добавлять/отнимать Предметы, выбирать следующий файл для открытия и, что самое главное, вызывать Общие события.
Логика работы такая:
1. Рандомом выбираем, какой файл открыть первым.
2. Открываем JSON-файл.
3. Записываем его в переменную, целиком.
4. Парсим поля JSON-файла из переменной п.2 , записывая их значения в отдельные переменные.
5. Анализируем каждое поле (простыми условиями мейкера, например) и на его основе что-то делаем – отображаем текст, изменяем переменные, Общим событием открываем новые Списки карточек...
6. Рандомом выбираем, какой файл открыть следующим.
7. Повторяем, пока по внутренним критериям игра не закончилась.
Сами JSON-файлы, в данном случае, делятся на два типа:
1) Списки, в которых находятся массивы с номерами Карточек событий.
2) Карточки событий, на основе которых меняется поведение игры.
Списки позволяют динамически подгружать номера доступных Карточек событий (и удалять их).
СпойлерКод скрипта для выбора случайного номера Карточи события из Списка:
let eventsCardsIndexesList = $gameVariables.value(21);
let radomCardIndex = Math.floor(Math.random() * (eventsCardsIndexesList.length));
let chosenCardIndex = eventsCardsIndexesList[radomCardIndex];
$gameVariables.setValue(31, chosenCardIndex);
СпойлерКод скрипта для удаления номеров карточек из массива Списка:
let eventsCardsIndexesList = $gameVariables.value(21);
let currentEventCardIndex = $gameVariables.value(41);
let currentEventCardIndexInList = eventsCardsIndexesList.indexOf(currentEventCardInd ex);
eventsCardsIndexesList.splice(currentEventCardInde xInList, 1);
$gameVariables.setValue(21,eventsCardsIndexesList) ;
(для случаев если Карточка события уникальная и не должна повторяться)
Это если тезисно.
Проект не зашифрован – кому интересно, открывайте и смотрите.
Код, написанный выше, объективно не оптимален и приведен как отправная точка.
Номера переменных в примерах скриптов меняйте на ваше усмотрение.
В целом, подход чтения внешних файлов для построения логики игры может быть удобен для игр текстового типа – текстовых квестов, визуальных новелл, настольных игр…
СпойлерПроцитирую себя же, что умеет маленький интерпретатор в данном проекте:
Интерпретатор "умеет" динамически:
- В целом, маппить данные файла в переменные мейкера;
- В частности - текст Карточки, текст ответов, влияние ее на Параметры (+, -);
- Отображать картинку Карточки;
- Добавлять новые массивы Карточек и удалять из текущего массива "Уникальные";
- Вызывать Связанные Карточки для создания последовательности событий (а-ля Текстовой квест);
- Включать / выключать переключатель мейкера;
- Вызывать общее событие мейкера;
- Давать / забирать предмет.
Ничего сверхъестественного, но это позволяет создавать события не открывая сам мейкер - а только редактируя внешние JSON-файлы.
Надеюсь, что-то новое вы узнали.
Спасибо что прочитали. =)
СпойлерВопросы к вам...:
...В процессе написания данного поста я понял, что работу с JSON-файлами и маппинг их на переменные мейкера можно чуть упростить, написав для этого плагин.
Так вот, вопросы:
1. Будите ли вы применять технику чтения JSON-файлов и нужен ли вам плагин для этого?
2. Нужно ли более подробное объяснение, как и что работает в проекте?
Также подчеркну, что технически можно не только читать из JSON-файлов, но и записывать в них информацию...Этакие "мета-данные", независимые от сохранения - и такой плагин, на запись, даже есть.
Последний раз редактировалось Darchan Kaen; 21.05.2021 в 00:05.
Причина: Добавил вопрос в Бонусе
Я играл и даже победил. Роджер похожее делал. Симулятор лорда тьмы.
Музыка приятная. Картинка симпатичная. Играть за босса мафии мне понравилось.
В целом, сделано не плохо, но к сожалению такие игры - не моё. Я имею ввиду рандом и карты.
================================================== =
Вообще, ты красавчик, пять проектов за пять месяцев!
Социальные закладки