Melkov's
168 subscribers
582 photos
76 videos
39 files
221 links
Мой движок: @vecxylog
Чат: @melkovteam
Download Telegram
В for-циклах ++i и i++ работают одинаково, но ++i теоретически чуть быстрее и используется как более оптимизированный стиль.

++i изменяет значение сразу, без создания временной копии.
i++ создает временный объект, который затем отбрасывается (в некоторых старых компиляторах это могло давать небольшой оверхед).
WebAssembly: Как «невозможное» стало реальностью? https://habr.com/p/892052

"wasm-революционеры... 

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

Вы сначала сами попробуйте сделать что-то на wasm, посмотрите на размер сборки, измерьте скорость на живом примере, покурите, подумайте..."

"Делал на js - sax парсер xml . Так вот работает он быстрее в разы(в 7-10 раз) чем бинарный expat или libxml.
WebAssembly нужная технология, но очень специфичные. И точно не серебряная пуля"

"Сколько я ни смотрел бенчмарков, везде преимущество в скорости WASM было скажем так неочевидно. Да, в узких кейсах может быть преимущество 2-3-5х (откуда автор взял 10х?), но глобально по больнице - приблизительный паритет, иногда даже немного медленнее было. Оговорюсь, что смотрел я это год-два назад, может сейчас что-то поменялось"

#save
Forwarded from Vecxy
This media is not supported in your browser
VIEW IN TELEGRAM
⚙️Log #12

Спрайт, над которым теперь можно делать преобразования — скейлить, вращать и менять позицию.

Для этого я немного углубился в основы работы с матрицами, изучил как их умножать, складывать, умножать на скаляр и прочее. Осознал, насколько важно правильно работать с матричными операциями, чтобы точнее контролировать трансформации объектов в пространстве.

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

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

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

В этом туториале очень качественно эти преобразования объясняются и визуально демонстрируют в софте Nuke Studio. Сегодня себе его установил, чтобы по CG всякие штуки визуально закреплять.

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

В общем, потрогал много всего, было много трудностей и косяков, но в итоге получилось то, что можно посмотреть в видео. Теперь буду более детально разбирать эти моменты и пробовать разные подходы, чтобы всё закрепить и действительно освоить.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Forwarded from Vecxy
This media is not supported in your browser
VIEW IN TELEGRAM
⚙️Log #13

Это первая птица-иконка, которая научилась двигаться в этом движке!
Please open Telegram to view this post
VIEW IN TELEGRAM
1
This media is not supported in your browser
VIEW IN TELEGRAM
Ахах
😁7
🔥61😁1
Почему в WebGL-проектах на Unity и Cocos и других движках скорость рендера часто ограничена 60 кадрами в секунду, даже если устройство поддерживает больше?

В большинстве случаев браузеры ограничивают requestAnimationFrame до 60fps, потому что он синхронизирован с частотой обновления экрана, и исторически большинство экранов было 60 Гц. Но если у устройства экран, скажем, на 120 Гц, то в некоторых браузерах rAF может отдавать и больше fps — это зависит от самого браузера и платформы. Например, в Chrome на Android с 120 Гц экраном такое вполне возможно, особенно если не тормозит GPU.

Unity действительно использует свой цикл рендера, и может работать быстрее, чем 60fps, если явно не установлен Application.targetFrameRate. Но в WebGL-сборках Unity всё равно ориентируется на rAF, и из-за политики браузера может "залипать" на 60fps, если не удаётся точно синхронизироваться с дисплеем.

Что касается Cocos, то там по умолчанию тоже стоит ограничение на 60fps в продакшн-билде. Надо смотреть, какая версия и движок под капотом (Cocos2d-js, Cocos Creator и т.д.), но обычно можно попробовать выставить вручную cc.game.setFrameRate(120) или аналог, если такая возможность есть. Однако это будет работать только если браузер и устройство реально поддерживают больше, иначе всё равно будет кап.

Так что по факту: ограничение идёт в первую очередь от браузера и дисплея. Движок может только просить "дай мне больше fps", но не факт, что получит :)
👍4
Ахах, постоянно на это попадаюсь :D
👾6
Тесты? Не, не слышал…

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

Но недавно мне подарили книгу по TDD от Кента Бека (хз кто подарил). Что могу сказать? Книга норм, читается легко, не скучно, местами даже увлекательно. Самое главное — она как-то начала заставлять меня посматривать в сторону тестов. Не всегда и не по канону, как того требует TDD-подход, но всё же.

Что важно — я начал видеть реальную пользу от тестов на живых примерах в своей работе. Сейчас, например, пишу DI-контейнер по типу Extenject, но попроще и с фичами, заточенными под конкретный проект. Так вот, тесты там реально помогают. Просто пишешь кейсы, которые нужно проверить, описываешь поведение и ожидаемый результат — и всё, можно спокойно работать над ядром системы. Меняешь что хочешь, как хочешь, не боишься, что что-то отъедет. Потому что тесты тебе сразу покажу где и когда ты соснул .... Очень экономит время и вообще удобно.

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

Короче, советую нормально и серьёзно присмотреться к теме. Тесты — это реально крутая штука, и далеко не такая бесполезная, как может показаться сначала. Раньше я сам думал, мол, зачем писать этот бесполезный код, который ничего не делает — но это было ошибкой. Главное — найти свою меру: либо идти по хардкору и писать тесты на каждый чих, еще до начала реализации, либо использовать точечно — в сложных местах, где важно проверить поведение и разные кейсы.
👍2
E или F?
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔5🔥1
❄️ Зима

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

Это не часть проекта и не игровой билд — просто идеи и визуальный стиль.

Какой кадр вам кажется самым атмосферным?
👍3
Media is too big
VIEW IN TELEGRAM
Думаю интересно получилось, уже небольшая сцена с каким-то активным действием :D

P.S. Песня по радио в машине играет.
«Катюша» – М. Исаковский / М. Блантер
1👍1
Media is too big
VIEW IN TELEGRAM
Мне кажется это получилось очень атмосферно. Сарай правда не моделировал, но он очень неплохо подошел. Буду его брать в работы, попробую использовать и переделать немного.
👍21
This media is not supported in your browser
VIEW IN TELEGRAM
😁
1😁1
Media is too big
VIEW IN TELEGRAM
Реализовал самую важную механику😁
2😁1
Mafia: Definitive Edition
Эпизод: Escape the gangsters


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

Саундтрек в этой сцене — не просто фон. Это работа Джесси Харлина, композитора ремейка Mafia. Харлин — ветеран игровой индустрии, до этого работал над Star Wars: The Old Republic, BioShock Infinite и Red Dead Redemption II (в качестве приглашённого аранжировщика). В Mafia: Definitive Edition он создал полноценный оркестровый саундтрек в духе Голливуда 30-х: тревожные струнные, пронзительные трубы, мощные ударные. Всё звучит как в старом нуар-кино, но живо, современно, с тонким драматургическим расчётом.

Оркестровка ловко подчеркивает динамику происходящего: напряжение нарастает с каждым поворотом.

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

Момент вроде простой — погоня в самом начале, ну и что? А зацепил. Когда убегал от бандитов — у меня даже мурашки пошли. В оригинале это тоже было круто, но здесь всё стало гораздо кинематографичнее.

Escape the Gangsters. Gameplay video
Escape the gangsters. Soundtrack
Jesse Harlin. Яндекс Музыка
Mafia. Running Man Song. Latcho Drom - La Verdine
🔥1
Mafia: Definitive Edition - Running man [Latcho Drom - La Verdine]

Многие до сих пор ругают ремейк за то, что iconic-трек Latcho Drom – La Verdine из оригинала не добавили. Да, мелодия узнаваемая и по-своему крутая. У меня она воспринимается как живая, цыганская, резкая.

(не буквально «цыганская», но стилистически она отсылает именно к джипси-свингу и ромской музыкальной традиции)

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

Иногда новое — не хуже, просто другое.

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

P.S. Ждал, но не дождался, когда тут начнуть хейтить в комментах, что в оригинальной версии музыка была лучше :D
Ошибка "Error: WebView has crashed" в Telegram (Mini App)

Если у вас перестали работать Mini Apps в Telegram и появилась ошибка "WebView has crashed", решение простое:

1. Установите WebView2 от Microsoft
Это современный компонент, который используется Telegram вместо устаревшего WebView.

Скачать: Microsoft Edge WebView2

2. Отключите старый WebView в Telegram
Зайдите в: Settings → Advanced → Experimental settings
и отключите опцию Force legacy Edge WebView.
👍3🔥1
😁8
Моё знакомство с серией Mafia началось с самой первой части — Mafia: The City of Lost Heaven, которая вышла в 2002 году. Главным геймдизайнером был Даниэль Вавра, и у него получилось создать очень атмосферную и интересную историю про мафию 30-х годов.

Первый раз я прошёл игру где-то в 2014 году. Она уже тогда считалась классикой, и я сразу понял почему. Несмотря на то, что игра старая, в ней всё работало: сюжет, герои, атмосфера. А в 2024 году я снова её прошёл, и, честно говоря, был удивлён, как хорошо она сохранилась. Игра всё ещё отлично ощущается, а её мир до сих пор вызывает интерес.

Больше всего мне нравится, что город Лост-Хевен в Mafia не просто для вида. Он живой: по улицам ходят люди, ездят машины, по радио идут передачи — всё помогает почувствовать, что ты действительно в Америке 30-х. История крутится вокруг простого таксиста Томми Анджело, который случайно попадает в мафиозный мир. Сюжет развивается постепенно, но каждый момент держит в напряжении. Персонажи прописаны отлично — у каждого своя история и характер. Даже второстепенные герои, как, например, Винченцо, оружейник мафии, запоминаются. Он всегда даёт напарникам крутое оружие, а мне — какой-нибудь старый кольт. Это немного бесило, но и вызывало улыбку.

Когда разработчики анонсировали ремейк — Mafia: Definitive Edition — я сначала отнёсся к этому с осторожностью. Часто бывает, что ремейки теряют атмосферу оригинала. Но в этом случае всё получилось просто отлично. В 2025 году я прошёл обновлённую версию, и она оставила у меня только положительные впечатления. Вроде бы та же история, но как будто ты смотришь её под новым углом. Графика шикарная, город стал ещё красивее. Озвучка тоже на высоте, актёры хорошо передали эмоции. Стрельба и езда теперь стали удобнее и приятнее. Играть было очень увлекательно!

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

Хотя я сам не имел отношения к созданию Mafia, было очень приятно видеть, как кто-то получает от неё столько же удовольствия, сколько и я. Это и есть настоящий показатель хорошей игры — когда она остаётся в памяти не только как развлечение, а как настоящая история, которую хочется прожить и вспомнить ещё не раз.
👍21😎1