Расскажу об одной боли при разработке и проектировании ПО — преобразованиях данных между их схемами. Буду говорить о серверах, как наиболее наглядном и знакомом мне примере, но соображения можно распространить на весь софт.
Для демонстрационных целей местами может случиться некоторое преувеличение.
Рассмотрим простейший проект, этакий минимальный набор:
Данные, соответственно, ходят в обе стороны:
Сколько схем данных вы тут видите?
Как и собирался, полез разбираться с GraphQL.
Смотрел на него в контексте Python, поэтому возможны искажения — технология родилась, как и многое сейчас, в мире JavaScript — референсная реализация на этом языке сделана.
В комментариях ММОзговеда случилось обсуждение, которое затронуло по касательной такую штуку как значимость события для игрока. Вынесу оттуда свои соображения.
Продолжаю прототипировать свои идеи. Ожидаемо, первый блин вышел комом: и по срокам и по качеству. Однако получилось опробовать описанные ранее концепции, посмотреть что работает, а что нет.
Фактически, реализована база знаний для хранения метаинформации, GUI для её просмотра, пара агентов. И много нареканий к выбранному пути :-)
Поэтому попробую переосмыслить архитектуру Тарантоги.
Вопрос взаимодействия многопользовательских игр с этими явлениями интересует меня давно, в том числе и в контексте Сказки. Но сформировать чёткую позицию я так и не удосужился — ограничивался парой эвристик, которые облегчали жизнь. К сожалению, на эвристиках не всегда можно далеко уехать, поэтому пришло время эту позицию сформировать.
Предлагать идеальное решение не буду — сильно сомневаюсь в его принципиальной возможности. Вместо этого попробую выделить направления взаимодействия с проблемой.
Поскольку область большая и непроработанная, описывать направления буду разными способами: часть — высокоуровневыми соображениями, часть — декомпозицией на частные случаи. Где смогу, буду приводить примеры, но будут и места с вопросами и догадками. Сосредотачиваться на конкретном жанре также не буду — поговорим о многопользовательских играх во всём их разнообразии.
Эссе планирую использовать как справочник, поэтому буду его периодически обновлять. Если увидите ошибку в рассуждениях или упущенный аспект — пишите комментарии, обязательно исправлю.
Итоговый текст захватил куда больший кусок предметной области, чем я планировал. Фактически, текст можно переименовать в «направления работы с негативным игровым опытом на примере взаимодействия с ботами и твинками». Поэтому эссе может быть интересно прочитать, даже если конкретно боты и твинки вам не интересны.
И будьте осторожны, очень много букв.