Игровой линч: Художественный директор Allods Team дает советы проекту «Убойный Хоккей» Материал редакции

Редакция рубрики «Рынок игр» продолжает помогать независимым командам. Сегодня в выпуске обзор одного из финалистов конкурса SiliconJam — социальная игра «Убойный Хоккей».

Своим экспертным мнением поделился художественный директор студии Allods Team Виктор Сурков (среди проектов студии — «Аллоды Онлайн» и Skyforge).

Забавная игра, приятная графика, мне очень понравилась стилизация персонажей.

Оказалось сложным понять, за кого играешь, за синих или красных.

В интерфейсе счет синей команды справа, как и сторона поля с вратарем. Портрет противника, «Бот-Тренера», также расположен справа. Напрашивается вывод — я играю за красных и мои ворота слева.

Все так, если бы не одно «но»: портрет «Бот-Тренера» — красный. Думаю, есть возможность усилить разделение на своих и чужих и тем самым сделать игру более простой и понятной на входе.

Цветокод

Сразу вспоминается советский мультфильм «Шайбу! Шайбу!». Уверен, его создатели уже решали задачи, схожие с теми, что стояли перед создателями игры.

Я бы советовал взять на вооружения палитру мультфильма. Каждый из командных цветов, синий или красный, используется только в игроках соответствующей команды. Черный, белый и желтый — общие цвета.

Разметка поля — оранжевая, оттенка, не залипающего в цвета красной команды.

1a, 1b — цвета синей команды и всего, с нею связанного.
2a, 2b — цвета красной команды и всего, с нею связанного.
3a, 3b, 3c — общие цвета команд.
4a, 4b — цвета поля и разметки.
5a, 5b, 5c — цвета интерфейса, тех его узлов, что не относятся к командной информации.

Деление на командные цвета, которое уже используется в оформлении игрового счета, стоит распространить на весь интерфейс.

Интерфейс

Для лучшего считывания, свой игрок или чужой, не хватает однозначности в использовании цвета и расположении элементов на экране. Сейчас история противостоянии такая:

  • интерфейс — я (синий) против бота (красный);
  • игра — красные против синих.

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

Для того, чтобы история противостояния была все время одной и той же, легко запоминающейся и легко считываемой, стоит всегда давать играть за синюю команду, а соперников всегда представлять красной командой. Скорее всего, основная часть аудитории игры читает слева на право. Для повышения читаемости кадра стоит разместить синюю команду слева, а красную — справа. Важно привязать размещение командного интерфейса к размещению команды.

Так всегда будет получатся стройная, единая для всех элементов кадра история противостояния:

  • интерфейс — я (синий) против друга (красный);
  • игра — синие против красных.

Стоит «отбить» интерфейс от кадра виньеткой, лежащей с эффектом умножения. Как минимум, это позволит отделить зеленые бары интерфейса от елок с подложки.

Рендер персонажей

Свет

Для большей объемности в персонажах можно было бы сделать текстурный прелайт. Его можно как нарисовать в Photoshop, так и запечь в любом из существующих трехмерных пакетов, предварительно выставив свет. В этой работе стоит придерживаться следующих правил:

  1. Чем выше, тем светлее.
  2. Горизонтальные плоскости ярче вертикальных.
  3. Внутри темнее, чем снаружи.

(а) Только направленный свет, (б) направленный свет и текстурный прелайт.

Для усиления объема или создания эффекта его присутствия там, где его нет, стоит рисовать углубления, отверстия используя черный цвет. Глубокие тона плохо принимают свет, и зрительный обман форме гарантирован. Для еще большего эффекта стоит затемнять текстуры в местах стыков с вышеописанными пятками (ц).

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

Возможно, стоило бы добавить контровой источник света, по возможности светящий исключительно на персонажей. Это добавило бы эффектности в промежуточных интерфейсах, а в игре сделало бы персонажей отделимее от задника там, где задник тонально близок к персонажам (наиболее заметно на вратарях).

Отражение

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

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

Тени

Если к общему пятну затемнения под персонажем добавить независимые пятна под каждую из ног, и одно — в месте соприкосновения клюшки и льда, картинка станет интереснее.

Стиль текстурирования

Я бы предложил больше стилизовать рисунок текстур, отказавшись от мелких деталей, таких, как складки на одежде, волосы, щетина. Дело в том, что формы в игре достаточно утрированны и лаконичны и нынешние текстуры не совпадают по стилю с формами. Рисунки черепов на перчатках также лишние, но уже из-за того, что они мешают считывать объем рук в игре, визуально ломая их форму. На ногах, на самых кончиках стоит добивать темные пятна, «символизирующие» коньки.

Реализовав все выше перечисленное, можно выжать из персонажа следующее:

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

Эмоциональность

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

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

Поза

Достаточно сделать три позы и включать их в зависимости от происходящего:

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

Выражение лиц

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

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

Арена

Текстуры

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

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

Свет

Затемнение между льдом и бортами ограждения лишнее. Убрав его, можно добиться большей воздушности игрового поля. Для объема выгоднее поставить направленный источник света чуть ниже камеры, так, чтобы тени от бортов, скамеек и елок падали от камеры вглубь кадра и чуть расходились в стороны по краям изображения. Плоскость льда так же можно заставить работать на деление — свой или чужой. Достаточно разделить поле на две части и каждую половинку подсветить соответствующим цветом, левую — синим а правую — красным.

Эффект снега

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

Результат

Если реализовать все идеи вместе, получается:

Было и стало:


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

{ "author_name": "Дарья Хохлова", "author_type": "editor", "tags": ["\u0443\u0431\u043e\u0439\u043d\u044b\u0439_\u0445\u043e\u043a\u043a\u0435\u0439","\u0441\u043e\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435_\u0438\u0433\u0440\u044b","\u0440\u044b\u043d\u043e\u043a_\u0438\u0433\u0440","\u043e\u0431\u0437\u043e\u0440_\u0438\u0433\u0440\u044b","\u0438\u0433\u0440\u044b","\u0438\u0433\u0440\u043e\u043b\u0438\u043d\u0447","\u0438\u0433\u0440\u043e\u0432\u043e\u0439_\u043b\u0438\u043d\u0447","\u0432\u0438\u043a\u0442\u043e\u0440_\u0441\u0443\u0440\u043a\u043e\u0432","gamedev"], "comments": 10, "likes": 12, "favorites": 1, "is_advertisement": false, "subsite_label": "flood", "id": 7007, "is_wide": true, "is_ugc": false, "date": "Wed, 04 Mar 2015 12:38:11 +0300", "is_special": false }
0
{ "id": 7007, "author_id": 5723, "diff_limit": 1000, "urls": {"diff":"\/comments\/7007\/get","add":"\/comments\/7007\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/7007"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 199791, "last_count_and_date": null }
10 комментариев
Популярные
По порядку
Написать комментарий...
4

Спасибо большое за линч проекта!
Все очень полезно, приятно, когда советами делятся такие опытные коллеги.

Что касается копирования Ice Rage, никто не скрывает что стиль мы повторили и механику тоже, простите, мы не такие крутые, чтобы сразу заделать оригинальную вещь. Тем более, что по плану добавление большего количества фишек чем есть в настоящее время в нашей игре и тем более Ice Rage.
Все с чего-то начинают, тем не менее спасибо за критику.

Иван
Команда "Убойный Хоккей"

Ответить
4

Полезный разбор.

Ответить

Комментарий удален

3

Вы полностью скопировали Ice Rage https://itunes.apple.com/US/app/id481028647?mt=8

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

Ответить
0

Согласен, но в ice rage нету синхронного мультиплеера - у нас есть :). Линч очень крутой, спасибо!

Ответить
3

Ох. Отличный линч. Как бы хотелось, чтоб Tribe тоже разбирал Виктор Сурков.

Ответить
1

Похоже, что Виктор за всех анонсированных линчевателей один отдувается.

Разбор интересный, отлично читается, спасибо.

Ответить
0

Арт-линч полностью на Вите просто) Друзья из Plarium готовят другой линч другого же проекта)

Ответить
–1

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

Ответить
0

Дмитрий, а давайте вы нашу рубрику для этих обсуждений использовать не будете? "К слову вопрос затесался" - тут неуместно абсолютно.

Ответить
0

Разбор очень толковый и приятно удивил подход в работе над визуализации идей по необходимым изменениям.

Ответить
{ "page_type": "article" }

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fizc" } } }, { "id": 4, "label": "Article Branding", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "cfovx", "p2": "glug" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "bscsh", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223676-0", "render_to": "inpage_VI-223676-0-1104503429", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=bugf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Баннер в ленте на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudx", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byzqf", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvc" } } }, { "id": 19, "disable": true, "label": "Тизер на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "p1": "cbltd", "p2": "gazs" } } }, { "id": 20, "label": "Кнопка в сайдбаре", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "cgxmr", "p2": "gnwc" } } } ] { "page_type": "default" }