Вчера вечером в игру было залито небольшое обновление:
1) В магазинах под валютой теперь говорится, сколько у вас данной валюты (и скидочной, если есть). Вот над чем я работала целую неделю, да!
2) Оптимизация, о которой никто не просил: у людей с большим инвентарём теперь будет меньше тормозить магазин, а значит, и у всех. Я знаю, что в предыдущем опросе недовольных не оказалось, но мне кажется, что игра просто приучила всех, что 15 секунд загрузки страницы - это не тормоза... %)
3) Отдельные лоты магазинов теперь могут иметь ограничение на руки в день. Это будет использоваться для всех ивентовых, акционных лотов для улучшения баланса шоппинга %)
4) Админы получили небольшой инструмент в форме редактирования магазинов, который сделает работу с ивентовыми магазинами проще.
Багоопасность: если я где-то напортачила, то у вас могут не покупаться некоторые лоты некоторых магазинов. Может не отображаться кнопка "купить" или покупка вываливаться на белый экран... В общем, проявите фантазию %) Но на первый взгляд ничего не сломалось.
А теперь о разработке маленьких фишек... Около недели назад мы посовещались и решили делать маленькую фишку - то самое ограничение на руки в день для лотов. Как понимаете, основная логика проста как палец: при покупке проверить по логам за сутки, не покупал ли игрок уже достаточно этого лота, и тогда отказать. Но это не единственное, что надо сделать. Также надо сделать: отображение для игрока, что лот ограничен; поправки в форму покупки (а не просто сообщение об ошибке, если игрок посмел купить слишком много); отображение в админке; возможность отредактировать параметр; а также надо проверить, что запросы в базу данных, связанные с новой фишкой, будут оптимальные. Например, если в магазине несколько лотов с ограничением, они должны проверять логи игрока единым запросом, а не каждый своим. Поэтому одновременно пришлось доработать несколько недоработок в движке, оставшихся от Кэт из прошлого (зато мы избавили от той же работы Кэт из будущего %).
А вот пример, почему отчёты о разработке не получится публиковать ежедневно.
Сейчас я работаю над тем, чтобы вернуть аксессуары в бокс. Они были временно отключены в целях оптимизации, так как даже с учётом кэша (сохранения готовых результатов обработки) генерировать страницу, описывающую все аксессуары гигантских боксов очень накладно. Следовательно, нужен постраничный показ и кэширование аксессуаров.
И для начала надо решить, как это архитектурно будет сделано... Например, сейчас ключом кэша является "код + число" (например, код "аксессуары в боксе" и число - номер игрока). Теперь, значит, понадобится код + число + ещё число? или присовокупить номер игрока к коду, чтобы не трогать архитектуры кэша? И ещё около пяти таких архитектурных вопросов.
Далее - претворение в жизнь этих решений. И может так статься, что какие-то из них всё же не решают проблем или, наоборот, решают слишком много и требуют слишком долгого времени разработки. Так что придётся вернуться на шаг раньше и придумать что-то другое. Основной вопрос обычно - делать быстро, но расправиться с сугубо одним вопросом (так называемый monkey patching), или делать вдумчивей и получить решение для всех аналогичных ситуаций (для этого тоже есть плохое слово - overengineering).
Так что сообщу о результатах через несколько дней!
1) Ещё вчера исправлен баг, что в магазинах нельзя было продать или купить больше 99 единиц товара. К настоящему моменту до кэша всех браузеров должно дойти это исправление.
2) Добавлены переводы свойств неофитов и одно новое свойство.
3) Админам возвращена способность загружать иконку покемона. Поскольку иконки - это часть общей системы сайта, а не только игры, они обрабатываются немного иначе... и при обновлении счастья функция случайно была потеряна. /смотрит на запись непосредственно под данной/ вижу, баг исправлен "как раз вовремя". Или даже без кавычек.
Думаете, я каждое утро исправляю по несколько багов? Отнюдь >_< Просто это были самые простые баги из наиболее важных. Среди важных остались теперь только баги и пожелания, которые исправляются не так просто... Ждите продолжения в следующих сериях %)
Напоминаю, что у меня ещё как-то есть время заниматься багами и писать данный отчёт, но не следует задавать вопросы в комментариях или писать длинные обращения: я лишь немного успеваю пробежаться глазами в течение дня.
Посовещавшись в мебели, мы решили, что разработке сайта не хватает прозрачности, как серьёзной игре с описанием апдейтов... %) не знаю, где именно будет висеть ссылка на свежую запись дневника разработчика, но где-то будет. Я буду писать о том, какие мелочи делаются по сайту и игре. Работа ведётся по утрам и выходным, если звёзды не складываются иначе. К сожалению, я не могу также отвечать на вопросы в комментариях, поскольку времени и так в обрез -_-
Сегодня были исправлены баги:
1) Профессор больше не выдаёт несчастных покемонов, так что вам больше не удастся полноценно представить себя Эшем и его недоверчивым Пикачу.
2) При применении переименователя или табулы расы игра больше не переходит на белый экран - теперь на профиль покемона, где можно выбрать соответственно имя или характер. Раньше это происходило, потому что на безымянного или бесхарактерного покемона нельзя было применять предметы, и белым экраном страница использования предметов отказывала в таком праве.
3) В админке редактирования экспедиций несчастные авторы экспедиций не могли удалить требование иметь предмет для записи в экспу. Оказалось, что бага нет, нужно просто ввести количество 0 предмета - "очевидно" же.
Спасибо за внимание - подписывайтесь, ставьте лайк... %)
В выпуске дневников разработчика была большая пауза в связи с авралом на работе и тем, что активно велась разработка первоапрельского приключения, а затем и последующих изменений.
Для тех, кто пропустил: первоапрельское приключение (на самом деле оно вышло 3 апреля %) было экспериментом по использованию в тренерской игре проекта на RPG Maker MV. Полный отчёт по разработке можно почитать здесь. Эксперимент удался! Хотя работа на этом не закончена: мало просто запустить мейкерскую игру в окне браузера и немного связать её с экспедициями. Игры на RPG Maker по своей природе - клиентские, то есть браузеру игрока доступны все данные, и набрав пару команд в консоли браузера, можно узнать любой секрет, терепортироваться в любое место, закончить приключение с любой концовкой… Первоапрельское приключение было развлекательным, поэтому ему подобное было не страшно. Если кто-то решит пропустить приключение и сразу забрать награду, Арзевс ему судья. Но для более серьёзных игровых приключений это недопустимо.
Значит, для того, чтобы интегрировать мейкерские приключения в тренерскую игру, нужно сделать их зависимыми от сервера. Это масса мелких изменений. Вместо подгрузки сразу всех данных - постепенная, и только когда сервер считает, что игроку можно смотреть следующую карту, следующий диалог, следующий бой… Это отслеживание прогресса игрока в приключении, чтобы нельзя было открыть дверь Б, не открыв дверь А. Это сохранение прогресса игрока, если тот закрыл вкладку или у него вырубили свет. Это макросы для авторов приключений, чтобы они не вручную указывали, какая часть игры доступна на каком этапе…
Кроме того, приключения должны быть связаны с тем, кого игрок записал в экспедицию или кто у него в команде. Для начала, у всех официальных покемонов, которые могут попасть в приключения, должна быть анимация ходьбы! Сама графика есть (как официальная, так и фанатская), но нужно привести её к нужному формату и загрузить на сайт. Приключения должны хотя бы минимально учитывать способности покемонов, которые у тренера с собой - хотя бы на уровне “покемон с Cut может срубить дерево”.
Как многие знают, за первоапрельским приключением последовало тестирование нового механизма чата - с мгновенными сообщениями и объявлением “такой-то вошёл в чат”. В действительности тестировалась система постоянного соединения пользователя с сайтом по технологии WebSockets, которая будет использоваться для серверной зависимости приключений. Прежде, чем интегрировать приключения, необходимо всячески обкатать эту технологию. Если сервис, обслуживающий приключения, будет падать или не работать у половины пользователей, грош цена такому обновлению!
В результате мой план разработки сейчас такой:
[list=1]
[*]Сделать новый чат: он должен выглядеть как старый чат, но работать быстрее и иметь некоторые новые возможности (в частности, ботов - например, для каналов типа “Клуб анонимных покемонов”).
[*]На основе технологии чата сделать серверную часть приключений.
[/list]
Но помимо моего расписания есть ещё расписания остальных в кресле. В частности, для многих они предполагают экзамемы в конце весны - начале лета. Без помощи авторов приключений (или если таким автором будут только я) богатого мира 2.0, конечно, не будет… Поэтому (а ещё потому, что я не успела сделать первый пункт про чат за майские) выпуск версии 2.0 откладывается. Чтобы не делать длительного прогноза, который может опять встретить неожиданные препятствия, сделаю краткосрочный прогноз: полагаю, новый чат увидит свет в течение месяца. Он почти готов, но сказывается усталость: у меня не находится сил доделать ворох необходимых мелочей. Но когда будет готово, это будет весёлая и удобная версия чата с ботами и поводами для разговоров %)
Чем вы можете помочь (если захотите):
Во-первых, делать приключения на RPG Maker MV гораздо интереснее, чем описывать текстом авторские экспедиции, которые у нас не хватает времени проверять… Рекомендую всем, кто когда-либо мечтал делать JRPG, познакомиться с этим движком. В нём можно сразу посмотреть приключение по мере работы, так что даже если мы совсем скиснем и сможем включить ваше творчество на Лигу, вы запросто выпустите его как самостоятельную игру.
Во-вторых, мне бы не помешала помочь с разработкой чата. Две головы лучше одной, а когда кода нужно написать много - то две пару рук тоже лучше, чем одна. Код чата можно посмотреть здесь (важно! папка с кодом чата относится к другой ветви движка, чем окружающий репозиторий: можно посмотреть, но не удастся запустить). Он почти не связан с основным движком, разве что использует его для визуализации шаблонов и получения данных.
Там должно быть навороченное такое графическое приключение… Его совместимость с браузерами должна быть высокой (даже с мобильными), но она не абсолютная -_- Лучше всего приключение должно работать на Хроме и ФайрФоксе последних версий на компьютерах; или в последнем Хроме на мобильном.
У меня висит вечная загрузка или выдаётся ошибка “failed to load”...
Навороченное графическое приключение также требовательно к количеству файлов, которые оно стягивает с интернета. Это и музыка, и графика… Ресурсы приключения были оптимизированы, насколько это было возможно во временнЫх рамках, но пользователи с медленным и обрывистым интернетом, вероятно, не смогут сыграть -_-
Сколько данных потребует игра? У меня дорогой или лимитный тариф интернета.
Много :( Может быть, до 50 Мб. Если у вас не настроено кэширование, то перезагрузка игры (обновление страницы) заставит скачать их снова. Рекомендуется играть с безлимитного интернета.
У меня иногда не играет музыка боя или какая-нибудь ещё музыка.
Музыка подгружается по мере необходимости. Это требует некоторого времени. Игра не отправляет запроса на музыку заранее, чтобы не скачивать лишних файлов.
У меня совсем не играет музыка в некоторых местах или по всей игре.
Музыка представлена в форматах OGG и (некоторые треки) MP4. Не все браузеры поддерживают эти форматы.
У меня не запускается и выдаёт ошибку “NO SPRITE FILE” или какую-либо другую.
Сообщите об этом, мы посмотрим, к какому покемону забыт графический файл.
Игра очень тормозит, не могу играть.
Это, конечно, не “Ведьмак”, но полноценный графический движок. Необходимость поддерживать зоопарк браузеров накладывает отпечаток на производительность. Можно порекомендовать закрыть лишние вкладки и программы или хотя бы перезапустить некоторые программы - такие как Скайп и собственно браузер, так как они имеют утечки памяти и со временем оккупируют ресурсы компьютера.
Я застрял и не знаю, как пройти дальше.
Приключение очень короткое, и мест, где есть возможность что-то пропустить, очень мало. Попробуйте посмотреть в пределах экрана, какие места вы могли не заметить, или поспрашивайте в чате.
Почему я не могу сразиться? Мой чаризард-сотник завалит всё что там может выставить этот жалкий баг-катчер!
У баг-катчера генесект. 200-го уровня. А у девчушки - фэйри-арзевс. А в траве сидит мьюту. Даже двое, и оба в мегаформах. Пока вы будете с ними сражаться, лугия улетит. (Если серьёзно, мы не успели настроить боевую систему под покебои.)
Возможно ли запороть приключение или совершить непоправимый выбор? Не получить награду или получить не ту? Ждать неделю до следующей попытки?
Нет, всё очень просто и линейно. Это скорее интерактивный аттракцион, чем игра.
Я пропустил диалог и хочу переиграть, чтобы прочитать его!
Если вы ещё не закончили приключение, просто обновите страницу (игра предупредит вас, что придётся начать с начала, но ведь вы этого и добиваетесь). Если же закончили, то подождите, пока это тестовое приключение появится в свободном доступе чуть позже.
Я вроде должен получить модного и клёвого дитто, где же он?
В результате экспедиции вы получили один из предметов. Используйте его (кликните на него, находясь в профиле любого своего покемона) - и вы получите дитто.
Я прошёл экспедицию три раза, почему только один дитто?
То, что её можно переиграть, не означает, что можно получить награду три раза %)
Я не успеваю или не могу пройти приключение… Выходит, я ничего не получу, когда экспедиция закончится?
Вы получите награду по умолчанию - одну из форм дитто.
Следующий за мной покемон не похож на того, который у меня в игре.
Мы постарались обеспечить сходство, но могли что-то не учесть. Но по крайней мере вид (скитти, майтена... ) должен совпасть.
Почему можно записать такой странный набор покемонов, да ещё и не шайни?
Эти виды мы успели подготовить и только не-шайни спрайты.
Почему я играю мужским (или женским) тренером? Я не такой (такая, такое)!
Этот пол указан у вас в профиле Лиги. Если пол не указан, то по умолчанию используется мужской персонаж. Если вы исправите пол в профиле, то обновите страницу с игрой и всё встанет на свои места.
А я открыл консоль браузера и читерю!
Ни в чём себе не отказывайте %)
Вообще 1 апреля давно прошло.
К сожалению, про переезд сервера была не шутка, а настоящий такой квартирный переезд с грузовиком и нескончаемыми сборами. Так что уж как успели...
Вся лиговская игра будет такой?
Пока не ясно: это эксперимент. У такого формата есть как очевидные преимущества, так и менее очевидные недостатки - хотя оговорки выше про системные требования к интернету, браузеру и компьютеру.
Покеигра в браузере! Что это вообще было? Как??
Это был RPG Maker MV при поддержке плагинов талантливых авторов, таких как Yanfly и Hime, а также рипперов спрайтов, трудящихся на сайте Spriter Resource. А также, разумеется, при совместных усилиях команды Лиги. Не на правах рекламы, а на правах человека, который пользуется линейкой RPG Maker где-то с 1999 года, крайне рекомендую посмотреть этот движок всем, кому может быть интересно разрабатывать свои игры в стиле JRPG. Его последняя версия, MV, считает браузер своей родной средой, и игры оттуда проще всего запускать именно на веб-страницах.
Одна из вещей, которые многие в модерации игры и среди пользователей ждали - это индивидуализация покемонов. Пусть покемонов будет меньше, но каждый будет особенным. Пусть сотни записей будут в дексе, а в команде, инкубаторе и боксе - персонажи с историями, которых может и не так много, но тебя с ними связывает фантазия.
Соответственно, в 2.0 добавляются параметры покемонов помимо технических (свойство, уровень) и косметических (спрайт, цвет). В самом рудиментальном виде это уже сделано - у покемонов есть характеры, и их больше, чем в играх, где характеры являются просто игровым механизмом. Но 2.0 пойдёт дальше.
У покемонов будут черты: их пунктики, бзики, увлечения, умения, мечты, обстоятельства, следствия прошлых переживаний. Например, взяв покемона несколько раз на уборку музея, у него можно будет найти новую черту “чистюля”, или, наоборот, “брезгливый”, или “интерес к археологии”, или “аллергия на пыль”, или… В общем, смотря что удастся напридумать автору экспедиции. Черты в свою очередь будут влиять на дальнейшую игру. Не берите покемона с аллергией на пыль снова убирать музей! Берите того, который увлёкся археологией.
А чем это, собственно, грозит? Уменьшенным шансом награды? Да, но… также ухудшением жизнерадостности (счастья) покемона и его отношения к вам (доверия). Несчастливый, не доверяющий вам покемон - большие проблемы. Вспомните начало сериала - а это всего-то электрический грызун! Такой покемон едва ли поможет вам в экспедициях и может отказаться ходить в те, которые ему не по душе. А также его нельзя обменять - разве что, если дела станут совсем плохи, отдать в приют. Надо сказать, что следующему тренеру придётся считаться с обидой покемона на человечество, а обиде на старого тренера сохранится даже когда новый завоюет его сердце (так-то - дружба будет измеряться не только к нынешнему хозяину, но и к другим игрокам и различным покемонам).
Чтобы поддерживать хорошие отношения с покемоном, нужно уделять ему время и узнавать его скрытые черты. В ход идут аксессуары и еда, подходящие по характеру не прочитанные покемоном книги (раз уж наши покемоны поголовно грамотные), нравящиеся экспедиции, компания близких по духу покемонов и, наконец, общие с тренером переживания и события (спасти друг другу жизнь, помочь покемону достичь его мечты).
Звучит красиво? Но это, если честно, пока лишь слова, потому что готового документа о том, как всё это устроено и что понадобится добавить в нашу сотню экспедиций и пару сотен предметов, ещё нет -_- Кроме того, нужно учесть и то, насколько отягощает такая система. Кому-то нравится проводить время с покемоном-тамагочи, подыскивать ему подходящую пищу, интересоваться неожиданно образующимися после экспедиций свойствами - а кому-то это бесполезный труд. А если я уехал в отпуск в глухую деревню без интернета - все покемоны на меня обиделись и разбежались? А если я хочу пикача как у Эша, а мне попадаются всё жеманные да кроткие, любящие плести макраме и боящиеся темноты? Что если моя эрудированная воспитанная драгонитка сотого уровня, второпях отправленная не в ту экспедицию, вернётся из погони по канализации с чертами “грязнуля” и “хулиганка”? Можно сказать, что такова жизнь - люди не всегда меняются как нам хочется - но персонажи в той же мере воображаемые “люди”, в какой - объекты собственности нашего воображения.
Все этим моменты требуют продумывания, чтобы создать интересную, а не раздражающую систему.
В прошлом выпуске я рассуждала об инструментах для авторов и модераторов - как важно, чтобы они были удобные, и как на них уходит львиная доля работы, хоть обычные игроки эти инструменты в глаза не видят.
Ввод контента не может начаться раньше, чем будут готовы инструменты. Можно, в принципе, начать писать контент заранее, на бумажке и в Гуглодоках, но это сопряжено с трудностями: например, можно не угадать с техническими возможностями воплотить задуманное. С иви-приключением так и произошло - это одна из причин, почему разработка задержалась и занята так много времени за кулисами. Из опасения, что так случится, или просто потому что бумажка - не удобный инструмент, который не позволит сразу посмотреть контент в действии, никто обычно контент заранее не пишет.
Значит, если инструменты будут готовы к середине мая, то у авторов будет около двух недель, чтобы ввести азы игры 2.0 - если мы хотим успеть к желаемой дате конца весны, конечно. Некоторые системы игры не изменятся (экспедиции останутся экспедициями, диалоги только расширят функционал) и старые инструменты будут пригодны, но увы, чтобы создать цельный игровой опыт, они не надёжнее бумажки - точно так же не позволят заранее посмотреть, что будет получаться.
О чём бишь я? Версия 2.0, когда она выйдет, должна быть интересна и играбельна с небольшим количеством контента. Написать отдельные приключения для 720+ видов покемонов мы не сможем даже командой втрое больше, за втрое больший срок. Значит, хотя основной игровой процесс не будет такой примитивный, как “вытащи яйцо из лабы раз в день”, он всё-таки не расскажет о каждом виде покемона новую историю.
Начальный контент 2.0 будет экономный. Самое экономное - это “высокая трава”. Основные покеигры не снабжают встречи в высокой траве какой-либо более разветвлённой историей, чем “Вы в локации X, сейчас погода Y, вы видите покемона Z”. Такими будут большинство встреч с покемонами в 2.0 в конце весны - начале лета, и это само по себе уже потребует немалой работы, чтобы распределить всех ожидаемых покемонов по соответствующим локациям и экспедициям, с разумными шансами их встретить и условиями появления (типа лапрасов, которые любят гульнуть в пятницу вечером, как завещали GSC).
Встречи с некоторыми покемонами будут снабжены дополнительными историями. Какие-то - типовыми (“Встреча с хищником в ночном лесу” - подставьте майтену, хаундума, скептайла...), какие-то - индивидуальными (“Озеро дратини”). Сколько таких историй будет - говорить пока рано, всё зависит от времени готовности инструментов, обстоятельств и самочувствия участников кресла. Возможно, конец весны не такое уж хорошее время - сессии, экзамены… С другой стороны, если мы схалтурим, никто не заметит! %)
Кроме того, понадобится ввод контента для “персонажки” - системы индивидуализации покемонов и их отношений (дружбы), без которых все эти танцы вокруг историй встреч с покемонами бессмысленны. Об это в другом выпуске…
P.S. В процессе обсуждения Хоук предложил замечательную идею - открывать мир игры постепенно, начиная с Канто. Это не означает, что сначала будет доступно только первое поколение - в римейках в Канто живут покемоны из самых разных поколений. Но локации и сюжеты поначалу будут посвящены реалиям именно этого региона и будут происходить в нём.
Почти любая фанатская игра - это скорее мечта об игре, потому что фантазии много, а сил, времени и умения гораздо меньше. В прошлом выпуске я рассказала о паутине дорог и экспедиций, в высокой траве которых водятся тучные стада редких покемонов, некоторые из которых - особыми событиями и диалогами.
Вопрос в том, кто будет всё это делать, как скоро и в каком объёме. Создание контента - не такая уж простая вещь, даже если в голове воображаешь сотню сюжетов и полста локаций.
Исторический экскурс. Когда в игре не было экспедиций, “контентом” были только конкурсы, турниры и ивенты (раздачи). Когда появились экспедиции, то они стали контентом. Каждая экспедиция при этом создаётся из завязки, нескольких текстовых описаний, правил выпадения, критериев успеха и наград. Это требует совместных усилий творческого автора, технаря, литературного редактора и “сил баланса”. При этом баланс приходится отслеживать у совокупности всех экспедиций, а не просто в рамках одной. Также требуется отслеживать общую интересность, потому что если картина экспедиций и сезонов приестся, всем станет скучно (авторам тоже).
Когда в игре появились диалоги, то возможностей создания контента стало больше, но и труда для создания этого “контента нового уровня” тоже понадобилось больше. Один диалог - это гораздо больше текста, отслеживания связей и даже взвешивания - справедливо ли то или иное развитие, может ли здесь игрок своими силами догадаться, как как правильно отвечать (и должно ли быть это самое “правильно”), или мы даём недостаточно информации.
Наши планы на 2.0 похожи на постепенное создание полноценного игрового мира… Эта мечта, безусловно, нами и движет. Возможно, даже не как конечная цель, а упоение от добавлшения ещё одного кусочка географии и истории воображаемой реальности. Но это отнюдь не просто, когда требуется поддерживать играбельность мира, а не только писать по порыву сердца.
Всё это не значит, что создание хотя бы минимального играбельного мира - недостижимая затея. Есть же сейчас игра с сотней экспедиций, достаточная, чтобы вдохновить многие рисунки и ряд рассказов! Но многое здесь зависит от инструментов и игровой системы в целом.
Чтобы создать иви-приключение, Симозз использовал блок-схемы draw.io для отслеживания переходов как в диалогах, так и между экспедициями. В админке самой игры такого инструмента сейчас нет, поскольку готового решения мне найти не удалось, а писать такую вещь с нуля - я просто не того уровня специалист. Впрочем, если бы не было draw.io, была бы бумага с карандашом. Но всё же это затрудняет создание разветвлённых приключений для людей, не столь увлечённых и системно мыслящих, как Симозз. Равно как и затрудняет создание приключений командой: если бы подобная блок-схема была прямо в админке Лиги, то над приключением готовы были бы работать несколько авторов, и мы обнаружили бы многие просчёты раньше, чем они случились с игроками.
Отслеживание баланса представляет даже бОльшую проблему. Если редкая конфета выпадает в экспедиции, которая случается не чаще раза в неделю, то это мало конфет… Но если таких экспедиций двадцать - то каждый день можно добыть по две конфеты, и это уже много конфет. Никакой инструмент не отследит подобные дыры самостоятельно, ну разве что нейросеть Гугла. Хотя инструменты по статистике текущего контента и наград за прошлые периоды могли бы помочь админу-человеку убедиться в существовании дыры или заметить аномалию и найти её причину. Сейчас же во многом приходится полагаться на интуитивное понимание ситуации в игре.
Чтобы решить упомянутые выше проблемы, версия игры 2.0 должна соблюдать следующие принципы:
Игровые механизмы или же инструменты не должны допускать лёгкого обрушения баланса из-за недосмотра. Авторы контента не должны всё время волноваться, а не дают ли они слишком мало или слишком много. Как этого добиться - вопрос ещё не закрыт… Правила игры должны либо “самоподдерживать” баланс (так работают “тиры” в Pokemon Showdown), либо сбалансированность не должна быть так уж важна для игрового процесса (так работает World of Warcraft); либо инструменты должны быть идеальными и совершенно прозрачно доносить игровую картину (боюсь, это слишком много работы по программированию - это пожелание можно выполнить лишь частично).
Существующий контент должен быть распределим по меткам и категориям (например, архив). Также нужны примечания от модерации, для модерации, типа “Включать только весной!”.
Инструменты должны поддерживать удобное и совместное редактирование прямо на сайте. В том числе одни формы редактирования должны быть предназначены для технарей, другие - для лириков…
Заметьте, всё это инструментарий, совершенно невидимый обычным игрокам (кроме пользовательского контента, но это тема отдельного выпуска), однако требующий львиной доли программистских услий. Эти фишки - бутылочное горлышко: без них контент, и составляющий собственно игру, будет скорее вымучиваться авторской командой, чем создаваться по воле сердца. Практика показывает, что как бы хорошо ни была запрограммирована игровая логика, неудобство админских инструментов (или их отсутствие! вынуждающее делать ряд вещей “через Кошку”) гарантирует, что никто из игроков никогда плодов этих старий не увидит… И наоборот: удобные, приятные инструменты превращают заполнение игры контентом в процесс не менее увлекательный, чем сама игра после этого - для пользователей.
(Да, я начала новую нумерацию, которую мне будет проще запомнить %)
Обычно я пишу в дневнике технические подробности, и займусь этим в следующем выпуске... А пока: животрепещущий вопрос - о главном отличии 2.0. Сразу оговорюсь, скорее всего я не смогу отвечать в комментах, потому что с работой на работе, работой над сайтом и отдыхом после всего этого банально нет времени...
Есть три способа распределять ценности в онлайн-играх: за мастерство (лучше всех стреляешь и прыгаешь), за упорство (дольше всех качался) и за удачу (выбил лут с шансом 1% ). Мастерство можно также поделить на навыки (моторика, логика) и знания (наизусть знаешь 720+ покемонов и их статы). Ещё можно просто раздавать ценности всем, как ивентовые раздачи %) В общем, сейчас наша игра преимущественно состоит из удачи и немного - из мастерства. Для сравнения - покеигры из основной серии преимущественно раздают ценности за упорство и мастерство (в обоих значениях). И мечтаем мы, конечно, примерно о такой же игре, как официальные покеигры, только живее и глубже...
В общем, главная причина, почему хочется перейти на 2.0 - и почему это именно переход, а не постепенное внедрение фишек в игру - это раздача ценностей за упорство и знания вместо удачи и знаний. Сейчас, чтобы получить покемона Х, обычно нужно ежедневно ходить в лабу или искать тренеров, готовых к обмену. Бойцам турниров, талантливым авторам и модератором доступны и другие источники, но они редкие и ненадёжные (нельзя предсказать, что именно покемон Х будет призом на следующем турнире).
В 2.0 планируется, чтобы для получения покемона Х нужно было сходить в места обитания покемона Х посредством экспедиции, встретить его в высокой траве посредством диалога и при удачном завершении кинуть покебол. (К сожалению, боевой движок игра пока что не потянет.)
Ещё одна причина, почему хочется эту фишку - это избавление от сертификатов. Их никому не нравится ни запрашивать, ни проверять, и ни одна другая игра в инете этого не требует. Существует эта система исключительно чтобы самым эффективным способом игры не был выпас тысячи клонов. В играх на удачу со свободным обменом это всегда самая лучшая стратегия - поэтому в современных играх так редко встречается свободный обмен. Но если для получения искомой ценности нужно 10 минут смотреть в игру, то становится всё равно, на каком аккаунте будешь это делать - клон перестаёт давать преимущество. Ограничение доступа к обмену становится не нужным, а лотерея ценностей прекращает быть основным их источником.
Некоторое количество удачи в игре останется. Скажем, если на дороге № 35 чаще всего встречаются нидораны, а реже - янмы, то как скоро вы стретите янму - зависит от вашей удачи (в реальной жизни, а не показателя в игре). Очевидно, если за день запустить 100 клонов, каждый из которых пойдёт в экспедицию по дороге № 35, то несколько из них встретят и поймают янму в тот же день, и её можно будет передать на основной аккаунт. Клоновод получит янму на 100 попыток раньше - читай, на 100 дней раньше - чем обычный игрок. Но нынешняя ситуация с лабораторией повторяться не будет:
1) Янма не такой уж суперпопулярный покемон - если какой-то ярый фанат янмы решит, что ему важнее "начитерить" её, чем поймать по чесноку, то остальные игроки не будут показывать на него пальцем и говорить "Вот у него янма есть! А у нас нет! Потому что баланса нет! Где справедливость?"
2) Также янма не очень уж редкий покемон, и с тем же успехом игрок мог бы найти янму в обмене.
Если речь идёт о желанном и редком покемоне, вроде иви, то он его появление в "высокой траве" должно происходить с помпой и амломбом, с событием, которое делает его необменным или труднообменным. Для труднообменности будет служить механизм "дружбы" (он же механизм счастья), что не позволит устраивать облаву из клонов на особо ценных покемонов, вроде лапрасов, которые появляются поплавать только вечером в пятницу. Ну а необменные покемоны - аналог “soulbound” в других ММО, и никого не должна удивлять эта особенность у самых редких покемонов, добываемых в приключениях и событиях, которые согласно миру игры происходят как бы только с вами.
Разработчик занимается поиском квартиры в новом городе. Оказывается, это отнимает если не всё свободное время, то все нервы точно -_- Одна радость: уж это точно временно.
Новая работа - это когда нет времени кодить, помогать с контентом или зависать в комментариях, зато есть время писать дневних разработчика %)
Разработческие планы: на выходных - сделать несколько дополниетльных фишек к диалогам, чтобы было удобнее на них делать интересные квесты (ключевое слово - интересные), а затем - отойти от разработки новых фишек и вернуться к модернизации движка, которая нужна, чтобы перевести на него весь сайт с творческими разделами и написать игру 2.0. Исключительно от устаревшего кода разработка такой простой вещи как диалоги затянулась на месяц вместо двух недель (но и оставлять игру без новых, нужных команде для простора творчества возможностей - тоже не годилось). Модернизацией я буду заниматься ещё около месяца, и надеюсь, что закончу за это время. Функциональных обновлений игры или сайта в это время не будет... Но зато не будет и новых багов.
Большое и каверзное обновление, над которым я работала с Нового года, а затем под переезд в новый город на новую работу, закончено... %) Надеюсь, команда сайта и я в том числе будем много его использовать. А пока надо отдохнуть от кода и наверстать остальные занятия.
Что именно за обновление? В него входят продолжения экспедиций, но не только.
Что происходит в тренерском мире? Он проходит мимо чёрной дыры и в нём замедлилось время? Палкия генерирует временную аномалию? Гипно держит участников экспедиции под гипнозом? Игра готовится ко введению монетизации с пропуском таймеров?!
Нет - это очень усталый, не рассчитавший свои силы персиан тормозит и не успевает к сроку накодить новую фишку. Лучше уж подождать, чем выкладывать наспех сделанное обновление, да и к тому же хоть одни выходные надо посвятить отдыху.
Сегодня в игре появилось мелкое обновление - отделы магазинов, чтобы обилие магазинов не загружало улицу. Сделать его было очень легко, и приятно показать что-то новое, тогда как создаваемый сейчас трудный сложный код ещё не скоро сможет изменить что-то на сайте.
Последняя неделя была посвящена не модернизации движка ради творческих разделов, а добавлении новых фишек в экспедиции, которые позволят более удобные и разнообразные игровые механизмы для авторов. Я не профессиональный программист (сколько бы я ни пыталась устроиться таковым), так что многое в сложной разработке для меня непривычно... Моя главная трудность здесь заключалась в параллельной разработке в нескольких ветвях репозитория. А именно:
1) Есть "модернизированная" ветка разработки, которая ушла далеко вперёд: там есть пространства имён, куча новых классов и понятий, файлы расположены значительно иначе, активно применяются корутины (прерываемые методы)...
2) Есть "фестивальная" ветка разработки, где я работала вместе с SergRaz'ом (спасибо ему!) над некоторыми фишками, которые были нужны для фестиваля.
3) Есть "игровая" ветка разработки, продолженная из фестивальной, которая должна отражать актуальное состояние игры (обновление игры до модернизированного движка не планируется до конца весны, иначе до творческих разделов мы не доживём)
4) И есть "основная" ветка разработки, бывшая единственной этим летом, от которой отпочковались все эти. В ней, однако, с тех пор накопился свой ворох изменений, разрабатывавших параллельно с фестивальной веткой и до модернизации, например, мегаэволюции.
При выливке обновлений я загружаю только отдельные файлы и их куски. Так, конечно, делать не надо: должна быть ветвь "производство", ветвь "разработка" и какие-то там ещё... Но поскольку я пока не работала в коллективе программистов, я не очень-то знаю, как надо делать, и даже чтение статей не застрахует от собственных ошибок. Сегодня около 4 часов ночи планируется выливка ещё нескольких фишек для экспедиций, но также мне нужно раздать оранжевящий предмет для Хэллоуина. А это две разные ветви! Можно было бы продолжить мои хирургические выливки, но лучше покончить с этим и сделать наконец две ветви: то, что сейчас в игре, и то, что готовится для модернизированного движка. Игровая ветка затем будет закрыта, а её доработки портированы (а не объединены) с модернизированной веткой, которая в конечном итоге станет основной. Модернизированная ветка, к счастью, не предполагает полного переписывания игрового кода, но оптимизировать и прояснить его позволит изрядно, так что портирование пойдёт на пользу.
А сейчас мне нужно пофайлово рассмотреть изменения после синхронизации основной и игровой веток и проверить, чтобы автоматические механизмы ничего не накосячили и не удалили. Такие вод закулисные сложности...
Последние полнедели я занималась не модернизацией движка, а обновлениями для экспедиций... Точнее, модернизацию движка они тоже заключают, но не ту, которая нужна для распаковки творческих разделов. Так или иначе, нужно сочетать текущие нужды и будущие. А ещё на днях вышел RPG Maker MV, и меня, как пользователя этой серии игровых конструкторов года эдак с 96, это очень отвлекало... %)
Ближайшие три дня, пожалуй, возьму передых от лиговского движка, чтобы хорошенько реализовать свои задумки для MV, устать от него и перестать об этом думать.