Кот и код – Telegram
Кот и код
567 subscribers
157 photos
21 videos
1 file
81 links
Про разработку на Unity и .Net, радость и боль программирования.
Автор: @KotikovD

Про искусство и игрострой:
@svolochandborshch
Download Telegram
В проекте Singletone у нас будет городская локация. Мы хотим заложить необычный бруталлисткий стиль и избежать уже надоевших панелек и спальных районов. В этом нам помогает архитектор Роман Коротков. Мы уже не раз замечали, как люди «не из геймдева» способны внести в проект что-то неожиданное — свежий взгляд, нестандартные и непривычные для игрока подходы. В нашем случае к атмосфере, эстетике и левелдизайну. Работа ещё в процессе, но появляется первое виденье.

Хотел бы свериться с вами, какие у вас ощущения и впечатления от рабочих скриншотов?

#девлог@cat_and_code
3🔥18👍4👀2
Я как-то обычно не практикую вопросы на канале, но вдруг вам будет интересно. В общем я сейчас еще подумал, что могу Романа попросить написать/рассказать свои мысли, как он подходит к проектированию нашего игрового мира. Интересно было бы?
3👍15🔥91
Please open Telegram to view this post
VIEW IN TELEGRAM
😁127👍1
На днях вышла Unity 6.3 LTS

Вроде как обещают, что будет больше стабильности. Вроде как это основная фишка. Верим? Я больше верю, что теперь в окошке Unity crash меня будет радовать новая обновленная иконка.

Из того, что меня зацепило:
- Platform Toolkit — единое API для всех игровых платформ. Портирование проектов может стать проще (конечно, если оно работает)

- Поддержка HTTP 2. Слабо верится. Сколько было часов нечеловеческих сношений с тем чтобы заставить работать проекты на этой версии протокола с помощью разных плагинов. Все еще с трудом верится в стабильность.

- Возможность изменять внешний вид панели Toolbar (это там где кнопка play\stop), добавлять кнопки итп. Правда мы и так раньше добавляли — сами писали скрипты. Мелочь, но теперь из коробки.

- Куча всякого по 2D: Возможность использовать 3D ассеты в 2D (работает 2D освещение и физика). Улучшение 2D физики и анимации.

- Можно отключить в проекте физику. В том плане что отключить весь физический SDK и уменьшить вес сборки. Это нравится.

- UI Toolkit — развивают, но все еще сыро. Подходит только для простых и тестовых интерфейсов.

#техничка@cat_and_code
Поддержите автора лайком или отправьте пост другу
Предложить тему для поста
1🔥1452
Нашел идеальную фразу, для проверки шрифта. Тут все 33 буквы.

"Эй, жлоб! Где Туз? Прячь юных съёмщиц в шкаф"

Не благодарите.
1🤯149😁7🔥2
Про плохую практику возвращать null из методов. Разберем на примере.

Если метод, например, имеет такую сигнатуру:
QuestData GetQuestData(string questId)

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

Плохая реализация выглядит так:
QuestData GetQuestData(string questId)
{
if (_quests.TryGetValue(questId, out QuestData data))
return data;

return null;
}


Если у вас один такой метод или малый проект, то это особо может и не страшно (но точно неудобно). Те кто не обращают на такие мелочи внимание, далее как правило накручивают еще больше подобных методов и неустойчивость кода растет очень быстро.

Это плохо в первую очередь потому, что ошибка происходит, но делает это втихую — не сообщая ничего. Во-вторых заставляет вызывающий код делать проверки вида if (questData != null) везде где этот метод вызывается, а это повсеместный мусор. И, конечно, замедляет разработку.

Реализация чуть лучше:
QuestData GetQuestData(string questId)
{
if (_quests.TryGetValue(questId, out QuestData data))
return data;

throw new Exception("Quest id '{questId}' not found.")
}


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

Хорошая реализация:
bool TryGetQuestData(string questId, out QuestData data)
{
return _quests.TryGetValue(questId, out data);
}

Почему хорошо:
- Понятность, вам не придется ловить null непонятно где. Внешний код уже по сигнатуре метода знает, что данных может не быть, значит обработает это корректно (например, отправит ошибку в аналитику, выведет лог и не будет ломаться на попытке запустить этот квест в игре).

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

- Например, у вас из 1000 есть целых 10 не валидных questId, которые вы передаете в метод. В варианте с возвращением null или throw new Exception — вам надо будет 10 раз запустить игру, чтобы их найти. В варианте, где вы очевидно обрабатываете отсутствие данных и, например, выводите лог, то вы узнаете все 10 неверных questId за один запуск. Это снова экономия времени.

- Делает код чище и проще. Меньше лишних проверок, меньше строк и снова буст к простоте проекта и скорости разработки.

#техничка@cat_and_code
Поддержите автора лайком или отправьте пост другу
Предложить тему для поста
👍104🗿32🤣11
Комментарий в рабочем легаси коде, который ОЧЕНЬ предостерегает
🤣94🗿1
Достаточно активный срач содержательная дискуссия была под постом про TryGet. Мне понравилось. Я в ней поделился советом, у которого образовались и противники и согласные.

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

Предлагаю такую штуку — желающие поделиться могут написать мне в ЛС, изложить свой совет/рекомендацию удобным способом, я оформлю вашу мысль, подготовлю пост и опубликую на канале. Вам возможность понаблюдать со стороны, не вступая в дискуссию лично (или наоборот с указанием авторства вопроса). Желающим критиковать, шутить и троллить — широкое поле для деятельности, велком. Остальным польза в виде разных мнений на вопрос.
233🔥2
Media is too big
VIEW IN TELEGRAM
Новости из страны инди разработки. Singletone понемногу преображается.

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

Пока, то что на видео это еще даже не попытка в визуал, а первые черновые этапы. Модель — это Петр с Mixamo и диалог написанный по инициативе Copilot (все-таки нейронки что-то знают).

В общем у кого тоже проекты на ранних этапах, как у вас идет? Не пасуйте перед количеством работы? Я видел на других каналах иногда делаются посты, типа "скриншот прогресса". Чтобы в комменты все желающие могли накидать прогресс по своему проекту за последнее время и подбодриться (или погрустить вместе, тут как повезет). Есть у нас тут что-то делающие и желающие делиться прогрессом? Думаю может тоже сделаем такую рубрику.
🔥731
Чисто я под конец проекта
🐱🐈
Please open Telegram to view this post
VIEW IN TELEGRAM
12😁6😭3👍11
Пора завершать историю с приставкой. В общем мы ее собрали и она даже стабильно работает.

Очень интересный эффект получился. Увлекаясь ее проектированием и сборкой, в итоге я представлял себе изделие гораздо более симпатичным. А выглядит она как ретро-футуристичный советский осциллограф без экрана. Особенно если смотреть сзади. Я когда учился в университете и они везде стояли в лабораториях в больших количествах, я задумывался, а почему они все такие страшные коробки? Видимо впитал эстетику 🔫

Но если о плюсах:
- Фантомная подсветка сквозь двойную тесселяцию Вороного. Естественно — зеленая.
- Приставка придумана так, чтобы стоять в узкой полке под телевизором (боковые панели не видно). Здесь получилось — скучность ровных поверхностей будет скрыта.
- Хорошее охлаждение, нормальный олдскульный вентилятор и шум на уровне CD-привода при разгоне диска.
- Смена карты ОС без разбора корпуса. Это важно, так как внутри универсальная Raspberry Pi.
- Наличие AV выхода, я даже проверил 1 раз на ЭЛТ-телевизоре, что все работает. Не знаю зачем, но возможность есть.
- Куча эмуляторов разных платформ и необходимость потратить времени для установки и настройки игры в среднем в 3 раза больше, чем будешь в нее играть.
- Центральную кнопку так и не доделали. не хватает декоративной пластины.

В общем я доволен приключением, но дизайнером в Apple нас Джуниором вероятно не возьмут 😐
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥204😁3