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

Пет-проект

Ещё один поиск Вк по фото

20.03.2021 16:14:02 | Автор: admin

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

1. Предыстория

В первой половине 2016-го в свет вышел нашумевший FindFace, позволяющий загрузить фото человеческого лица и находить соответствующий профиль Вк. Он вызвал большой общественный резонанс, привёл как к поиску девушек по скрытым фоткам на эскалаторах в метро и к обнародованию порноактрис с неприятными последствиями для их близких, так и к находкам потерянных близких, к нереально быстрому поиску преступников по случайным кадрам с камер, прям как в американских фильмах, только наяву.

В то время мне об этом сервисе говорили и ленты новостей, и друзья, я отвечал "ну да, прикольно", и только. Но спустя пару лет, в начале октябре 2018 на каком-то айтишном форуме я захотел связаться с одним пользователем по специфическому вопросу, вот только он туда уже давно не заходил. Зато там было его хорошее фото, и тут-то я вспомнил про крутой сервис! Побежал на их сайт и разочаровался в сентябре 2018, буквально за месяц, они перестали предоставлять свои услуги физ.лицам, и бесплатно, и даже за деньги, перейдя в сегмент b2b и b2g. Оно и понятно, пиар уже сработал, а этических вопросов так возникает куда меньше. Но меня, законопослушного гражданина, это огорчило. И не только меня: фан-группы ФайндФейса пестрили сообщениями о том, что люди готовы заплатить в 10 раз больше, лишь бы им помогли найти нужного человека.

Я стал искать аналоги, но они все были либо точным поиском, но по крайне ограниченной выборке вроде нескольких сотен знаменитостей из Википедии, либо обширным, но почти бесполезным по точности поиском через Гугл/Яндекс.

Пару рабочих дней я размышлял, что же сложного в создании такого сервиса, который бы и точно искал людей, и по всему Вк? Решил, что ничего, ведь у меня тогда уже были базовые познания в data science, разработке и администрировании. Поэтому в пятницу, приехав с работы домой, я взялся за дело. За вечер я накидал скрипт, который парсит профили Вк, находит фото, индексирует по ним лица и сохраняет в БД. Потом просидел ещё пару суток почти без сна, заставил это дело безостановочно работать на своём сервере. Началась новая трудовая неделя, я был очень уставший, но ещё больше довольный и полный энтузиазма! Ведь мой скрипт медленно, но безостановочно бежал по всему Вк.

2. Техническое устройство

2.1. Индексирование

Как вы считаете, что происходит после того, как вы отправляете запрос в любую крупную поисковую систему? Не важно, поиск текста в Яндексе, Google или поиск лиц в FindFace или моём сервисе. Многие, особенно не-айтишники, с трудном представляют внутренние механики технических процессов, а они бывают нетривиальны даже казалось бы в простых задачах. В случае поисковых систем магия заключается в том, что при получении запроса они не начинают обегать все страницы в интернете, ища там ваш текст, или весь Вк, сравнивая вашу фотку со всеми подряд, это бы занимало астрономические объёмы времени. Вместо этого, поисковые системы сперва индексируют нужные данные. В случае текста (и подобных тексту данных вроде ДНК) в ближайшем приближении могут использоваться хэш-таблицы или префиксные деревья. В случае фоток тоже нужны индексы, которые сильно сократят время поиска. Для этого я использовал библиотеку face_recognition, которая позволяет преобразовать фото лица, если правильно помню, в 128-мерный вектор признаков со значениями от -1 до 1 (далее буду называть его просто хэш). Для поиска человека по фото, нам нужно просто пробежаться по всем фото из коллекции, считая евклидово расстояние между векторами-хэшами из запроса и набора подобный пример, реализованный на Питоне, доступен на сайте упомянутой библиотеки. Да, такая операция поиска тоже не дешёвая, но об этом позже.

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

Конечно, не только лимиты АПИ повышать надо, но и объёмы CPU. Изначально я развернул скрипт на маленьком VPS, который создавался для простого личного сайта. В подмогу ему, я взял ещё один VPS, в несколько раз мощнее. Потом я решил, что и этого мало, взял ещё и целый выделенный сервер, который сильнее моего собственного рабочего компьютера :D Не энтерпрайз-левел, но производительность стала меня устраивать, хотя расходы и выросли до 15 тысяч руб/месяц, что для меня тогда было весьма ощутимой тратой.

2.2. Подобие архитектуры и DevOps'а

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

Кстати, воркеры работали в несколько потоков. Да, Питон, благодаря Global Interpreter Lock, не умеет в полный параллелизм, но много времени уходило на выгрузку фоток, а IO-операции хорошо параллелятся. Вдобавок, это позволило легко назначить каждому потоку свой токен доступа и гибко настраивать загруженность каждой машины.

Для автоматизации настройки окружения, токенов и т.п были написаны скрипты на Питоне, которые подключались к целевой машине по SSH и ставили всё что нужно. Позже я узнал, что у меня костыльный велосипед, есть качественные решения, но всё равно было интересно посмотреть подноготные детали. Из прикольного, пришлось также разобраться, что есть разные ВМ и средства виртуализации, что некоторое ПО не работает в определённых конфигурациях, благодаря чему виртуалки на Xen и OpenVZ с казалось бы одинаковыми ресурсами могут отличаться в цене на 40%.

2.3. Поиск

Помимо ролей мастера и воркера, есть роль поискового микросервиса. Проиндексированные фото Вк и айдишники их профилей сохраняются в БД, точнее, MySQL v5.7 и алгоритм поиска я переписал с Python на SQL, что позволило сильно ускорить вычисления и выйти на больший масштаб. Но с ростом данных этого всё равно было очень мало, я думал над оптимизациями, старался переиспользовать свой опыт big data аналитики с работы, экспериментировал с разными структурами запросов и генерацией SQL-запросов Питоном, это позволило ускорить вычисления в несколько раз, что мило, но всё равно мало.

Потом я решил сделать поиск двух-этапным: преобразовывать хэши-дробные-векторы в небольшой массив байт, сохраняя каждый признак в два бита: v>0.1 и v<-0.1 (здесь), затем сравнивая число совпавших бит такого хэша у целевого лица и всех лиц в БД, а потом фильтруя записи в БД по какому-то трешхолду, отправляя на более точное и медленное сравнение только потенциальных кандидатов. Пришлось повозиться и переехать на MySQL v8, т.к в 5.7 бинарных операций нет. Но это позволило ускорить поиск ещё почти в 30 раз а это уже клёво ^_^

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

2.4. Другие механики

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

Ускорять время поиска можно не только ускорением самого поискового алгоритма, но и снижением выборки, например, ища профили только среди участников каких-то групп Вк. Ясное дело, здесь встаёт вопрос ограничения размера этой выборки, т.к делать запрос с "ISIN (десятки тысяч айдишников)" такое себе, а вот на паре сотен и даже тысяч работает в разы быстрее, чем полный проход БД.

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

Если идти ещё дальше, то можно индексировать не только Вк, но и ВотсАп, Тг перебрав все русские номера, возможно частично FB, Twi, Ig. Но это уже совсем будущее, я решил двигаться в сторону скорейшей апробации и монетизации того, что есть уже.

3. Заключение

3.2. Happy ли end?

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

Я написал в тех поддержку Вк (тогда они ещё отвечали, ахах), аккуратно представился студентом, что хочу проводить социологические исследования скандируя большие объёмы данных Вк, в т.ч фото, ФИО и описание. Что на самом деле было правдой, с учётом моего интереса к аналитике и психологии. Они ответили, что ради статистики и небольших выборок в целом не против, но точно против какой-либо идентификации. А ещё "порадовали" тем, что будут и палки в колёса АПИ вставлять таким сервисам, и участвовать в разработке/внедрению законов, регулирующих эту деятельность. А недавно, уже в наше время, вышел законопроект, запрещающий автоматизированную обработку данных с сайтов, что по сути полностью блокирует подобные сервисы с парсингом.

В связи с этим, я принял решение о закрытии проекта, хоть это и было печально: в феврале 2019 у меня уже было проиндексировано 25% всего Вк в гигабайтах БД, притом не за бесплатно. Но у меня уже тогда был опыт различных проектов, поэтому я не жил розовыми мечтами об успешном успехе, а старался извлечь другую пользу и просто фан (:

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

После завершения описанной истории, я решил опубликовать исходники, но т.к там в истории коммитов засветились токены, то перезалил в новый репозиторий. Но код действительно такой, что мне самому туда страшно заглядывать :D
https://github.com/AivanF/ID-Detective-public

3.2. Польза

Здесь, как и в других своих пет-проектах и стартапах, я набрался много опыта:

  • Разобрался с многопоточностью в Питоне.

  • Покопался в специфических вопросах оптимизации MySQL запросов.

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

  • Освоил работу из кода с SSH для настройки окружения, понял, насколько чудесен Ansible.

  • Разработал микросервисную архитектуру из клея и палок, что затем позволило легко понять концепции Kubernetes.

И всё это мне очень пригодилось в последующих работах и проектах.

3.3. Мораль

Выводы каждый сделает свои, но главное не бойтесь пробовать, учиться и искать себя! Надеюсь, вам было интересно :)

Подробнее..

Монетизация машинного обучения как превратить данные в деньги

12.05.2021 20:07:31 | Автор: admin

Машинное обучение одна из самых быстрорастущих отраслей в IT. Каждый год эта сфера растёт на 44 %. И, по аналитике экспертов-прогнозистов, до 2024 года размер рынка будет составлять уже свыше 30 млрд. долларов это в 25 раз больше, чем было в 2017 году. Многие компании уже понимают ценность машинного обучения для собственного бизнеса. И цель здесь прагматичная деньги. ML-специалисты помогают компаниям увеличивать свой доход.

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


Персонализация маркетинга

Любая крупная компания, которая занимается онлайн-торговлей, собирает огромное количество информации о своих клиентах (увы). Предпочтения, характер и история заказов каждого собираются с CMS и часто лежат мёртвым грузом, занимая место на сервере.

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

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

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

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

Но для грамотного анализа совсем не обязательно обрабатывать такое огромное количество информации. К примеру, в интернет-магазине Amazon персонализация работает так. В рекомендуемом покупателю будут попадаться товары из рубрик, которые он просматривает и покупает чаще всего. Если человек покупает книги, то в рекомендуемом будут книги:

Довольно простая придумка, но она позволила увеличить продажи в целевых категориях, которыми интересуются посетители, на 15 %.

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

Вот, к примеру, как сделал интернет-магазин Very. Для персонализации маркетинга он использует только имя пользователя. Но при этом учитывает погоду за окном и геолокацию пользователя. В результате при попадании на сайт человек получает максимально личностное предложение.

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

Для создания системы анализа, как у Facebook, нужны огромный отдел ML и колоссальные производственные мощности. Реализовать идею, как у Amazon, тоже сложно, но систему, как у Very, может запустить даже middle-спец в одиночку. Все зависит от творческого подхода и грамотной реализации.

Анализ рынка и поиск новых направлений

Сразу после появления нейронных сетей их пытались использовать для анализа фондовых рынков. Успехи были довольно слабыми, потому что на фондовые биржи влияют сотни и тысячи параметров, а очень часто даже случайные события.

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

К примеру, небольшой кейс компании, которая занимается продажей кухонных блендеров в США. Путём машинного анализа специалисты нашли 34 категории товаров, которые клиенты охотно приобретали вместе с блендерами, тем самым увеличивая средний чек покупки в среднем на 1525 %. Такой кейс можно повторить на фрилансе для разных интернет-магазинов, число которых в пандемию только выросло.

Улучшение опыта покупателя

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

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

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

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

Она выглядит следующим образом:

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

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

Но есть и более простые примеры обычные чат-боты или голосовые помощники на основе машинного обучения. Bank of America это одна из первых крупных финансовых организаций, которая запустила бота, чтобы разгрузить собственный колл-центр.

В результате уже в первые 3 месяца бот Эрика успешно обработал миллион заявок от пользователей. Сегодня бот стал полноценным финансовым помощником и на данный момент обработал уже 100 миллионов запросов, тем самым сэкономив компании более 8 миллионов человеко-часов. А это десятки миллионов долларов в денежном эквиваленте.

Открытые платформы аналитики и статистики

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

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

Самым крупным открытым порталом структурированных данных в мире можно считать сайт Statista. На нём есть свыше 60 000 пулов данных, уже готовых для применения в статистике и аналитике.

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

Защита от мошенничества

В 2020 и 2021 годах произошёл просто бум популярности антифрод-инструментов, основанных на базе машинного обучения и нейросетей. Особенно это актуально для банков и крупных финансовых организаций, которые работают с большими активами.

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

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

Модели машинного обучения, которые выискивают мошеннические схемы, очень сложны, но они экономят просто кучу денег крупным компаниям. Поэтому спрос на них стабильно повышается. Если в 2019 году машинное обучение против мошенников использовали только 13 % крупных компаний в мире, то в 2021 году уже 40 %.

Компания Feedzai отчитывается, что в 2020 году в разы выросли попытки фрода в сферах финтех и е-коммерс. Попытки похищения данных платежных карт увеличились на 650 %, а взлома онлайн-банкинга на 250 %. Но при этом грамотная антифрод-система на базе машинного обучения способна в точности определять до 95 % случаев мошенничества и ложных отклонений оплаты и при этом сократить общие затраты на противодействие подобным схемам на 75 %.

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

По ML у нас есть две программы для тех кто только постигает Machine Learning и расширенная Machine Learning и Deep Learning, для тех кто хочет уйти в это направление всерьез и надолго. По ссылкам можно ознакомиться с программами, сравнить их с другими и сделать оптимальный для себя выбор.

Узнайте, как прокачаться и в других специальностях или освоить их с нуля:

Другие профессии и курсы
Подробнее..

Кораблестроение в космоопере

08.08.2020 12:09:15 | Автор: admin
Мы делаем игру, симулятор кораблестроения в космоопере. Первая статья с ранним видением игры вышла еще в октябре 2019 года, сейчас май июль 2020. Как изменился проект за это время, что получилось сделать, где возникли затруднения, все это в статье.


Что сейчас есть и работает.



Симулятор галактики
Сейчас в очень простом виде, корабли блуждают по галактике примерно как бактерии под микроскопом, хаотично перемещаясь в поисках еды. Когда корабли встречаются происходит бой, который обязательно заканчивается смертью и разграблением одной из сторон.
В этой примитивной галактике выявились две с половиной экологические ниши. Это максимально дешевый корабль с пушкой, обязательно хоть с какой-нить пушкой, для уничтожения совсем невооруженных кораблей. Более крупный корабль, но достаточно дешевый, чтобы успевать размножаться под прессингом суперхищника. Суперхищник, вершина пищевой цепи существующий в единственном экземпляре, когда рождается второй суперхищник, они рано или поздно встречаются и снова остается только один. Если добавлять больше кораблей, то происходят вымирания до стабильных 2-3 видов.
Здесь возникла проблема, галактика чувствуется маленьким. Увеличение размера все равно оставляет ощущение мелкости. Причина похоже в том, чтобы прочувствовать масштаб, у человека должна быть масштабная линейка, а этого у нас нет, игроку не с чем сравнивать размеры.

Симулятор боя
В симулятор боя получает ссылки на корабли и проводит бой. Бой идет с динамическим шагом по времени, у активных модулей есть период активации (кд). Шаг времени в симуляции, это время до активации следующих модулей.
Система измерений. Сначала, хотелось по хардкору всё в системе СИ, но быстро понял что не осилю и особо это не нужно. Достаточно расстояний в метрах и времени в секундах. Это достаточно для чувства масштаба и создаст прекрасный когнитивный диссонанс, когда игрок клепающий линкоры размером в километры, после открытия ядерных технологий, окажется что боевые корабли теперь размером в доли миллиметра.
Сейчас не хватает контента, у нас недостаточно вариантов оружия, защиты, нет радиоэлектронной борьбы, бои ведутся до конца без возможности покинуть бой. Все это мы хотим добавить.

Визуализатор боев
Показывает бой на основе логов. У нас есть два типо логов боя, полный и краткий. В кратком, только начальные и конечные условия боя и сид рандома. Полный содержит всё. Визуализатор на основе полного лога отображает что произошло. Если полного лога нет, вызывается симулятор боя, бой переигрывается с записью полного лога. Бои идут с кратким логом, если они происходят в галактике или это большой заказ игрока.
Тяжелая гифка



Логи и БД
Мы выбрали в качестве базы данных SQLite и JSON. Как-нибудь скрывать БД не будем, копание сторонними инструментами только приветствуется.

Статистика
Сейчас показывает печальку только графики количества кораблей. Недавно ничего не показывало. Одна из важнейших частей игры на самом деле. Именно здесь мы следим за судьбой нашего творения.


Конструктор кораблей
Работает. Нам даже нравится как она работает.


Что мы хотим добавить


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

Описания.
Сейчас очень мало описаний модулей и функций модулей. Букв в проекте катастрофически мало. А еще, мы не умеем писать литературный английский текст. Решили все технические надписи на английском, а описания и другие пространные тексты на русском. Потом переведем.

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

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

Сюжетный режим.
В этом режиме, должна разворачиваться эпичная история. Игрок инженер в только что созданной кораблестроительной корпорации, совсем не владелец. В начале одна известная система и заказ на разведывательный корабль. Далее расширение изученного пространства, основание первых колоний в других системах (заказы на колониальные корабли). Первые торговые корабли, первые пираты, первые конвойные корабли, взрывное расширение галактики и торговли. Государств вначале не будет, когда они появятся, начнутся межгосударственные войны и заказы на тяжелые корабли.
Игрок не управляет корпорацией, он всего лишь главный инженер одной из дизайнерских команд. Если корабли игрока не будут продаваться, рейтинг команды будет низкой и заказы на тяжелые корабли не будут доступны. Тут нет условия проигрыша. А за успешные, массово продающиеся проекты выдадут премию и откроют заказы на большие корабли.
Долгое время войны не будут наносить серьезного ущерба инфраструктуре и промышленности, проигравший просто заплатит победителю и на этом все закончится. Но в один не самый прекрасный момент начнется безумие войны на уничтожение. Падение, Темные Века, во время которой будет возможность основать собственное государство. Придется выживать в хаотичных войнах Темных Веков, выживать в эпоху Возрождения с более редкими и масштабными войнами, потом в Новое время с ее глобализмом и общим рынком. Если государство игрока завоюют, то это не конец игры. Игрока посадят в клетку с кульманом. И все вернется к ситуации начала игры.

Падение.
Cюжетно обоснованный ресет технологий и модулей. Взрыв насилия и уничтожения, охватывает галактику, уничтожая промышленность и знания. В последующие Темные Века разрозненные выжившие, прозябают на осколках былого. И каждый имеющий хотя бы два корабля, будет называть себя Императором Человечества. А ведь у игрока целая верфь (или не совсем целая), в это время можно собственное государство. Правда производственные цепочки развалились, корабли придется собирать из из разнообразных обломков и простейших материалов.

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

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

Мультиплеер.
Думаю можно сделать легко(легко? мультиплеер? ну ок), достаточно прикрутить выгрузку статистики и загрузку дизайнов на сервер. Мультиплеер также видится мне основным источником заработка после запуска игры. Мультиплеерная галактика будет работать 24/7 и загруженные дизайны кораблей будут бороться за выживание. Тут нужно больше экологических ниш, даже с ролевым поведением кораблей и биомами может быть маловато.
Еще мультиплеер усилит чувство масштаба, когда игрок из своей маленькой локальной лужи, переплывет в мировой океан.

Звук
Звука нет. Надо бы добавить.

Графика
Наше изделие, на этом этапе сложно полюбить глазами.

Изменения проекта по сравнению с первой статьей


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

Массивная симуляция. Судя по опросу, большинство неготово включить симуляцию на весь день. С другой стороны, я не хочу терять длительную симуляцию для большей статистики. Если игра будет играться только с длительным числодроблением, мы будем терять новых игроков. Поэтому в начале игры будет небольшая галактика, расширяющееся по мере игры. И будет мультиплеерная галактика 24/7.

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

Ситуация с проектом


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

Распределение усилий
Вся игра это алгоритмы, которых много много МНОГО. Графика, сторителлинг, UX/UI все вместе занимают процентов 30% работы. Это распределение на самом деле вынужденное, ведь без алгоритмов игра неработает совсем, и наш контент это алгоритмы. Все это время мы работали чисто над тем, чтобы запустить игру. Прототип собрали за целых три месяца! Проект даже сейчас не совсем MVP, после года работы.
Очень многое нужно было сделать по другому, но Для этого надо отодвигать выход. Когда будущее проекта прояснится, перепишем набело.

Режим работы
Работаем по вечерам в качестве хобби. Работаем вдвоем, по два часа вечерами в будние дни. За все время работы (начали в августе) наработали часов 500 всего. Такими темпами понадобится лет 10 до реализации хотя бы основных идей.

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

Планы


Деньги. Мы так не доживем до релиза. Жизнеспособными мы признали два варианта набрать денег, а потом решили их скомбинировать. Первое найти инвестора или издателя и второй краундфандинг через Кикстартер. Если первый получится, то краундфандинг будет с красивыми картинками и большей рекламой, иначе краундфандинг будет победнее. Если ничего не получится То наверно просто откроем исходники и оставим так.
Когда игра будет запущена, продавать хочется не подписку или прем, а конкретно вычисления. Типа пак на 100 часов вычислений, это время используется вами для симуляций поведения корабля в разных ситуациях со всеми видами других кораблей в галактике. Но до этого нужно дожить и не факт что это хорошо зайдет.

Опенсорс и сторонние моды. Хочется вывести игру в опенсорс. Но я что-то не вижу игр в опенсорсе, а те что я нашел, выглядят исключениями подтверждающие правило. Также поддержка сторонних модов должна на порядок расширить возможности, но сейчас я непонимаю как это сделать.

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

Ссылки


itch.io ссылка на скачивание игры.
discord ссылка на сообщество в дискорде. Чатик, новости, первый игровой евент.

deviantart.com/purbosky КДПВ отсюда.
Подробнее..

Категории

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

  • Имя: Макс
    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