Оффтоп Daniil Khanin
1 332

Симулятор Стартапа v.1.0

В закладки

В начале декабря 2017 года, я написал простой симулятор стартапа, в котором игроку предстояло выполнять задачи, чтобы вырости бизнес со стадии идеи до стадии IPO. Для этого надо было учитывать юнит-экономику, нанимать персонал, привлекать менторов и инвесторов. Прочитать можно в статье Игра в Стартап.

За 9 месяцев проекта в игру поиграло 635 человек, и вот я решил обновить игру, внести новые механики, а также устранить некоторые недочеты. Как результат, я выпустил новую версию, которую уже можно считать 1.0.

гистограмма — игры, кружки — уникальные игроки, в конце августа вышел релиз игры, что дало резкий всплеск игроков.

И так, что нового?

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

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

3. Менторы становятся по-настоящему важными, ранее они просто понижали на 1‰ вероятность ошибки, теперь же каждый ментор по разному влияет на ошибки, кроме того, некоторые менторы обладают дополнительными бонусами, например, могут показать, какие из сотрудников не задействованы в задачах, и следовательно, их можно нагрузить ими; или могут подсказать, каких людей на выполнение задачи не хватает, также менторы забирают разную долю в вашем бизнесе.

4. Инвесторы теперь смотрят за тем, какая доля основателя и не всегда готовы входить. Кроме того, вы можете выкупить долю инвестора (для этого вы должны обладать наличностью в таком объеме, что текущая доля инвестора превышала ту долю, с которой он вошел.

Как играть?

Вверху игрового интерфейса находится поле (его можно прокручивать), в котором отображены раунды: от FFF до IPO. Ваша задача пройти их все и вывести игру на IPO. Для каждого раунда есть своя цель, чтобы ее узнать, просто кликайте (тапайте) по названию уровня и получите информационное сообщение с целью на уровень. Цель на уровень известна только для текущего и предыдущих уровней.

Информационное поле с уровнями игры

Ниже поля с уровнями расположено табло с ресурсами и состояние компании. Всего 9 блоков.

Ресурсы игры и состояние компании

Первая строка

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

Вторая строка — человеческие ресурсы.

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

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

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

Третий ряд — финансы.

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

Доход за ход — поле, которое показывает сколько у вас денег оборачивается за 1 ход. Клик (тап) показывает расшифровку доходов и расходов.

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

Ниже расположена информационное поле и блок управления задачами.

информационное поле и блок управления задачами.

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

фильтры задач

Последний блок — список задач.

список задач.

Каждая задача требует определенное число ходов на исполнение. Каждая задача влияет на какую-то одну метрику юнит-экономики. Также каждая задача требует участия определенного числа сотрудников (зависит от раунда).

Можно выполнять несколько задач за ход, если у вас достаточно персонала. Также выделив несколько задач, на поле управления задачами появляется урна — которая позволяет удалять ненужные задачи.

текущая задача

Задача, которая находится сейчас в работе выделена желтым. На скришоте выше видны следующие объекты:

1. информационное поле показывает, что за прошедший ход задача не выполнена (она требует 2 ходов без ошибок), так как возникла ошибка.

2. включен фильтр задач по метрике C1

3. текущая задача «провести mv-test»

В самом низу находится кнопка «Ход», справа — число ходов, которые требуются для выполнения всех выбранных задач, а слева — число активных задач.

Стратегии и зачем я это все сделал?

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

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

Начать игру!

на технологиях ueCalc.com

Материал опубликован пользователем. Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать
{ "author_name": "Daniil Khanin", "author_type": "self", "tags": [], "comments": 14, "likes": 18, "favorites": 22, "is_advertisement": false, "subsite_label": "flood", "id": 44880, "is_wide": false }
00
дни
00
часы
00
мин
00
сек
(function(){ var banner = document.querySelector('.teaserSberbank'); var isAdsDisabled = document.querySelector('noad'); if (!isAdsDisabled){ var countdownTimer = null; var timerItem = document.querySelectorAll('[data-sber-timer]'); var seconds = parseInt('15388' + '59599') - now(); function now(){ return Math.round(new Date().getTime()/1000.0); } function timer() { var days = Math.floor(seconds / 24 / 60 / 60); var hoursLeft = Math.floor((seconds) - (days * 86400)); var hours = Math.floor(hoursLeft / 3600); var minutesLeft = Math.floor((hoursLeft) - (hours * 3600)); var minutes = Math.floor(minutesLeft / 60); var remainingSeconds = seconds % 60; if (days < 10) days = '0' + days; if (hours < 10) hours = '0' + hours; if (minutes < 10) minutes = '0' + minutes; if (remainingSeconds < 10) remainingSeconds = '0' + remainingSeconds; if (seconds <= 0) { clearInterval(countdownTimer); } else { timerItem[0].textContent = days; timerItem[1].textContent = hours; timerItem[2].textContent = minutes; timerItem[3].textContent = remainingSeconds; seconds -= 1; } } timer(); countdownTimer = setInterval(timer, 1000); } else { banner.style.display = 'none'; } })();
{ "id": 44880, "author_id": 2946, "diff_limit": 1000, "urls": {"diff":"\/comments\/44880\/get","add":"\/comments\/44880\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/44880"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 199791 }

14 комментариев 14 комм.

Популярные

По порядку

Написать комментарий...
1

Помню когда-то играли в симулятор хакера:) теперь симулятор стартапера. О времена, о нравы

Ответить
0

Очень старая игра

Ответить
0

Это немного другая игра. Механики сильно разные и цели тоже.

Ответить
0

Это там где надо было работать начиная с дворника, апгрейдить себе комп, взламывать сайты с помощью "крякалки паролей"?

Ответить
0

Там ещё побухивать можно было вроде:)

Ответить
1

Для тех, кому лень долго играть и тратить время на прокачивание себя в игре, находясь в игре, наберите чит код: ICO

Ответить
0

Смешно

Ответить
0

«Войти с помощью Facebook!» и никакой альтернативы. До свиданья.

Ответить
0

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

Ответить
0

Google, VK, ГосУслуги?

Ответить
0

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

Ответить
0

Google так не умеет?

Ответить
0

у гугла меньше людей чем в FB, а 2 системы позволяют смешивать людей, чего мне не хотелось. А почему такая неприязнь к FB?

Ответить
2

люблю авторизовываться google учеткой, неприязни нет

Ответить
0

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "bscsh", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223676-0", "render_to": "inpage_VI-223676-0-1104503429", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=bugf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudx", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byzqf", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvc" } } }, { "id": 19, "label": "Тизер на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "p1": "cbltd", "p2": "gazs" } } } ]
Компания отказалась от email
в пользу общения при помощи мемов
Подписаться на push-уведомления