Открытая разработка игры — подготовка

в 17:02, , рубрики: blender 3d, game development, github, open source, pycharm, python, метки: , , , , ,

В своем предыдущем топике я опубликовал ссылку на небольшой набросок идей игры под рабочем названием Hexagon (в документе на тот момент фигурировало название Celestial island). Достаточно много людей проявило к нему интерес, причем не только как корректоры: расставляющие знаки препинания и неистова исправляющие в нем орфографические ошибки, за что им конечно спасибо, но это все же был «набросок» — записки на полях. Но так же некоторые задавали вопросы и изъявили желание принять участие в проекте.

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

Первый этап

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

Рабочая среда

Игровой движок

Изначально выбор был из нескольких движков которые “у всех на слуху”:

У всех у них в том или ином виде есть «щадящие» лицензии для не коммерческих проектов с возможностью на разных условия перейти на платную версию. Все они предлагают целую инфраструктуру, развитое сообщество и отличное портфолио AAA-тайтлов. UDK и Unity3d в свою очередь «из коробки» предоставляют возможность портировать проекты под мобильные платформы.

Unity3d был вычеркнут из списка почти сразу — «непонятки» с лицензированием для некоммерческих проектов: на сайте ее в явном виде нет; по слухам на просторах интернета у кого-то получалось — это решить в индивидуальном порядке или на особых условиях лицензирования и все в этом духе… Слишком много вопросов и мало ответов — решил, что проще не связываться.

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

Кроме этого важным критерием при выборе была кроссплатформенность как финального продукта так и инструментов разработки — этот была общая проблема.
В итоге выбор пал на blender. До сих пор многие его воспринимают исключительно как инструмент 3d моделирования(рендер, композинг, анимация и тд), но ни как движок. Хотя данный его модуль буквально с каждым обновлением получает новые возможности. Так же к нему можно подключить, внешний графический движок, например: Ogre или Crystal Space, а так же другой физический движок, при необходимости.

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

  • Создание «полноценных» шейдеров (GLSL)
  • Возможность подключение внешних файлов скриптов (по умолчанию скрипты пишутся в самом .blend-файле проекта, во встроенном редакторе)
  • Проверка работоспособности физики и логики по коллизии между объектов, а так же событийная модель в целом.

Было принято решение, по крайней мере на этапе прототипа основной версии игры остановиться именно на нем.

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

Язык программирования и IDE

Выбор движка был сделан он определил языка — python. До этого был опыт написания на нем как под веб-проекты, так и когда-то давно скриптов непосредственно под сам blender. Проблем с разработчиками, документацией и сообществом тоже не должно быть.

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

3d-редактор

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

Им стал Softimage Mod Tool урезанная во многом версия редактора Softimage XSI для создания игровых модов и некоммерческих проектов. Проблема была лишь в разных маштабах между игровой сценой и Mod Tool, но она быстро решается пайплайном экспорта-импорта.

Локализация

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

Веб-платформа

Публичный проект необходимо адекватно и удобно представить в сети:

  • Коллективная удаленная работа и планирование
  • Написание документации
  • Возможность работать с комьюнити
  • Публикация исходников

Инструментом коллективной сначала стал googel apps позже teamlab. Описывать проект и создавать задачи (особенно вложенные) в teamlab оказалось крайне не удобно а разграничения прав пользователей крайне не очевидным в итоге пришлось продолжить поиски, в том числе создать соответствующий вопрос в q&a. Максимально соответствующий всем моим там озвученным требованиям оказался не очень известный birdviewprojects. Сочетающий в себе инструменты: планирования, коллективной работы и небольшой «бухгалтерии».

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

Загрузилась и запустилась только MediaWiki. При этом именно она была на первом месте среди претендентов по совокупности имеющихся возможностей. Так что стечение обстоятельств стало определяющим фактором.

Работа с комьюнити и хранилище исходников в современном открытом программном продукте часто идут «бок о бок ». Это наш случай — github, по моему личному убеждения, не имеет на данный момент конкурентов, если не нужны приватные проекты которые для данного проекта не актуальны.

Лицензия

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

По этим и ряду других причин после долгого изучения различных вариантов для кода была выбрана New BSD, а для всего остального контента, начиная от моделей и заканчивая документацией (для всех материалов где лицензия не указана явн) CC BY-NC 3.0 дающая возможность использовать все в некоммерческих проектах, а при желании запросить у правообладателя индивидуальное расширение ее рамок.

Послесловие

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

Автор: Kaaboeld

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js