bash.im ithappens.me zadolba.li
17345

И пусть весь мир оживёт

25 мая 2015, 08:24

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

Зачем всё писать медленно, продумывая логику каждого функционального элемента, ведь всё можно сделать «быстренько», вставляя кое-куда костыли! Часто бывает, что при старте проекта, когда пишешь демо-игру, из неё сразу же пытаются сделать готовый игровой продукт, и все тезисы о том, что продукт нужно оптимизировать, разбиваются о стену непонимания: «Когда на айпаде будет тормозить, тогда и оптимизируем».

Зачем писать концепты для будущих игр? Ведь лучше всего их переделывать по пять раз на дню и передавать концепт из уст в уста. Начинаешь писать код нормально, потом приходят правки, потом ещё правки, потом ещё… В итоге код выглядит как жирный монстр с тентаклями, без костей и со свёрнутой шеей, на которой угадывается подобие лица с выражением «пристрелите меня». Объясняем ситуацию, просим время на переработку — нам его не дают, говорят, что нужно быстрей выпустить игру в оборот, и тут же просят сделать ещё парочку фич, на которые уйдёт от пары лишних дней до недели.

Зачем продумывать игровую функциональность наперёд, если можно её так же, как и графику, менять на лету? Когда начинаешь писать код, никогда не знаешь, что банальная строчка кода «запустить анимацию» может в дальнейшем оказаться целой анимационной системой с различными параметрами, исходя из ситуации. Бывает, приходится вворачивать функциональность двухмесячной давности с элементами второй и фичами третьей, при этом нужно делать всё «быстренько». Объяснял ситуацию, просил продумывать наперёд, рассказывал, что встройка ранее не предусмотренной функциональности бывает очень даже долгой, потому что необходимо внести изменения во многие модули, но мы же гордые!

Зачем рисовать концепты, если всю графику можно переделывать на лету? И неважно, как много функциональности нужно переписывать из-за внезапно появляющихся новых предметов, которые должны красивенько двигаться и анимироваться, исходя из ситуации. Частенько просят сдвинуть кнопки на 5–10 пикселей (примерно миллиметр на экране айпада), потому что кажется, что кнопка залипла. Объясняли ситуацию, просили рисовать так, чтобы всё сразу было на своих местах, но воз и ныне там.

Оптимизация? Давай, до свидания! Иногда на сцену рисуют просто тонны графики, и порой этот мыльный пузырь лопается (устройство вылетает по памяти). Объясняли, просили не делать так много или оптимизировать графику, но практически все доводы успешно игнорируются со словами: «Как начнёт вылетать, так и оптимизируем». Частенько приходится втихую жать малозначимые текстуры, надеясь, что художники не заметят, с успехом примерно 50/50. Однажды поставил в известность художника, что я пожал текстуры, и освободилось примерно 20 МБ памяти, так он с радостными глазами вручил ещё пак текстур, которые необходимо внести на сцену. Сделал так, чтобы не вылетало и мало-мальски работало — в итоге где-то через месяц добавил рекламные сервисы, которые кешируют рекламу в память с известным концом… Объясняли, просили сразу думать об оптимизации, но безрезультатно.

Продумывание эффектов? Не, не слышали. Частенько просят подобрать эффект для игрового события (взрыв, искры, облако пыли). На мои доводы о том, что я программист, а не дизайнер, что чувство прекрасного у меня кончается на формуле E = mc², просто разводят руками. В итоге трачу почти целый день на просмотр, отсеивание и калибровку эффектов, которые, что ожидаемо, не нравятся руководству. Частенько после этого художник подходит, садится рядом и пробует настроить эффект по образу и подобию того, что у него находится в голове. В итоге есть два варианта развития событий: либо он добивается начальных результатов и говорит, что эффект нужно использовать, или передаёт задачу другому программисту с повторением цикла. Объясняли, говорили, что мы не дизайнеры и не телепаты, да наше мнение никого не интересует.

Однажды приглашали из северной столицы человека, который хотел организовать рабочий процесс. Он провёл с нами одну встречу, записал все наши задолбашки — и был таков…

Работаю я до сих пор, но альтернатив в нашей области нет. Буду и дальше работать и задалбываться.