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

Про искусство и игрострой:
@svolochandborshch
Download Telegram
Про checked и unchecked думаю многие слышали? Недавно у unsafecsharp вышел пост про то что это. Я перечитал этот пост, пожал плечами, с ностальгией вспомнил, что на собесах это бывает звучит как дополнительный вопрос и все на этом. Отложил как очень интересное знание, которое еще ни разу не пригождалось.

И о чудо! Не далее как вчера попался в проекте баг с ошибкой на переполнение типа. Я видимо подсознательно ждал этого момента. Так что вот реальный пример. В данном проекте никто особо не запаривается на счет подбора типов значений, в основном все в int и float. Если у вас проект, где этому уделяется больше внимания, все типы ужимаются до минимально подходящего, то вероятность встретить ошибку OverflowException возрастает.

Вот так выглядит метод с ошибкой:
 public int GetBundlesSize(List<BundleInfo> bundles)
{
if (bundles.Count == 0)
return 0;
return bundles.Sum(a => a.Size);
}

#техничка
3🔥3👍2🤔1
Еще одна сисадминская история. Когда заблокировали соц. сеть с квадратными фотографиями — было пофиг, но когда замедлился ютуб — стало некомфортно. Для меня это стало красной линией и я завел свой Wireguard VPN-сервер. Оказалось актуально, так как чуть позже заблокировался Notion, потом подъехал Discord, JetBrains блокирует лицензию.

Что дает свой сервер?
- Его не заблокируют, так как он не публичный, не принадлежит к популярному сервису.
- Вы точно знаете, что на уровне VPN никто не мониторит ваши данные.
- Свой сервер дешевле, чем любой покупной, можно найти хостинг от 150 рублей в мес.
- Моментальное подключение без рекламы и прочего.
- Минимального по характеристикам сервера хватит на всю семью и друзей.

В общем время требует от всех нас стать немного сисадминами, так что не будем противиться. Статей на эту тему тоже много, например вот — без воды и по делу.
7🔥31
Media is too big
VIEW IN TELEGRAM
Наконец-то нормальный маркетинг для отечественного геймдева подъехал. Обязательно смотреть со звуком.
2😁8💩6🔥3
А как у вас проходит блокировка ECH? Почувствовали разницу?
Скачал DLC Инстинкт истребления к Atomic Heart и там невоспитанный гусь начал ругаться, обзывался даже пиздоблядской хлаёбиной. При этом догнать его и дать люлей не получилось. После этого на время была потеряна воля к написанию новых постов, но потом я вспомнил, что примерно так же мы называли читеров, которые атаковали один из наших проектов.

В общем будет несколько постов про античит меры, кратко расскажу какие есть способы и что от чего помогает. Тема громадная, поэтому какие-то моменты я буду опускать, но если что велком в комментарии с вопросами.

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

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

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

И так, нас интересует две области — локальные меры в билде и защита сетевого трафика. Начнем с второго.

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

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

Тут возникает 2 проблемы:
1. Что если запросы очень объемные? Ассиметричные способы шифрования имеют свой минус — ими можно шифровать небольшие объемы. Тот же RSA ключ 2048 бит сможет зашифровать максимум 245 байт. Таким способом историю покупок не передать. Поэтому в подобных случаях нужно использовать гибридный способ шифрования. Данные шифруются симметричным алгоритмом, например, AES. Ключ от AES шифруется с помощью RSA и все передается в запросе. Чтобы расшифровать такой запрос, сначала распаковывается ключ с помощью RSA, затем с помощью AES расшифровывается контентная часть.

2. Где хранить приватный ключ в клиенте, чтобы его не нашли? Об этом в следующем посте, потому что речь в целом пойдет о локальной части игры.

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

#техничка@cat_and_code
5🔥10👍2
Channel name was changed to «Кот и код»
А вы видели анонс третей части Мора? "Мор. Утопия."
Наконец-то можно будет обчисть все урны в городе за Данковского.
https://youtu.be/Zb0C2WYUjkI?si=1qZDqiLT57wsC3A_
😁3
Мы небольшой командой работаем над артхаусным проектом о девочке, которая в силу обстоятельств подменяет маму на почте и разносит письма по деревне, называется А Горюшко вслед собакою… Действие игры проходит в военное время, но в мирной деревни в дали от фронта. История основана на реальных воспоминаниях главной героини. Проект уже давно томится и наверное мог бы потерять актуальность, если бы не был таким необычным по визуальному стилю и сюжету.

Даже странно писать это, но игра выйдет до нового года, Стим уже апрувнул билд, осталось только дочинить самые самые-самые последние баги.

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

Если игра понравится — добавьте в желаемое, нам это важно. Игра в Steam
#девлог
11🔥125👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Приятная викторина незадолго до Нового Года. Мы решили разыграть ключики от А Горюшко вслед собакою... на Steam. А также хотим познакомить вас с нашими каналами. Перешлите этот пост друзьям, которым будет интересно поучаствовать.

Разыгрываем 3 ключа, бот случайно выберет 3х участников, итоги будут тут на канале 28 декабря в 15:00.

Для участия подписаться на:
1. Кот и Код - здесь про разработку игр
2. Сволоч и Борщ - здесь про геймдизайн
3. Клик на кнопку “Участвовать”
🔥9
Листал ленту, захотел поделиться каналом @tochno_kesha Автор сильно изворачивается с стилизацией под PS1 и пикселизацию припудрив щепоткой крипоты.

Ну и в целом не боится экспериментов, в подборке скринов на последних 2х, он распечатал uv-карту, затем раскрасил цветными карандашами и отсканировал обратно. Результат вау. Сколько всего интересного можно так сделать. Взял себе на вооружение, воспользуюсь когда захочется сделать что-то еще вроде нашего Марево
🔥91
Под конец года сделал на заказ достаточно интересного telegram-бота. Можно потыкать тут, запущен пока в тестовом режиме: @hot_workshop_bot

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

По функционалу получается что-то вроде малюсенького корпоративного сайта, но прямо тут в мессенджере. Жесткое упрощение на верстку и все пляски с размещением сайта. Даже сервер необязателен (хотя в данном случае он есть). Все готовое.
4👍3🔥2
Кот и код
🎉 Результаты розыгрыша: Победители: 1. Васс (@gvassel) 2. Андрей (@korka451) 3. Leonid (@savidiy) Проверить результаты
И так, друзья, викторина состоялась. Поздравляем победителей, я напишу вам в личку.

Забавно, что я тоже тыкнул «Участвовать», чтобы проверить как оно работает вообще. Но я настолько никогда не выигрываю в викторинах, что не выиграл даже в своей викторине на 30 человек. С другой стороны хорошо, не пришлось объясняться как устроитель конкурса в нем же и победил 🌚
Please open Telegram to view this post
VIEW IN TELEGRAM
😁11👾1
Спасибо всем, кто поддерживает посты реакциями. Отдельное спасибо тем, кто кидается звездами ⭐️

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

Мы тут на разные темы общаемся. Киньте в тред, что вам наиболее интересно в блоге? Например, технические посты из серии #техничка , #девлог, а может заметки про #игры или неважно что, просто интересно как кто-то живет своей технической жизнью. Почему вам вообще интересны такие микроблоги типа моего? Технические посты бывают занимают много времени на формулировки и написание, есть у меня ощущение, что может они нафиг не нужны.

Всех с наступающим, всем желаю понятных ошибок в коде в Новом году. 🎄
Please open Telegram to view this post
VIEW IN TELEGRAM
7416👍42🔥1