Как стать автором
Обновить
8
0
Михаил Иванов @LyuMih

Web-разработчик

Отправить сообщение

Курс Молодого Геймдизайнера 2: баланс прогрессии и динамики без математики

Время на прочтение8 мин
Количество просмотров24K


Предыдущая статья про баланс персонажей и снаряжения собрала много отзывов и я решил не тянуть с продолжением.

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

Бонусом в конце — несколько ссылок по теме.
Читать дальше →
Всего голосов 42: ↑42 и ↓0+42
Комментарии21

Курс Молодого Геймдизайнера: как считать баланс персонажей и снаряжения без математики

Время на прочтение6 мин
Количество просмотров55K


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

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

Статья будет полезна тем, кому надо заняться балансом, но не знает с чего начать, а также начинающим геймдизайнерам, которые будут выбирать специализацию. Ну и всем, кто просто интересуется, чем занимаются ГД, когда не придумывают новые виды лутбоксов.
Читать дальше →
Всего голосов 69: ↑67 и ↓2+65
Комментарии38

Да хватит уже писать эти регулярки

Время на прочтение7 мин
Количество просмотров17K

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


/^(?:((?:[\w!#\$%&'\*\+\/=\?\^`\{\|\}~-]){1,}(?:\.(?:[\w!#\$%&'\*\+\/=\?\^`\{\|\}~-]){1,}){0,})|("(?:((?:(?:([\u{1}-\u{8}\u{b}\u{c}\u{e}-\u{1f}\u{21}\u{23}-\u{5b}\u{5d}-\u{7f}])|(\\[\u{1}-\u{9}\u{b}\u{c}\u{e}-\u{7f}]))){0,}))"))@(?:((?:[\w!#\$%&'\*\+\/=\?\^`\{\|\}~-]){1,}(?:\.(?:[\w!#\$%&'\*\+\/=\?\^`\{\|\}~-]){1,}){0,}))$/gsu

Тут, правда, закралось несколько ошибок. Ну ничего, пофиксим в следующем релизе!

Шутки в сторону
Всего голосов 36: ↑25 и ↓11+20
Комментарии32

GitHub Flow

Время на прочтение4 мин
Количество просмотров105K

Увидев в очередной раз базворд GitFlow я психанул и решил перевести описание более простой и менее проблемной схемы работы с ветками под названием GitHub Flow. Именно её имеет смысл использовать по умолчанию, переходя к какой-то другой лишь в случае непреодолимых обстоятельств.


Создайте ветвь



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

Читать дальше →
Всего голосов 48: ↑32 и ↓16+16
Комментарии23

Фальшивые криптокошельки в официальном каталоге Ubuntu — индикатор более серьёзной угрозы

Время на прочтение3 мин
Количество просмотров9.6K


Через официальный каталог приложений Ubuntu Snap некоторое время распространялся фейковый криптокошелёк, средства с которых сразу переводились на сторонний адрес. У одного из пользователей удалось увести 9,84 BTC.

Это типичная supply chain attack, один из самых опасных видов атак. Он предполагает внедрение зловредов в официальные каналы поставки ПО. Например, в прошивки от производителя оборудования, официальные обновления программ, которые распространяются через официальные сайты, и т д.
Читать дальше →
Всего голосов 10: ↑9 и ↓1+14
Комментарии15

Супер-эффективная архивация — сжимаем все что угодно до 32 байт

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров35K

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

Распаковать
Всего голосов 96: ↑89 и ↓7+108
Комментарии79

Декомпозиция программных компонент

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров3.1K

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

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

И тут начинаются нюансы..
Всего голосов 38: ↑18 и ↓20+5
Комментарии18

Typescript Generics

Уровень сложностиСложный
Время на прочтение8 мин
Количество просмотров7.9K

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

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

При этом написание типов бывает действительно утомительным, но Typescript предоставляет возможности ускорить и этот процесс. Здесь нам на помощь придут дженерики.

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

Читать далее
Всего голосов 10: ↑8 и ↓2+9
Комментарии2

Использование кастомных шаблонов и конфигов для swagger-typescript-api

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров2.4K

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

Именно кастомные шаблоны и бонусом, кастомная конфигурация, будут раскрыты в текущей статье. Поехали!

Читать далее
Всего голосов 2: ↑2 и ↓0+2
Комментарии2

Проектирование боевых систем в играх: с чего начать

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров8.4K

Большинство игровых продуктов в том или ином виде сталкиваются с боёвкой. Где-то это эпический кошмар уровня Dark Souls, где-то полуавтоматический бой между группами чибиков в мобильном батлере. В этой статье я покажу один из подходов, используемый геймдизайнерами при проектировании боевой системы для конкретной игры.

Читать далее
Всего голосов 14: ↑13 и ↓1+12
Комментарии17

Редактор персонажа

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров4.5K

Сегодня на Godot 4.1 создадим простой редактор персонажа, как в старых рпг, когда ты выбираешь внешний вид персонажа из уже нарисованных ассетов.

Читать далее
Всего голосов 4: ↑4 и ↓0+4
Комментарии5

Zustand.js: современный, невесомый, производительный и очень гибкий state manager

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров11K

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

В статье я расскажу:

о простом интерфейсе Zustand

о его внутреннем устройстве

о производительности без усилий: 3 простых способа оптимизаций

о производительности на максималках: не всегда нужно использовать длинный цикл рендера React, чтобы достичь максимальной производительности - Zustand может быстрее!

о применении на практике: советы и рекомендации по интеграции Zustand в ваши проекты для достижения масштабируемости и удобства поддержки.

Начните активно использовать Zustand в своих проектах - вы будете приятно удивлены простотой и удобством работы с ним.

Читать далее
Всего голосов 18: ↑13 и ↓5+8
Комментарии53

Как мы Steam Deck Verified получали

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров3.4K

Это небольшой рассказ о том, как мы получили заветную плашечку Steam Deck Verified для нашей игры The Unexpected Quest. Причем, никто из нас даже в руках не держал этот ваш Steam Deck.

Читать далее
Всего голосов 9: ↑6 и ↓3+4
Комментарии0

πfs — революционная файловая система без хранения данных­

Время на прочтение2 мин
Количество просмотров176K

Что это?


πfs это революционная файловая система, которая вместо того, чтобы тратить место на вашем жестком диске, хранит все данные в π. Вам никогда больше не придется заботится о свободном месте! Вам говорили, что 100% сжатие невозможно? Да вот же оно!

Как собрать?


πfs собирается элементарно:
./configure
make


Да и использовать его не сложнее:
πfs -o mdd=<metadata directory> <mountpoint>

Где metadata directory — каталог с метаданными (названия файлов, смещение в π), а mountpoint ­— каталог монтирования.

Что же π делает с моими данными?


π — одна из самых важных констант математики, и у нее есть куча интересных свойств (о которых можно прочесть в статье на википедии)
Одним из таких свойств числа π предположительно является нормальность, что означает, что все его числа распределяются равномерно, при условии, что это дизъюнктивная последовательность, т.е. все конечные числовые последовательности находятся внутри него. Если мы рассмотрим число π по основанию 16 (HEX), то это предположение верно. Первая запись об этом была в 2001 году.
Ну а если так, то зачем нам хранить все эти эксабайты данных на винчестерах, если мы можем найти их в π?
Читать дальше →
Всего голосов 395: ↑300 и ↓95+205
Комментарии228

Сжатие целых чисел

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров13K

Цель статьи осветить state of the art методы сжатия целых чисел, чтобы сэкономить в будущем время исследования алгоритмов и терминологии. При этом описание части алгоритмов может быть упрощено для понимания. Сравнение алгоритмов тоже находится вне рамках этой статьи. Подробнее можно почитать в ссылках.

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

Читать далее
Всего голосов 32: ↑27 и ↓5+32
Комментарии22

Организация развития видеоигровой индустрии: как все начиналось и что мы имеем

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров1.7K

Всем привет! Ровно год назад мы с другими предпринимателями из видеоигровой (или около нее) индустрии со второй попытки создали первую российскую ассоциацию видеоигровых разработчиков и назвали ее – Организация развития видеоигровой индустрии (РВИ) в форме АНО. Хотя фактически объединяться стали еще раньше — в 2021 году, когда понадобилось выступить совместными усилиями и добиться признания геймдева частью IT, чтобы иметь возможность доступа ко льготам. После решили не расходиться, реализовывать разные проекты на благо индустрии и в итоге пришли к официальной регистрации. Активную деятельность начали, мягко скажем, не в самое спокойное время, было непонятно примерно ничего. Массовые отъезды студий и релокации сотрудников, закрытие многих крупных индустриальных компаний, отключение от площадок дистрибуции и многие другое – все это не вселяло особой надежды не то чтобы на развитие отечественного геймдева, а хотя бы на его сохранение. Но мы решили рискнуть и последовать совету классика: «Делай, что можешь, с тем, что имеешь, там, где ты есть». Давайте посмотрим, что из этого вышло. 

Пришлось несколько раз переформатировать наши основные цели и задачи по ходу изменения внешних факторов. Но в итоге вышло это: «Цель организации — развитие индустрии видеоигр путем поддержки значимых проектов и полезных инициатив, их продвижения и обсуждения. РВИ содействует созданию положительного образа геймдева и игровой культуры в обществе, а также координации взаимодействия между инвесторами, паблишерами, научно-образовательными сообществами и корпорациями. Организация хочет добиться значимого повышения привлекательности инвестиций в видеоигровые проекты и найти решения для их продвижения на глобальном рынке с учетом новых реалий». В целом все сходится ? 

Читать далее
Всего голосов 7: ↑4 и ↓3+1
Комментарии9

Hyper: Chance. Этап 0. Знакомство

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров995

Hyper Chance: Этап 0. Знакомство

Hyper Chance - бесплатный технический акселератор коммерческих проектов от Hyper Dev Guild для разработчиков на основе фреймворка $mol

Обратная связь приветствуется! ^-^

Читать далее
Всего голосов 3: ↑2 и ↓1+1
Комментарии1

Фонетический словарь. Пет-проект в полезное приложение

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров3K

У меня есть хобби — изучение английского языка, и последнее время я увлекся фонетикой британского английского языка, но почти все словари дают транскрипцию «‎Королевского английского», на котором говорят, по данным Гугла, около 3 процентов жителей Соединённого Королевства. А найденный в интернете словарь http://www.cubedictionary.org/ хоть и дает нужную мне транскрипцию, но имеет ряд недостатков.

Читать далее
Всего голосов 8: ↑6 и ↓2+6
Комментарии14

Натальная травматология фронтенда S1 E1-14

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров6.6K

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

В этом сезоне ко мне на операционный стол попались разные JS, CSS и тест фреймворки да методологии, менеджеры состояний и потоков исполнения, коллекции виджетов и даже приложений. Приготовьтесь, далее вас ждёт целых 32 часа отборного кринжа!

Погрузится в эпидерсию
Всего голосов 40: ↑22 и ↓18+9
Комментарии47

Введение в $mol. Часть 1. Модульная система

Время на прочтение35 мин
Количество просмотров10K

Эта статья открывает серию публикаций по обучению фреймворку $mol. Сегодня мы разберемся в модульной системе MAM. Речь пойдет об организации кода, отделении его от инфраструктуры, сборке, версионировании, нейминге, минимизации размера бандла, автоматическом выкачивании зависимостей, фрактальных моно-поли-репозиториях, разделении кода на платформы, альтернативе импортам/экспортам, автоматическом разруливании циклических зависимостей.

Читать далее
Всего голосов 21: ↑14 и ↓7+11
Комментарии21

Информация

В рейтинге
Не участвует
Откуда
Алексин, Тульская обл., Россия
Дата рождения
Зарегистрирован
Активность