Cortez95

Cortez95

На Пикабу
106 рейтинг 3 подписчика 0 подписок 9 постов 0 в горячем
Награды:
Пикабу 17 лет!5 лет на Пикабу
2

Кто я? Разработчик игры или курьер? И почему мне так страшно?

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

Глава 1. Один в поле воин (и без нейросетей)

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

Но реальность выглядит совершенно иначе. Моя игра — это моя мечта, которую я вынашивал годами. А мечты не рождаются из текстовых запросов в чат-ботах, их нужно прочувствовать, выстрадать и собрать собственными руками. Чтобы понять, почему? Нужно просто посмотреть на мою жизнь.

Корни.

Все началось в детстве, когда у меня не было своего компьютера. Вообще. Современные зумеры, которые могут купить мощный игровой ПК в два клика, просто не поймут этот квест. Я часами пропадал в магазине в очереди где стоял PS1(10 рублей = 40 минут поиграть) чтобы поиграть в Tekken 3. В 2008 году на экраны вышел «Железный человек», и я впервые увидел Джарвиса. Помню, пришел к папе, а он у меня очень хорошо разбирался в электронике — и говорю: «Пап, я хочу себе такого робота, чтобы он со мной разговаривал!». Моя детская фантазия тогда подкреплялась еще и мультиком про Джимми Нейтрона, где у главного героя была умная механическая собака по кличке Годдард. Я безумно хотел такую же.

Эта идейность, это вечное юношеское «хочу-хочу» в итоге и заставило меня шевелиться но пока в неизвестность, я поставил себе цел - мой личный ПК. Свой первый комп я собрал сам. Деньги копил долго: пешком обходил весь село, собирал и сдавал металлолом, летом работать на пилораме, откладывал. И ведь сделал! Собрал легендарный четвертый Пентиум. По тем временам это была хорошая машина, на которую я буквально пахал :D. Помню, как позже я отдал бешеные деньги за компьютерный журнал, просто потому что к нему в подарок шел диск с игрой «Demigod» 150 рублей! Сумашедшая стоимость!. Журнал стоил для пацана как полет в космос а мне уже было 14 лет, я в сам Demigod поиграл в итоге от силы пару часов, но вот это потрясающее чувство, когда ты запускаешь игру на компьютере, который сам собрал ради этой самой минуты... Я уже не говорю про GTS San Andreas тогда для меня это был отдельный кайф) Его невозможно забыть.

В 2011 году я окончил девятый класс и поступил в техникум на мастера сухого строительства. О, студенческая жизнь тогда распирала по полной: задиры, драмы на переменах, первая серьезная любовь. И параллельно в мою жизнь врывается Samp RP и Karos Online. Я играл в них на плоском и пузатом кинескопном мониторе — ЖК-экраны тогда стоили как крыло от самолета). Карос стал моим «Дедом» в мире онлайн-игр, он заложил во мне консервативного, упертого геймера. Я полюбил эту систему сбора лута, ПК игроков, жесткое ПВП и осады замков. Времени это жрало много. Я пытался параллельно заглядывать в World of Warcraft, но Карос не отпускал — там нужно было по будильнику ловить часовых боссов, которые появлялись строго в определенное время, добывать экстракт врокиана для крафта, иначе твоя гильдия потеряла бы влияние. Накал страстей был такой, что моя девушка из техникума, в итоге меня бросила. Сказала: «Выбирай, я или твой Карос». Ну, я и выбрал :D Помню свои крокодиловы слезы, а чего стыдиться? Я тогда думал что она единственная, но я таков какой есть. До сих пор не жалею.

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

Космический олигарх и съеденная Вселенная.

Под конец техникума сосед из подъезда, мужик старше меня лет на десять, заговорщически сказал: Скоро выйдет вещь, которая аннигилирует вообще весь жанр. Называется ArcheAge. На дворе начало 2014 года, я подрабатывал на практике, заработал кое-какие деньги и полностью обновил комп. Стал диким фанатом Интел и урвал крутейшую по тем временам видеокарту Evga GTX 970. Это был топ. Выходит ArcheAge, и Карос мгновенно отправляется на пенсию ЖВ. На открытом тесте творился сумасшедший дом: больше двадцати серверов и очереди по 4 часа, чтобы просто зайти в игру!

Но это была пушка!

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

К середине 2014 года меня забирают в армию. Я успел поиграть всего месяца три, но уходил с четкой мыслью: Я вернусь и продолжу. Отслужив год, вернулся в ArcheAge, завел свой видеоблог и остался там на несколько лет. Прошел игру вдоль и поперек, трансферился с сервера на сервер, чтобы захватить власть, был и в доминирующих союзах, и в жесткой оппозиции. Но когда из проекта ушел главный корейский геймдизайнер Джейк Сонг, обновления стали скромными, начал распухать донат, и игра для меня просто изжила себя. Стало скучно. Параллельно все кричали про Black Desert, но он мне вообще не зашел — все какое-то пластиковое, неоновое, графика ушла от благородного Средневековья в сторону хз пойми что, с кучей мобильных кнопочек. Где-то в этих промежутках я успел побывать разработчиком в GTS sa-мультиплеере и моддером. Писал игровые моды на примитивном языке Pawn. И, знаете, успешно, мои сервера собирали по 300 человек онлайна, а мне это дико нравилось. Правда, я быстро понял, что такие проекты это однодневки: за пару месяцев ты вырастаешь от бомжа на вокзале до лидера фракции, а потом админа, получаешь все и выгораешь. Свой сервер-мод в GTA 5 я в итоге даже не начинал разрабатывать — выделенные сервера стоили дорого, еще по опыту GTA sa это понял, а я тогда ничего толком не зарабатывал.

В конце 2018 года я переезжаю в Санкт-Петербург. Устраиваюсь в телекомпанию наладчиком слаботочных сетей. До этого я успел поработать поваром на кухне, а в перерывах брал тяжелые строительные заказы — сам, делал евроремонт в огромной стометровой квартире старого фонда времен Николая Второго (это был тот еще пи**ц, но сделал на совесть). Руками работать, строить умею, да и электронику чувствую. В Питере я снова обновляю комп: беру процессор 7 поколения, 16 гигов оперативки и карту GTX 1070. И тут меня на пять долгих лет засасывает EVE Online.

В 2013-м я ее удалил через час, решив, что стрелять по крестикам уныло. Но в 2018 я, как огромный фанат космоса, решил дать игре второй шанс, графоний на тот момент кратно изменился в лучшую сторону. И я просто схавал эту сложнейшую вселенную! Переформатировал канал под обучающие гайды, создал корпорацию(она же гильдия) с числом игроков тогда 90-100 человек, мы вошли в состав легендарной коалиции Гунсварм под руководством не менее легендарного и известного лидера Митани и даже рубились в Большой пчелиной войне, котора попала в книгу рекордов. Я стал топовым торговцем, мой капитал на пике составлял 332 миллиарда иск(для сравнения, средний игрок в ив имел на счету в среднем 5-10 млрд). Чтобы вы понимали масштаб — я мог в 1 полностью спонсировать двухнедельную игровую войну альянса. На Ютубе я учил людей торговать и возить грузы через опасные сектора. Я видел рынок насквозь и понимал, как разработчики искусственно создавали дефицит материалов (когда космические корабли взлетели в цене с 8 до 15 миллиардов), чтобы выжигать излишки ресурсов через войны. На стримах ради контента я сливал мазершипы(невероятно дорогие корабли) по 32 миллиарда за штуку. Трижды сливал! :D Враги прыгали от радости, а мне было по* ведь завтра наторгую еще.

Из EVE я забрал три фичи для своей будущей игры: многослойный конструктор гербов (где всего из сотни картинок комбинациями создаются тысячи уникальных логотипов), дышащую свободную экономику и строгий, лаконичный чат, а не то лагающее радужное гов*о, от которого в современных играх вытекают глаза.

День, когда мир разбился вдребезги

Наступает начало 2023 года. Работая в доставке, я на перерывах между заказами поигрывал в мобильные ролевки, рассматривал анимации персонажей, карточные механики и подумал: У меня есть опыт в онлайн-играх, я знаю логику кода, почему бы не попробовать геймдев? По вечерам я сидел писал архитектуру. ИИ тогда в программировании активно не использовали, я все закладывал сам, головой и руками.

А 6 апреля я попадаю в аварию. Мне въехали в правую сторону, двери внутрь, пороги внутрь, стекла в крошку. Сам остался цел, ни царапины. Родителям говорить не стал, чтобы не волновать, дурак... А буквально на следующий день, утром, 7 апреля 2023 года, мои родители сами попадают в страшную автокатастрофу. Отчим не выжил. Мама осталась инвалидом, виновник... Да что виновник, не сел конечно, хоть и гнал под 140 и по встречке, там сложная история.

Мир просто разбился вдребезги. Мне стало абсолютно не до геймдева, не до кода и не до игр. Мой проект отправился в долгий ящик. Я работал водителем, крутил баранку сутками, сменил машину, лишь бы зарабатывал .Иногда на работе, чтобы хоть как-то убить время, я крутил на телефоне обычный кликер и снимал по нему редкие короткие ролики. Игра оказалась жадной, а ее администрация — не очень лояльными людьми на мой взгляд. Там банили людей пачками просто по подозрению, без суда и следствия. Когда забанили и меня, я выложил короткий шортс в стиле ...меня забанили... И что сделали эти обиженные жизнью разработчики? Они кинули ложные страйки за нарушение авторских прав на ВСЕ видео на моем канале. Из-за одного гребаного кликера мне забанили и удалили к всю мою многолетнюю сетку каналов — по EVE, по ArcheAge, по космосу. Мой труд нескольких лет просто снесли, при этом других блогеров, снимавших то же самое, и пальцем не тронули.

И вот тут во мне загорелась такая дикая, спортивная, злость. Я отправил встречный иск в YouTube, официально написал, что готов судиться, потому что страйки ложные. Я целый год грызся с системой, но разбанил все каналы. А в Гугл ПЛей у этой игры до сих пор сотни отзывов о банах ни за что, поищите игру Крушители подземелий, почитайте отзывы.

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

Начало 2026 года: Наполеоновские планы против ИИ.

В феврале 2026 года я достал со старого жесткого диска(да свои диски я не продаю с пк, они стопкой лежат в ящике) свои наработки. Посмотрел на них и понял, все фигня. Мои взгляды явно изменились. И я решил снова с нуля начать писать игрушку, и сразу задал вектор что именно кроссплатформенную хардкорную фэнтези RPG, которая будет воплощение моего лучшего опыта. Сразу заложил наброски мощной архитектуры, уникальной идеи и честной экономики.

Я хочу собрать в ней лучшие механики, которые видел в жизни. Многоветочный, вдумчивый крафт из АА, свободный рынок и систему гильдий из EVE, синтез и ловлю полезных характеристик для шмота из Diablo. Никакой мусорной графики — всю визуальную часть (изометрию, карточных персонажей, скелетную анимацию) мне по ТЗ рисуют два контрактных художника. Я работаю с ними по договорам отчуждения прав, вкладывая в это свои честно заработанные. Часть спрайтов я покупаю по лицензиям, потому что отрисовывать огромные серии мелких элементов вручную ппц художнику, времени, и моему карману. Но вся основа, бэкграунды, иконки, арты, тайлинг и многое другое только по заказу. Центральным хабом игры будет большой город в 2.5D изометрии, где каждый домик (кузница, рынок, зал славы, итд) это вход в отдельный режим. Это моя личная дань уважения старой java игре моего кнопочного детства — «Третий мир: Война королей». Бои будут автоматическими: хардкорность не в том, чтобы ломать пальцы о экран или клаву, а ДО боя — в тактическом сборе пачки, синергии навыков героев и подборе шмота. И, конечно, жемчужина — двухфазные ГВГ-осады цитаделей и городов и бои за территории. Сначала масштабная битва армий, где бьются войска (пехота, всадники, грифоны, копейщики), и только потом — самими героями. Это должно быть круто.

И сейчас я лицом к лицу сталкиваюсь с этим безумным бумом ИИ. Каждый ленивый хапуга считает себя разработчиком. В сторы тоннами вываливается мусор, созданный только ради того, чтобы засунуть туда рекламные библиотеки, выкачать бабки и завалить все донатом, заставляя покупать боевые пропуски, ресурсы, героев, бонусы, акции каждую неделю! Посмотрите на эти ИИ поделки изнутри. На их визуал, спрайты, у которых косят глаза или меч торчит из плеча, потому что авторам лень даже белые пиксели вручную по краям вырезать после автоматического удаления фона! А их код?! Утечки памяти такие, что игра вылетает через 20 минут на телефоне с восемью гигами оперативки, высаживая аккум в ноль и грея процессор. А безопасность?! Её нет, любая мобильная открывашка ломает интерфейс и геймплей на раз-два. Я полностью поддерживаю Steam с их обязательной маркировкой ИИ-игр и хочу, чтобы этот маркер горел во всех сторах.

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

Я не топовый программист, механики сложные, но я уделяю колоссальное внимание безопасности. За 8 месяцев работы у меня готово около трех сотен скриптов на C, и я думаю что напишу систему защиты(гварда), которая будет мониторить ддос и пакеты, собирать аналитику. Более того, я похже админ-панель для будущих модераторов будет полностью вынесена на отдельный сайт, работающий через корпоративный VPN и белый список IP. Зашивать админку в клиент игры — это ошибка, один перепутанный билд в сторе, и проекту п***. У модераторов чата будет удобная веб-панель в стиле сайта с выпадашками и кнопочками, которая сама подсветит мат или розжиг красным и издаст звуковой сигнал, чтобы человек мог спокойно смотреть сериал до первого алерта.

Мой главный кошмар: Война на три фронта

И все-таки... мне действительно страшно. Честно. Меня одолевает дикий, экзистенциальный страх, от которого иногда опускаются руки. Я поставил перед собой наполеоновские задачи в одного. Но я не хочу команду. Когда я один — я сам себе режиссер. Никто на меня не влияет, никто не давит, я сам кую свое пространство. Но я боюсь сложности.

Я боюсь совершенствования нейросетей. Я трезво понимаю, что эволюция не стоит на месте. Скоро ИИ по одному промпту научится делать идеальную вёрстку и выдавать рабочий код. И к моему бета-тесту этот рубеж может наступить. Самый кошмарный сценарий — это хейт и обесценивание. Из-за засилья нейросетевого шлака люди просто разучатся отличать ручной труд от ИИ. Я боюсь, что толпа придет и скажет: «Да твоя игра — очередная ИИ-мусорка». Мой пот, время и деньги, которые я заработал — все это могут уравнять с бездушной генерацией за подписку. Люди перестают видеть разницу между искусственным интеллектом и человеческим творчеством.

Я конкуренции на три фронта на релизе. Мне придется рубиться против тонн говёных ИИ-игр, против качественных корпоративных ИИ-продуктов и против таких же инди-разработчиков. Мой проект может просто затеряться в шуме. У меня нет горячей аудитории, нет людей, которые ждут игру прямо сейчас. Чтобы пробиться нужна дорогая реклама, но ее не будет — мои запасы сливаются на разработку уже сейчас, и у меня нет капитала, или кредита, я работаю - оплачиваю - снова работаю(так бл и живем :D). Я прекрасно понимаю, что без поддержки какого-нибудь крупного издателя я могу не справиться. Но в то же время я дико не хочу отдавать свою мечту издателям — я хочу издать игру самостоятельно.

А тут еще и суровая реальность накладывается — мы живем в непростые времена, стало сложно планировать будущее.

Эпилог: Перестать просто выживать

В чём же тогда моя истинная цель?

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

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

Но знаете что? Настоящие миры создаются головой и руками, а не промптами. Инди-разработка — это все же жизнь, опыт и характер, это ручной труд, перенесённый в код. И пока сторы засыпает ии, я буду сидеть потихоньку собирать каждую систему своей игры. Чтобы она летала, и имела душу человека, который что-то уже повидал, но не бросил свою мечту. И я верю, что игроки это почувствуют. А программисты, которые знают свое дело и пишут код головой, никогда не останутся без работы. Спасибо)

Можете иногда последить за ходом тут: Telegramm Vkontakte

Показать полностью
2

Как я переезжал с Unity 2022 на Unity 6

Всем привет! Давно не отчитывался, много рутины делаю, поэтому коплю инфо для отчета, но этой поделюсь)

Сегодня хочу поделиться историей в духе "работает — не трогай, но я всё равно тронул".Наш проект (хардкорная кроссплатформенная RPG с кучей UI, и базой в 500+ скриптов уже на ранней стадии) успешно мигрировал с насиженного места в Unity 2022 на свежую Unity 6.3 LTS.

Спойлер: всё закончилось хорошо, игра стала работать заметно шустрее, но без пары седых волос не обошлось.

Рассказываю, как это было, какие грабли я собрал и почему "шестёрка" — это топ.

Зачем вообще было прыгать выше головы? Сидеть на версии 2022 года было комфортно. Она стабильная, проверенная временем. Но триггером к переезду стали две вещи. Во-первых, Unity подняли лимит для бесплатной лицензии и (о боги!) официально разрешили убирать заставку "Made with Unity". Но фишка работает только начиная с Unity 6. Во-вторых, кроссплатформенной RPG с солянкой из PvP, осад и кучей циферок урона на экране критически важна производительность UI, а в Unity 6 под капотом переработали работу с канвасами и завезли оптимизированный .НЕТ.

Делаем бэкап папки и жмём Change Version. Ииии - "Бл**ь, там жесть в консоли!" или Знакомство с Safe Mode :D

Первый запуск: "В проекте ошибки, желаете войти в Safe Mode?". С непривычки кажется, что движок только что перемолол твои фичи в труху, а ссылки на скрипты в инспекторе сейчас дружно превратятся в Миссинги). На самом деле — нет. Сейв мод в Юнити 6 — это безопасный режим. Движок просто блокирует загрузку сцен и префабов, оставляя открытым только окно кода и консоли с ошибками. Ваши связи на объектах замораживаются в исходном состоянии. Почините код и юнити сама выйдет из безопасного режима, и всё откроется.В моём случае из 500+ скриптов покраснел всего один, где жила архитектура. В Unity 6 появился новый встроенный тип данных Awaitable, который вступил в конфликт со старой сигнатурой интерфейса. Пять сек — и вуаля! Проект пересобрался, и Safe Mode закрылся.

Помогли одним — запутали других.

Когда редактор наконец открылся, меня ждал графический кэш-глюк: в режиме редактирования поплыла верстка, хотя в Play всё ок.Лечится Банально! Переключением сцен. Но больше всего меня выбесили разработчики TMP. Решил я настроить текстовую подсказку для экрана конца боя, чтобы она на всех языках выстраивалась в одну строчку без переносов. Ищу в инспекторе привычный переключатель Disabled в строке Text Wrapping Mode. А его... нет. Оказывается, ребята решили помочь разработчикам и переименовали его в стиле веб-верстки — теперь это называется No Wrap :(. И таких минорных переименований по движку хватает.

И каков итог? После того как осела пыль от первого импорта, а плагины сгенерировали новые модули совместимости, я запустил проект и... обалдел.

Unity 6 реально заметно шустрее! ООо Майй КАййФФФ! :D

Редактор летает: компиляция происходит почти мгновенно, и не заставляет залипать по полминуты. UI стал отзывчивее: Пересчет геометрии при обновлении бесконечных счётчиков больше не вешает микрофризы. И самое главное — в настройках галочка Show Splash Screen была снята :D. Теперь при запуске игры сразу стартует наш чистый экран, куда мы со спокойной душой повесим логотип студии (или кастомное послание тестерам, чтобы жизнь мёдом не казалась).

Если вы всё ещё сидите на 2022 и боитесь обновляться — делайте бэкап и пробуйте. А профит по FPS и скорости разработки того стоит!

Следить за разработкой: Telegramm Vkontakte

Показать полностью
1

Девлог 1.0 | Как одна удобная фича сломала мне сервер и базу данных

Девлог 1.0 | Как одна удобная фича сломала мне сервер и базу данных

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

Часть 1. UX против ленивых разработчиков

Замечали, как в большинстве RPG устроена система смены экипировки? Чтобы переодеть персонажа, поменять снаряжение или руны, вас почти всегда заставляют идти в строго определенную локацию — на склад, итд.

Почему разработчики так делают? Им так банально удобнее. Одна конкретная зона отвечает за строго определенные запросы к серверу. Игрок зашел в таверну, спокойно переодел героев, пакеты улетели на сервер, данные сохранились. Безопасно, изолированно, предсказуемо.

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

Часть 2. Как сервер дал байтил, а Unity стёрла память.

Как только фича вышла в тест, на меня посыпалась куча багов с синхронизацией сервера. Дело в том, что на сервере стоит базовая защита от спама кликов (DDOS и пакетный флуд). Если отправлять запросы часто, сервер их просто отклоняет с ошибкой. Но опытные геймеры переодевают персонажей мгновенно — они помнят нужные сеты наизусть и кликают как киберспортсмены. Защиту сервера отключать нельзя. Логичное решение — сделать отправку данных отложенной. Игрок кликает, мы собираем все изменения в один пакет и отправляем его через небольшой таймаут. И тут наступил на вторую мину.

Представьте стандартный сценарий: быстрый игрок залетает в боевое лобби, за пару секунд перекидывает шмотки и мгновенно прожимает кнопку «В БОЙ!». В этот самый момент сцена боевого лобби в Unity полностью уничтожается и выгружается из памяти, чтобы уступить место тяжелой боевой сцене. Итог? Наш отложенный пакет данных просто не успевает отправиться. Сцена лобби уничтожена, скрипт прерван, отправка сбросилась. Игрок загружается на поле боя абсолютно голым, потому что сервер ничего не получил.

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

Часть 3. Архитектурная мина из прошлого

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

Когда я только начинал проектировать предметы в игре, первыми я написал «бустеры». Бустер — это классический стакающийся ресурс (как расходники или золото). У него есть фиксированные статы, и он работает по принципу пачки: если у тебя есть 10 одинаковых бустеров, они занимают один слот с цифрой «10». Я решил переиспользовать эту готовую систему и для экипировки, забыв об одной фундаментальной ошибке. Экипировка в RPG не может быть просто «типом предмета». Каждая шмотка при создании или дропе обязана иметь свой уникальный ID (Instance ID). Даже если у вас есть два одинаковых меча одинаковой редкости, которые по счастливой случайности зароллили абсолютно идентичные характеристики — это всё равно два разных предмета.

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

Всё наконец-то структурировано. Вместо вывода вот так одна маленькая и безобидная идея «а давайте разрешим менять шмот в лобби» заставила переписать половину сетевой логики и пересобрать базу данных предметов. Зато теперь система гибкая, честная и работает на благо игрока, а не ради удобства ленивого программиста.

Мой ресурс разработки: VK https://vk.com/project_hardcore_rpg

Телега: https://t.me/+H6TsrI1YEOIwZGYy

#девблог #rpg #unity #projecthardcoreRPG

Показать полностью

Боевое лобби продолжение

Лобби: день, когда всё сломалось и починилось

Привет! Сегодня был один из тех дней, когда садишься в 9 утра, а встаешь в 11 вечера и не понимаешь, куда делось время. Рассказываю что такое жизнь инди.

Что такое Лобби

Это экран перед каждым боем — здесь собираешь отряд из своих героев, выбираешь пресет (их до пяти штук), назначаешь бустер и жмёшь «В БОЙ». Звучит просто, но под капотом есть приличный слой логики.

Что сделал сегодня

Посадка и снятие героев. Тапаешь на героя в коллекции → открывает карточку → жмёшь «Выбрать» → герой занимает первый свободный слот авангарда (1→6), затем резерв (7→10), когда авангард заполнится. Тапаешь по занятому слоту → та же карточка, но с ключом «Снять с поста». Герой в коллекции при этом затемняется — он уже в отряде, выбрать повторно нельзя.

Мощь отряда. Важный момент: резерв (слоты 7–10) не входит в сумму, пока авангард не заполнен полностью. Числа оформляется пробелами: 1 105 000 вместо 1105000— читается намного лучше. Реализовано через утилиту Zero-alloc stackalloc без лишних аллокаций.

Галочка сохранения и В БОЙ. Галочка светится только тогда, когда есть несохранённые изменения, и хотя бы один герой в авангарде. «В БОЙ» смотрит на уровне аккаунта:

  • Уровни 1–20: достаточно одного героя

  • Уровни 21–50: нужен полный авангард (6/6)

  • Уровень 51+: полный отряд (10/10)

Старый сохранённый пресет не нарушает этого правила — поднял уровень, иди переукомплектовывайся.

Коллекция фильтров. Раса, класс, атрибут. Мультивыбор внутри категории (ИЛИ) И между категориями. Выбрал «Воин» + «Эльфы» — покажет только эльфов-воинов. Драконы передают любой классовый фильтр — они универсалы. Сортировка: первые герои уже в отряде, потом по редкости, атрибуту, мощи.

Баги

Баг двойного клика — старый друг, встречавший меня уже раз пять. Попап не реагирует на первое нажатие, только на второе. Причина каждый раз одна и та же: объект был неактивен на сцене, первый клик его активирует, в Awakeработе Hide() который тут же гасит контент обратно. Второй клик уже работает нормально. Лечение: первая строка любая Show()— это gameObject.SetActive(true), без исключений. Звучит очевидно, но Unity об этом никак не предупреждает.

Блокировка фильтров и засветка экрана. Когда вы открываете список расы или класса, вам нужно щелкнуть в любом месте экрана и закрыть его. Для этого есть невидимый FilterDropBlocker— прозрачный объект на всем экране. Сделали его, всё заработало, но при открытии весь экран чуть-чуть засветился. Два часа искал причину. Оказалось: утилита UiRaycastUtility.EnsureSolidRaycast подставила белый спрайт 1×1 с альфа=0,004 — вроде незаметно, но на экране давалось лёгкое свечение. Убрал один вызов — засветление исчезло.

Про безопасность

Между делом проверил защиту от читов. Смоделированный сценарий: игрок каким-то образом подменяет данные в запросе и отправляет «у меня 500 энергии», когда на самом деле 100.

Сервер проигнорировал, что прислал клиент, сам заглянул в свое хранилище, записал 1 единицу и вернул внешний баланс. Это фундаментальная принципиальная структура: клиент только рисует, сервер решает.

Также завел чеклист — список всего, что нужно закрыть перед релизом: инфраструктура, данные, требования платформ (RuStore, Steam, Яндекс Игры). Лучше подумать об этом заранее, чем потом в панике. ;D

Что дальше

Остался финальный этап лобби — регрессия по полному чеклисту и тесту на первом телефоне. Потом переходим к боевой сцене.

До следующего девблога! 🛡

Следить за разработкой: Вконтакте Тереграмм

#HardcoreRPG #devlog #gamedev #unity #indiedev #разработкаигр

Показать полностью
1

Dungeon Crusher: цензура критиков, массовые баны и утечка данных 200,000 игроков

Я вел один из каналов про игры на ютуб. Меньше года делал контент про Dungeon Crusher — обзоры, гайды, стримы. Получил бан в игре без объяснений, поддержка молчала. Снял короткий ролик об этом. После ролика прилетели страйки на все видео с игрой. Включая те где основная часть экрана — моё лицо с вебки.

Из-за связанных аккаунтов YouTube снёс всю мою сеть каналов. Включая канал которому 12 лет. Я думал это конец.

Около года я разбирался с этим. В итоге написал юридическое письмо в Google. YouTube отправил его на Кипр — у Towards Mars было 10 дней чтобы подать в суд. Они не подали. Все каналы вернули.

Пока я разбирался — выяснилось интересное

В июне 2026 в Google Play появилась волна отзывов от игроков:

"получил бан за участие в ЗБТ другой игры"
"банят за подписку на конкурентов в соцсетях"
"баны раздают рандомно, поддержка молчит"
"играл 4 года, написал в поддержку — ответа нет, зато прилетел бан"

Один из подобных отзывов

Один из подобных отзывов

На все отзывы один и тот же ответ от разработчиков: "Мы противодействуем читерству и мошенничеству". Человеку которого забанили за ЗБТ конкурента — тот же шаблон про читерство.

И это ещё не всё

В феврале 2026 издание Cybernews опубликовало расследование — Dungeon Crusher допустил утечку данных игроков:

  • 198,000 записей о покупках

  • У 151,000 — частичные номера карт, email, IP и координаты

  • 24.5 миллиона сообщений чата

Компания не прокомментировала ситуацию ни одному изданию.

Источник: https://cybernews.com/security/dungeon-crusher-purchase-data-leak/

И вишенка на торте — их пользовательское соглашение

Почитайте сами: https://static.towardsmars.com/legal/ru/user-agreement.html

Там написано что:

  • Они могут следить за вами — и вы даёте на это безотзывное согласие просто установив игру

  • Все покупки невозвратны даже если вас забанят без причины

  • Могут заблокировать аккаунт в любой момент без объяснений и без компенсации

  • Юридически обязывающая версия соглашения только на английском — русская просто для красоты

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

Показать полностью 4
0

Шахты вместо Бана в нашей RPG

Как я заменил баны на принудительные работы в шахтах.

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

Обычно система наказаний выглядит скучно: нарушил правила — получил табличку «Ваш аккаунт заблокирован» и ушел. Это слишком банально. Почему бы не превратить наказание в уникальный геймплейный опыт, который принесет пользу серверу и создаст живую систему репутации?

Система Штрафных Шахт как ответ токсичности, мошенничеству. И нарушений EULA.

Вместо бана — кирка.

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

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

Пока норма выработки не выполнена, игрок заперт в шахте. Никаких данжей, никакого PvP, никаких чатов — только ты, стена и кирка. Чтобы выйти на свободу, придется кликать по экрану. И нет, поставить автокликер не получится — мы внедрим систему античита, которая отслеживает паттерны нажатий и макросы. Хочешь на волю? Добывай ресурсы честно, своими руками.

Как наказание дураков кормит честных игроков

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

На сервере много токсиков? Отлично! Честные игроки ежедневно получают жирные бесплатные паки, которые за них накопали «заключенные».

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

История нарушений в профиле

Выход из шахты — это еще не конец.

Я хочу, чтобы игроки несли ответственность за свои действия даже после освобождения. В профиле каждого игрока, который хоть раз побывал на принудительных работах, навсегда появится специальный значок-иконка, под которым будет отображаться счетчик: «Всего добыто ед. в шахтах: N шт ».

У честных игроков, которые никогда не нарушали правила, этой иконки в профиле не будет вообще. Никаких пустых полей или нулей.

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

От чат-тролля до мошенника

По этому счетчику комьюнити сразу сможет определять уровень адекватности человека перед тем, как вступать с ним в гильдию, торговать итд:

1) Мелкие пакостники (2 000 – 10 000 угля): Если у игрока на счетчике пара тысяч угля, значит, парень просто вспылил в чате, разок выругался матом или немного потроллил админов. Наказание отбыл, осознал, можно общаться.

2) Рецидивисты, мошенники итд (сотни тысяч / миллионы):

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

Такие гигантские сроки будут выдаваться за суровые нарушения: продажу аккаунтов, багоюз итд.

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

Сервер будет знать своих «героев» в лицо, и доверять такому персонажу мало кто будет.

Как вам идея?

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

Пишите в комментариях свои мысли)

Ресурсы разработки:

Телеграмм 👈

ВКонтакте 👈

Показать полностью

Тёмная сторона героев? Как я это реализую в своей игре

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

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

Как это работает:

Когда у героя остаётся меньше 15% HP — что-то внутри него ломается. В хорошем смысле. Он не умирает, не падает, не просит пощады. Он ждёт. В начале следующего хода герой трансформируется — меняется арт, аура, и характер.

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

После трансформации происходит три вещи:

  • Все активные способности становятся в полтора раза мощнее

  • Герой получает щит равный 100% его максимального HP на старте боя — не тех жалких 15% что у него остались, а полный щит как будто бой только начался

  • Ваш PvP противник начинает нервничать :D

Важный момент: это срабатывает один раз за бой. Никаких "туда-обратно". Один переход, без возврата. Герой выбрал тёмную сторону и живёт с этим выбором до конца боя.

Почему это интересно тактически:

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

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

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

Следите за обновлениями — впереди призывы, провокации, кровотечения, безумие и ещё много всего что делает пошаговые бои интересными.

P.S. Да, герой с безумием атакует и союзников тоже. Это фича, не баг.

Показать полностью
7

Как я разрабатывал боевую систему для хардкор RPG и чуть не сошёл с ума от одной формулы

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

С чего всё началось

Я делаю игру в духе хардкор RPG — с настоящей глубокой боевой системой, нестандартной для смартфонов, пошаговыми боями, множеством героев, детальным крафтом снаряжения и боссами которых нужно продумывать а не просто закликивать. Движок Unity, сервер собственный, язык C#.

Когда дошло до боевого ядра — я понял что мне нужно сесть и выстроить всю механику на бумаге прежде чем писать код. Иначе потом переписывать всё с нуля.

Первые пять минут всё было хорошо

Я сопоставил все базовые вещи. 12 раундов на бой. 6 героев на поле плюс 4 в резерве. Передний и задний ряд. Враги сверху, герои снизу — вертикальный экран. Пошаговый бой, полный автомат, герои сами выбирают цели.

Потом начался цирк.

В игре 5 классов: Воин, Страж, Рейнджер, Маг, Жрец. У каждого свои базовые статы. 12 характеристик. Система звёздности, рангов, уровней, снаряжения. Гравировки. Бафы. Дебафы. Провокация. Воскрешение. итд.

Казалось бы, а чем плоха формула из Доты 2?

Поглощение = (0.052 × Броня) / (0.9 + 0.048 × Броня)

Красиво. Проверено годами. Работает в одной из самых сбалансированных игр в мире.

Но нет. У меня не работает.

Почему?

Потому что в Доте броня это маленькие числа — 5, 10, 20 единиц. У меня герои качаются до 80 уровня, имеют 6 рангов рамки, 20 звёзд, и топовое снаряжение даёт до 480% к защите. Цифры улетают в десятки тысяч. Формула Доты при таких числах либо даёт 0.1% поглощения либо 99.9% — никакой середины.

Ладно, сказал я. Придумаем свою.

Следующие несколько часов я подбирал константу

Я ушел от базовой казуальной формулы которая работает по типу АТК = (АТК / (АТК + ЗАЩ) - это вообще "забейте" она будет хорошо смотреться в кликерах но не в хардкор рпг. Затем я сменил тактику, работать от защиты а не атаки(так делают многие топ ММО) и перевести бонус к защите от снаряжение не + процент от базы, а пойти в плоскую величину(это тоже фишка топ ММО но есть свои косяки)

Новая формула выглядела просто:

Поглощение = Защита / (Защита + Константа)

Константа — это число которое определяет при какой защите поглощается ровно 50% урона. Всё логично.

Одна проблема — какое число?

Я перебрал: 300, 500, 1000, 3000, 6000, 7000, 12000, 20000.

При маленькой константе — новичок в серой рамке поглощает 80% урона и игра превращается в детский сад.

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

В какой-то момент Жрец со своими +50% к броне как будто даёт танку святую воду вместо защиты. :D

Тогда я попробовал гибрид

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

Считаем этап 3 — синий шмот, 40 уровень:

Воин: 37% поглощения. Норма!

Но потом смотрю на другие вариации и вижу что Воин, Страж, Маг и Рейнджер на каждом этапе поглощают примерно одинаково. Разница между самым толстым танком и хрупким магом — 5%. Это не хардкор RPG, это мусор.

Плоская часть шмота одинакова для всех классов и просто давит разницу между ними.

Семь лет в ArcheAge спасли проект

Я играл в ArcheAge семь лет почти до закрытия игры в мире(в РФ она все еще функционирует но вроде как отрезана от Кореи). И пока я кружил по одним и тем же граблям — на след. утро я пошёл на работу, погуглил скриншоты шмота из ArcheAge и вспомнил как там всё устроено.

Вернулся и думаю, давай возьмём их подход, ведь не зря это бестселлер 2014.

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

И главное — константу нужно подбирать не с потолка а под конкретную точку баланса. Голый прокачанный Воин на максимальном уровне и ранге без шмота должен поглощать ровно 50% урона. Это точка отсчёта. Под неё считаем базовую защиту Воина, и константа определяется сама.

Воин максимальная прокачка = 5000 единиц защиты

Константа = 5000

Поглощение = 5000 / (5000 + 5000) = 50% - норма

Элегантно. Просто. Работает.

голый | Мид. гейм | Лейт гейм

Воин 10% 32% 77%

Страж 11% 36% 81%

Маг 8% 24% 64%

Рейнджер 9% 26% 68%

Разница между Стражем и Магом на лейте — 19%. Страж реально толще. Маг реально хрупкий. Жрец который бафает танка наконец перестал быть шарлатаном.

Что ещё зафиксировал

Пока искал формулу — попутно выстроил всю систему:

Типы навыков — Вступление, Активная, Пассивная, Фатальная, Реакция. Все с шансом срабатывания.

Система прогрессии — уровень до 80, 6 рангов рамки, 20 звёзд четырёх типов (медь, серебро, золото, алмаз), тир героя от обычного до босса ( этого можно укротить и получить себе)

Механика рядов — автоатака всегда бьёт первый ряд, навыки с шансом 30/70. Провокация перехватывает все атаки на носителя с абсолютным приоритетом.

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

Штрафы за неподходящую броню — Маг в тяжёлом шмоте теряет 5% маг атаки и HP за каждый предмет. Надеть можно всё что угодно, но цена есть. Это песочница.

Боевое ядро ещё не дописано — осталась механика блока, парирования, уклонения, воскрешения и визуальные эффекты. Потом верстка боевого экрана.

Если интересно — напишу продолжение когда дойду до кода.

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

Иногда решение приходит от задротства в ArcheAge. :D


Разрабатываю в одиночку. Вертикальный срез в процессе. Если есть вопросы по механикам — спрашивайте в комментариях.

Показать полностью
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества