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

19

Stick

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

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

Сам я являюсь разработчиком игр уже несколько лет и решил поделиться своим опытом, чтобы вы не повторяли моих ошибок. Для наглядности я возьму свою последнюю игру 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 и не забудьте указать свое имя или ник. Мы внимательно читаем входящие письма и публикуем ваши самые интересные истории.

19 комментариев

  1. 0
    vladislav735

    Не царское это дело коды угадывать (отправлено из приложения AppleInsider.ru)

  2. 0

    Нормальная игра? (отправлено из приложения AppleInsider.ru)

  3. 0
    Ивент Неродимый

    Так кто скажет, что там под звездочками? (отправлено из приложения AppleInsider.ru)

  4. 0

    А вот в Game Insight сидят видимо боги кодинга и упорно заявляют, что глюков с кристаллами (игровая валюта за реал) у них нет и быть не может. Ну и пофиг, что им регулярно пишут о подобной ошибке. Пофиг, что человек не мог за раз потратить столько (нет в игре таких цен). Вот на все им глубоко начхать — «у нас нет глюков» заявляют они. И куда еще можно написать (мыло Apple?) о таких вещах, если издателю все равно… ? (отправлено из приложения AppleInsider.ru)

  5. 0
    Максим

    стремная игра

  6. 0

    1,5 года на это?

    Смешно.

    А вообще — какие программисты, такой и результат.

  7. 0

    Спасибо, интересно почитать (отправлено из приложения AppleInsider.ru)

  8. 0

    Спасибо за статью) моя любимая тема:) (отправлено из приложения AppleInsider.ru)

  9. 0

    JATKEFW0PXLN
    JATKEFW1PXLN
    JATKEFW2PXLN
    JATKEFW3PXLN
    JATKEFW4PXLN
    JATKEFW5PXLN
    JATKEFW6PXLN
    JATKEFW7PXLN
    JATKEFW8PXLN
    JATKEFW9PXLN
    JBTKEFW0PXLN
    JBTKEFW1PXLN
    JBTKEFW2PXLN
    JBTKEFW3PXLN
    JBTKEFW4PXLN
    JBTKEFW5PXLN
    JBTKEFW6PXLN
    JBTKEFW7PXLN
    JBTKEFW8PXLN
    JBTKEFW9PXLN
    JCTKEFW0PXLN
    JCTKEFW1PXLN
    JCTKEFW2PXLN
    JCTKEFW3PXLN
    JCTKEFW4PXLN
    JCTKEFW5PXLN
    JCTKEFW6PXLN
    JCTKEFW7PXLN
    JCTKEFW8PXLN
    JCTKEFW9PXLN
    JDTKEFW0PXLN
    JDTKEFW1PXLN
    JDTKEFW2PXLN
    JDTKEFW3PXLN
    JDTKEFW4PXLN
    JDTKEFW5PXLN
    JDTKEFW6PXLN
    JDTKEFW7PXLN
    JDTKEFW8PXLN
    JDTKEFW9PXLN
    JETKEFW0PXLN
    JETKEFW1PXLN
    JETKEFW2PXLN
    JETKEFW3PXLN
    JETKEFW4PXLN
    JETKEFW5PXLN
    JETKEFW6PXLN
    JETKEFW7PXLN
    JETKEFW8PXLN
    JETKEFW9PXLN
    JFTKEFW0PXLN
    JFTKEFW1PXLN
    JFTKEFW2PXLN
    JFTKEFW3PXLN
    JFTKEFW4PXLN
    JFTKEFW5PXLN
    JFTKEFW6PXLN
    JFTKEFW7PXLN
    JFTKEFW8PXLN
    JFTKEFW9PXLN
    JGTKEFW0PXLN
    JGTKEFW1PXLN
    JGTKEFW2PXLN
    JGTKEFW3PXLN
    JGTKEFW4PXLN
    JGTKEFW5PXLN
    JGTKEFW6PXLN
    JGTKEFW7PXLN
    JGTKEFW8PXLN
    JGTKEFW9PXLN
    JHTKEFW0PXLN
    JHTKEFW1PXLN
    JHTKEFW2PXLN
    JHTKEFW3PXLN
    JHTKEFW4PXLN
    JHTKEFW5PXLN
    JHTKEFW6PXLN
    JHTKEFW7PXLN
    JHTKEFW8PXLN
    JHTKEFW9PXLN
    JITKEFW0PXLN
    JITKEFW1PXLN
    JITKEFW2PXLN
    JITKEFW3PXLN
    JITKEFW4PXLN
    JITKEFW5PXLN
    JITKEFW6PXLN
    JITKEFW7PXLN
    JITKEFW8PXLN
    JITKEFW9PXLN
    JJTKEFW0PXLN
    JJTKEFW1PXLN
    JJTKEFW2PXLN
    JJTKEFW3PXLN
    JJTKEFW4PXLN
    JJTKEFW5PXLN
    JJTKEFW6PXLN
    JJTKEFW7PXLN
    JJTKEFW8PXLN
    JJTKEFW9PXLN
    JKTKEFW0PXLN
    JKTKEFW1PXLN
    JKTKEFW2PXLN
    JKTKEFW3PXLN
    JKTKEFW4PXLN
    JKTKEFW5PXLN
    JKTKEFW6PXLN
    JKTKEFW7PXLN
    JKTKEFW8PXLN
    JKTKEFW9PXLN
    JLTKEFW0PXLN
    JLTKEFW1PXLN
    JLTKEFW2PXLN
    JLTKEFW3PXLN
    JLTKEFW4PXLN
    JLTKEFW5PXLN
    JLTKEFW6PXLN
    JLTKEFW7PXLN
    JLTKEFW8PXLN
    JLTKEFW9PXLN
    JMTKEFW0PXLN
    JMTKEFW1PXLN
    JMTKEFW2PXLN
    JMTKEFW3PXLN
    JMTKEFW4PXLN
    JMTKEFW5PXLN
    JMTKEFW6PXLN
    JMTKEFW7PXLN
    JMTKEFW8PXLN
    JMTKEFW9PXLN
    JNTKEFW0PXLN
    JNTKEFW1PXLN
    JNTKEFW2PXLN
    JNTKEFW3PXLN
    JNTKEFW4PXLN
    JNTKEFW5PXLN
    JNTKEFW6PXLN
    JNTKEFW7PXLN
    JNTKEFW8PXLN
    JNTKEFW9PXLN
    JOTKEFW0PXLN
    JOTKEFW1PXLN
    JOTKEFW2PXLN
    JOTKEFW3PXLN
    JOTKEFW4PXLN
    JOTKEFW5PXLN
    JOTKEFW6PXLN
    JOTKEFW7PXLN
    JOTKEFW8PXLN
    JOTKEFW9PXLN
    JPTKEFW0PXLN
    JPTKEFW1PXLN
    JPTKEFW2PXLN
    JPTKEFW3PXLN
    JPTKEFW4PXLN
    JPTKEFW5PXLN
    JPTKEFW6PXLN
    JPTKEFW7PXLN
    JPTKEFW8PXLN
    JPTKEFW9PXLN
    JQTKEFW0PXLN
    JQTKEFW1PXLN
    JQTKEFW2PXLN
    JQTKEFW3PXLN
    JQTKEFW4PXLN
    JQTKEFW5PXLN
    JQTKEFW6PXLN
    JQTKEFW7PXLN
    JQTKEFW8PXLN
    JQTKEFW9PXLN
    JRTKEFW0PXLN
    JRTKEFW1PXLN
    JRTKEFW2PXLN
    JRTKEFW3PXLN
    JRTKEFW4PXLN
    JRTKEFW5PXLN
    JRTKEFW6PXLN
    JRTKEFW7PXLN
    JRTKEFW8PXLN
    JRTKEFW9PXLN
    JSTKEFW0PXLN
    JSTKEFW1PXLN
    JSTKEFW2PXLN
    JSTKEFW3PXLN
    JSTKEFW4PXLN
    JSTKEFW5PXLN
    JSTKEFW6PXLN
    JSTKEFW7PXLN
    JSTKEFW8PXLN
    JSTKEFW9PXLN
    JTTKEFW0PXLN
    JTTKEFW1PXLN
    JTTKEFW2PXLN
    JTTKEFW3PXLN
    JTTKEFW4PXLN
    JTTKEFW5PXLN
    JTTKEFW6PXLN
    JTTKEFW7PXLN
    JTTKEFW8PXLN
    JTTKEFW9PXLN
    JUTKEFW0PXLN
    JUTKEFW1PXLN
    JUTKEFW2PXLN
    JUTKEFW3PXLN
    JUTKEFW4PXLN
    JUTKEFW5PXLN
    JUTKEFW6PXLN
    JUTKEFW7PXLN
    JUTKEFW8PXLN
    JUTKEFW9PXLN
    JVTKEFW0PXLN
    JVTKEFW1PXLN
    JVTKEFW2PXLN
    JVTKEFW3PXLN
    JVTKEFW4PXLN
    JVTKEFW5PXLN
    JVTKEFW6PXLN
    JVTKEFW7PXLN
    JVTKEFW8PXLN
    JVTKEFW9PXLN
    JWTKEFW0PXLN
    JWTKEFW1PXLN
    JWTKEFW2PXLN
    JWTKEFW3PXLN
    JWTKEFW4PXLN
    JWTKEFW5PXLN
    JWTKEFW6PXLN
    JWTKEFW7PXLN
    JWTKEFW8PXLN
    JWTKEFW9PXLN
    JXTKEFW0PXLN
    JXTKEFW1PXLN
    JXTKEFW2PXLN
    JXTKEFW3PXLN
    JXTKEFW4PXLN
    JXTKEFW5PXLN
    JXTKEFW6PXLN
    JXTKEFW7PXLN
    JXTKEFW8PXLN
    JXTKEFW9PXLN
    JYTKEFW0PXLN
    JYTKEFW1PXLN
    JYTKEFW2PXLN
    JYTKEFW3PXLN
    JYTKEFW4PXLN
    JYTKEFW5PXLN
    JYTKEFW6PXLN
    JYTKEFW7PXLN
    JYTKEFW8PXLN
    JYTKEFW9PXLN
    JZTKEFW0PXLN
    JZTKEFW1PXLN
    JZTKEFW2PXLN
    JZTKEFW3PXLN
    JZTKEFW4PXLN
    JZTKEFW5PXLN
    JZTKEFW6PXLN
    JZTKEFW7PXLN
    JZTKEFW8PXLN
    JZTKEFW9PXLN

  10. 0

    У кого джейл тот не парится — скачал, поиграл и удалил к чертям, ибо кал. (отправлено из приложения AppleInsider.ru)

  11. 0

    Зацените мою игрульку! https://itunes.apple.com/us/app/the-forest-of-fear/id592145814 Пишите если не можете купить, дам промо!

  12. 0
    прохожий

    Удивительно. Я так понимаю, уже и ученики школ для умственноотсталых стали писать игры для iOS? «Падает при запуске» и тестировали полтора года. Гы-гы )))))))))

Авторизуйтесь Чтобы оставить комментарий