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

Про искусство и игрострой:
@svolochandborshch
Download Telegram
Спасибо всем, кто поддерживает посты реакциями. Отдельное спасибо тем, кто кидается звездами ⭐️

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

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

Всех с наступающим, всем желаю понятных ошибок в коде в Новом году. 🎄
Please open Telegram to view this post
VIEW IN TELEGRAM
7416👍42🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Новогоднее настроение на любителя🎄
Потом расскажу, что за заяц такой
7🎄91
Простых Telegram-ботов я делаю обычно в виде консольных приложений, потому, что им не нужны возможности WEB API. Чтобы потом такой консольный бот работал в линуксе в фоне, то нужно сделать service-файл для systemd - он отвязывает приложение от консоли и позволяет управлять им через systemctl. Так вот, когда в режиме написания драфта, чтобы приложение не вылетало по завершению, пишешь в Program.cs что-то вроде такой порнографии:
while (true)
{
var result = Console.ReadLine();
if (result != null && result.ToLower() == EXIT_COMMAND)
Environment.Exit(0);
}


Такая конструкция способна загрузить незамысловатый проц на 100%, а например, Intel i7 11th Gen — процентов на 30%. Вот такая вот мелочь. Правильно делать выход через ивенты от системы, прокидывать токен для отмены в главные модули вашей программы:
using var cts = new CancellationTokenSource();

AppDomain.CurrentDomain.ProcessExit += (_, _) =>
{
if (!cts.IsCancellationRequested)
cts.Cancel();
};

Console.CancelKeyPress += (_, e) =>
{
e.Cancel = true;
cts.Cancel();
};


Мораль — прибирайтесь вовремя, плохо не пишите, пишите хорошо.
#техничка
👍132🤔1🫡1
Планирую сходить на митап Индикатор Шрёдингера.

Проходит в Москве 18.01 (суббота) рядом с метро Преображенская площадь. Мне нравятся такие небольшие мероприятия, тут все сразу - нетворкинг, лекции и мое любимое — шоукейсы-плейтесты. В том числе можно залететь спикером или со своей игрой, подробнее что где как: https://news.1rj.ru/str/gamedev_moscow/619

Интересно, есть ли кто-то из присутствующих в МСК и может пойдет? Отпишите в комментах)

#события@cat_and_code
🔥8👍1
Media is too big
VIEW IN TELEGRAM
Если бы в 1994 году плейстейшен 1 придумали бы в России, то возможно, игры на ней были бы какие-то такие.

«Неясное» — настоящая панельная хтонь, симулятор ходьбы. Проходить его тленно и угарно одновременно. По сюжету, вы сможете сгонять в центр из своего панельного спальника и обратно. Вам предстоит зайти в аптеку, кебаб, дискотеку, выставку, книжный магазин и некоторые другие места (стоит исследовать локации). Много классных диалогов и максимально всратая озвучка, которая подходит просто прекрасно и немного напоминает переводы от Фаргуса. Скриншотов тут бы не хватило, сделал небольшую нарезку с прохождения, возможны спойлеры.

Cкобки ( . . . ) { . . . } — это текстовые облака. Интересно, почему мне заходят такие опусы, когда есть нормальные игры? Пусть живет на канале по тегу #игры@cat_and_code
10🔥1075👍1
Задача на работе навеяла мысли о том, что не плохо было бы продолжить тему про античиты. Первая часть — тут.

Читерские трейнеры работают по принципу: "сделай действие → проанализируй данные → повторяй для уточнения данных". Современные читерские инструменты стали достаточно умными: они умеют анализировать код игры в оперативной памяти, распознавать операции шифрования, находить закономерности и эксплуатировать их. Вот таким штукам мы противостоим. Наша задача — создать непредсказуемые механизмы, которые усложнят процесс взлома.

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

- Обфускация билда затрудняет декомпиляцию и анализ, делая код непонятным даже после распаковки. Имена классов, методов и полей заменяются на случайные символы. В код вставляются ложные зависимости, "мусорные" функции и некоторые другие вещи для усложнения анализа.

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

- Хранить важные данные в зашифрованном виде. Например, если вы храните в билде ключ RSA — он имеет свою сигнатуру, его можно найти по ней. Поэтому ключ можно хранить в виде пропущенном через другую функцию шифрования и под солью 🤔

- Чтобы помешать трейнерам понять, что и как у вас происходит — нужен механизм который который будет обеспечивать отсутствие немедленного отклика на изменение данных. Это задержки и динамическая криптография. Сделать систему, которая не будет напрямую зависеть от действий пользователя, но будет делать дешифровку и шифрование важных данных новыми ключами достаточно часто. Тут важно чтобы ключи были каждый раз новые, и чтобы это происходило в непредсказуемые моменты времени. Это относится и к хранению и приватного ключа. Он как бы хранится в оперативной памяти, но все время перешифровывается и перемещается по ней. Таким образом, даже если злоумышленник "заморозил" память, ключ перестанет быть актуальным через несколько секунд.

#техничка@cat_and_code
Please open Telegram to view this post
VIEW IN TELEGRAM
🍓853🔥3😁1
Media is too big
VIEW IN TELEGRAM
Этот день настал. Наша игра на релизе — «А Горюшко вслед собакою…» («Grief like a stray dog»)

Steam
VK Play

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

Если у вас было в планах ее приобрести, то будем благодарны отзывам. Они нужны чтобы Стим решил игру немного продвинуть, всего нужно 10 отзывов. Так что будет здорово, если поделитесь впечатлениями после игры на странице Стима.
Всем спасибо, а у нашей команды эмоциональная разгрузка 🤔
#девлог@cat_and_code
Please open Telegram to view this post
VIEW IN TELEGRAM
15🔥305❤‍🔥3👍3💩1
У нас игра максимально серьезная, но тут, на этом канале я могу позволить себе немного расслабить щи. Нас кое-где успели упомянуть и написать отзывы. Собралась небольшая подборка, которая описывает все многообразие мнений. Те еще эмоциональные качели, с одних кекаешь, другие очень серьезные.

Особенно занимательно читать комментарии, где часть людей записывает нас в ЦИПСО, другая в грантополучателей от правительства. И никто не знает, что мы начали делать игру уже давно на чистом энтузиазме.

Сделали канал чисто для анонсов наших проектов и прочей официальной информации - https://news.1rj.ru/str/rayonistgames

#девлог@cat_and_code
7🫡44🤣2👍1
Друзья подарили небольшую ретро-приставку, и меня мощно накрыло ностальгией. Но быстро стало понятно — 8 бит маловато, захотелось большего. Полез смотреть ретро-консоли на маркетплейсах и… разочаровался. Везде какие-то кастомные системы, костыли, проприетарные оболочки, а чтобы добавить туда новые игры — целый квест с бубном. Плюс жесткие ограничения по платформам: ни тебе PSP, ни DOS-эмуляторов, ни поддержки ScummVM, так что о старых квестах вроде Monkey Island или Beneath a Steel Sky можно забыть. Ну и, конечно, хотелось бы в некоторые тайтлы поиграть вдвоём.

В общем, идея понятна — собрать что-то самому. И такие решения, к счастью, есть. Хотя возможно, я просто искал повод наконец-то купить Raspberry Pi... Консоли быть, но собранной своими руками из разных железяк. Начало положено, плата пришла, но жду прибытия остальных деталей. Кстати, под Raspberry даже продают корпуса в стиле классических консолей — например, на втором фото корпус под Sega Genesis.
9👾5🔥3
Читаю «Паттерны программирования игр» Роберта Нистрема. Книжка хорошая — рекомендую, но мне кажется автор пытается передать какое-то мета-сообщение через подписи к иллюстрациям.
😁261🔥1😱1