[Нам пишут] О суровых буднях разработчиков

Нам пишет Дмитрий Грибков

Сейчас среди начинающих разработчиков стало очень популярно выпускать игры на iPhone. На первый взгляд никаких трудностей нет. Собирай команду, создавай игру и выпускай её в App Store. И вот именно с последним пунктом у многих разработчиков возникает огромное количество проблем, а если вашу игру еще издаёт известный издатель, то количество работы увеличивается в два раза.

Stick

Сам я являюсь разработчиком игр уже несколько лет и решил поделиться своим опытом, чтобы вы не повторяли моих ошибок. Для наглядности я возьму свою последнюю игру Agent Stick и покажу на примерах, какие ошибки совершают разработчики. Игра была написана за полтора года в сотрудничестве с издательством Alawar и большая часть этого времени ушла на тестирование и исправление ошибок.

Отказано по причине: «Вылетает при неопределённых ситуациях»

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

1

Отказано по причине: «Неправильная ориентация устройства»

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

2

Отказано по причине: «Игра падает при запуске»

Нужно не забывать, что вы разрабатываете игры не только на iPhone, но и для всего остального семейства iOS, в том числе и для плееров iPod Touch. Хоть на них и ставят железо с предыдущих моделей телефонов, они не настолько мощные. Об этом мы совсем забыли при разработке игры, да и у нас в конторе никогда не было «яблочных» плееров для тестирования. В нашей игре присутствует много текстур и графики, как оказалось первый iPod Touch с Ретиной недостаточно мощный, чтобы успеть обработать такую нагрузку, вследствие чего в определённых моментах игра вылетала. Баг выявился на финальном тестировании, что вызвало дополнительную задержку.

Отказано по причине: «Проблема со сторонними модулями»

Очень часто в игры добавляются готовые модули для решения определённых задач. Например, внутренние покупки или предложения оценить игру. Поскольку эти модули написаны сторонними программистами, они требуют от вас повышенного внимания. Очень часто с ними возникают проблемы при выходе обновлений ОС. Такие проблемы у нас были почти со всеми модулями, которые мы добавляли в игру. Даже на первый взгляд такой несложный модуль как «оценить игру», при выходе iOS 6.0 стал некорректно отображать текст. Так что всегда перепроверяйте сторонние компоненты, даже если они кажутся очень простыми.

4

Отказано по причине: «Текст выходит за границы»

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

5

Отказано по причине: «В игре присутствуют чит-коды»

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

6

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

Загрузить Agent Stick вы можете по этой ссылке.

А вот промо на загрузку игры, первая звездочка — это буква, а вторая цифра:

J*TKEFW*PXLN

Pages_
Если вам есть, чем поделиться с другими читателями нашего сайта, пишите на advert@appleinsider.ru и не забудьте указать свое имя или ник. Мы внимательно читаем входящие письма и публикуем ваши самые интересные истории.

Разработка приложений для iOS