Mafia Definitive Edition



Прошёл Мафию Диффиченто Эдишен.

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

Но вот что забесило, так это то, что переиначили сюжет и характеры персонажей, причём без особых на то причин. В оригинале Томми, загнанный в угол, просит защиты у Дона Сальери, и тот берёт его к себе на работу шофёром. Здесь же Томми сразу же рвётся быть гангстером. Сара бухает пиво с мужиками на гоночном треке, а её отец в прошлом тот ещё головорез, Ральфи “на ножах” с Поли и т.д. Хотя вся суть этих персонажей в оригинале была в том, что они обычные люди, без гангстерских замашек, но так уж получилось, что работают на Дона. Как будто эффективные манагеры дали задачу пройтись по всем сюжетным персонажам и сделать их них “крутых”?

Пропердоллили и те моменты, которые делали Мафию Мафией, а не очередным клоном ГТА.

В самом начале Ральфи в катсцене учит Томми открывать замок на машине, но далее в игре Томми просто может угнать любую машину, как в GTA, и весь смысл теряется. В Оригинале Ральфи именно учил Томми угонять машины, со временем увеличивая выбор тачек. Теперь же всё упростили.

В том же был и смысл миссий Луки Бертоне — заработать себе доступ к бОльшему числу тачек. Впрочем, я проходил их просто ради контента, потому что это всё ещё были миссии, не так ли? Здесь же два раза Лука в катсценах намекает Томми о том, что у него есть “некие машины” и “возможности заработать”. Миссии Лукаса явно планировались, но после гонок на треке мы Луку больше не увидим.

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

Вообще, город хорошо детализирован, очень жаль, что в игре ему уделяется так мало внимания. Многие поездки по городу сокращены или упразднены. Такое чувство, что из игры старательно убирали саму игру? Где раньше надо было ехать, теперь катсцена. Где раньше было несколько вариантов прохождения, теперь один узкий коридор-кишка (это я щас про миссию в порту по захвату “сигарет”).

По сути, игру низвели почти до уровня интерактивного кино. Бегаешь от катсцены к катсцене, убивая по пути не особо сопротивляющихся врагов. Да, я в курсе, что можно было выбрать более высокий уровень сложности при старте… Но зачем? Хардкор ради хардкора? Мафия 1 была сложна не для того, чтобы враги больно стреляли, а чтобы игрок искал неочевидные варианты прохождения миссий, и в ремейке этот момент потерян.

Плюсы:

Катсцены отлично и зрелищно срежиссированы.
Графика неплохая.
Не отнимает много времени, чтобы ознакомиться.

Поиграть можно, но чего-то выдающегося ждать не стоит.

Как Жека приложение с сервера на сервер переносил (IT-триллер)

Всем привет!

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

Приложение: джава-прога с веб-мордой.
Сервер 1 (старый): CentOS 7
Сервер 2 (новый): AstraLinux 1.7

Прога — всё в докере: джава, постгрес, нжинкс, файлбит.

По сути перенос — это копирование файлов между серверами.
На новом сервере монтируем докеровские папки со старого сервера, и всё работает «as expected».

Это не первый мой подобный перенос, и я придерживался такого алгоритма:
  1. Останавливаем контейнер с прогой
  2. Делаем бэкап БД, т.к. хочется накатить его на постгрес свежей версии, (н-р 12.4 -> 16.4) простое копирование папки не сработает
  3. Останавливаем все контейнеры
  4. Запаковываем всё в архив без сжатия; для удобства, чтобы затем копировать 1 файл и видеть сколько времени осталось, да и по скорости это должно быть быстрее
  5. Копируем через scp с сервера на сервер

Прошлые проекты занимали в предалах 5-20 гб, а последний — 85 гб, именно большой размер превратил рутину в триллер.
Читать дальше

CyberGrad 2033 Архитектура: Ecs

Предыдущий пост: CyberGrad 2033

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

Основные сущности, на которых все держиться: Энтити, компоненты, системы и сервисы.

Entity
Это класс, наследник Node, в нем я реализовал методы добавления/удаления компонентов.
На старте энтити пробегается по своим чилдам и если они являются компонентами, добавляет в словарь.

Components
Это тоже наследник Node, потому что я хочу иметь возможность добавлять компоненты через редактор
Компоненты не содержат логики (хотя никто не запретит), толко данные и могут содержать ссылки на другие ноды

Systems
Тут происходит вся логика с энтитями, но только с теми, которые попадают под фильтр этой системы.
У систем есть несколько коллбэков, которые имплементируются интерфесами
IInitSystem — вызовется один раз при старте игры
IDestroySystem — вызовется один раз при завершении
IEntitiesAdded — вызывается когда появляется новый энтити, подходящий под фильтр системы (только один раз)
IEntitiesUpdate — вызывается каждый кадр и содержит всех энтитей подходящих под фильтр
IEntitiesPhysicsUpdate — то же самое но каждый апдейт физики
IComponentsRemoved — вызывается когда энтити больше не подходит под фильтр

Services
Немного походяд на системы, но если система работает с энтитями, то сервисы это просто утилитарные классы, которые могут делать что угодно. К примеру AudioService — который воспроизводит звуки в игре.
Сервисы умеют в следующие интерфейсы:
IInit — на старте игры один раз
IUpdate — каждый кадр
Читать дальше

CyberGrad 2033

Начал пилить игру перед самым новым годом, буду выкладывать тут прогресс (а может и не буду)


Жанр: Топдаун шутер
Сеттинг: Ближайшее грустное будущее в мухосранске провинциальном городке
Сюжет: ЧатГПТ 6 захватил склад Амазон и теперь клепает из бытовых товаров истребителей кожанных мешков. Робот пылесос с ножом на изоленте — один из простых врагов.
Главный герой — отважный курьер, который должен доставлять заказы в этом опасном городе.

Специально для этого проекта запилил ECS, FSM и Dependency Injection
Очень нравится как получилось сделать архитектуру, может быть потом распишу

Видос

С новым годом, булчане!

Этот год был непростым (впрочем, как и все где-то после 2020, и я не про математику), ну что поделать. Желаю всем заниматься любимым делом, оставаться молодыми в душе, чтобы глаза горели от энтузиазма (молодость, геймдев, хардкор, Мытищи — вы всё знаете), и поменьше сталкиваться со всякими трудностями.

Тем кто пилит игры — отдельное пожелание успешно довести их до релиза!

Kotlin, KorGE и корутины для организации игрового цикла.

Я вчера решил ради интереса посмотреть движок KorGE. Он довольно простой, для 2д игр, поддерживает сборку под разные платформы типа мобильных и веб.

Что меня заинтересовало — в нём активно используются корутины!
Читать дальше

Пилю физический движок и автосимулятор на нём.

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

Читать дальше

Angelscript: где он обитает и с чем его едят

Здарова, пекари.

Решил вытащить обсуждение из тг чата в альфабулчанск. Оказывается Angelscript существует уже очень давно, а с ним даже успел поработать MrF в своём самописном движке. Слышал Кнайт биндинги к Xors3D делал.

С чего вообще сыр-бор: недавно вот наткнулся на сабж angelscript.hazelight.se/
Я тут в свободное время крайне медленно пилю «игру мечты» на UE5, и хотелось чего-то среднего между крестами и блюпринтами. А тут вот это нашёл и выглядит очень вкусно на первый взгляд.

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

А что расскажу? Вкратце, хочу интегрировать Angelscript в Lyra-подобную data driven архитектуру, выкинув оттуда откровенно архитектурный булщит.

Топик о возможностях и проблемах статической типизации

Я тут на скале попробовал написать код, чтобы компилятор знал про размерности как в системе СИ, и догадывался, что скорость, поделённая на время — это ускорение. И не давал его складывать с чем-нибудь другим.
(Сам пост тут, сори мне лень из маркдауна в форумный вид форматировать, может потом попробую, да и статья немножкно не об этом).

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

А казалось бы задача не сложная — параметризовать шаблонный тип целыми числами и делать арифметические операции в compile time. Всё.

Я тут решил сделать топик

Здарова орлы, посмотрим чё тут за булчан новый.

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

давайте оттестируем как тут топики делать

вот например хочу поделиться смешнявой видеозаписью с соцсети ютьюб: