Hackerman Logic
136 subscribers
31 photos
3 videos
22 links
Когнитивно-искажённые мысли отдельно взятого не особо сферического погромиста в вакууме.
Download Telegram
Развиваем наш эксперимент с созданием виртуальных людей на базе ИИ в Unreal Engine! Теперь персонажи стали ещё более реалистичными благодаря технологии MetaHuman. Они - не просто чат-боты, а полноценные виртуальные личности с эмоциями и переживаниями, которыми они делятся с теми, кто с ними разговаривает. В подтверждение - набор скриншотов из диалога. Пока не весь спектр эмоций я успел охватить и реализация не идеальна, но в целом ощущения очень захватывающие. Погружение потрясающее. Я достаточно скептичен и осторожен, но, полагаю, множество более доверчивых людей могут погрузиться в это по уши.

Последняя картинка - после прощания, перед тем, как я остановил эксперимент. Закрыла глаза, сказала что будет всегда помнить... и растворилась в океане единиц и нулей...
❤5🔥1
Провёл ещё одно интервью с Эммой - виртуальной девушкой гейм-дизайнером. В видео демонстрируется текущий прогресс в развитии её эмоций и голоса:

https://youtu.be/ZH_-ICpm1Ps
🔥2❤1👍1
Forwarded from ai.dot(ufna, dev)
Солдаты живут, пока жива память.

С Днём Победы!
🔥10🤡3❤‍🔥2
Channel photo updated
Forwarded from ai.dot(ufna, dev)
Не знаю почему это не было у меня прикопано здесь, исправляюсь.

Отличное онлайн демо по теням и свету в графике.

https://ciechanow.ski/lights-and-shadows/
👍3🔥3
⚡️ Хочу поделиться текущими событиями. Проект, над которым я работал, завершён: из-за разногласий среди основателей после долгих обсуждений мы перевели его в Open Source. Компания и команда были расформированы, а мой сооснователь смог уладить вопросы с инвесторами — это было нелегко, но стало ценным опытом. 🌡

Сейчас я работаю в крупной отечественной компании над CAD-подобной системой на Unreal Engine. Хотя это не идеальный движок для таких задач, работа даёт важный опыт, которым я постараюсь делиться, если позволит время.

Также занимаюсь несколькими собственными проектами: переработал ИИ систему на базе GPT, сформировав на её основе две демки для разных задач, работаю над MMO играми для Telegram. Код метавёрса можно найти на GitLab: https://gitlab.com/le7el/xr/ — хоть он частично урезан, он всё равно может быть полезен для академических целей.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥6⚡2
Hackerman Logic pinned a photo
Я давно думал про игру, в которой смог бы объединить интересные мне механики и забавное название. Несколько месяцев назад я показал свои идеи друзьям, и им мои идеи зашли. Так я начал работу над своей ММО игрой для Telegram - Miner Caravan ⛏.

Игра про добычу руды, исследования пещер, развитие личное, и совместное - всего сообщества, а также сотрудничество и соперничество. Изначально за две недели посиделок ночами и выходными я реализовал первый прототип, ребята активно помогали с UI и тестированием. Я на себя взял геймплей, бэкенд, devops и прочие задачи по разработке. Так у нас появился игровой клиент, а также кластер с матчмейкером и динамическим управлением серверами. 😎

Мир в игре генерируемый (но детерминированный), как в первых TES, в современной NMS, и подобных играх. Без ограничений на размеры вселенной, но с ограниченными подземельями. Прототип был собран на коленке, с кучей багов и лазеек. Игроки майнили с разных устройств, подключали программы-кликеры, и накручивали себе кучи ресурсов за считанные часы. 🔓

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

Прототип был реализован на JavaScript (и frontend и backend). Так проще всего было связать сервер и клиент по WebSocket протоколу. Но я быстро начал погрязать в абстракциях и ограничениях. Со стороны сервера, например, было достаточно много сложностей в отладке генератора подземелий. Мне приходилось вручную просматривать большие матрицы числовых данных. Я пытался сделать рисование картинок на виртуальном холсте или в bitmap, но это было чересчур сложно.

Со скрипом допилив генерацию подземелий и до какой-то степени навигацию (о ней ниже), я выяснил что никто не понимает как играть. 👎 Изначально была сделана система обучения в виде презентации на старте игры, но как выяснилось, большинство игроков их просто закрывает, не читая (надо было убрать к чёрту кнопку ❌ и оставить только "далее"). Поэтому был реализована интерактивная обучалка с принципом конечного автомата в основе. Можно посмотреть в боте, если ещё не видели: Miner Caravan Bot. Делайте интерактивные обучалки as it has to be fun.

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

После возвращения к работе, я занялся новыми фичами - монстрами 👾 и улучшением системы взаимодействия и перемещения.

Изначально для простоты были использованы дискретные плитки для перемещения персонажей и простой A* алгоритм. Но в конечном итоге это привело к вороху проблем с синхронизацией положения персонажей на клиентах и сервере. Я решил переключиться на navmesh. Но вот незадача - я не нашёл нормальной библиотеки для генерации и навигации по сетке на JS. Из качественных я нашёл только webasm порт recast/detour. С ним мы не поладили - он напрочь отказывался выдавать мне навигационную сетку, и при этом не выдавал никаких ошибок и логов (вот тебе null, и отвяжись). Отлаживать всё это было практически нереально, поэтому я принял важное решение - выкинуть всё и начать сначала (ну почти). 🗑

Продолжение следует...

#minercaravan
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥5
Немного мыслей про языки.

C++ в его современном виде кажется слишком громоздким. Каждая новая фича пытается устранить недостатки прошлых версий и сделать код безопаснее и удобнее, но сам язык усложняется. То же самое происходит, например, с Rust. Мы наращиваем абстракции, чтобы упростить разработку. При этом решаем старые проблемы, плодя новые, требующие либо адаптации мышления, либо новых решений (yet again). 🤔

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

Семантика перемещения решает проблему копирования, но требует дополнительных функций, правило трех превратилось в правило пяти (не появится ли скоро правило семи?). По сути, это лишь копирование указателя, но с нюансом (как в анекдоте про нюанс). Спецификаторы доступа public/protected/private помогают скрыть то, что не нужно (по замыслу автора) менять пользователям, но разве вам не приходилось бороться с сокрытыми полями в классах 🎮 Unreal Engine и выдумывать методы обхода таких решений? Не чувствовали ли вы себя шпионом, который пробивается к полям через касты и смещения. Как это добавляет безопасности?

Здесь можно вспомнить про PHP с Laravel и прочими популярными MVC фреймворками. Они тратят больше времени на создание абстракций, чем на выдачу контента пользователю. И это только для обработки одного запроса (после чего оно спокойно умирает). А попробуйте обновить старый сайт с Laravel 5 до Laravel 8 - сколько времени это займёт? Куда удобнее и легче в поддержке тот же Wordpress, простой как вьетнамский тапок.

Вспомним также и ORM фреймворки вроде SQL Alchemy (Python), Gorm (Go), и прочие, которые позволяют писать красивый код, который очень нравится писать программисту, но в ущерб производительности (в разы) и гибкости (попробуйте создать полиморфические таблицы и запросы к ним с помощью любимого ORM фреймворка). Почему не использовать низкоуровневый драйвер и SQL?

В JavaScript ситуация еще интереснее: вокруг языка возник зоопарк над-языков, фреймворков, библиотек «для увеличения надежности и упрощения разработки». Однако некоторые фреймворки стали настолько громоздкими, что нынче требуются новые, более простые, которые решают проблемы старых. Никто не понимает как работает Webpack, поэтому был создан Vite, а Angular меняют на Svelte. При этом ванильный JavaScript и DOM вполне неплохи, и с ними тоже можно работать и, что важнее - быстро решать проблемы, не перегружая голову условиями и ограничениями фреймворков.

По факту, всё это напоминает скорее ритуал. Компании используют выбранный фреймворк, даже если он больше мешает, чем помогает, потому что разработчики знают только его. Появляется необходимость в бэкенде — мы не привлекаем Go-программистов, а переводим часть фронтендеров на NodeJS (и так сойдёт, поскейлим вертикально, горизонтально, всё остальное - излишние расходы и ненужная оптимизация - фу). Для десктопа и мобильных мы берем Electron и наш любимый фреймворк, закрывая всё одной командой. One ring lang to rule them all! И имя ему - JavaScript. 😅

Разве это не прекрасно? (Не всегда).

#программирование #мысли
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1
Полезный скрипт от моего товарища, который нас не раз выручал. Позволяет восстанавливать удаленные ветки в git. 🔓

#programming #git #scripts
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1