вторник, ноября 09, 2010

Впечатления от работы с игровыми консолями

Меня тут в комментариях как-то просили рассказать о моих впечатлениях от работы с консолями, вот оно.

Пара слов о том, какие бывают игровые консоли. Есть те, которые надо подключать к телевизору, по-русски они обычно называются "приставки". Сейчас наиболее популярны три из них: Microsoft XBOX 360, Sony PS3, Nintendo Wii. Причем Wii всех рвет по продажам.

Есть консоли со своим собственным экраном, самые известные - Nintendo DS и Sony PSP.

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

Архитектура
Пришлось работать с довольно странной архитектурой, это непривычно. На консолях любят big endian. Что создает, хм, некоторые проблемы, если вам хочется двоичные данные с PC перенести на консоль. А вам этого захочется, потому что у вас все дизайнеры уровней сидят на PC.

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

В целом приходится сидеть сильно ближе к железу и вот здесь хорошо себя проявляет С++. Здесь вы можете и данные разложить как вам надо, и с полиморфным наследованием поработать.

Огромный плюс - консоли везде одинаковые. Например, у вас нет зоопарка видеокарт, как на PC, которые это поддерживают, это не поддерживают, а вот тут у нас драйвер устаревший... И это прекрасно.

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

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

Закрытость

Вы не можете задать вопрос в коммьюнити размером с целый мир. У вас есть закрытый форум или список рассылки, это вам не stackoverflow. Особого выбора библиотек тоже нет. Радуйтесь тому, что есть.


Ссылки по теме:
Про консоли
Updated 01.12.2010
Kill the Gatekeepers

15 коммент.:

Анонимный комментирует...

>Здесь с патчами все сложно. Либо их нет совсем, либо их довольно сложно и неудобно выпускать.

Не знаю как у Nintendo, но у Xbox есть Xbox Live, а у PSP - PSN, где обновления к играм не такая уж редкость.

Alena комментирует...

>Не знаю как у Nintendo, но у Xbox есть Xbox Live, а у PSP - PSN, где обновления к играм не такая уж редкость.

Они контролируются платформодержателем все равно. То есть вот такое тут очень маловероятно: мы выпускаем игру, а потом пяток патчей с багфиксами. Обновления с новыми уровнями, с новым контентом - это другое.

Анонимный комментирует...

1) Опечатка в заголовке "Архитектура".

2) Скажите, Алёна, есть ли здесь сходство с вашими "стадиями программиста" http://habrahabr.ru/blogs/arbeit/88443/?

3) >В целом приходится сидеть сильно ближе к железу

Вы имеете в виду что-то типа строк в стиле C или что-то пониже вроде ассемблерных вставок?

fuwaneko комментирует...

> Не знаю как у Nintendo, но у Xbox есть Xbox Live, а у PSP - PSN, где обновления к играм не такая уж редкость.

Ещё какая редкость. Microsoft на своём контроле качества патч может неделями мариновать, а потом завернуть обратно к разработчикам.

Игорь комментирует...

Слышал что на консолях нет операционной системы. Только прошивка из драйверов. Как следствие игра может не учитывать такие факторы как потеря графического устройства (DEVICE LOST), которое надо восстанавливать после того как приложение получило фокус - конкурирующих приложений, которые могут его отобрать просто нет. Если игра завершает работу то вместо очистки ресурсов и освобождения памяти как на ПК, она может просто перезагрузить консоль, после перезагрузки пользователь увидит стартовое меню.

Вопрос: что из этого правда?

Alena комментирует...

Анонимный

1) Опечатка в заголовке "Архитектура".

Поправила, спасибо.

2) Скажите, Алёна, есть ли здесь сходство с вашими "стадиями программиста" http://habrahabr.ru/blogs/arbeit/88443/?

Сходства есть, но мало.

3) >В целом приходится сидеть сильно ближе к железу

Вы имеете в виду что-то типа строк в стиле C или что-то пониже вроде ассемблерных вставок?


placement new, data alignment, такие вот вещи. Я бы это назвала "на уровне языка С". Не ассемблер, нет.

Игорь

Слышал что на консолях нет операционной системы. Только прошивка из драйверов.

...

Вопрос: что из этого правда?


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

zg комментирует...

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

Евгений Охотников комментирует...

Тщательно выстроен процесс тестирования, на тестировании не экономят

Алёна, а кто проводит тестирование -- держатели игровой платформы? Или это ответственность разработчика игры?

Alena комментирует...

Евгений Охотников

Алёна, а кто проводит тестирование -- держатели игровой платформы? Или это ответственность разработчика игры?

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

Евгений Охотников комментирует...

@Alena:

тогда я чего-то недопонял. А какой смысл разработчику тогда сильно вкладываться в тестирование? Ну выпустит он игру с багами, ну некоторые пользователи помянут его незлым тихим словом и?

Или держатель платформы в следующий раз не даст ему права на выпуск игры?

Alena комментирует...

Евгений Охотников

Или держатель платформы в следующий раз не даст ему права на выпуск игры?

Он в этот раз игру не пропустит, не в следующий. Все выпускаемые на платформе игры должны быть одобрены держателем платформы.

Евгений Охотников комментирует...

@Alena:

>Все выпускаемые на платформе игры должны быть одобрены держателем платформы.

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

Если так, тогда картинка сложилась, спасибо.

Alena комментирует...

Евгений Охотников
Т.е. дежатель проводит суровую проверку подготовленной разработчиком игры и, если находит проблему, просто отфутболивает разработчика.

Именно так.

Анонимный комментирует...

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

Вот момент с исходниками хотел уточнить, их тоже отправляют консоле держателю?
И если требования на ориентированную продажу, например выпуск игры у нас на консоли при колличестве тиража не менее 100 000?

Alena комментирует...

Анонимный

Вот момент с исходниками хотел уточнить, их тоже отправляют консоле держателю?

Нет. Никогда не слышала, чтобы кто-нибудь такое требовал.

И если требования на ориентированную продажу, например выпуск игры у нас на консоли при колличестве тиража не менее 100 000?

Про продажи ничего рассказать не могу. Я разработкой занималась.