Интервью с первопроходцем



Моим первым допрашиваемым стал mokus, интервью попытаюсь приурочить к выходу его новой игрушки
Contre Jour в эппсторе.

Досье на mokusа:



Имя: Максим Грынив

Возраст: 28 лет

Место жительства: Львов

Чем знаменит: В этом году его игрушка Contre Jour стала победителем в номинации лучшая игра на мобильные устройства на крупнейшей ежегодной выставке компьютерных и видеоигр E3 по версии геймпро

Должен заметить, что я лично впервые запомнил никнейм Максима Грынива после прочтения его первого поста на хабре. Это было приятный постмортем его игрушки Huje Tower. Честно говоря, у меня еще тогда зачесалось где-то там и я как обычно хотел поспорить с ним о нескольких моментах, которые он описал, но как вы можете понять по фотографии я поступил правильно просто почесав проблемное место. И вот через несколько лет после событий имевших место быть я взял у него интервью. И причем сделал я это не просто так, а приурочив к выходу его игрушки, которая заслуженно может считаться гордостью нашей игровой инди индустрии. Ну конечно отбросим прочь мое субъективное мнение и обратимся к людям, которые разбираются в Играх, а для этого перенесемся ближе к крупнейшей в мире ежегодной выставке-шоу индустрии компьютерных и видеоигр.

Что для вас, шалопаев, значат эти две закорючки «Е» и «3»? Думаю, большинство из вас только слышали что где-то там, что-то происходит. И чем же крута эта выставка спросите вы? А я вам скажу, что кроме того, что слайдер на их официальном сайте, похож на тот, что у меня в блоге, крута она размахом. Конечно определяющим является не количество людей, посетивших выставку и не то сколько было участников, а то кто же туда пришел. Если вы взгляните на список заметных компаний, то поймете, что любая компания, которая делает игры и делает их качественно, пришла туда, чтобы показать, что они еще в теме. И вот представьте это полчище гигантов игровой индустрии, кровь, пот и слезы невинных жертв и слабонервных журналистов и маленькая инди игрушка, которая соревнуется наравне с остальными и побеждает в своей номинации на геймпро.

Атмосферная игрушка, на создание которой Максима вдохновил Маленький Принц, забирает первый приз на радость автору и паблишеру (ну и нам конечно).

Ну надеюсь теперь вы понимаете насколько крут этот мужик, у которого я буду брать интервью.



Расскажи немного о том, как ты попал в геймдев. Насколько для тебя важна роль инди разработчика в твоей жизни. Как на это смотрят твои друзья и близкие?

После того как года 3-4 поработал программистом меня потянуло делать какой-то стартап. Что именно делать мне было все равно, зато я знал как. Старый знакомый подписал меня в долю в проект chobots.com — MMO для детей. Так я попал в игры. Потом я ушел из chobots и начал делать игры сам.

Если честно, то мне толком все равно, что делать. Я делал антивирусы, системы стриминга медиа контента, онлайн проекты, что-то для авиакомпаний. И все мне приносило удовольствие. И приносило бы дальше, если бы я не попал в геймдев. Побыв 2 года инди, понимаю, что назад дороги скорей всего нет. Работая в офисе, я фактически достиг потолка как программист. Чтоб расти профессионально дальше, надо б было сваливать в Калифорнию и устраиваться в какой-то Майкрософт или Гугл. Делая игры сам, я сам ставлю себе задачи. Сам определяю свой потолок. Ни объем, ни сложность фактически ничем не ограничены. И что радует, я дальше продолжаю расти. Сравнивая то, что делаю сейчас с тем, что делал год назад я вижу громадную разницу и это радует. Ну и дальше будет больше, лучше и круче.
Ну и куча остальных плюсов — спишь, когда хочешь, сколько хочешь, работаешь, где хочешь и как хочешь. Делаешь то, что хочешь и именно так, как хочется. Надоело — забил на все болт. Есть вдохновение — сидишь по 16 часов в сутки за кампом. Не нравится погода — уехал на 3 месяца в Малайзию.
Как на это смотрят твои друзья и близкие?
Радуются, гордятся, но самое главное не понимают.
Никто толком не понимает ни что я делаю, ни как это приносит деньги. Для большинства людей это на уровне магии.
Даже друзья, которые работают в IT задалбывают вопросами «Ты уже сдал игру?». И нереально им объяснить, что я не «сдаю» ничего. Что у меня нет заказчика. Что мой заказчик — простой американец, который заплатит 99с за мою игру. Что мой заработок колеблется от 0 до бесконечности.
Или вопросы типа «у тебя контракт с ЕА, то ты теперь для них на заказ будешь делать игры? Это же стабильнее...». Очень трудно объяснить, что все мои усилия как раз были направлены на то, чтоб убежать от этой «стабильности». Что работать на ЕА не круто. Круто быть с ними партнерами. Что за «стабильность» наемного работника, каждый платит слишком большую цену, даже этого не осознавая.
Если выразить то, как близкие относятся к тому, что я инди одним словом то это слово «непонимание».

Давай о рисках. Ты рисково поступил, выпуская черно белую игру под iOS. До этого успешных примеров таких игр было немного. Я так понимаю ч/б цвет частично выбрал из-за невозможности красивой программной реализации тех же функций. Как часто ты рискуешь во время разработки, как к этому относятся крупные кампании (Чилинго и т.д.)


Наверное, рисково. Не знаю. Оценка рисков это слишком непонятная материя для меня. Я делаю игры, которые нравятся мне. Те, в которые я б хотел играть, если б их делал кто-то другой. Пока я с этого получаю достаточно прибыли, чтоб продолжать дальше.
Когда я начинал делать Contre Jour, у меня в голове была уже готовая картинка. И эта картинка была черно-белой. Уже позже я стал экспериментировать — добавлять цвет. Игра стала терять атмосферу и целостность, тогда от цвета решил отказаться окончательно.
Сейчас я знаю, как можно сделать эту игру разноцветной. Но ни разу не жалею, что она ч.б. — мне она нравится именно такой.
Постфактум можно анализировать, что такого типа игры не было на рынке, хотя спрос на такие игры есть (доказано Лимбо), такие игры всегда тепло встречает жюри на всяких контестах и т.д.
Но я так не делаю. У меня только один аргумент «А мне так нравится».
как к этому относятся крупные кампании (Чилинго и т.д.)
Их это, скорее всего не волнует. Рискую я, а не они. Контракт подписывается на уже готовую игру, или когда есть нормальная демка. Не захотят — не подпишут. Насчет конкретно этой игры, то чилингам она понравилась сразу. Кроме Чиллинго было еще много предложений от паблишеров, так, что паблишеры скорей никакого риска в ч/б не видят.

Когда ты начал делать игру, думал о том, во что все выльется. Контракт с чилами, победа на конкурсе, слюни разработчиков или ты просто хотел сделать хорошую игру для себя?
Даже не подозревал. Я вообще делал мультиплеерный динамичный шутер. Довольно неплохо продвинулся — уже можно было несколькими плеерами бегать по уровням и перестреливаться. И не знаю, почему вспомнил про идею, которую мне друг подбросил — сделать игру, где будешь управлять не персонажем, а землей вокруг него. В определенный момент, работая над чем-то другим, понял, как такую землю смоделировать.
Написал за вечер демку и сразу получил вау-еффект. Показал автору идеи (Антон Михайлец — он в кредитсах как автор идеи записан), он подтвердил вау-еффект. Я забросил шутер и начал делать Contre Jour.
За три недели сделал флешевую демку. Показал друзьям, все заценили. Изначально понял, что механика никак не для мышки, только для мультитач скрина. Потому разослал видео паблишерам на iPhone, всем понравилось, но все захотели видеть демку, работающую на девайсе.
Я срочным делом купил iPad и недели за 3 переписал демку на objc. Попутно переработал физику.
Это был новый год. И чилинго удивили тем, что, несмотря на праздники, очень быстро отвечали на е-мейлы. Так что когда остальные паблишеры ответили «крутая демка — давай подписывать контракт» контракт с чилинго уже был подписан.
Не планировал делать игру так долго. Не подозревал, что получу номинацию на Е3, выиграю бест мобайл на GamePro, выйду в финал на IGN. Ну и раньше iOS игры на E3 вообще ничего не получали — эта первая и пока единственная номинированная. Что конечно тешит ЧСВ.
Но Чилинго видимо сразу увидели потенциал и правильно меня настроили. Ко мне прикрепили продюсера — Том Киннинбург. И он изменил судьбу игры одной фразой — он написал: «Чувак, эта игра может быть круче, чем World of Goo». Меня это и испугало и раззадорило. Ну и в результате игру я делал намного дольше и сделал намного лучше, чем планировал.
Понятно, что это все равно не уровень «World of goo» но игра получилась классной.
Номинация на Е3 меня все еще шокирует. Все-таки моя игра соревновалась в другой весовой категории. Обойти такие игры как FIFA, StreetFighter или тот же Shadowgun. Это было круто и абсолютно неожиданно.

Ты уже писал, что люди из Чиллинго помогли тебе серьезно улучшить твою игру. Как ты воспринимал их советы? Это была безоговорочная истина или вы спорили о каждом пункте. Работу по улучшению проводил продюсер по мейлу?


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

Насчет прямых советов «здесь сделай так, а здесь это подвинь», то я их реализовывал, только если сам видел в этом смысл. Если не соглашался, то аргументировано отказывал. Если начинали давить, а такое было, то отписывал чтото вроде «спасибо за вашу точку зрения, но я принял решение». Думаю, как сложится с ними работа, зависит от разработчика. Но я сам не лезу в маркетинг, а Чилингам не позволяю слишком глубоко лезть в разработку. Если бы продюсер умел делать игры — он бы делал игры, а не улучшал чужие. Потому он всегда может помочь со свежим взглядом, оценить покритиковать, но решения принимаю только я.
Работу по улучшению проводил продюсер по имейлу?
Была постоянная коммуникация по мейлу, скайпу — в чате и голосом. С продюсером, главой маркетинга, директором. Это один из основных плюсов Чилинго — они отвечаю на мейлы. И делают это моментально. Иногда на протяжении 1-2 минут (если рабочий день, конечно). После всего моего опыта с флешовыми и iOS паблишерами это было очень странно. Я до этого привык писать письма в стиле «Я вам написал 3 письма на протяжении последних 2х недель, пожалуйста, ответьте, с уважением — Макс»
С Чилинго этого просто нет.

Сколько заняла «чистая» разработка (ну примерно) и грязная? Были переломные моменты в работе? Когда хотелось все бросить и начать делать что-то другое или энтузиазм был на протяжении всей разработки?


От первого коммита до код-фриза — 7 месяцев. Еще 2 месяца тупо сижу и жду релиза — Чиллинго решили не релизить посреди лета. Еще раз замечу — первая демка, а это фактически вся основная механика и 10 уровней, заняла 3 недели.
Чистая разработка… сложно сказать. Но я б разделил так — 3 месяца разработка и 4 месяца полировка и разработка фишек, которые в игру не попали. В самом деле — громадная куча механики просто не подошла игре по темпу и была выброшена на свалку.


Переломных моментов было 2: 1й контракт с Чиллинго и их лозунг «делаем на уровне World of goo» и 2й — Е3.
Оба раза это давало мне необходимый пинок под зад и заставляло сделать еще один рывок в плане качества.
Моментов, когда хотелось бросить, не было. Все-таки ради этой игры я другую уже бросил. Если все подряд бросать на полпути — так ничего и не закончишь. Были моменты, когда хотелось релизить «вот прямо сейчас» и все. Это было вызвано и тем, что деньги закончились и тем, что работал я на одолженном макбуке и тем, что просто достало и «итак уже хорошо». Частично меня с этого настроения сбивали Чиллинго. Частично я сам думал «ну уже 6 месяцев потратил — могу и еще 2 недели подождать». Сложнее всего было когда я сделал уже финальный билд, а Чиллинго еще не назначили дату. Я думал, что конец разработки фактически означает релиз, а оказалось, нет. Релиз должен быть тогда когда это выгодней. И когда назначили дату «через 2 месяца» я, конечно, тихо позлился, но смолчал и с чистой совестью пошел 2 месяца курить бамбук.

Я помню твою игру Huje Tower, купленную баблами. Левелы в ней делали твои друзья, а в Contre Jour ты делал все сам? Чем обычно руководствуешься при разработке уровней? Есть какие-то фишки, которые ты всегда используешь при создании уровня или правила, которые помогают тебе с левелдизайном?


Да, в Contre Jour делал все сам. Когда я делал Huje Tower, я все еще считал себя программистом, и потому старался все остальное сгрузить на других. Потом постепенно начал вникать в остальные аспекты геймдева, понимать психологию игрока, откуда берется радость, что наоборот бесит.
Вообще, очень много деталей и не уверен, что смогу все кратко описать.
Главное четко понимать, для кого игра делается и левелы должны этому соответствовать.
На примере Contre Jour — есть 2 типа сложности в этой игре: скилл и логика.
Я старался сделать игру для людей более вдумчивых, которые будут получать удовольствие от решения задачи. Потому влияние скиллов старался понизить до минимума. Банально — если ты знаешь, как пройти уровень, ты его пройдешь легко. Это сознательный выбор — такой аудитории соответствует и графика и музыка. И именно к этой аудитории я отношу себя. Можно сказать, что игра более «взрослая» чем те, что в топе апп стора.
Возьмем, к примеру, cut the rope: experiments — игра чисто на скилл. Механики схожие, уровни — полная противоположность. Прохождение каждого уровня читается сразу, сложность в том, чтоб нажать в нужную часть экрана в нужный момент. Игра для абсолютно другой аудитории (которая намного шире на самом деле).
Кроме того у игры есть темп и этот темп нельзя ломать. Вся механика должна сочетаться и дополнять одна другую.
Стараюсь свести к минимуму негативный опыт — игроки не любят когда их персонаж умирает. Если есть возможность перестроить уровень без смерти персонажа при ошибке игрока — я это делаю.
Отдельная тема последовательность уровней. Обучение игрока самими уровнями, а не подсказками.
Много еще деталей. Информации на большую статью или маленькую книгу — сюда явно не влезет.

Расскажи про objc, прочел, что ты им жутко недоволен. Помешал ли он как-то в разработке? Приходилось ли тебе подстраиваться под язык, а не подстраивать язык под игру? Был ли опыт работы с различными фреймворками?


За время работы программистом я писал коммерческие приложения на C#, Java, AS, теперь вот на objc. Есть с чем сравнивать.
Если объективно, то objc язык, созданный в начале 80х и абсолютно соответствует тогдашнему уровню развития технологий и languange design-а. И проблема в том, что сейчас уже 2011, а objc все еще тянет за собой кучу говна из прошлого.
А «жуткое» недовольство во мне вызывает, когда кто-то их эпл-фанбоев начинают его хвалить, искать в нем какую-то романтику и т.д.
А вообще — писать на objc можно. Помешать разработке язык не может — просто затягивает разработку. За время работы с objc я уже понаступал на основные грабли и знаю, как их обходить.
Тоже самое XCode — IDE, которая на десятилетия отстает даже от FlashBuilderа, но главным инструментом разработчика по прежнему остается мозг. Если есть мозг, то писать можно на любом языке и в notepad-e. Это будет долго, ужасно больно, но будет работать.

Очень сильно затягивает разработку низкоуровневая часть. Когда чтоб просто нарисовать залитый полигон надо провести его триангуляцию, создать несколько массивов и скормить все это видеокарте. Это очень больно, так как знаешь, что это могло занять 4 минуты, а ты делаешь это уже 2й день. Так как антиалиасинга нет, а сделать плавно и красиво надо. Но это плата за быстродействие. Это необходимая жертва, которую я готов принести, чтоб мой юзер смог получить удовольствие от игры на сравнительно слабых девайсах.
А objc — никому не нужная боль. При всей своей ущербности он еще умудряется проигрывать современным языкам в производительности.

Приходилось ли тебе подстраиваться под язык, а не подстраивать язык под игру.

О… это очень опасный момент для программистов. Но тут скорее вопрос не в языке, а в наборе технологий — язык, фреймворки, движки, алгоритмы (как чужие так и свои). Очень опасно, когда при разработке отталкиваешся от реализации, а не от требований. Когда начинаешь подгонять геймдизайн под то, как механика «уже работает».
Механика должна быть реализована так, чтоб человеку было проще и интересней играть, а не чтоб программисту было проще ее сделать. Точка. Никак иначе.
Желание оставить все как есть надо в себе жестоко истреблять. И когда программист говорит «так как надо сделать невозможно» то 99% что он просто ленивая свинья или плохой программист.

Был ли опыт работы с различными фреймворками?


На других платформах с чем только не работал. Перед тем как писать Contre Jour сделал рисерч что сейчас есть для iOS. Поганял MonoTouch в комплекте с XNATouch. Посмотрел на Unity. Но остановился на старом добром Cocos2d+Box2d — хотелось не экспериментов, а уверенности.

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

Можешь рассказать про свое наибольшее разочарование и самую большую победу во время разработки.


Ну… разочарование было что не пошла игра GibFest. Игра то была офигительной, но сейчас я понимаю, что это было закономерно. Были проблемы в игре, которые я не захотел решать. Они ее и утопили. Нельзя так. Если сам знаешь что есть проблемы их надо исправлять. Переделывать пока не станет идеально — это окупится.
Рейтинг на конге — около 4.3 потом показал, что игра все-таки офигительна, но отдачи с нее я не получил.

Самая большая победа это конечно номинация на Е3. Не уверен, что еще получится одну получить или хотя бы приблизиться к этому. Круче может быть только победа на Е3. Но буду стараться.

Скажи вот ты общался с чуваками с MTV, и с Чиллинго, может еще с каким-то гигантом и всегда успешно. Ты думаешь это все заслуга игры или может у тебя есть рецепт составления хороших писем?


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

За каждой successstory скрывается долгий путь наверх, конечно бывают случаи, когда просто повезло, но это не про меня.
Единственное правило, которого я придерживаюсь — сохраняю всю историю переписки. И когда пишу новое письмо — отвечаю на предыдущее. Человек, даже если меня забыл, видит, что мы уже общались, значит это что-то важное — больше шансов, что прочитает и ответит. Ну и стараюсь говорить прямо. Когда меня спрашивают: «ОК, чего ты хочешь?» я всегда отвечаю четко. «Я хочу 15 тыщ зеленых и 50% прибыли». И никогда пурги типа «а я не знаю,… а что вы предлагаете?.. а я должен оценить рынок». Это бесит. Особенно тех, кто имеет дело с большими деньгами. Они скорей нормально прореагируют на ответ «я хочу 100500 баксов авансом». Они просто откажут, но будут вас уважать. Если вы не знаете, чего хотите, не знаете, чего стоит ваша работа, а еще хуже боитесь потерять — вам нефиг делать в бизнесе.

Игра еще не вышла, но может у тебя уже есть предположения насчет ее успешности? Место в аппсторе, количество скачиваний, может сколько заработает?


Ну… я не хочу загадывать. Предсказания, как и маркетинг не мое. Про заработок уверен, что заработает больше чем достаточно — потребности у меня не большие.

А планы на будущее уже есть? Возьмешься добивать старые игрушки или пойдешь делать новые. Может пк/иксбокс или какая-то совсем редкая платформа?


На 100% уверен, что не буду «доить» игру, как, например, ровио поступают с Энгри Бердс. Буду делать новые. К Contre Jour тоже будут апдейты, но не больше 2х. Не вижу смысла в пазлах на 150 уровней.
Хочу пробится на «взрослые» платформы. Contre Jour возможно выйдет на PS Vita — ведутся переговоры.
Следующая игра скорей всего будет на тач девайсы — есть интересные идеи, буду пробовать реализовать.
Если будут позволять финансы, то это будут игры немного другого уровня — буду стремиться соревноваться с тяжеловесами.

Не задумывался о создании команды/фирмы. Уверен, многие охотно поработали бы с тобой?


Этим в даный момент и занимаюсь. Очень трудно найти подходящих людей, которые создадут ядро команды.

Если хочешь, можешь что-то пожелать коллегам или передать привет Гейбу Ньюэллу.


Спасибо, интересно было отвечать.
Пожелаю всем, чтоб не повторяли моих ошибок. Не старайтесь выпускать по игре раз в месяц или 2 недели. Делайте только самые крутые ваши идеи, но вылизывайте их до последнего. Не идите на компромиссы. Если что-то не идеально — переделывайте, пока не станет идеально.
А привет мой Кайлу Габлеру. Кайл, давай сделаем чета вместе. У нас круто получится!

Спасибо большое за интервью.

Автор согласился ответить на вопросы в каментах, если нет тут аккаунта, то можно написать у меня в блоге.
я перепощу.
И конечно оформление тут дико пострадало еще 3 интервью я буду кросспостить, а потом буду постить только у себя т.к. 1,5 часа убил просто на оформление.
  • +54

Комментарии (74)

+2


видос посвежее
0
Видос за душу трогает…

Интервью отличное!!!
0
0
Несомненно +1.
Но ночью скучно. Никто не читает, не комментирует… :(
0
Респект.
Хорошее интервью, интересно читать.
0
ох как поздно… замечательно интервью!
у иеня только один вопрос — это правда его фотка?
+4
да)
0
вот таки чего мне не хватает), а там сплит еще, не..?
убил мое представление о идеальном айтишники…
0
Классное интервью. Успел прочитать у тебя в блоге до этого поста :)
В роликах слышны мелодии Тьерсена (а в первом видео с какой-то аранжировкой), в игре они тоже?
0
Это David Ari Leon — музыку писал специально для этой игры. Вдохновлялся он конечно Тирсеном (а некоторые моменты откровенно у него слизал)
0
Спасибо. Мокус крут)
Huje Tower относительно выстрелила, но Contre Jour это просто прыжок на несколько уровней вверх!
0
Zarkua — молоток, интерсное интервью получилось. Mokus'у, помимо занимательного рассказа, отдельный респект за Contre Jour, в одиночку запилить игру такого класса — это по-взрослому, фотка на 5+ )))
+2
Делал не сам — месяца 1.5-2 работал с художником. Рисовать то я умею только математикой :) Соответственно персонажа в игре рисовал я, монстриков всяких я — все что движется. А статичное художник.
Ну и музыку писал David Ari Leon — его мне чилинго нашли.
0
Интервью получилось богатое, даже я бы сказал глубокое, в чем заслуга конечно и того, кто вопросы задает тоже. Респект!
0
про низкоуровневую часть — была ведь, наверное, написана какая-то обертка, будешь использовать её в следующих проектах?
0
Конечно. Но реализован был частный случай. Соответственно и быстродействие повыше. Ну и если будут какието дополнительные требования — залить градиентом, текстурой, то все надо будет дописывать.
+4
zarkua, по-моему ты нашел себя не только в картинках! Профессионально, интересно, мотивирующе! ++
mokus — очень правильный подход к предмету, вызывающий искреннее уважение. Ну и Е3 — это конечно круто!
0
Интересно, спасибо
0
За время работы с objc я уже понаступал на основные грабли
Может пробежишься по списку в двух словах.
+15
Постараюсь вспомнить побольше
1. Конечно ручное управление памятью. В это надо вникнуть. retain/release итд. Тривиально, но нигде это не реализовано хуже. В тех-же С++ есть куча библиотек со смартпоинтерами и хоть ретейн-релиз не надо писать.

2. Отсутствие NullReferenceException. Тоже что было в AS2. Вызвали любой метод на nil обьекте — программа работает дальше. Результат — баги которые ловятся и фиксятся за секунды можно искать и по пол часа.

3. EXC_BAD_ACCESS — это АД. Это впринципе С++ проблема. Обясню как это происходит. Мы можем закастить любой обьект к любому типу. Или вообще что угодно к чему угодно. Например метод нам возвращает массив b2Fixture, а мы чето решили что это b2Body и в цикле for с элементами массива работаем как с b2Body. Вызываем методы, данные меняются.

Конечно мы не получим не эксепшена ни еррора. Все будет работать. Но будут непредсказуемые сайд эффекты. Мы фактически портим память. Как результат- могут с экрана пропадать спрайты, могут вылезти непонятные значения в разных переменных. Фактически программа начинает «сыпаться». И заканчивается это EXC_BAD_ACCESS без стек трейса или с непонятным стек трейсом, который никак не связан с проблемой.

Проблема №1 это очень сложно локализировать. Срать в память может любой ваш код и вылазить это все будет по разному.
Проблема №2 это нереально репродюсить. Вы можете при каждом запуске ловить новые ерроры в новых местах.

И всеравно это надо фиксить. Иногда на 1 такой баг уходят дни.

4. Неконсистентная обьектная модель. У нас есть ВСЕ. Классы, указатели, структуры, примитивы. При чем совместимость никакую структуру не запихнеш в массив, все наследуеться от NSObject, но не C++ классы конечно. В результате получаем, что для того чтоб просто передать какуюто структуру в ассинхронный вызов метода пишем какието уродливые костыли.

5. Отсутствует статическая инициализация.
Нельзя член класса сразу проинициализировать — типа CCSprite* someObject = [[CCSprite alloc]init];
А хочеться.

6. Запутанная работа конструкторов.
Если есть сложная иерархия классов, и несколько конструкторов, которые вызывают друг друга — при наследовании вылазят проблемы. В результате некоторые члены можна проинициализировать по пару раз — память сразу потечет ибо нет GC. Или наоборот чето не проинициализируете.
Уточню — само по себе это не проблема, но при отсутствии статической инициализации и NullReferenceException выливается в проблему.

7. Куча парадигм одновременно.
Вы пишете одновременно и на objc и на c и на C++, а везде свои особенности. Нужна скорость — используем std::vector, так как NSArray тормозной. Или лучше CCArray? А я смогу передать его даные в openGL? а если мне потом както их надо обработать, а я уже написал метод и он принимает NSArray?
Итд. Начинаеш думать не над решением задачи, а над деталями реализации.

8… Наверное можно продолжить, но это надо немного попрограммировать и записать все грабли во время работы.
0
Спасибо.
0
Спасибо за поинты. Не ожидал, что там «настолько все запущено».

Вопрос. Вроде бы были же какие то классические c++ компиляторы, которые код под мак могут делать. Вроде бы что то было из gnu набора. И да и помоему llvm был, из под которого и objective-c и выродили.

Спрашиваю — потому что еще мак не щупал, но классического с++ опыта много. так что уже прочитанной солянки ошибок хватило — для негативного впечатления от obj-c. Продумываю — на что самому настраиваться.

PS за обзор — спасибо! И удачи!!!
0
С++ поддерживается из коробки. Ну и по факту половина проекта на С++ у меня и написана. Если честно давно подумываю отказаться от objc вообще — хоть все будет консистентно.

Но если честно я бы предпочел какойнибудь C# или Java. Всетаки скорость разработки на них намного выше.
0
Спасибо — очень много полезной информации. Еще пара вопросов, если не сложно.

— Насколько вообще, разные ios девайсы отличаются в плане производительности?

Спрашиваю — потому что, теоретически — есть вариант прикрутить что то типа встроенного языка. Тот же Python (мне он больше нравится). Или, если есть встраиваемые под free лиценизию — Java\c#.

на этом языке делать логику. А весь низкий уровень перенести на c\c++. Это и переносимее будет (порт только небольшого куска c кода) и скорость разработки выше (так как вся логика пишется на высокоуровневом языке).

У меня на PC downloadable — такое работала на ура и впечатления были очень и очень приятные. Едиинственный минус — в том, что все же это медленее, чем NativeC\C++. Потому и спрашиваю про «затыки в скорости».

— И еще вопрос. Насколько — по личным ощущениям — различается финансовая отдача от ios<->flash.

Спрашиваю — потому, что все же кодобаза as3<->ios отличается друг от друга. И это — нужно отдельные технологии и навыки разработки городить. Можно конечно же попроботвать сделать что то типа кроссплатформенного через flash Alchemy заюзать.

Но там есть технические сложности (теоретически — есть отладка под Alchemy, но я ее так и не «допинал» что бы ее вменяемо использовать). Ну и скорость на c++ — согласен — что ниже, чем на языке выше уровнем.

Потому и вопрос — если отказываться as3 платформы в пользу ios — что это дает по финансам. (не конкретная цифра — а просто порядок величины)
0
1. девайсы — очень отличаются.
В разы. Во много раз. На старых девайсах я кастрировал все еффекты, чтоб более-менее нормальный фпс иметь.

2. языки — Использование встраиваемого языка нарушает лицензию, если я не ошибаюсь. Кто знает точно — поправте.

3. Мое личное мнение — флеш стабильнее, у iOS выше потолок. Если игра средненькая, то на флеше с нее заработать можно, на iOS она принесет 0 без палочки.

4. насчет Alchemy итд. Я склоняюсь к тому, что на каждую платформу надо писать по гайдлайнам для этой платформы. Это одна из причин, почему использую всетаки objc.
Если игра выстрелила — нет проблем переписать ее на другом языке. Потому CJ под андроид перепишу на Java (или найму человека для этого). Для того обьема кода что есть это не сложно.

5.что это дает по финансам
Пока не знаю. Но все прогнозируют что CJ принесет сумму с 6 нолями.
0
Спасибо!!! Очень классные мысли. И удачи продукту!!!

PS По п. 4 — что проще переписать. Почему у меня именно такая вот позиция.

Если заниматься геймплеем как целью проекта — у меня по опыту — вылезает такой косяк. Что объем платформозависимого кода занимает порядка 10%. Остальное — или логика или «полировки — что бы игра была фановой». То есть — грубо говоря — работа чисто как программиста — это порядка 10-20% объема. Остальное — это работа как геймдизайнера.

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

И это — если не считать что многие платформы имеют разные тонкости. То же мультиточ в ios и мышка на PC. Или только одна кнопка мышки на as3 и две на PC. Все это еще больше смещает процент в сторону «геймдизайнер кода».

Просто — мысля была — в том, что бы «чем проще этот код переносить — тем лучше». Но — в любом случае — нужно самому своими руками щупать. Иначе у меня — это «мысли в никуда».

Так что — спасибо еще раз!!! Много полезной информации.
0
привет, ты используешь Какос2д? а если еще и кодишь вперемешку (Спп\ОбжС)
Так какую версию используешь какоса для обжектСи или кокос-2д-х?
+1
cocos2d objc.
+6
Механика должна быть реализована так, чтоб человеку было проще и интересней играть, а не чтоб программисту было проще ее сделать. Точка. Никак иначе.
Желание оставить все как есть надо в себе жестоко истреблять. И когда программист говорит «так как надо сделать невозможно» то 99% что он просто ленивая свинья или плохой программист
особенно понравилось )
0
zarkua решил забрать себе все возможные плюсы на блогах:)) Шутка, отличная затея и прекрасное интервью.
mokus, снимаю шляпу!
+1
1,5 часа убил просто на оформление.
А где оно?
mokus, так держать! Еще больших успехов в будущем!
0
ну в этом то и дело, что его нет. Тут сложно выразительно оформить. Просто лично мне очень тяжело читать такой пост по сравнению с
0
А, ну ясно. Все равно хорошая работа!
0
Спасибо, расставило некоторые точки над i.
0
Круто, спасибо за интервью!
zarkua +1
mokus +1

Не ожидал что mokus со Львова, надо будет как то встретиться, пивка попить ))
0
Кстати, написано что интервью приурочено к запуску игры, я сразу покупать полез, а её нету ещё, обидно ((
0
2 часа 30 мин до запуска в новой зеландии
0
zarkua молодец. если интервью первое, то большой молодец. А mokus и без интервью большой молодец :D Интересно было почитать.
+7
Новая Зеландия зарелизилась :)
itunes.apple.com/nz/app/contre-jour-hd/id444085845?mt=8

Мужики, всем спасибо за добрые слова, а я иду праздновать)))
+1
а я думал, там на скринах как на книгах пишут: «та та та зе виннер и отдельные цитаты », привлекло бы нехило.
В пост ссылки добавил.
0
Тоже так думал. Написал чилингам об этом.
0
Поздравляю с постройкой денежной трубы!

PS: Можешь поделиться промо кодом?
+3
Не могу — они все у чилов.
Но даю официальное разрешение скачать крекнутую версию)
0
Ай-яй-яй!
0
Пожелаю всем, чтоб не повторяли моих ошибок. Не старайтесь выпускать по игре раз в месяц или 2 недели. Делайте только самые крутые ваши идеи, но вылизывайте их до последнего. Не идите на компромиссы. Если что-то не идеально — переделывайте, пока не станет идеально.
Только недавно сделал для себя выводы и задумался над этим вполне серьезно и дал себе обещание, приятно слышать это тут =)

Интервью захватывающее, доставила каждая строчка.
+3
mokus, zarkua — респект и уважуха.
Интересуют некоторые технические подробности процеса разработки.
Используете систему управления версиями?
Ведете TODO-списки? Как организовываете процес разработки?
В чем создаете уровни?
+1
спасибо.
1. да — svn
2. да — прикрепляю на десктоп кучу стикеров и по мере выполнения стираю их. Когда больше людей работает — используем unfuddle.
3. уровни в своем на AIR написаном эдиторе.
0
спасибо
Успехов в топах апстора!
0
отличное интервью получилось. прочитал с удовольствием. респект!
0
Очень круто! И интервью и результат и трейлер.
Большой плюс в пользу черно-белых игр, а то помню тут советовали перекрашивать, мол людям цветное больше нравится :)
В восторге как тут программирование грамотное влияет на анимацию, вернее когда работа кодера улучшает картинку, графику — это всегда WIN!
0
Неправда!!! Это работа художника — улучшает работу программиста!!! Потому — художники — вполне себе бывают даже полезными…

:))))
0
Если честно, то главное чтоб ничего не ухудшало геймплей :)
0
Ага — только (по опыту) — заразы программисты и художники — никогда с этим не согластны…

:))))
0
«Отдельная тема последовательность уровней. Обучение игрока самими уровнями, а не подсказками.
Много еще деталей. Информации на большую статью или маленькую книгу — сюда явно не влезет.»

Напиши плиз статейку на эту тему, если найдешь время.

Спасибо за интересное интервью обоим :)
+1
Пусть вопрос и не ко мне, но влезу.

мне кажется, что на порядок полезнее, если самостоятельно взять игру, в которой уровни были «круто сделаны» (именно так, как хочется, что бы они были в игре). И сев поиграть — проанализировать. Что было сделано, за счет чего это все работает, какими инструментами пользовался автор.

Ну и после этого — самое важное — задаться себе вопросом — как я могу _сам_ применить полученные идеи. И какие у меня есть еще идеи.

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

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

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

То есть — подобные «само-тренинги» — реально работающие вещи, которые даже «умными дядьками» подтверждались неоднократно.
0
Все правильно. Но есть еще набор советов, которые позволяют хорошо структурировать уровни. Позволяют повторно использовать механику, чтоб она выглядела свежо итд…
Но… главное как всегда мозг. Играя и анализируя чужие игры прокачиваеш его в нужном направлении.
+2
Игра убойная, всем рекомендую!
Камраду — респект!
+6
Макс, ты шикарен!!!
Я хочу тебя… докладчиком на Flash GAMM! :)
0
подождите, еще ж не все интервью то выложил.
+1
Если девушка хочет, то это уже неважно.
0
Так в чем задержка? Ну там День города, День незалежности, но уже ж пора и за работу!
0
Купил для иПада, заценим ))
0
Даже жена подсела ))
0
спасибо) очень познавательно
+3
Игра получила баннер Game of the week от эпла.
0
и чилы няшно оформили www.chillingo.com/
0
ГЦ! :)
0
mokus, спасибо и за игру, и за интервью.
Только, что купил. Буду играть.
Респект за все.
+1
игра отличная, спасибо!
+1
вам спасибо)
0
спасибо за интервью.
купил игру, запустил, побежал за наушниками и пропустил интро. не могу найти как его теперь повторить :(
0
просто запустить первый уровень
0
Макс, хотел бы портировать вашу игру на нокию. Интересует доля и упоминание в авторах. Могу быть програмистом(есть достаточный опыт под нокией, симбианом, qt) и паблишером (хочу набраться опыта — но наверно это лучше делегировать). Я со Львова.

из комментов
0
Когда будете делать порт под android, советую сразу ориентироваться на 2.3+ и 3.0+ версии.
Сейчас самая массовая версия 2.2 на телефонах, но в ней жуткие проблемы с обработкой touch event
и в неплохие игры от этого играть просто не комфортно (т.к. проседает fps).
Ну и 2.3 версия ощутимо быстрее сама по себе. А к моменту выхода порта ее будет видимо больше.
Исключение можно сделать, если будете использовать исключительно последний NDK и писать
все на C/C++, но не факт что с touch event это поможет на 100%, т.к. там вроде бы проблемы часть проблемы
на уровне драйвера в системе, а править его на старых системах гугл и производители железа не хотят.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.