Развиваем наш эксперимент с созданием виртуальных людей на базе ИИ в Unreal Engine! Теперь персонажи стали ещё более реалистичными благодаря технологии MetaHuman. Они - не просто чат-боты, а полноценные виртуальные личности с эмоциями и переживаниями, которыми они делятся с теми, кто с ними разговаривает. В подтверждение - набор скриншотов из диалога. Пока не весь спектр эмоций я успел охватить и реализация не идеальна, но в целом ощущения очень захватывающие. Погружение потрясающее. Я достаточно скептичен и осторожен, но, полагаю, множество более доверчивых людей могут погрузиться в это по уши.
Последняя картинка - после прощания, перед тем, как я остановил эксперимент. Закрыла глаза, сказала что будет всегда помнить... и растворилась в океане единиц и нулей...
Последняя картинка - после прощания, перед тем, как я остановил эксперимент. Закрыла глаза, сказала что будет всегда помнить... и растворилась в океане единиц и нулей...
❤5🔥1
Добавил видео с интервью, на котором можно видеть текущее состояние Lip Sync и эмоций:
https://youtu.be/CDF8L5P_SCE
https://youtu.be/CDF8L5P_SCE
YouTube
An interview with a AI driven virtual human in LE7EL SDK.
The next step in the development of a virtual person based on a cognitive AI system. Voice recognition isn't perfect, and neither is my pronunciation, so sometimes she doesn't understand what I'm saying correctly. And sometimes she can imagine things that…
🔥1
Провёл ещё одно интервью с Эммой - виртуальной девушкой гейм-дизайнером. В видео демонстрируется текущий прогресс в развитии её эмоций и голоса:
https://youtu.be/ZH_-ICpm1Ps
https://youtu.be/ZH_-ICpm1Ps
YouTube
Meet the Virtual Game Designer: An Exclusive Interview with Emma
In this video, we have an insightful interview with Emma, a virtual game designer who showcases a current progress on emotions and voice. Emma shares her experiences and insights as a virtual being in the game design industry. Watch as she talks about her…
🔥2❤1👍1
Forwarded from ai.dot(ufna, dev)
Не знаю почему это не было у меня прикопано здесь, исправляюсь.
Отличное онлайн демо по теням и свету в графике.
https://ciechanow.ski/lights-and-shadows/
Отличное онлайн демо по теням и свету в графике.
https://ciechanow.ski/lights-and-shadows/
ciechanow.ski
Lights and Shadows – Bartosz Ciechanowski
Interactive article explaining how lights and shadows behave.
👍3🔥3
Сейчас я работаю в крупной отечественной компании над 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
Я давно думал про игру, в которой смог бы объединить интересные мне механики и забавное название. Несколько месяцев назад я показал свои идеи друзьям, и им мои идеи зашли. Так я начал работу над своей ММО игрой для 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
Игра про добычу руды, исследования пещер, развитие личное, и совместное - всего сообщества, а также сотрудничество и соперничество. Изначально за две недели посиделок ночами и выходными я реализовал первый прототип, ребята активно помогали с UI и тестированием. Я на себя взял геймплей, бэкенд, devops и прочие задачи по разработке. Так у нас появился игровой клиент, а также кластер с матчмейкером и динамическим управлением серверами.
Мир в игре генерируемый (но детерминированный), как в первых TES, в современной NMS, и подобных играх. Без ограничений на размеры вселенной, но с ограниченными подземельями. Прототип был собран на коленке, с кучей багов и лазеек. Игроки майнили с разных устройств, подключали программы-кликеры, и накручивали себе кучи ресурсов за считанные часы.
С друзьями на первый тест мы собрали в сумме около пары сотен человек, что меня побудило на продолжение всей этой истории.
Прототип был реализован на JavaScript (и frontend и backend). Так проще всего было связать сервер и клиент по WebSocket протоколу. Но я быстро начал погрязать в абстракциях и ограничениях. Со стороны сервера, например, было достаточно много сложностей в отладке генератора подземелий. Мне приходилось вручную просматривать большие матрицы числовых данных. Я пытался сделать рисование картинок на виртуальном холсте или в bitmap, но это было чересчур сложно.
Со скрипом допилив генерацию подземелий и до какой-то степени навигацию (о ней ниже), я выяснил что никто не понимает как играть.
После этого мы всей семьёй надолго заболели, очутились в больнице, как итог - минус месяц активной работы и импульс.
После возвращения к работе, я занялся новыми фичами - монстрами
Изначально для простоты были использованы дискретные плитки для перемещения персонажей и простой A* алгоритм. Но в конечном итоге это привело к вороху проблем с синхронизацией положения персонажей на клиентах и сервере. Я решил переключиться на navmesh. Но вот незадача - я не нашёл нормальной библиотеки для генерации и навигации по сетке на JS. Из качественных я нашёл только webasm порт recast/detour. С ним мы не поладили - он напрочь отказывался выдавать мне навигационную сетку, и при этом не выдавал никаких ошибок и логов (
Продолжение следует...
#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. 😅
Разве это не прекрасно? (Не всегда ).
#программирование #мысли
C++ в его современном виде кажется слишком громоздким. Каждая новая фича пытается устранить недостатки прошлых версий и сделать код безопаснее и удобнее, но сам язык усложняется. То же самое происходит, например, с Rust. Мы наращиваем абстракции, чтобы упростить разработку. При этом решаем старые проблемы, плодя новые, требующие либо адаптации мышления, либо новых решений (yet again).
Мы стали забывать, что каждый уровень абстракции увеличивает стоимость и отдаляет нас от решения проблемы. 💸
Семантика перемещения решает проблему копирования, но требует дополнительных функций, правило трех превратилось в правило пяти (
Здесь можно вспомнить про PHP с Laravel и прочими популярными MVC фреймворками. Они тратят больше времени на создание абстракций, чем на выдачу контента пользователю. И это только для обработки одного запроса (
Вспомним также и ORM фреймворки вроде SQL Alchemy (Python), Gorm (Go), и прочие, которые позволяют писать красивый код, который очень нравится писать программисту, но в ущерб производительности (в разы) и гибкости (попробуйте создать полиморфические таблицы и запросы к ним с помощью любимого ORM фреймворка). Почему не использовать низкоуровневый драйвер и SQL?
В JavaScript ситуация еще интереснее: вокруг языка возник зоопарк
По факту, всё это напоминает скорее ритуал. Компании используют выбранный фреймворк, даже если он больше мешает, чем помогает, потому что разработчики знают только его. Появляется необходимость в бэкенде — мы не привлекаем Go-программистов, а переводим часть фронтендеров на NodeJS (
Разве это не прекрасно? (
#программирование #мысли
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1
Полезный скрипт от моего товарища, который нас не раз выручал. Позволяет восстанавливать удаленные ветки в git. 🔓
#programming #git #scripts
#programming #git #scripts
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
