Содержание:
Опубликовано: 10 Июля 2009
Что такое 0 A.D.?
0 A.D. - бесплатная кросс-платформенная трёхмерная историческая стратегия реального времени, находящаяся в разработке.
Что вы делаете?
Переходим от закрытого процесса разработки к открытому: делаем исходный код доступным под GPL, а ресурсы под CC-BY-SA и стимулируем внешний вклад. Мы несколько лет работали над 0 A.D. в свободное время, и сейчас хотим показать, чего мы достигли и упростить другим людям вовлечение в процесс.
0 A.D. очень сложный и амбициозный проект. В него вложено много работы и многое ещё предстоит сделать. Мы не выпускаем готовый продукт, пригодный для игры - придётся долго ждать, если вас это интересует. Есть ещё много недостающих возможностей, багов и острых углов. Мы выпускаем это как проект-в-разработке, пре-альфа версию, предназначенную для разработчиков, интересующихся такими вещами, в надежде разделить ресурсы с сообществом, которое иначе было бы исключено из процесса разработки.
Это экспериментальный шаг, и мы не вполне уверены, что всё идёт наилучшим образом, потому мы двигаемся осторожно и пытаемся адаптироваться, основываясь на опыте. Данный документ описывает наши текущие планы. Обратная связь будет оценена! Связывайтесь с нами на наших форумах или на канале #0ad на QuakeNet IRC.
Почему меня это должно интересовать?
Мы думаем, это хороший шанс создать довольно качественную игру с некоторыми уникальными возможностями. Возможно, вы хотите помочь этой игре выйти в свет.
Возможно, вы хотите получить опыт работы над сложным программным продуктом или конкретно над игрой. Данный проект включает в себя: графика и аудио, AI и UI, работа с файлами и создание скриптов для геймплея, работа с сетью и многое другое. Базовый фреймворк - уже готов, кое-что в нём уже проработано, однако, есть еще много компонентов требующих усовершенствования.
Возможно, вы хотите улучшить работу игры на своей любимой платформе. Возможно, вы хотите показать нам как мы глупы и что как вы можете написать лучше. (Мы далеки от совершенства!)
Возможно, вы хотите использовать часть кода или арт-работ в собственном проекте. Возможно, вы хотите использовать 0 A.D для обучения практической разработки игр. А может быть, у вас есть другие причины.
Почему вы это делаете?
Мы работаем над этой игрой в той или иной форме с 2001. Мы прошли с тех пор долгий путь, но создание игры такого типа действительно нелёгкая задача. Изначальная команда разработчиков была по большей части студентами и теперь вошла в жизнь и не может уделять много времени проекту. Привлечение новых разработчиков сложно и затратно по времени - мало людей обладают временем и навыками для обучения работе в рамках нашего существующего кода и внесения значительного вклада. Потому мы хотим понизить барьеры для входа, сделать так, чтобы людям было проще получить наш проект и посмотреть, интересен ли он им, в надежде, что некоторые решат вовлечься в процесс разработки.
К тому же, у нас есть некоторые идеи, инструменты и код, который на наш взгляд вполне хорош, и которым мы хотим поделиться. Мы должны почистить его и задокументировать должным образом, чтобы он был более полезен для других людей, но предоставление доступа к коду - первая задача. И, в частности на Linux, открытый исходный код решает некоторые проблемы с распространением и отладкой, делая некоторые вещи проще для нас и для пользователей.
До текущего момента доступ к проекту был ограничен до "официальных" членов нашей команды. Однако, всегда присутствовало желание создать некоммерческую игру, просто концепция "открытого кода" не являлась интересной в тот период.
Как будет организована разработка?
Открыв 0 A.D, мы отдаем должное сообществу, предоставляя максимум информации и взаимопомощи в поддержке проекта, мы же в свою очередь, надеемся на ваш вклад в проект.
Раньше, все разработчики были частью "команды", к которой каждый мог присоединиться. У нас было короткое интервью через IRC, чтобы узнать кандидата, и, если он имел время, энергию и навыки для участия, он становился членом команды. Мы хотим сохранить ядро группы разработчиков и личный способ общения - мы не хотим рисковать разрушением команды, которую мы уже получили. Мы хотим сохранить направление к конкретной версии проекта и не хотим сильно отклоняться от него - мы скорее не будем добавлять (и поддерживать) возможности, которые не являются частью цели. Мы выпускаем ресурсы для двух из шести игровых цивилизаций, но сдерживаем цивилиации-в-разработке, пока они не будут более завершены и пригодны для использования.
Отдельно от этих ограничений мы открываем доступ к серверу системы управления версиями (Subversion) и системе документирования и отслеживания ошибок (Trac) и перемещаем наши технические обсуждения на открытый форум. Любой может скачать, собрать и запустить последнюю версию игры. Наш изначальный процесс вклада будет очень прост: если вы делаете изменения, вам нужно создать патч и предоставить его нам, а мы должны проверить его и, возможно, предложить некоторые изменения или зафиксировать его в svn.
Вопрос лицензирования патчей и доработок остается открытым. С одной стороны, принятие GPL кода участников дает гарантии, что мы не намерены нечестно использовать их труд. С другой стороны, мы намерены сохранять наши возможности открытыми, принимая код только под BSD-лицензией. Возможно, для создания специальной версии, скомпанованной с проприетарной программой обнаружения читов, для препятствования мошенничеству на многопользовательских картах, которое может быть элементарно встроену в игру с открытым исходным кодом. Или для компоновки с проприетарными системами цифровой дистрибуции, для более эффективного распространения игры. Однозначное решение этого вопроса пока не найдено, поэтому его обсуждение остается открытым.
Как выгядит код?
Это примерно 150 тысяч строк C++ кода игрового движка и ещё 25 тысяч для инстументария. Скрипты для игрового процесса пишутся на JavaScript. Код построен поверх низкоуровневых библиотек (OpenGL, OpenAL, ENet, ...), а не на готовом игровом движке (типа OGRE).
Код не идеален в плане модульности, написания и его чистоты. Он написан большим числом программистов и далёк от готовой базы кода. Мы хотим продолжить чистку как часть обычного процесса разработки. Мы не прочь переписать целые подсистемы, если это наиболее эффективный путь для того, чтобы они удовлетворяли нашим требованиям. Но во многих местах он довольно солиден.
Насколько код пригоден для повторного использования?
Большинство кода специфично для данной игры, однако, некоторые его части могут быть интересны для разработчиков, работающих над другими проектами. Несколько примеров:
- Низкоуровневая библиотека кроссплатформенной поддержки управления ресурсами (загрузка архивов, GL текстур и шейдеров, ...), отладочные инструменты (выдача ошибок, слежение за памятью, дампы стека), таймеры, асинхронный ввод/вывод, аллокаторы, ...
- Конвертор из моделей COLLADA со скелетной анимацией в простой формат, подходящий для игры.
- Система кэширования бинарных XML, предназначенная для быстрой загрузки ресурсов.
- Автоматизированные инстументы сборки, использующие Amazon EC2.
- Скучный математический код для матриц, векторов, кватернионов и т.д.
Как 0 A.D. соотносится с другими играми?
Мы знаем о нескольких других RTS с открытым исходным кодом. Glest достиг стабильного состояния и базируется на средневековом фэнтази мире, с менее сложным геймплеем и графикой, но с AI оппонентами (которые пока не реализованы в 0 A.D.). ORTS - фреймворк, делающий упор больше на исследовании AI, чем на игре. Spring - другой RTS-движок, который предназначен для игр, подобных Total Annihilation. 0 A.D. стремится отличаться от других игр, обеспечив новые идеи игрового процесса, детализованную графику и точный исторический сеттинг.
С чего я могу начать?
Смотри Руководство по началу работы, чтобы найти больше информации об игре, форумы для обсуждений, инструкции для сборки и запуска игры и ссылки для дальнейших подробностей.