Лавка Разработчика
3.39K subscribers
416 photos
45 videos
16 files
652 links
Мы тут игры пилить будем, или как?

YouTube: https://youtube.com/@gamedevlavka

Автор: @vavilichev

Все контакты: https://linktr.ee/vavilichev
Download Telegram
🧠Что является основой для любой игры

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

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

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

Объяснять умными словами дальше считаю нецелесообразным, поэтому приведу примеры из разных точек для лучшего понимания механизма:
1. Цель: убить всех врагов (шутер). Противостояние - враги могут убить героя.
2. Цель: добраться до точки (платформер). Противостояние - ловушки, тайминги, враги, которые могут откинуть героя назад в прогрессе.
3. Цель: добраться до точки как можно быстрее (гонки). Противостояние - оппоненты, которые могут обогнать и помешать езде.
4. Цель: наладить отношения между персонажами (новелла). Противостояние - прописанный скверный характер персонажа, стоит неверно ответить, как отношения катятся в тар-тарары.

Далее примеры механик с использованием конфликтов, многие очевидны, но всё же:
1. Мощнее оружие - дороже стоит
2. Мощнее оружие - медленнее бьет
3. Экипировка дает +20 брони, но -10 к интеллекту
4. Зайдешь в данж повышенной сложности - можешь получить круче лут, но и отлететь больше вероятности
5. Вышибала: кидаешь мячь в игрока - есть шанс, что он ловкий, поймает мяч и скорее всего выбьет тебя же
7. В страегии: стремишься занять пустую территорию, поэтому посылаешь туда слабые (первые) войска, но рискуешь отстать от врага, который в это время качал войска и теперь легко может выбить твои войска
8. Баскетбол: чтобы получить больше очков - надо бросить издалека
9. Головоломки насквозь прошиты конфликтными механиками: сделал неправильное движение - сдох (проиграл)

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

#полезное #геймдизайн
Please open Telegram to view this post
VIEW IN TELEGRAM
18👍11❤‍🔥4🔥1
Скриншот-суббота
Vol. 148


Чуть опоздал

🔠 SameDay:
- стикер можно читать крупно с отключением управления
- индикатор интерактивности - рука, вместо названия предмета
- телефон можно тапнуть и увидеть экран
- обновление интерьера, такрелки, пилюли, вилки и т.д.
- Холодильник, микроволновка и шкаф стали открываемыми, спасибо брату, который отрубил дверьки и слепил внутренности, как будто так и было
- Звуки выключателей и переключения радио
Видео в комментах, как всегда

🔠 Написал длиннопост про базовый механизм в играх - конфликты. Подробно можно почитать здесь

___
Приглашаю проследовать в секцию комментариев дабы поделиться с обществом своими результатами за неделю!

#скриншотсуббота
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥143🆒2
This media is not supported in your browser
VIEW IN TELEGRAM
Значения полей в редакторе Unity можно копировать

Не знаю, с какой версии это началось, всю жизнь копировал целиком компонент, и в случае, если это невозможно - переносил значения ручками.

А оказывается поля можно копировать отдельно, просто через правый клик мышкой по названию компонента.

В примере выше копируется и вставляется Vector3, в буфере обмена в этот момент:

Vector3(10,20,30)


#полезное
👍40🔥9🤡4😁3😱32
Почему строковые переменные в Update - не хорошо

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

Плохой пример:

void Update()
{
_textFieldCoins.text = player.CoinsAmount.ToString();
}


1. Самое стремное - перерисовка канваса. В Unity UI элементы (те, что UGUI) рисуются на канвасе, и любое изменение внутреннего элемента ведет к пересчету всего канваса. Что тяжелова-то, особенно если элементов много. Полная перерисовка канваса ведет к быстрой просадке FPS, особенно если значение меняется часто (например счетчик FPS).

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

Решение для многих известное - пользоваться событиями (Event) или реактивностью. И то и другое - разбирал на канале. Изменение значений в UI через события происходит только в момент изменения данных, не каждый кадр, что полностью убирает описанные выше проблемы.


void Start()
{
player.CoinsAmountChanged += OnCoinsAmountChanged;
}

void OnCoinsAmountChanged(int newAmount)
{
_textFieldCoins.text = newAmount.ToString();
}

P.S. не забудь отписаться от события


#полезное
🔥19👍13😱32
This media is not supported in your browser
VIEW IN TELEGRAM
Кооператив на двоих от моих хороших друзей!

Да, буквально вчера ребята из Catch The Void выкатили первый трейлер и опубликовали страницу в Steam, дабы обозначить относительно скорый выход The Whisker Watch. Это кооперативный рогалик про двух котов, которые по ночам навешивают Хтони, а днём прокачивают уютный особняк. Кооп (онлайн/локальный) в приоритете, но соло тоже ок. Кастомизация, комбинируемые гаджеты, цикл день/ночь.

Собсно, добавляйте в вишлист: https://store.steampowered.com/app/3994840/The_Whisker_Watch/?utm_source=tg

P.S. Говорят, даже Человека можно погладить.
❤‍🔥26🔥1410
Скриншот-суббота
Vol. 14
9

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

🔠 SameDay:
- Новая кухня. Выглядит как старая, но теперь модельки нарезаны, что позволило сделать целый ворох мест для хранения и интерактивности
- Замутил принтер, который печатает всякое непристойное. Конфиг, что печатать задается - удобненько
Видео в комментах, как всегда

___
Еще играл в Outer Wilds в неудачное время в своей жизни, все пытаюсь заставить себя записать какой-нибудь ролик и другие приключения Андрюхи. В комментарии закидывайте свои успехи и неуспехи, будем лайки ставить!

#скриншотсуббота
Please open Telegram to view this post
VIEW IN TELEGRAM
16
Дружеское напоминание: осенняя распродажа в Steam началась!

Длиться будет неделю, до 6 октября, так что расчехляйте кошельки

https://store.steampowered.com/
11
Unity разослали всем письма с предупреждением об опасности

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

Уязвимость найдена в версии 2017.1 и продолжила свое существование дальше, так что фактически очень рекомендуется пересобрать игру и перевыложить, если ваша игра на Windows, MacOS, Linux, Android. При чем обновление выпускается для версии 2019.1 и выше. Бывает такое, что проект обновить нельзя, поэтому Unity также выпустили патч, чтобы обновить бинарники напрямую. Опять же, если на андроид, например, стоит защита античит, то придется пересобирать.

Насколько это опасно? Для некрупных разработчиков не очень-то. Уязвимость позволяет подменять библиотеки внутри игры, поэтому это больше кладезь для читеров. Если боитесь читеров - то вам лучше обновиться, ибо ваш клиент могут изменить, используя эту уязвимость, и загрузить билд на какой-нибудь файлообменник. Собственно, это наибольшая опасность для некрупных разработчиков. Очень неприятная. Важно понимать, что вредоносный код может работать только в рамках прав приложения, так что он не сможет копаться в ваших системных файлах, даже если очень захочет.

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

В общем, обновляйтесь! И с пятницей, дамы и господа!

P.S. Как обновляться
29
Скриншот-суббота
Vol. 150


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

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

🔠 Сижу, обновляю Unity на разных компах, а то после новости про уязвимость в движке в Unity Hub все красным стало

___
Еще забросил Outer Wilds и начал Atomic Heart. До ролика пока не добрался, простите. Но традицию делиться результатами прерывать не будем. Не будем, ведь?

#скриншотсуббота
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥113