Русский
Русский
English
Статистика
Реклама

Мета

Зачем мне психотерапевт?

10.12.2020 20:17:14 | Автор: admin
После терапии несколько лет мне захотелось пробовать то, что я раньше боялся. Например, в 2014 году я решил начать выступать. Но так как мне было страшно даже разговаривать с людьми, каждый раз перед выступлением всю ночь не спал мозг взрывался. Со временем мозг переобучился и привык, и теперь страх для меня вызов. Это воспоминания Ивана Замесина о последствиях курса психотерапии. Иван предприниматель и основатель сервиса подбора психотерапевтов Мета. Недавно он приходил к нам на подкаст Ничего такого, где рассказал зачем нужен психотерапевт, какие установки мешают начать терапию и что можно от неё ожидать. Мы под впечатлением написали статью на основе разговора.




О нашем собеседнике: Иван Замесин (zamesin) отвечал за продукт в Яндекс.Картинках, работал в chatfuel.com как продакт-менеджер. Сейчас Иван предприниматель: проводит курсы по продуктовому мышлению в IT-компаниях, например, Skyeng, Cian, HH.ru, Mail.ru, и развивает сервис по подбору психотерапевтов Мета, как его создатель. Мета это сервис, который помогает сделать первый шаг к психотерапии. Ведёт блог, где делится результатами работы сервиса.



Зачем нужна психотерапия?


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

В целом, у нас есть три вида работы с проблемами: психологическая, психотерапевтическая и психиатрическая. Они решают одни и те же задачи разными способами.

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

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

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

Утрированно эти три способа можно сравнить с ремонтом в квартире. Иногда достаточно поклеить новые обои и поменять диван, а иногда приходится восстанавливать всё после сильного пожара. Зависит от состояния.

Кто такой психотерапевт?


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

В российском законодательстве психотерапевтом называют врачей-психотерапевтов разных специализаций, психиатров и психологов с медицинским образованием.В Мета придерживаются международных стандартов, по которым психотерапевт должен иметь:

  • Высшее психологическое или медицинское образование по психиатрии.
  • 30 и больше часов супервизии (один из методов повышения квалификации) и не меньше 12 часов супервизии в год.
  • Больше 100 часов личной терапии.
  • Не меньше 500 часов дополнительного долгосрочного обучения в одном из направлений психотерапии, например, гештальт-терапии или когнитивно-поведенческой. При этом психотерапевт может стать психоаналитиком, если прошел подготовку в методе психоанализа.

Подробнее почитать о том, кто такой психотерапевт по версии Мета, чем он помогает и чем отличается от психиатров и психологов, вы можете в отдельной статье блога сервиса.

Зачем ходить к психотерапевту?


Например, в 2010 году у меня отжали бизнес. Я остался без бизнеса, но с психологической травмой. После того, как от неё избавился с помощью психотерапии, запустил Мета.

Психотерапевт поможет, если:

  • поменялся характер, появилась агрессия, раздражительность;
  • ничего не хочется делать, начинать дела и работать;
  • часто меняется настроение или как-то иначе реагируете на привычные раздражители;
  • тяжело сосредоточиться;
  • плохой сон, аппетит или наоборот, вы переедаете.

С любой из этих проблем можно обратиться к специалисту за консультацией. Это может быть как психолог, так и психиатр. Можно одновременно наблюдаться у психиатра и посещать психотерапевта. Каждый из этих специалистов подберет своё решение проблемы, которое будет дополнять другое.

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

Давай сходим к специалисту, он тебе поможет наладить сон.

Не нужно говорить, что близкий болен. Говорите, что есть проблема, и мы её решим. Никто не хочет, чтобы его считали больным.

Что мешает обратиться за помощью?


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

На это накладывается установка родом из советского прошлого (а может и более раннего) Ты мужик, сам справишься. Это вторая по популярности причина (по статистике ФОМ), по которой люди не идут к психотерапевтам. Если обратился за помощью слабак и нытик. Но это не так. Чтобы признать проблему и обратиться к психотерапевту нужна смелость.

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

Как выглядит работа с психотерапевтом?


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

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

Также терапия включает домашние задания и практики, например, телесные.

Что ожидать от психотерапии?


Освобождения, например, от лишних переживаний. В психотерапии метрики результата субъективны. Если вы чувствуете себя спокойнее, лучше спите, наладился аппетит, значит она работает. Например, после терапии несколько лет назад у меня как-то интуитивно запустился процесс пробования всего что можно. Я начал пробовать дикое количество всего разнообразного: медитации, курс випассаны, публичные выступления и даже переводил статьи про интерфейсы.

Было страшно. Например, в 2014 году я с трудом мог общаться с людьми из-за страха, и каждый раз перед выступлениями не спал ночь мозг взрывался. Какая-то мудрая часть меня подбадривала: Надо просто терпи. Поэтому большинство дел я вёл перебарывая лютый страх. Но мозг переобучался, миндалевидное тело (отвечает за страх) переобучалось и каждый раз страха становилось меньше. Но благодаря этому я теперь зарабатываю на тренингах.

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

Некоторые травмы также влияют на интеллект, потому что снижается чувствительно. Об этом в книге Странный порядок вещей: жизнь, чувство и создание культур рассказывал Антонио Дамасио, профессор нейробиологии, психологии и философии Южно-Калифорнийского университета. Он утверждал, что травмы сказываются на интеллекте потому что он может зависеть от чувствительности.

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

Как терапия влияет на работу?


Не считая того, что с терапией я смог пережить потерю бизнеса, она помогла избавиться от слабых сторон моего продукта. В работе мы всегда вносим свой отпечаток. Мы личности, у нас есть свои тараканы и установки в голове. Илья Красинский высказал мысль: Слепые зоны компании это слепые зоны основателя. У меня слабая сторона операционная деятельность. Например, невнимательное отношение к найму дорого обошлось. Я практически бессознательно избегал скучные части компании и она страдала 1,5 года.

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

Как быстро ждать результат? Здесь никто не ответит. Иногда достаточно встречаться полгода раз в месяц. Иногда раз в неделю пару лет. Чтобы понять, сколько продлится лечение, нужно обговорить с врачом. Но сколько бы это ни заняло, психотерапия изменит жизнь в лучшую сторону.

При этом результат может быть отсрочен и появиться уже после лечения. Например, только спустя год после лечения и запуска Мета моя психика на 100% приняла, что работает над сервисом. Это похоже на то, как будто живешь в квартире, где одна комната нормальная, а другая всегда закрыта. Её как бы не существует. Проходишь и не видишь даже дверь также было у меня.

Полезные материалы


How people change: relationships and neuroplasticity in psychoterapy. Это сборник исследований нескольких авторов под кураторством Дениела Сигела и Марион Соломон. В книге много интересного про работу мозга, психотерапию и то, как люди меняются.

Начало бесконечности, Дэвид Дойч. Это книга о текущем состоянии физики, но не набор законов, а описание способов применить текущие знания физики к осознанию мира и себя. Из этой книги я понял один концепт все знания о вселенной создаются через один единственный процесс:

  • выдвинуть гипотезу;
  • поставить эксперимент;
  • понаблюдать за результатами;
  • улучшить гипотезу по результатам эксперимента;
  • повторить.

Другого способа не существует.

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

Скотт Адамс, How to Fail at Almost Everything and Still Win Big. Перевод на русском ужасен берите оригинал.

Макс Тегмарк, Live 3.0. Жизнь 1.0 простая биологическая, например, бактерии. Жизнь 2.0 человек. Жизнь 3.0 пока ещё не появилась на Земле, но она сможет быстро менять сама себя в обход эволюции.

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

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

The Systems Bible: The Beginner's Guide to Systems Large and Small, Джон Гал. Забавная книга, которая почти полностью состоит из тезисов. Например:

  • Эффективность сложной системы редко превышает 5%. Под системой можно подразумевать любую сложную сущность, хоть Пенсионный фонд.
  • Армия полностью готов к войне, когда она закончилась. Это пример, когда во Франции после Первой мировой построили защиту от немцев, а они просто взяли и обошли её.
  • Временное решение с высокой вероятностью станет постоянным.

Весь Нассим Талеб. Он прекрасен рациональностью мышления.

Самая классная книга та, которую хочется читать прямо сейчас, даже если это Приключения Чиполлино или сборник задач по теории вероятностей. Поэтому каждый день, когда есть время, я начинаю читать новую книгу. Если первые 50 страниц нравятся продолжаю. Если нет иду спать.

Я читаю все, что мне интересно, даже если не понимаю. Чем больше читаю разных книг, тем больше вероятность найти интересную тему. Например, так я открыл для себя физику. Если полгода каждый день читать 50-100 страниц разных книг, то мозг будет воспринимать мир иначе. Он будет строить новые взаимосвязи, закономерности и выводы, потому что ты добавил в него много новых данных. Если не читать, то и не будет данных, на которых мозг может построить новые закономерности. Это отличная долгосрочная инвестиция с кратным возвратом инвестиций.

Подкаст Ничего такого. Дорогой читатель, эта статья была написана под впечатлением от выпуска нашего нового подкаста. Нам стало интересно, что такое психотерапия, как она влияет на продукт и реально ли работает. Поэтому мы встретились с Иваном и поговорили на эти темы.

Подкасты можно послушать:


Делитесь в комментариях встречались ли с психотерапией, обращались ли к врачам и как помогло. Если хотите обсудить статью подробее присоединяйтесь в Telegram чат в Dodo Engineering chat.
Подробнее..

Meta Gameplay Framework, или бэкенд без серверных разработчиков

12.11.2020 12:19:49 | Автор: admin


Привет! Меня зовут Кирилл, я руководитель отдела серверной разработки в Pixonic. Здесь я работаю уже более 5 лет. Долгое время Pixonic была компанией одной игры War Robots. Но однажды к нам пришло осознание, что так больше продолжаться не может, и мы начали работу над созданием новых проектов.

Поначалу мы взялись за это дело по старинке, используя традиционные для нас подходы: писали клиент на Unity 3D, бэкенд разрабатывали на Java. Это было привычно, понятно, но имело ряд серьезных недостатков. Проекты разрабатывались медленнее, чем нам бы хотелось. Для выполнения любой задачи необходимо было задействовать как минимум двух разработчиков. Однако, когда в разработке участвуют два и более человека, неизбежно возникают ошибки в духе: то один не так понял другого, то второй работает быстрее, чем первый. Такие ситуации приводят к тому, что кому-то из разработчиков в дальнейшем приходится возвращаться к задаче, которую он, казалось, уже давно закончил, а ведь у него и других дел полно. Так мы начали думать над тем, как разрешить эту проблему.

Еще нас огорчало, что каждый раз так или иначе приходилось сталкиваться с инфраструктурными вопросами: разработка и поддержание API и схем баз данных, написание DTOшек, их преобразование из и в модели на клиенте и сервере. Эта рутина многим привычна, они ее даже не замечают, однако она отнимает время, которое можно было бы использовать с большей пользой. Эту проблему, казалось бы, можно решить клонированием предыдущего проекта но все оказывается сложнее, когда дело доходит до взаимодействия с геймдизайнерами. Они постоянно придумывают что-то новое, и даже если поначалу кажется, что у проектов много общего возьми да скопируй, то по факту оказывается, что это совсем не так. В итоге от клонированного проекта остается только набор библиотек и каркас la bootstrap.

После долгих размышлений наши желания оформились в следующие требования:

  • Один разработчик должен уметь выполнить задачу как на клиенте, так и на сервере: не должно быть разделения ролей по профилю.
  • Разработчики в своей работе не должны задумываться об инфраструктуре: о базах данных, протоколах взаимодействия между сервисами, логировании совершенных операций. Все внимание должно быть сосредоточено на разработке бизнес-логики.
  • Модели, используемые на сервере, должны как можно чаще использоваться на клиенте.
  • Фреймворк должен предоставлять простые и понятные механизмы для выполнения рутинных операций: списания/начисления игровой валюты, выдачи игровых предметов, открытия лутбоксов, работы с платежами из сторов, с аналитикой и т.д.
  • Все операции, совершаемые игроком, должны быть доступны из панели администрирования это позволило бы команде техподдержки, тестировщикам и разработчикам лучше понимать, что происходило с игроком в случае поступления жалоб или обнаружения ошибок.

На момент начала разработки фреймворка на рынке уже было несколько предложений, частично удовлетворяющих нашим требованиям, PlayFab и GameSparks. Это отличные решения, построенные по модели LiveOps, но имеющие ряд критических для нас недостатков:

  • Код пишется на JavaScript, что не дает возможности полноценного переиспользования в Unity 3D, и в любом случае приходится преобразовывать ответы сервиса в модели клиента. Получается, что разработчик должен знать два языка программирования и выполнять дополнительную работу, которой хотелось бы избежать.
  • Наша цель разработка хита, а значит речь идет о миллионах игроков в день. Стоимость работы этих сервисов на наших объемах становится значительно больше, чем стоимость самостоятельного владения подобным решением.

Итак, у нас получился следующий набор необходимых технологий и методов:

  • C# (.net core для сервера и клиента, .net 3.5, 4.X для клиента). Мы хотим, чтобы разработчик мог разрабатывать как клиентскую, так и серверную часть задачи. Уйти от Unity 3D мы не можем, а вот написать сервер на C# вполне.
  • Orleans фреймворк для построения распределенных, отказоустойчивых и масштабируемых систем в модели акторов от Microsoft (использовался в Halo). Использование этого фреймворка обусловлено тем, что с нашими задачами рано или поздно придется масштабироваться к тому же, хочется, чтобы решение было отказоустойчивым.
  • GRPC для общения сервисов между собой, так как в системе, кроме сервиса игроков, построенного на Orleans, существуют и другие: авторизация, загрузка каталогов и прочее в том числе и сервисы, которые ранее были написаны на Java и оказались по-настоящему автономны и независимы от того проекта, в котором используются.
  • Postgres для хранения данных игроков. Для масштабирования базы данных мы используем шардирование.
  • Docker с ним удобно разворачивать окружение локально и в тестовой среде. Таким образом, геймдизайнеры и разработчики могут работать с метой так, чтобы никому не мешать. Можно у себя ее локально поднять, проверить, что все работает, как нужно, и запушить уже измененный код в репозиторий.
  • Prometheus для мониторинга.
  • Event Sourcing парадигма, которую мы используем для хранения данных игроков. Она часто используется в банках. Подход здесь такой: когда мы работаем через Event Sourcing, все, что мы делаем, представлено в виде потока событий. Как упоминалось ранее, хотелось бы постоянно иметь историю, которая сохраняется в базе данных. Этот поток событий и есть наша история, по которой мы можем отслеживать, что происходило. Если что-то пошло не так, мы можем посмотреть интересующее нас событие в прошлом и полностью восстановить состояние игрока.

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

Обычно настройками параметров игры занимаются геймдизайнеры. Они уже давно работают в таблицах Excel или Google Sheets, поскольку в них удобно производить расчеты, задавать формулы, строить графики. Поэтому мы решили, что хорошей идеей будет эти же таблицы использовать не только для расчетов, но и для хранения параметров игры. Единственное, чего нам не хватало формализации правил хранения данных, чтобы парсер знал, откуда эти данные брать. В итоге мы сделали несколько вариантов шаблонов вкладок под наши нужды:

  • вкладки конфигурирования игровых предметов;
  • вкладки настройки экспериментов (A/B тестов);
  • вкладки настройки лутбоксов;
  • вкладки настройки игровых валют;
  • вкладки для хранения простых настроек, заданных в виде ключ-значение.



Пример конфигурирования предмета

На примере выше показана вкладка, содержащая конфигурации предметов. Они имеют несколько стандартных колонок: ID, теги и цена. Эти значения обрабатываются особым образом. По ID и тегам, например, производится индексирование, так что по ним легко осуществлять поиск. Остальные колонки задаются свободно, и их может быть сколько угодно. Из кода такие данные получить очень просто:

// Находим в каталоге предмет с идентификатором 'Reaver_1':ItemBlueprint itemBlueprint = catalog.GetItemBlueprint(ItemBlueprint.ValueOf("Reaver_1")); // Получаем проверенное значение из колонки с названием 'grade'. // Если поле отсутствует или имеет неверный тип, далее этот результат будет передан // в админку, где будет выведена информация о месте нахождения ошибки:Validated<int> grade = itemBlueprint.ShouldHasIntAttr("grade");

Помимо каталогов, фреймворк предоставляет другие базовые примитивы, которые используются во всех наших играх:

  • Профиль игрока. Он содержит имя и дату регистрации пользователя, а также позволяет хранить проектно специфичные данные.
  • Кошелек. Благодаря нему начисляются и списываются валюты, выводится их баланс. Помимо прочего, реализация нашего кошелька позволяет отслеживать источники, из которых были получены валюты, и, как следствие, определять, на что игроки тратят реальные деньги, а на что полученные в процессе игры. Это важно для понимания того, что представляет большую ценность для игрока.
  • Инвентарь. Он позволяет управлять внутриигровыми предметами: добавлять их, удалять, осуществлять поиск.
  • Предметы. Они делятся на два вида:

  1. Обладающие индивидуальностью и состоянием. Таким предметам можно задавать проектно специфичные параметры. Так, например, у брони может отслеживаться состояние ее износа.
  2. Не обладающие индивидуальностью. Обычно это потребляемые предметы. В таком случае хранится только счетчик их количества. Пример таких предметов бутылки с целебным зельем.

  • Лутбоксы. Сейчас без них немыслима ни одна free-to-play игра. Наше решение позволяет задавать различные варианты генерации контента для выдачи: от 100% гарантированного в этом случае лутбоксы можно использовать как обычные контейнеры, до полностью случайного.

Помимо этих базовых примитивов, на которых строится большая часть мета-геймплея в играх, фреймворк также предоставляет механизмы работы с A/B тестами, авторизацией, обработкой платежей сторов, выполнения отложенных задач, обезличивания данных и многие другие.

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

// Описываем команду, представляющую из себя обычную DTO,// которая может быть сериализована в Json:public class DemoCommand : ICommand{    public string BlueprintId;    public int Value;} // Описываем обработчик команды:public class DemoHandler : HandlerBase, ICommandHandler<DemoCommand>{    public void Handle(ICommandContext context, DemoCommand command)    {        // Inventory  объявлен в HandlerBase.        // Создаем новый предмет по образцу из каталога:        var demoItem = Inventory.GrantItem(ItemBlueprintId.ValueOf(command.BlueprintId));         // Задаем предмету значение атрибута 'demo_value':        demoItem.Attributes["demo_value"] = command.Value;     }}

Заводим команду и ее обработчик. В реализации обработчика видно, что мы обращаемся к инвентарю и выдаем предмет игроку. После этого мы присваиваем предмету атрибут demo_value со значением, переданным в команде.

Ниже приведен пример того, как происходит выполнение команды и обработка ее результата на клиенте:

// Выполняем команду на сервере:var command = new DemoCommand { BlueprintId = "Reaver_1", Value = 777 };var commandResult = connection.Execute(command); // Из ответа получаем обновленный инвентарь игрока:var inventory = commandResult.Player.Inventory; // Получаем последний созданный предмет:var demoItem = inventory.FindItemsByBlueprint(ItemBlueprintId.ValueOf("Reaver_1")).Last(); // Выводим установленное значение:Console.WriteLine(demoItem.Attributes["demo_value"]);

Так при чем здесь Event Sourcing?

Как видно из предыдущего примера, мы пишем код в классическом императивном стиле. Здесь нет работы с базой данных. Метод обработки команды не возвращает никаких результатов. Так как же это работает?

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

Ниже приведена упрощенная диаграмма того, что происходит при взаимодействии клиента и сервера:



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

Ниже приведен пример отображения транзакций игрока из реального проекта. Здесь мы видим две прошедших транзакции. Одна из них создание нового игрока, вторая принятие пользовательского соглашения с определенной версией.


Пример лога транзакций из реального проекта

В настоящее время фреймворк используется в трех проектах студии. Один из них уже около полугода находится в продакшене. В разработке этого проекта команда серверных разработчиков принимала непосредственное участие, чтобы понять, насколько удобно пользоваться нашим решением. Почему? Потому что мета была еще достаточно молодой. И на проекте мы приводили ее в порядок: упрощали API, что-то выкидывали за ненадобностью, где-то, напротив, добавляли разнообразия в наиболее часто повторяющихся паттернах.

В двух других играх, как и задумывалось, всю разработку осуществляют уже Unity-разработчики без нашего вмешательства. Это позволяет компании развиваться и разрабатывать новые проекты без расширения штата.

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

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru