DTF разыгрывает билеты на профессиональную конференцию игровых разработчиков «4C»

В ней примут участие 80 спикеров из крупных игровых компаний.

В закладки

Конференция «4C» пройдёт 22-23 сентября в Санкт-Петербурге, в гостинице «Park Inn Прибалтийская». Участниками мероприятия станут 80 спикеров из различных игровых компаний, в числе которых Ubisoft, Epic Games, EA и Wargaming.

Среди докладчиков будут главный художник по окружению в Prey Эрик Бэйл, главный дизайнер Boss Key Productions Дэн Нанни и программист геймплея из Guerilla Games Лежек Шчепански (Leszek Szczepański). В программе конференции 11 секций, с расписанием которых можно ознакомиться тут.

Кроме того, на мероприятии пройдут мастер-классы на темы «Традиционные техники живописи в создании арта для игр», «Креативные практики при создании исторически достоверного игрового арта» и «Как найти Пикачу, занимаясь дизайном» от специалистов из команды разработчиков World of Warships. Приобрести билеты на конференцию можно на сайте «4C».

Редакция DTF разыгрывает четыре билета на мероприятие. Задача: описать идею (или поделиться опытом) реализации какого-то конкретного элемента игры, будь то управление камерой (как это сделали разработчики Suzy Cube), процедурно генерируемый звук или локации и так далее. Какие методы и почему вы бы использовали, к помощи какого ПО прибегали бы. Оригинальные и не очевидные решения приветствуются.

В комментарии укажите, к какой сфере разработки игры относится ваша идея: арт, технологии, геймдизайн или звук. Автор самого интересного решения в каждой категории и станет победителем.

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

#конкурсы

{ "author_name": "Андрей Верещагин", "author_type": "editor", "tags": ["\u043a\u043e\u043d\u043a\u0443\u0440\u0441\u044b"], "comments": 22, "likes": 19, "favorites": 0, "is_advertisement": false, "subsite_label": "flood", "id": 10270, "is_wide": false }
{ "id": 10270, "author_id": 22254, "diff_limit": 1000, "urls": {"diff":"\/comments\/10270\/get","add":"\/comments\/10270\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/10270"}, "attach_limit": 2, "max_comment_text_length": 5000 }

22 комментария 22 комм.

Популярные

По порядку

Написать комментарий...

Alexander Simakhin

4

Как мы избавились от real-time теней в своей игре Slash Arena.

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

В unity есть возможность "запечь" свет - просчитать карту теней заранее для статических объектов и записать ее в текстуру.
Но это работает только с неподвижными объектами. А что делать с двигающимися персонажами, их оружием и другими предметами?

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

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

Вот как это выглядит в игре:
На простом объекте https://i.gyazo.com/1d34108c449fc55a4846e1f1d31d3aff.mp4
На сложном объекте https://i.gyazo.com/c73905c1bc0ce9d945754b12505e8497.mp4
(оранжевым внизу выделены фейковые тени)

Еще несколько из примеров визуального "обмана":

1) Камера в главном меню не двигается и не крутится, поэтому мы заменили все окружение на статичную картинку:
https://i.gyazo.com/316a9328a3e917556732384da678aa2e.mp4
(вверху - то, что отображается в игре, внизу - то, как объекты расположены в реальности)

2) В бою мы отображаем только те объекты которые попадают в область видимости камеры
https://i.gyazo.com/93a5d61a94269b4ef04b537e5dcddfa2.mp4
(вверху - то, что отображается в игре, внизу - то, как объекты расположены в реальности)

Ответить

Алексей Растегаев

Alexander
0

С тенями прикольно, а вот в использовании оклюжн куллинга ничего нового)
А так молодцы и игра прикольная)

Ответить

Роман Парамонов

2

В своей игре Slash Arena нам пришлось оптимизировать анимацию смерти.
Боевка игры - бегать по арене и крутить вокруг себя здоровенным топором, стараясь попасть по другим игрокам. Хорошо попал — убил.
(пример геймлея https://www.youtube.com/watch?v=Wyx1ju4s6hY)

Чтобы смерть от топора была эффектной, мы использовали обычную ragdoll анимацию, построенную на физике. И всё было хорошо. Поначалу.

А потом, с увеличением количества персонажей и расчетов, игра начала подтормаживать на старых телефонах. Отключали всю физику — получали 50-60 кадров секунду и абсолютную плавность процесса.
Но отказываться от красивых смертей персонажей уже совсем не хотелось.

Можно было озадачить аниматоров. Мы даже почти отдали эту задачу в работу, как пришла мысль: почему бы не записать несколько ragdoll смертей прямо в Unity, и потом просто показывать нужную анимацию?

Мы написали специальный класс, который записывает все поведение ragdoll-объекта просчитанного по физике в файл с анимацией. И уже во время боя воспроизводили именно анимацию и тем самым полностью избавились от необходимости симулировать физику.

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

ссылка на исходники https://github.com/DrunkenMonday/AnimationRecorder

Ответить

Евгений Ильин

2

Я делаю игру на Unity и я ужасный кодер.

Игра от первого лица и игрок видит мир через прорезь в шлеме. Реальная конструкция вокруг камеры в трёхмерной игре — это боль. Невозможно сделать человеческий field of view без того, чтобы стены не оказывались внезапно внутри шлема. Наверняка всякие умелые и наученные мужи знают как делать такое в играх. Но я не знал. Я просто установил шлем с камерой за пределами уровня, поставил перед шлемом plane, на который проецировал уже другую камеру, которая висела на character controller, которым управляешь и бегаешь по уровню.

Ещё раз: бегающую камеру показывает отдельный экран перед шлемом за пределами уровня. Это так шикарно, так хитро и так по-любительски. Я доволен.

Ответить

Старый игродел

1

4С это 4 х 1С

Ответить

John Keats

1

концепт для адаптации игры под изменение настроения игрока, я не писатель, так-что читать может быть сложно.
Возможно, по большому счёту относится только к интерактивным играм, особенно на приставках.
Суть в том, что камера в реальном времени оценивает настроение игрока во время прохождения, микрофон следить за громкостью комментариев (если она вообще есть), и сама игра за интенсивностью нажатия клавиш (press x to win)
Если, допустим, темное освещение у игрока, игра меняет фильтры цветов на более мрачные, чтобы больше испугать играющего (в идеальности, конечно, считывать эмоции с лица, если игрок заскучал, для контроля уровнем сложности, но это будет еще не скоро). Вообще, интерактивное кино, так устроено, что гейм-дев следующего поколения этого жанра будет примерно на это и заточен, к адаптации к игроку и установления контакта Игра-Игрок, допустим вы не можете пройти один уровень, ну лично вам не комфортно играть тут, и игра чуть-чуть смягчает сложность, но в следующих уровнях будет компенсировано.
Еще про звук была идея: Электронное пианино от синтезатора отличается тем, что одно в реальном времени создаёт звук, а другое играет записанный (если хороший синтезатор там несколько звуков на одну клавишу, зависит от степени нажатия), то в играх примерна вторая система, но что если сделать, чтобы например звук от выстрела не записанный был, а по алгоритму создавался каждый раз при нажатии fire?, что если бы звуки были записаны лишь в качестве карты шума, получается при его создании каждый был бы, немного но разный, конечно, в реальности такое почти не осуществимо из-за высокой нагрузки на процессор.
контакты свои не оставлю, так-как такой бред далекого от гейм-дева человека, победить не может.
p.s: если есть ошибки не серчайте.

Ответить

MAyDay8

1

То чувство, когда живёшь вдалеке от городов, где проходят гейм-дев мероприятия и не имеешь возможности съездить на них. =_=

Ответить

Артем Совет

0

Боюсь ребята в комментариях начнут копипастить идеи из интернета, на манеру кошек в фаллоут 4 и победит лучшая паста

Ответить

Idoraris

0

Увы, до Питера мне добраться не суждено в ближайшем будущем. :(

Ответить

Petro Dmitriv

0

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

Ответить

Vlad Ivanov

Petro
0

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

Ответить

Petro Dmitriv

Vlad
0

Баланс в виде задержки ... ну или использовать в одиночках типа вайлдлэнд..

Ответить

Vlad Ivanov

Petro
0

Ну если с задержками, то смысл тогда в них вообще отпадает. Лишний раз отвлекаться на телефон. А в одиночках да, нормальньая тема. Вроде в watch dogs 2 как раз можно управлять гаджетами через телефон.

Ответить

Petro Dmitriv

Кирилл
0

только вот для такой фичи нужна интеловская технология

Ответить

Максим Марков

0

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

Ответить

Vlad Ivanov

0

А я бы просто не отказался бы от редактора карт в дарк соулсе)

Ответить

Евгений Герасименко

0

Детектор теней в Invisible shadow. Игра в жанре стэлс-экшен, где одной из главных фич возможность прятаться в тени. Игра разрабатывается на Unity под мобильные платформы, поэтому нет реалтайм освещения.
Первый вариант:
В игре пускать луч ко всем источникам освещения кто находится в определенном радиусе, и проверять есть стена на пути к свету или нет и в зависимости от этого игрок находится в тени или нет. На мобильных это накладно с учетом присутствия ИИ.
https://fastpic.co/image/Pr6Qpm

Но это не основная проблема. Проблема в то что при таком методе это будет работать как выключатель.
https://fastpic.co/image/Pr6eV6

Плюс возникает ещё проблема если источник света находится рядом, но его стена не загораживает, при этом он светит слабее чем источник 1 и тень за стеной остаётся.
И игрок получается не в тени.
https://fastpic.co/image/Pr6J30

Конечно можно это решить дополнительными переменными, но первую проблему с вкл\выкл это не решает.

Второй вариант не привязываться к освещению. Т.е. расставляем триггеры и центр тени.
https://fastpic.co/image/Pr6FEH

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

Третьим способом на котором я остановился это создание карты теней.
https://fastpic.co/image/Pr6uRn

На этой картинке запечённый свет с видом сверху. На этом этапе вытекают ещё минусы первых двух вариантов.
После этого мы переносим эту картинку в фотошоп, где переводим в чёрно-белый. Немного работаем размытием, где нам бы хотелось разбавить резкие переходы.
https://fastpic.co/image/Pr6feO

Теперь нам осталось лишь научить игрока получать значение от 0 до 1, о его текущей освещенности.

В Unity есть хорошая возможность RenderTexture. Создаём камеру, ставим сверху игрока и делаем чтобы она двигалась вместе с игроком.
https://fastpic.co/image/Pr6ZYr

Создаём RenderTexture несколько пикселей, нам нужен только один центральный, и делаем выборку GetPixel().grayscale. В итоге мы получаем значение от 0 до 1 об уровне освещенности в данном месте. И для оптимизации делаем свой Update с 15 кадрами в секунду.

Ответить

Евгений Лисицын

0

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

Ответить

Ислам Антин

0

Часто на мобилках встречаю проекты с неподходящими для платформы решениями в плане интерфейса (сенсорные джойстики придумал Сатана), обратной связи и геймплея в целом. Ужасно надоели эти 2d бродилки с кучей кнопок, просто переносящие привычные элементы из других систем. Собственно поэтому я решил попробовать поэкспериментировать и представить своё видение подобного жанра (а конкретно dungeon crawler) игры, созданной специально для мобильных платформ. Вот какие интересные идеи ко мне пришли в процессе:
1) Основной акцент я сделал на максимально удобном управлении. Отсюда, во-первых, вертикальная ориентация, чтобы можно было держать телефон одной рукой. Во-вторых, все основные действия (пока что только перемещения, но в дальнейшем введу мини-игры и сражения с противниками) выполняются свайпом в одну из 4х сторон из-за чего игроку достаточно использовать лишь один большой палец.
2) Что касается геймплея, то я решил отойти от канона «зачистки подземелий» и предоставить игроку роль уязвимого героя, которому совершенно необязательно и даже опасно сражаться с противниками. В имеющемся прототипе встреча с врагом вообще значит game over! Видимость ограничена, в единственный момент времени игроку доступна только узенькая комнатка. Как же узнать, что дальше мы наткнемся на блуждающего по этажу туда-сюда противнику? Сам персонаж нам подскажет! Мы не можем довериться его подсказкам на 100% (в подземельях темно, мог перепутать), но если при попытке перехода в следующую комнату на экране появится восклицательный знак, то стоит вернуться на этаж выше и пропустить патруль мимо. Так, не изменяя модель управления, я расширил игровую механику элементом стелса.
3) Я не хотел использовать уже опостылевший всем пиксель-арт, поэтому попросил своего художника сделать какой-нибудь оригинальный хэнд пейнт стиль. Ему пришлось бы отрисовать целую кучу высококачественных кадров от руки, если бы не одно элегантное решение: каждая анимация состоит из единственного кадра – их ключевые состояния, а переходы между ними программно сглаживаются уходом спрайта в альфа-канал. Получился этакий stop-motion, управляемый пальцем игрока.

Пока что проект на раннем этапе разработки, но выглядит это уже вот так:

Ответить

Андрей Верещагин

Ислам
0

Поздравляем, вы стали одним из победителей конкурса! Пожалуйста, оставьте какой-нибудь метод связи с вами, чтобы мы вам приз передали.

Ответить

Ислам Антин

Андрей
0

Юху! Спасибо! Со мной можно связаться по почте: islamantin@gmail.com

Ответить
0

Прямой эфир

Подписаться на push-уведомления
[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjog" } } }, { "id": 10, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "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", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "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": "clmf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-250597-0", "render_to": "inpage_VI-250597-0-1134314964", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=clmf&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": "byudo", "p2": "ftjf" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvc" } } } ]