Наверняка многие из вас в детстве баловались игрушками вроде «ПРОГРАММИСТ 1.3» — эдакими текстовыми квестами, в которых игрок должен был прокачаться из начинающего программиста и стать хакером (термина «сеньор» тогда, наверное, еще не было), собрать самый крутой комп, заработать больше всех денег. При этом весь геймплей заключался в нажатии нужных кнопок действий и менеджменте немногочисленных ресурсов. Я, с теплом вспоминая такие игры, а также текстовые квесты в Космических Рейнджерах 2, решил создать игру Teamlead Simulator, в которой...

TL;DR: игра по ссылке.

Привет! Меня зовут Кирилл и я работаю backend-разработчиком в Wrike. Каждый год в Wrike проходит конкурс Smart Activities. Задача участников — разработать проект, который связан с тематикой нашей компании и может помочь HR-бренду выглядеть еще привлекательнее. Я решил поучаствовать, когда до конца оставалась примерно неделя, и зарекся не тратить на проект слишком много времени.

Механика игры

Простой геймплей, менеджмент ресурсов, текстовые вставки, отсылки и шутки о работе и жизни в Wrike — так и родилась идея TeamLead Simulator. Основная задумка появилась почти сразу: играешь за лида небольшой команды, которой нужно закончить проект до дедлайна. 

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

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

Названия для инструментов выбрал близкими к исходным, но оригинальными по-своему: Clndr, Limp Messenger (как аналогия Slack), CodeJunkie (CJ), Iron Browser с сайтами Jabr и YouCube. Я сам нарисовал все иконки в Paint.Net!

У тимлида появились дополнительные ресурсы — положение в компании, производительность, а также физическое и ментальное здоровье. Какой же тимлид без выгорания? И, конечно же, собралась команда. Фотографии ее членов я выбрал на сайте https://thispersondoesnotexist.com/. Нарочно детские, чтобы на них точно нельзя было злиться. У каждого появились случайные навыки из списка, которые влияют на время выполнения задач. А также общий уровень навыка: от него зависит количество багов в коде и частота «застреваний» во время разработки.

Разработка игры 

Мой технологический выбор для разработки был скучен и прост. Вся игра — один TypeScript-файл порядка 4500 строк, index.html и несколько изображений. Я решил не использовать никаких сторонних библиотек и рисовать всю графику на Canvas2D. У меня уже был подобный опыт разработки, поэтому начать было легко, к тому же я предпочитаю парадигму Immediate UI остальным.

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

В итоге от большинства этих идей пришлось отказаться: спринты превратились в линейный бэклог задач, из скрама остался только daily stand up, команда стала фиксированной, после работы можно просто отдыхать или работать еще.

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

На конкурсе мне удалось занять третье место, на первых двух оказались ребята с намного более крутыми проектами, с которыми сравниться мне было сложно. Кстати, все игрушки вы можете сами оценить на стендах Wrike на инженерных конференциях.

Team Lead Simulator 2.0 

С того времени прошло более полугода, мы успели сделать редизайн игры, слегка изменили отсылки к существующим продуктам и добавили выбор английского языка. Для этого получилось написать кастомный плагин к esbuild, который разбирает .properties файлы с локализационными строками.

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

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

 А вот отзывы моих коллег, которые уже успели поиграть в симулятор:

 

 Спасибо за чтение! А теперь пора идти программировать на встречи. 

Ссылка на игру — https://teamlead.wrike.tech/

Комментарии (15)


  1. Bipgimun
    01.08.2022 15:51
    +1

    Отличная игра! Спасибо большое за труд)


  1. dblur
    01.08.2022 17:43
    +2

    Круто! Выгорел за 8 задач и 6 дней до дедлайна. По игре можно делать некоторые выводы по своему ритму работы


  1. chuikoffru
    01.08.2022 20:39
    +1

    Супер, игра очень понравилась, захватывает. Стресса не ощутил, наверно потому что выбрал джуниор режим. Было бы интересно понаблюдать за развитием игры.


  1. Cerberuser
    01.08.2022 22:22
    +1

    Очень классная вещь, спасибо! Действительно интересная модель, пусть и, понятное дело, сильно упрощённая.

    Выловил один момент - здесь же что-то другое должно быть вместо undefined?


    1. 8street
      02.08.2022 12:00
      +3

      Да это же самая частая задача: сделать какую-то непонятную фигню.


  1. Newbilius
    02.08.2022 08:21
    +1

    В Firefox дико тормозит — подсветка пунктов меню реагирует с задержкой, кулер на видеокарте разгоняется, что с ним бывает разве что в тяжёлых игрушках или рендере видео. Хм.


    1. deseven
      02.08.2022 13:02
      +1

      Подтверждаю, в ФФ практически неработоспособно. Очередное доказательство, что в ФФ теперь никто даже не тестирует :)


      1. klounader
        02.08.2022 14:26

        Да. Это жесть. Подожду, пока доработают.


    1. DoctorGester Автор
      02.08.2022 19:08
      +1

      К сожалению причина в неадекватной в плане перформанса реализации канваса в ФФ. Сейчас я отключил самую затратную фичу(блюр бекграунда) для файрфокса. Перформанс все равно слабый, но должно быть более юзабельно.


  1. marlibon
    02.08.2022 12:24
    +1

    залип на часа 3. Все очень понравилось. Заодно появилось понимание в чем заключается работа Тимлида. Когда почти был на финише, оставалось 5 дней, нечаянно вместо кнопки завершить день нажал на кнопку назад (они оба в левом верхнем углу), и играть уже надо было заново. Не стал проходить в третий раз


  1. nmrulin
    02.08.2022 15:53

    На сложности мидл успел за 3 дня до дедлайна(все показатели в норме кроме позиции в компании). Наверное большинство лучше могут.

    По производительности, как она работает? У меня до 170% поднималась, а всё равно часовая задача за час и делается.


    1. lonesimba
      02.08.2022 18:51

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


    1. DoctorGester Автор
      02.08.2022 19:07
      +1

      К сожалению минимальный инкремент времени все равно час. Но большие задачи должны выполняться быстрее.


    1. nmrulin
      02.08.2022 21:57
      +2

      На сложности Тимлид осталось 19 задач из 53 , плохой из меня тимлид в режим аврала :-)


  1. Sayonji
    03.08.2022 00:05
    +2

    За что, у меня же отпуск :) Прекрасно передано ощущение часов текущих сквозь пальцы, и гугл календарь подчеркивает его отлично