Category: искусство

Category was added automatically. Read all entries about "искусство".

Восемь ошибок самодеятельного разработчика игр

1. Не проверять свои идеи на других. Разработчик обязательно будет предвзят к своему творению.

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

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

4. Некачественный код. Доработка, особенно с привлечением сил со стороны, может выйти боком.

5. Собственный движок. Это дополнительно усложняет жизнь.

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

7. Нет плана тестирования. Проверять надо и основные части игры, и граничные случаи, вроде ввода пустой строки.

8. Не закончить. Начать игру просто, закончить — трудно. Это грустная реальность геймдева: очень немногие игры доходят до конца.

Как я до такого докатался

Вот моё выступление 19 мая. Давно я хотел написать все свои мысли по этому поводу, но вечный облом. Класс «бронза» — это такой ещё любительский «отстойник», но, как я смеюсь, «и перекидной когда-то для меня был тройным акселем».

Как я встал на скользкую дорожку

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

Долго думал, какие купить коньки: хоккейные или фигурные. К тому времени началась весна, и купил ролики. Фрискейт-слалом, с короткой рамой (так мне подсказала интуиция) — пригодные как для подвижных игр, так и для обучения чему-то сложному. И я целое лето придумывал себе подводящие упражнения. И кое-что даже сработало: я был вне себя от восторга, когда колёса прочертили на пыльном асфальте присущую моухоку букву «зю». Как я выплясывал задним ходом вокруг люков…

«Вот и лето прошло»… Стало понятно: только фигурные. Пристроился в клуб фигуристов «Бильман», но, как и у меня обычно, имел на него дулю в кармане: корявое место, но на безрыбье и рак раком. С тренершей Ниной познакомился просто: она на том же катке «Большевик» (тогда ещё не «Космополит») промышляла тренировками, такая грациозная и лаконичная, как кошечка. А я у неё спросил кое-что о коньках.

2011. Я заболел жутким гриппом, две недели не катался… А потом написал Нине а можно вас нанять? Рубашка промокла насквозь, и нанял ещё. И ещё.

Одна знакомая пишет: покажи, как ты катаешься. Вот Нина и сняла. Теперь этот завод, вместе с катком, занят каким-то нацбатом.

Поначалу главная проблема с Ниной была — сейчас рассмеётесь. Если тренировка утренняя, она выковывается с вечера накануне. В какие дни тренировки ТОЧНО НЕ БУДЕТ? Не стоять же всё время на боевом взводе, как ракета?

Некоторое время ходил к другому тренеру (бывший тренер Нины), однако его подход мне не слишком нравился («за такое Нина меня бы съела»). Очевидно, его подход больше подходил к детям, которые вписаны в спортивную систему, а не к взрослым, которые больше катаются ради кайфа. К тому же в таком «хождении налево» я заработал травму ноги, отбросившую меня по прыжкам в полный ноль.

2012. Нина гоняла меня по вращениям, однако я так и не мог никуда ввернуться. Что она придумала: решила посадить меня в волчок. К тому времени я устроился в Школу анализа данных, и брал я и ноутбук, и коньки: через дорогу каток, катайся в своё удовольствие, дави волкá. К лету 2013 я его продавил, а там и винт пришёл.

Подготовка

Конец 2013. Начался Евромайдан, я освоил прыжок флип, и мы с Ниной решили выступать. Придумали макет программы (этот макет процентов на 80 стал моей программой). Так выступления и не вышло, но макет стал тестом на выносливость.

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

Когда я освоил «раскоряку» (гидроспираль внутрь), я не помню. Хотел какой-то необычный элемент, несбыточно мечтал про тодес. А гидроспираль исполнил со второго раза на слабó — получился такой себе «тодес в одиночку». Я рассматривал возможность, что кто-то швырнёт на лёд игрушку, а я её подберу в раскоряке. Однако совершенно не отрабатывал: ну кто швырнёт?

Снова стали готовить выступление летом 2016. Нина придумала сложную круговую дорожку. Наняли хореографа, и она взяла эту мелодию, под мой не слишком совершенный ритм катания. Друг по работе отдиджеил её под правила «бронзовых», но хореография долго не продлилась: хореограф уехала, у меня заболела старая травма. Несколько месяцев я вообще не прыгал.

Зимой 2017 вернулись к работе. Наняли другого хореографа (Алису), за это время выработался такой формат. Нанимаю тренера и хореографа. Потом несколько заездов одного тренера. Это позволит Нине видеть всё, что скажет хореограф, а мне — поберечь ногу.

От всех усложнений Алиса отказалась, программу катали близкую к старому макету. Что такое хореография, я не знал вообще. Подготовка вымучивалась с большими проблемами, доходило до того, что за часовую тренировку получалось сделать три секунды выступления. Сдали нервы и у меня, и у Алисы, заполнили остаток самоповторами.

Возник вопрос про костюм. Так ни хрена и не вышло, но у Алисы нашёлся запасной вариант. У неё завалялись две фигурокатальных рубашки, и местная портниха расшила одну (я был крупнее хозяина). Рубашка перестала тянуть и вонять (не знаю, как хозяин, но хореограф курит, как дымогарная труба).

Штаны для латиноамериканских танцев купили с той же Алисой в танцевальном магазине (якобы в плохом состоянии). Нам, фигуристам, их «плохое состояние» — самое то: дешевле, а удары коньком состояние не улучшат. Портниха притащила их со словами: «Я сделала чуть шире, чем просила Алиса»: невозможно так ушить широченные латинские штаны. Оказалось впору: видимо, Алиса не сделала скидку на мои громадные ляжки (в один ну очень скрученный винт я не вписываюсь геометрически). С костюмом, кстати, едва успели, получил его к генеральной тренировке.

Как я получил от судей по максимуму

Тестовый заезд был тем же утром и длился всего 20 минут, крайне мало. Нину я убедил прийти на заезд деньгами: такси туда, оплата за полный час в одиночку и такси обратно. Я заказал такси и себе, но в то время на Борщаговке были большие пробки. Одна машина не приехала, другая с опозданием — и вот я за пять минут до заезда врываюсь в раздевалку, весь на нервах. Нина помогает упаковаться в костюм, одежду бросаю как попало… Едва раскатался, диджей запустил мою музыку. Это стало для меня неожиданностью, но когда я встал в стойку, музыку перезапустили.

Лёд везде разный, считаю, что на «Большевике», где я тренируюсь, лёд очень «фигурный», мягкий и податливый. Влияет это в первую очередь на вращения: нужно понять, как ловить центр. Был на нервах, заезд 20 минут — не смог.

На работе я слегка пересидел. Хотел уйти так, чтобы час отсидеться дома и успешно прибыть трамваем и метро к своему выступлению. Не получилось, но за 40 минут до «часа Ч» я был как штык. Смотрю, катают девушки-«бронзовые». Так катают, что я думаю: их надо рвать на британский флаг! Но всё равно боязно. Слава богу, за пять минут разминки разобрался, как войти во вращение — то, чего я не сделал за 20 минут тестового заезда.

Смотреть меня пришли девять человек. Хоть я и не был гвоздём программы, для них я был именно что гвоздём. Двое с катка, пятеро с работы, двое посторонних. Ещё трое или четверо по каким-то причинам отказались.

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

Объявили моё имя, всё на пределе! И вдруг внутри все стрелки, колебавшиеся покруче «стрелок осциллографа», встали по центру, я вышел, как-то утёр нос, из которого хлестало, и приступил. Волчок — удача! Флип — выехал! Теперь понятно: сложное позади, нужно просто тянуть, главное я сделал. В общем, как-то вытянул. Боялся, что посреди выступления схвачусь за колено — не схватился.

Не обошлось без казуса: у меня были заявлены каскады риттбергер-тулуп и сальхов-риттбергер (чтобы вы знали: вторым может быть только тулуп или риттбергер, и каждого прыжка не более двух штук). Прыгаю первый каскад и откровенно теряю нить: то ли я прыгнул риттбергер-тулуп, то ли риттбергер-риттбергер. Сразу же принимаю решение: прыгаю сальхов-тулуп. Оказалось, зря. Вот только так совпало, что мой результат 27,90, а ритбергер дороже тулупа ровно на 0,1 — и тут судьба меня троллит!

(Позже я узнал, что лучшая из тех девиц прокатала на 22 с гаком — британский флаг вышел знатный!)

Откатался. Кто-то бросил на лёд игрушку (и даже знаю, кто). Решаю сделать то, что так хотел, но не отрабатывал. Получилось, правда, слегка раком — едва встал. А потом радость, обнимашки — и пошёл в незачехлённых коньках на пол без настила. Пришлось перетачивать.

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

Видео я купил на судейском посту. Не могу смотреть, столько у себя вижу ошибок и скруглённых углов. И YouTube меня троллит: три варианта заглавных картинки — нефаза (не уловили момент), ошибка и какое-то танцевальное движение (моя слабая сторона). Я выбрал ошибку.

Выполненные достижения (простите уж, облом готовить картинки «компьютерных» ачивок)

Фигурист
Ты это сделал!
Чисто
Прокатать программу без падений и крупных ошибок; получить от одного (любого) судьи положительные оценки.
Личная фишка
Обзавестись собственной комбинацией шагов, элементом или манерой исполнения, трудноисполнимой для остальных.
С ноги на ногу
Исполнить на положительную оценку сальхов и тулуп.
Show must go on!
Показать что-то необычное после выступления.

(Есть ещё парочка, связанные с прозвищами знакомых, не буду упоминать.)

Невыполненные достижения

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

Ракурсы портрета

(и снова по данным Киевский фотошколы)

Существует несколько ракурсов съёмки портрета.

  • Анфас: максимально подчёркивает асимметрию лица. Поэтому его делают на документы. А также когда красиво.
  • Лёгкий поворот: видно оба уха. Очень удачный ракурс.
  • Классический поворот «три четверти»: нос на середине щеки.
  • Критический поворот: нос касается скулы. Некрасив (но есть подходящие лица).
  • Приходящий профиль (видны дальние ресницы): никогда.
  • Профиль: самый волевой поворот. Потому он на всех монетах. Используется для личностей с красивым профилем, а также если на одной из сторон лица явный дефект. Чтобы снять профиль, нужно слегка скоситься в камеру.
  • Уходящий профиль в портрете не применяется. Зато применяется в сюжетных сценах в фото и кино: человек смотрит на что-то.

Промежуточные ракурсы.

  • Анфас…лёгкий поворот: да.
  • Лёгкий поворот…классический поворот: не резать ухо.
  • Классический поворот…критический поворот: да.
  • Критический поворот…профиль: нет.
  • Профиль…уходящий профиль: да.

Несколько табу съёмки людей


(по данным Киевской фотошколы)


  1. Не резать по суставам, кистям, бюсту. В том числе и одеждой — рукавами по локоть и юбкой «миди». Впрочем, кусок локтя оторвать можно, если видно, что это одна рука.
  2. Взгляд не должен уходить за кадр (если не обосновано художественно). Белок должен быть с обеих сторон от зрачка. При съёмке профиля скоситься на камеру.
  3. Не делайте без особой нужды большие одноцветные пространства.
  4. Придумайте, как подсветить чёрную одежду.
  5. Засвет на лице — ошибка макияжа.
  6. Женским позам лучше не делать прямые углы.
  7. В кадре две руки, две ноги.
  8. Опора рукой — сломанная кисть.
  9. Касаясь рукой чего-то, не вдавливать. Особенно при съёмке женщин.
  10. Контровой свет не должен рисовать — и тем более попадать на нос.
  11. Волосы не должны перекрывать рисующий свет, резать глаз по зрачку.
  12. Запрещён приходящий профиль. Или виден кусок дальнего глаза, или спрятать ресницы.
  13. На крупном портрете часто рука кажется чужой, и её не включают.
  14. Женщинам лучше показывать тыльную сторону ладоней.
  15. Столб из головы — классика, но это не единственный пример сливающихся линий.
  16. Одна рука и лицо — сложно. Две руки и лицо — нормально.
  17. Есть такое понятие, как «нефаза» — снято не в тот момент движения. Обычно не так прикрыты глаза.
  18. Прерванный профиль (нос пересекает щёку) — табу.
  19. Кисти не крестом.
  20. Если свет такой, что видно одно плечо, стоит сделать хоть намёк на второе.
  21. Студийный макияж — «конкретно вечерний».
  22. Не направлять руки и ноги в камеру.
  23. Не годятся сжатые бёдра, длинные волосы, выглядывающие из подмышек.
  24. Руку в карман — покажи хоть немного кожи.
  25. Снимая среднее между анфас и лёгким поворотом, не резать ухо.
  26. Даже у знаменитостей одно рабочее положение головы: например, у Одри Хэпбёрн это «три четверти» влево от зрителя. Что уж говорить о непрофессиональной модели.
  27. Цель «полуфигуры» (портрета, обрезанного по бёдрам) — показать красоту фигуры. Этот вид портрета требователен к одежде, и совершенно непригодна мешковатая и складки.
  28. Резать по голеням — когда не нашли нужной обуви.
  29. Хоть один каблук в кадре (кроме обуви с открытыми носками).
  30. Голову выставляем в первую очередь. Когда дело доходит до портрета в рост, ставим фигуру, начиная с ног, затем голову автоматом в отработанное положение.
  31. Не переборщите с переносом веса.

Лучший, худший и единственный

Я это сделал! Несмотря на адское волнение, нормально прокатал выступление. Ну как смотрится? — ну любительски! Тем не менее, получилось!

Буду выступать с ним и дальше. Пока три задачи.

1. Прокачивать волчок. В таком виде это простой «волк». А надо — либо надёжные +1 (решают судьи), либо 1-й уровень (решает техспец), либо другой элемент (тоже решает техспец).

2. Прокачивать прыжки. Не слишком мне они нравятся.

3. Усложнять хореографию и избавляться от самоповторов.

Главное, начало положено!

Рыбацкая деревушка

Универсариум, курс по геймдизайну. Рассказывает Алексей Калинин, геймдизайнер из WarGaming. Хоть я руглиш и недолюбливаю, но пишу «один в один», выбросив только слова-паразиты.

Я работал с таким замечательным художником, Димой Чупровым, и давал ему ТЗ на арт локаций. У нас там была рыбацкая деревушка. Ну, я набрал референсов, как положено — речка, какие-то домики, то да сё. Отдаю, Дима и говорит: это не то, я ничего не понимаю, что здесь рисовать.

— В чём дело? Смотри, всё понятно: рыбацкая деревня, они ловят здесь рыбу.

— Отлично, какую рыбу они ловят?

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

— Ты не понимаешь. Смотри, если они ловят большую рыбу, у них должны стоять гарпуны около домиков, бочки для засолки этого самого рыбьего мяса. А если они ловят мелкую рыбу сетями, я должен нарисовать сети, гроздья сушёной тараньки.

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

Унаследованный код

В последней «Идиотеке» СамиЗнаетеКого была дверь с необычными табличками. Смешно, но оправдано.

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

Для этого табличке надо быть хорошо видимой и стандартного цвета. И последовательность установки очевидна: нижнюю табличку поставили едва ли не при «совке» (табличка сделана из лампы типа «Трубеж», это известный артефакт СССР), и тогда она была оправдана. Когда всякая там «Пожтехника» начала выпускать стандартные таблички, пришли пожарные: почему табличка не по ГОСТу? Повесили зелёную. Пришли второй раз: почему не светится? Пришлось вешать светящуюся.

В программировании, где мегабайт очень дёшев, такого много, и называется legacy code — унаследованный код. Сам я мало имел дело с унаследованным кодом, но, по опыту, лучший способ с этим справиться в некритичной системе — выводить унаследованные системы из эксплуатации по частям, заменяя то одну, то другую на современный код, при постоянном регрессионном тестировании (тестировании на поломки).

Понятию «унаследованный код» даже хорошего определения не придумаешь, и я бы дал такое: код, переживший те условия, при которых он был написан. Другими словами: если написал на пьяную голову, и выяснилось, что глючно, на следующий день это уже унаследованный код. Вот прямо позавчера пришлось делать затычку в унаследованном коде: при переходе на новый компьютер и Windows 10 вынужден был поднимать версию C++ Builder, а соответсвенно — версию TeeChart. У нас был собственный холст на Graphics32, достаточно красивый и очень быстрый. В последних версиях TeeChart немало улучшил холсты на GDI+ и OpenGL, но освоение — проверка, оправдано ли, исправление ошибок, написание недостающего, тестирование — требует времени. Мои переключаемые холсты стали конфликтовать со стандартными TeeChart’овскими, и пошли примерно такие разглючки.

TfmFoo::TfmFoo(TComponent* Owner) : TForm(Owner)
{
  chartOne->UseGr32 = true;
  //chartTwo->UseGr32 = true;      pie chart, not reimplemented in GR32 canvas
  //chartThree->UseGr32 = true;    rectangles only, no need
}

Здесь устаревшее условие — альтернативные способы прорисовки, с одной стороны, были глючными и медленными. С другой — не были встроены глубоко в TeeChart.

Лиз Инглэнд. Дверной вопрос в геймдизайне

Оригинал: “The door problem” of game design

«Так что ты, геймдизайнер, делаешь? Ты рисуешь персонажей, пишешь сюжет? Или, постой, ты программист?»

Геймдизайн — такой же туманный для непосвящённых термин, как для меня «астрофизик». И это моя работа, так что я объясню, всем — даже тем, кто вообще не видел игр — что такое геймдизайн.

Дверной вопрос

Мне нравится объяснять свою работу в терминах «дверного вопроса». Дано: вы делаете игру.

  • Будут ли там двери?
  • Может ли игрок их открывать?
  • Может ли человек открыть любую дверь, или там будут двери для красоты?
  • Как мы объясним разницу? Может, открывающиеся будут зелёными, а вечно закрытые — красными? Или неоткрывающиеся будут завалены мусором? А может, просто уберём с неоткрывающихся ручки, и всё?
  • Можно ли двери запирать и отпирать?
  • Что говорит о том, что дверь заперта, но когда-нибудь откроется — в отличие от двери, которая не откроется никогда?
  • Знает ли игрок, как открыть дверь? Нужен ключ? Нужно взломать пульт? Нужно решить головоломку? Дождаться какого-то сюжетного момента?
  • Есть ли двери, которые можно открыть, но нельзя войти?
  • Откуда появляются враги? Из дверей? Запираются ли двери после этого?
  • Как игрок открывает дверь? Просто подходит, а она сдвигается? Или распахивается на петлях? Нужно ли нажимать на кнопку, чтобы открыть дверь?
  • Закрывается ли дверь за спиной игрока?
  • Что будет, если в игре двое? Нужно ли запирать дверь, когда пройдут оба?
  • А что, если уровень СОВСЕМ ГРОМАДНЫЙ и всё не умещается в памяти? Если один игрок отстанет, не исчезнет ли пол под ним?
  • Нужно ли как-то приостанавливать прохождение первого, пока второй не войдёт в комнату?
  • Нужно ли телепортировать отставшего?
  • Какого размера дверь?
  • Нужно ли ей быть достаточного размера, чтобы игрок прошёл?
  • Когда один игрок встанет в проёме, помешает ли это второму?
  • А что, если за вами идут компьютерные союзники? Сколько их должно проходить сквозь дверь без застреваний?
  • А что с врагами? Должны ли минибоссы, которые крупнее человека, помещаться в дверь?

И это классическая проблема дизайна. Кто-то должен решить «дверной вопрос», и этот «кто-то» — геймдизайнер.

Другие дверные вопросы

Чтобы помочь людям понять разделение труда в большой компании, я иногда углубляюсь в детали: как другие имеют дело с дверями.

  • Творческий директор: Да, нам нужны двери.
  • Менеджер по проекту: Я отведу в графике время на двери.
  • Геймдизайнер: Я написал документ, уточняющий, что нам нужно от дверей.
  • Концепт-художник: Я нарисовал роскошные образцы дверей.
  • Арт-директор: На третьей картинке именно та дверь, которая нам нужна.
  • 3D-моделер: По картинке я смоделировал дверь.
  • Аниматор: Я сделал, чтобы дверь открывалась и закрывалась.
  • Шумовик: Я сделал звуки открытия-закрытия дверей.
  • Специалист по звуковой подсистеме: Звуки будут меняться в зависимости от того, где игрок и в какую сторону он будет смотреть.
  • Композитор: Я сделал музыку для дверей.
  • Художник по эффектам: Я добавил искорки, когда дверь открывается.
  • Писатель: Когда дверь открывается, игрок скажет: «Смотрите, дверь открылась!»
  • Осветитель: Когда дверь заперта, она будет подсвечена красным, когда открыта — зелёным.
  • Юрист: 3D-моделер нарисовал на двери эмблему «Макдональдса». Её придётся убрать, чтобы не засудили.
  • Художник по персонажам: Займусь своим делом, пока дверь не будет носить шляпы.
  • Геймплейный программист: Дверь открывается и закрывается в зависимости от расстояния до игрока. Также её можно отпереть-запереть скриптом.
  • Программист искусственного интеллекта: Враги и союзники будут знать, есть ли дверь и можно ли пройти.
  • Программист сетевого кода: Нужно ли, чтобы все одновременно видели дверь открытой или закрытой?
  • Инженер по выпуску: Чтобы дверь попала на золото, её нужно закончить к 15:00.
  • Программист движка: Я оптимизировал код, и теперь может быть до 1024 дверей.
  • Программист-утилитчик: Я переделал редактор, теперь ставить двери проще.
  • Конструктор уровней: Я поставил запертую дверь. После события она откроется.
  • Дизайнер интерфейса: Теперь на самóй двери и на карте есть значок цели.
  • Постановщик боёв: Враги появляются за дверью; часть входит в комнату, часть остаются прикрывать огнём. Если игрок смотрит за дверь, они появятся за другой дверью.
  • Дизайнер систем: Игрок 4-го уровня тратит 3 золота и получает 148 опыта за открывание двери.
  • Специалист по монетизации: С игрока берём 99¢, чтобы он вошёл в дверь. После 24 часов ожидания — бесплатно.
  • Тестер: Я вошёл в дверь. Я вбежал в дверь. Я впрыгнул в дверь. Я постоял в проёме и дождался, пока она закроется. Я сохранился, перезагрузился и вошёл в дверь. Я умер, загрузился и вошёл в дверь. Я бросил гранату в дверь.
  • Исследователь по эргономике: Я выложил объявление: добровольцы будут входить в двери, и посмотрим, какие вылезут проблемы.
  • Переводчик: Дверь. Door. Puerta. Porta. Porte. Tür. Dør. Deur. Drzwi. Drws. 문
  • Продюсер: Мы дадим эту дверь всем или оставим как бонус за предзаказ?
  • Издатель: Эта дверь выделит игру из линейки аналогичных, вышедших этой осенью.
  • Генеральный директор: Я хочу поблагодарить всех за время и усилия, потраченные на двери.
  • Пиарщик: Всем поклонникам, вы сойдёте с ума от нашего нового пресс-релиза #геймдев #двери #некстген #ретвит
  • Менеджер по сообществу: Всем поклонникам, проблемы с дверью решим в следующем патче.
  • Техподдержка: Писал игрок, непонятки с дверями. Сбросил ему детальную инструкцию, как ими пользоваться.
  • Игрок: А дверь-то я и не приметил!

Одна из причин, за что я люблю этот пример — он такой обыденный. Часто думают, что разработка игр — это блестяще и круто, и буйство фантазии, и всегда интересно. Но когда я говорю: «Давайте начнём с дверей»,— всё сдувается до повседневных практических вопросов.

Дверной вопрос в комментариях на Гамасутре

  • Аниматор: Я сделал, чтобы дверь открывалась и закрывалась.
  • Менеджер проекта: Ты сделал анимацию, чтобы персонаж открывал дверь, или это дверь как в «Звёздном пути»?
  • Программист: Когда игрок сдаёт назад, что будет, если сзади кто-то окажется?
  • Техподдержка: У нас проблемы с людьми, которые открывают-закрывают двери и не дают другим входить.
  • Технический художник: На другой стороне двери нет геометрии, это портал. Нужно ли добавлять геометрию на другую сторону всех дверей?

Инди-разработчик: Надо соединить две комнаты. Нужна дверь? Нет, я просто сделаю, чтобы из одного прохода не было видно больше двух комнат. Готово.

Пользователь Steam: Вы просите x$ на игру о дверях? Простите, я пас. Если бы вы просили вдвое меньше, вы продали бы стопятьсот триллионов копий.

Разработчик на Kickstarter: Сейчас у нас 20 дверей. Если мы соберём 150000 $, мы добавим ещё десять за то, что вы помогли нашей разработке!

UPD1. Ещё немного.

  • Бизнес-исследователь: Средний игрок открывает 23 двери в час.
  • Безопасник: Боты с лёгкостью могут эксплуатировать двери.
  • Инженер по масштабируемости: Когда 1 млн человек одновременно закроют двери, игра «упадёт».
  • Менеджер по бренду: Вот размытое видео: стриженый ёжиком мужик открывает дверь, и она взрывается.
  • Веб-дизайнер: Я написал руководство по всем дверям в игре.
  • Специалист по продажам: Для BestBuy нужны синие двери, для Target — красные.
  • Историк: Дверной молоток появился только через 200 лет после событий в игре.

И второе, касающееся 3D.

  • Технический художник 1: Я сделал модульный риг, который можно присоединить к любой двери в игре.
  • Технический художник 2: Я разбил текстуру двери на цвет и свечение, чтобы один набор можно было использовать на все двери в игре.
  • Технический художник 3: Я написал утилиту для Maya, которая за 30 секунд генерирует 1000 разных дверных сеток.
  • Технический художник 4: Я написал убер-шейдер, который прибавляет прозрачность, когда игрок приближается, превращает дверь в голограмму и анимирует UV, чтобы был эффект ряби.
  • Технический художник 5: Я переписал соглашения по именованию. Теперь двери находятся в Environments/Props/Doors и называются «[префикс_мира]_prop_door_[размер_двери]_[open_или_closed]_mesh.[filetype]».

И третье.

  • Исследователь по играм: Проверено ли научно, что двери в жизни ведут себя именно так?
  • Внештатный историк: Дверь Второй Мировой войны так не выглядит. Пластмассу тогда ещё не изобрели.
  • Аналитик по продажам: Наша таблица говорит, что двери сейчас не цепляют. Нельзя ли превратить их в китов?
  • Тестер по локализации: Увеличьте дверь на 1 уровне, надпись «Выход» часто вдвое длиннее, чем в английском — например, по-фински «poistua».
  • Заказчик «серьёзной игры»: Если вы сделаете одну дверь бесплатно, мы заработаем с ней больше денег!
  • Специалист по вирусной рекламе: Можете снять FRAPS’ом открывающуюся дверь, чтобы я выложил на YouTube?
  • Инди-разработчик: Я могу делать по одной двери в неделю. Остальное время я работаю в «макдональдсе», чтобы платить за квартиру.
  • Художник комикса: Всё не так! В моём комиксе дверь была ярко-красной! Потому он и называется «Красная-красная дверь».
  • Стажёр по 3D: Не понимаю. Почему на двери не может быть 10 000 треугольников?

Свой bool

Нет так давно мне пришлось сделать свой булевский тип. Допустим, у нас есть функция рисования линий. А в ней есть выбор: рисовать конец или нет (последнее нужно для рисования ломаных).

enum class DrawEnd { NO, YES };

canvas.drawLine(x1, y1, x2, y2, DrawEnd::YES);

Особенно это важно, когда в одной функции куча булевских параметров, и.

canvas.drawLine(x1, y1, x2, y2, DrawEnd::YES, AntiAlias::NO);

выразительнее, чем

canvas.drawLine(x1, y1, x2, y2, true, false);

Джеймс Хэг. Брошенный в холодную пучину настоящего программирования

Оригинал: Stumbling Into the Cold Expanse of Real Programming

Возможно, вам покажется, что я ударился в ностальгию, но я этого не хотел. А может, и хотел, но не это было моей конечной целью. Всё началось с вопроса:

Как вообще на 8-битных машинах работали быстрые аркадные игры?

В те дни процессоры не дотягивали до 2 МГц, а каждая команда выполнялась только тогда, когда выполнится предыдущая. И никакой плавающей запятой. И почти никакой целочисленной арифметики: ни умножения, ни деления, а сложение чисел за 255 требовало двух операций.

Но эти вырванные из контекста цифры мало о чём говорят — иначе не было бы столько анимированных игр, которые бегают на 60 fps на якобы негодном «железе». Не буду говорить за все системы, но на Atari 800, на котором я учился программировать, было именно так.

Collapse )