Search
Write a publication
Pull to refresh
5
0.1

Разработчик

Send message

Как я создал roguelike Run Eternal Depths: технические аспекты и простая генерация подземелий

Level of difficultyEasy
Reading time3 min
Views5.6K

Привет, Хабр! Меня зовут Артём, и я 3D-моделлер, который много лет работает в 3ds Max. Недавно я решил освоить Unreal Engine через создание пет-проектов, и результатом стала игра Run Eternal Depths — roguelike с процедурной генерацией подземелий, которая уже доступна для добавления в вишлист в Steam. Релиз запланирован на 21 марта, и в этой статье я расскажу о технических аспектах разработки, включая мою реализацию генерации подземелий.

1. Идея и начало разработки

Изначально Run Eternal Depths задумывалась как тестовый проект для экспериментов с процедурной генерацией подземелий. Мне нужно было реализовать эту механику для другого проекта, но я решил сделать это в чистом проекте, чтобы не рисковать основным. Со временем идея переросла в полноценный roguelike с упором на исследование подземелий.

2. Технические аспекты разработки

Движок и инструменты

Читать далее

Урок ценой $115 000: чему меня научила разработка продукта с нуля

Level of difficultyEasy
Reading time12 min
Views17K

Последние пару лет в свободное от Настоящей Работы время я в роли CTO/соло-бэкендера участвовал в создании Stry — фитнес-стартапа с подписной моделью. Теперь, когда наша команда официально объявила о прекращении дальнейшего развития проекта, пришло время порефлексировать и поделиться полученным опытом. В этой статье я в двух словах представлю продукт, детально опишу архитектуру проекта и расскажу о наших (моих?) основных технических успехах и неудачах. Поехали!

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

Читать далее

Симуляция воды над рельефом

Level of difficultyEasy
Reading time18 min
Views4.3K

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

Я одержим генерацией рельефа, играми на основе сеток, симуляциями и тому подобным. И часто во всём этом присутствует вода, или, по крайней мере, её присутствие кажется естественным.

Допустим, вы генерируете карту для стратегической игры, но не хотите, чтобы границы карты были заполнены непроходимой пустотой (как в олдскульных RTS). Разве не будет здорово, если граница будет заполнена водой, как на этой карте из одного моего заброшенного проекта?

Читать далее

Ассет-менеджер для Unity на стероидах

Level of difficultyMedium
Reading time19 min
Views2.5K

Если у вас скопилось слишком много ассетов в Unity, а поиск нужного контента превращается в долгий и хаотичный процесс, значит, пора пересмотреть подход. Автор статьи делится своим опытом создания Asset Inventory — мощного инструмента, который решает проблему организации ассетов, позволяя искать не по пакетам, а по самим объектам. Как работает эта система, какие технологии использованы и какие возможности она открывает — читайте под катом.

Читать далее

Что такое Crafty Buildy Games?

Level of difficultyEasy
Reading time17 min
Views4.3K

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

Читать далее

5 способов нарисовать обводку

Level of difficultyEasy
Reading time13 min
Views7.3K

Рендеринг обводки (контуров) — это техника, часто используемая в играх или из эстетических, или из геймплейных соображений. Например, в игре Sable контуры применяются для создания стиля, напоминающего комиксы, а в The Last of Us контуры используются для выделения врагов, когда игрок переходит в режим скрытности.

В этом посте мы расскажем о пяти способах рендеринга контура вокруг объекта.

Читать далее

Про Rust — просто. Что читать в каком порядке?

Level of difficultyMedium
Reading time20 min
Views25K

Друзья! Многие из вас, возможно, как и я, интересовались изучением и использованием в работе очень эффективного и востребованного языка программирования Rust но, как и я, оставляли свои попытки из-за сложности, запутанности и многослойности доступного материала и книг по этой теме.

Лично я делал не меньше 5 попыток на протяжении последних 10 лет, прорабатывая, большей частью в свободное и личное время, литературу, некоторые книги по несколько раз, в поисках ответов на простые человеческие вопросы - как свободно писать на Rust и решать, как орешки, ежедневные задачи, не страдая от головной боли и хорошо понимая, что происходит и почему простая программа не компилируется.

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

Читать далее

API Key Authentication в ASP.NET Core Web Api

Level of difficultyMedium
Reading time6 min
Views6.1K

Недавно я столкнулся с задачей реализации аутентификации с использованием API Key в ASP.NET Core Web API. Хотя многие авторы рекомендуют использовать IAuthorizationFilter для этой цели, я обнаружил, что это не самый подходящий вариант. У меня есть более удачный подход, которым я хотел бы поделиться, включая примеры. Реализация была протестирована как в .NET 8, так и в .NET 9.

Читать далее

Ностальгические игры: Blood

Level of difficultyEasy
Reading time14 min
Views6.2K
image

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

В 90-е, когда шутеры от первого лица начинали свой триумфальный марш, на свет появился «Blood» – шедевр 1997 года, что захватил умы тех, кто жаждал стрелялки с жуткой атмосферой и чёрным юмором, растворённым в море крови. Студии Monolith Productions удалось создать что-то особенное, благодаря чему «Blood» стала настоящим порталом в мир, где киношные ужасы, комиксовая жестокость и бодрый экшен слились в гремучую смесь. Такой проект просто не мог не оставить большой след в гейминдустрии, навсегда осев в памяти геймеров.

Сегодня я поделюсь воспоминаниями разработчиков, расскажу где они черпали вдохновение, какие детали делали геймплей уникальным, каким получился ремастер 2019 года и почему «Blood» до сих пор вызывает трепет в сердцах игроков. А на закуску подготовил для вас сборку современного издания игры, чтобы без каких-либо проблем запустить проект на любых современных системах. Готовы к путешествию в прошлое? Тогда начинаем!
Читать дальше →

Создание прототипа RPG-игры на движке GemRB

Level of difficultyMedium
Reading time50 min
Views2.4K

Цель статьи - описание процесса того, как можно собрать небольшой прототип RPG-игры для движка GemRB. Кто не знает, GemRB (расшифровывается Game Engine Made with pre-Rendered Background) - это проект с открытым исходным кодом, направленный на создание клона движка Infinite Engine, того самого на котором в конце девяностых - начале нулевых были сделаны такие классические ролевые партийные игры как Baldur's Gate, Planescape: Torment, Icewind Dale и другие. Нынешнее состояние движка GemRB позволяет пройти все эти игры, используя их оригинальные ресурсы (графику, звук, тексты и прочее).

Одно из достоинств проекта GemRB в том, что под него можно сделать отдельную, совершенно независимую игру. По своей сути создание такой игры похоже на создание мода для игры Baldur's Gate (или другой подобной). В большинстве случаев используются те же механизмы и методы. В данной заметке хотелось бы рассказать, как можно сделать небольшой игровой проект в изометрическом стиле. Будем делать полностью с нуля, используя набор заранее подготовленных ассетов.

Читать далее

Как создавать lock-free структуры данных в C# на базе CAS и Thread.Volatile

Level of difficultyEasy
Reading time5 min
Views2.6K

Привет, Хабр!

В многозадачности блокировки в старом добром понимании начинают становиться узким местом. Когда мы пытаемся использовать обычные синхронизации типа lock, Monitor или Mutex, начинается одна большая проблема: каждый поток, который захватывает блокировку, становится бутылочным горлышком для других.

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

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

Читать далее

Типология Test Doubles

Level of difficultyMedium
Reading time10 min
Views2.4K

Тестовые дублёры (англ. Test Doubles) — это объекты или модули, используемые в автоматизированных тестах в качестве замены некоторых частей тестируемой системы (англ. SUT, System Under Test).

В этой статье мы обсудим пять типов тестовых дублёров: Dummy, Stub, Spy, Mock, Fake.

Читать далее

Хакерские утилиты Дидье Стивенса

Level of difficultyMedium
Reading time6 min
Views31K


Дидье Стивенс — бельгийский разработчик и авторитетный специалист по информационной безопасности. Наиболее известен своими инструментами по взлому паролей Windows, анализу документов PDF и внедрению туда вредоносных файлов, а также как автор опенсорсных утилит Didier Stevens Suite: это 140 программ для системных операций с файлами, процессами, реестром и прочими штуками. Например, диспетчер задач Windows, реализованный в Excel/VBA (на КДПВ).
Читать дальше →

Как добавить надпись на картинку

Level of difficultyMedium
Reading time5 min
Views4K

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

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

Читать далее

Как спроектировать игровую математическую модель, забалансить её и не сдуреть. Разбор на практических кейсах

Level of difficultyEasy
Reading time17 min
Views20K

Мы идём от общего к частному. Задаём системе вопросы на самом общем уровне и постепенно углубляемся в детализацию. Если на какой-то вопрос мы не смогли ответить, значит, скорее всего, мы пропустили какой-то более общий вопрос, от которого зависит рассматривая ступень детализации, в этом случае не стесняемся вернуться на один или несколько уровней абстракции назад.

Читать далее

Blue-green deployment, canary release: рецепт приготовления безрисковых релизов

Reading time15 min
Views41K

Банковские сервисы по умолчанию не должны падать, и даже прилечь на секундочку, и даже когда мы обновляемся. Ведь даже секунды могут привести к потерям с множеством нулей. Чтобы этого не произошло мы используем blue-green deployment.

Простым языком blue-green deployment - способ развертывания, который позволяет обновлять приложения не отклоняя ни одного запроса, без остановок. Как это сделать, расскажу и покажу на примере. Статья подойдет DevOps-инженерам и бэкенд-разработчикам, особенно на HighLoad-проектах, а также моим будущим коллегам, как методичка по безрисковым релизам, чтобы прод не падал каждые 2 недели по графику релизов (а такое тоже бывало).

Читать далее

RUINSWORLD: Многопользовательский шутер с открытым миром для браузера на js/ts, Three и Vue. Бета-версия

Level of difficultyMedium
Reading time23 min
Views4.1K

Этой статьей я хочу представить сообществу разработку www.ruinsworld.ru, которой, по сути, посвятил пять последних лет жизни. Все начиналось с браузерного сингл‑шутера, потом была не очень удачная и быстро наскучившая попытка в стратегию, после чего я поставил себе, казалось бы, невозможную задачу. Реально ли, используя все эти наработки, построить многопользовательский шутер в браузере, да еще не просто «стрелялку внутри небольшой коробки», а с большим открытым миром и огромным количеством неписей в нем? Чтобы можно было «идти куда хочешь во все стороны и делать что заблагорассудится», как в самых лучших постапокалиптических РПГ?

Читать далее

Что спрашивают у проджектов на собесах в Циане, Авито, Яндексе и Сбере: 250 вопросов чтобы подготовиться к интервью

Level of difficultyEasy
Reading time11 min
Views20K

Привет, Хабр!

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

Посмотреть вопросы

Мне 34, я был в 65 странах, и у меня есть для вас лайфхак

Level of difficultyEasy
Reading time4 min
Views101K

Вы же попались на этот кликбейт?

В статье расскажу, как я написал Telegram-бота, чтобы больше не скроллить каналы с дешёвыми авиабилетами, но сразу узнавать о вкусных предложениях по странам, где я ещё не был.

За первый же месяц с ботом я купил перелёт в США и обратно в два раза дешевле стандартной цены. А сколько времени сберёг на мониторинг — не сосчитать. Поделюсь ссылками на мой проект в GitHub и названием бота. Вы сможете собрать похожее решение под свой запрос и летать в отпуск, испытывая меньше фрустрации от ценника на билеты и туры.

Читать далее

Task изнутри: управление потоками в .NET и создание своих планировщиков

Level of difficultyEasy
Reading time5 min
Views6.5K

Привет, Хабр! Сегодня поговорим о том, как работают задачи в .NET, зачем может понадобиться собственный TaskScheduler и как его реализовать.

Читать далее

Information

Rating
4,969-th
Location
Россия
Registered
Activity

Specialization

Specialist
C#
ASP.NET MVC
Microsoft SQL Server
Entity Framework
SQL
.NET
OOP
PostgreSQL
REST
RabbitMQ