воскресенье, 25 марта 2012 г.

Идея создания игры в основе которых лежат нейронные сети

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

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



Более подробно о технологической составляющей, свобода действий пользователям предоставляется по средствам использования нейронных сетей. На первом этапе был создан прототип для обучения игрока боксу. На этом этапе решались следующие технологические задачи: выбор архитектуры нейронной сети, подбор размеров нейронной сети для обеспечения гибкости обучения и объёма ассоциативной памяти и самое сложная задача подбор правильных входных параметров, по средствам которых нейронная сеть сможет в неявном виде извлечь и использовать все доступные данные. Более детально постараюсь не вдаваться в этот процесс т.к. это скорее тема отдельной статьи о пробах и ошибках, которые были получены, а также о средствах и методах их выявлений.
После этого, появился новый вопрос производительность. Изначально библиотека нейронных сетей разрабатывалась на c++ без использования сторонних библиотек с возможностью компиляции под Windows, Linux, Android и iOs. Было принято решение все вычисления вести на серверах клиент при этом будет заниматься корректировкой параметров и визуализацией всего этого безобразия в понятном для пользователя виде. Библиотека было оптимизирована под SSE2, но этого оказалось не достаточно, была добавлена оптимизация под AVX, но даже после всех этих действий расчёт производительности показал, что 100 тыс. пользователей потребуют колоссальной вычислительно мощи, и тут я принял решение переходить на OpenCL. Переход оказался не таким простым, как ожидалось т.к. важно не просто быстро выполнить операцию на GPU, но и полностью его нагрузить. После месяца тестов технологии было найдено верное решение, которое позволило добиться нужной гибкости и скорости (100 тыс. нейронных сетей вычислялось за 0.5 сек на видеокарте Nvidia GTX 560) при нехитром подсчёте стало понятно что четы карты Nvidia GTX 580 с лихвой закроют все требуемые вычисления. Таким образом был устранён последний технологический камень преткновения на пути к конечному продукту.

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

Первой игрой будет обучение боксёра т.к. было интересно играться с прототипом.

Комментариев нет:

Отправить комментарий