Search
Write a publication
Pull to refresh
2
0
Максим Щановский @chshanovskiy

Программист

Send message

Да, конечно, хочется нативный порт на мак. Но вот буквально вчера, на Sonoma с Whiskey успешно установил и запустил (MBP 16 M1 Pro), на средне-высоких настройках наблюдаю стабильные 60 FPS и отчётливую работу системы охлаждения. Прям поиграть ещё не успел, пока только запустил и покрутил настройки, минут 5 буквально.

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

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

А расскажите, кто в теме, как это вообще работает - подгонка драйверов под игру?
Я себе представляю следующее - есть некоторый графический апи, который работает поверх драйвера видяхи, есть игра, которая использует именно апи. А как в этом процессе помогает обновление драйвера? Они там под конкретные апи что-то делают, или как-то вяжутся аж на прикладной уровень?
Или вообще все не так?

Решил такую задачу в проекте с CRA, TypeScript и CRACO следующим образом:

1. В craco конфиге добавляем произвольные пути, как и показано в статье (webpack.aliase);
2. В tsconfig добавляем эти же пути в paths и указываем baseUrl;

Но!, CRA официально не поддерживает aliased imports, и даже выпиливает это из tsconfig при старте/сборке, и решением стало разделить tsconfig на два файла:

3. Конфиг положить в файл, скажем, tsconfig.base.json, а в tsconfig.json сделать только extends. Тогда CRA сообщит, что «compilerOptions.paths must not be set (aliased imports are not supported)», но не сможет их выпилить, и всё прекрасно работает

Нашёл на просторах, решение меня полностью устраивает, eject не понадобился.

Есть вероятность, что в обработчике mouseover происходило что-то, что вызывало перерисовку всего списка полностью. Например изменение состояния родительского контейнера. Такая проблема характерна и для vue и для react, однако причина и решение хорошо разобраны в документациях.

Спасибо, так стало понятнее.

Прям вот выделенного геймдиза у нас не было, так что его деятельность была размыта по всем причастным и все детали механик принимались коллективным разумом. И да, по поводу ловли ключей – каюсь, так и есть.
Это изначальный баг в реализации, переквалифицированный в фичи)
Дело было так – сначала реализовали анимацию ключа как плавание прямого вертикального ключа вверх-вниз. Потом решили давать ключам при инициализации рандомный поворот текстуры. При этом не поменялась та прямоугольная форма физического тела, которую используем для расчёта коллизии.


И позвольте небольшое дополнение насчёт выбора жанра. Платформер в текущем виде вполне работает для демонстрации конкретных жизненных ситуаций. Попробуй поиграть и понаблюдать, а также внимательно почитать карточки, которые даются в конце каждого уровня.
Например, на уровне есть инфляция, которую невозможно избежать, и на ней гарантированно теряется как минимум одна монета. При этом, перед инфляцией обязательно есть возможность вложить одну монету, чтобы потом, после прохождения инфляции, забрать две. Таким образом, в лучшем случае остаёмся при своих, в худшем – теряем монеты. Примерно так это и работает)
Одно из главных назначений этой игры – быть образовательным инструментом в конкретном образовательном процессе. Когда учитель на уроке её демонстрирует, и комментирует происходящее по ходу дела. Тогда вполне понятная для детей-игроков механика платформера обрастает финансовыми метафорами, которые применимы даже в их возрасте.
Спасибо за комментарий, позвольте ответить от имени этого самого техлида)

а) Не были знакомы с Defold, сейчас посмотрел – у него примерно те же проблемы, что и у Unity при экспорте в html – как минимум нет звука в IE11, и ещё немного.
б) Бенчмарк действительно такой себе, но вкладка браузера и без того среда непредсказуемая. Были бы рады услышать альтернативные варианты замера в таких условиях.
в) Не совсем понятно про гд – это что? А финальная механика ловли ключа (с большой областью) не вызывала возмущения у игроков, насколько нам известно.
Всё дело в том, как производится расчёт «производительности», и вообще в том, откуда такое требование появилось.

Больше технических подробностей и ограничений в нашем блоге – beaversbrothers.ru/blog/game-development-for-browser

Вот выдержка про измерения
… производительность конкретной вкладки браузера в конкретный момент времени очень сильно зависит от внешних факторов — сколько вкладок открыто, нет ли тяжёлых сайтов в других вкладках, не свёрнут ли браузер

… фактическая загрузка ресурсов заканчивается на 92 %. После этого за пределами экрана создаётся сцена, на которую помещаются тяжёлые анимации и немного физики. Далее в течение 5 секунд измеряется среднее время отрисовки одного кадра. После этого принимается решение о производительности устройства

В дополнение к статье – https://github.com/domnikl/DesignPatternsPHP. Отличный сборник шаблонов с примерами, тестами и иллюстрациями.
Так же void нельзя использовать как тип к параметру.

Данный код некорректен.
Есть хороший ответ на SO по этому поводу http://stackoverflow.com/a/24247443.
Кратко: при разработке приложения определённо стоит коммитить lock-файл, чтобы в любой момент разворачивать приложение с теми же самыми зависимостями что и в прошлый раз; при разработке библиотеки – необязательно, потому что при включении библиотеки в проект её lock-файл будет игнорироваться проектом.

А по поводу install/update – придерживаюсь такого принципа, что всегда надо делать composer install. Если есть lock-файл, будет установка конкретных версий, если нет lock-файла, то будет установка актуальных версий. composer update стоит делать тогда и только тогда, когда преследуется цель именно обновить версии пакетов в lock-файле.
«Также обращаю dаше внимание на то, что при создании нового проекта программа попросить вас настроить пространство имён «namespace». Это нужно для того, чтобы корректно выполнять поиск по проекту, делать проверку кода, и много других полезных вещей. В целом можно не заморачиваться и доверить это самой программе.»

Настройка PSR-0, PSR-4 и Source/Test Roots нужна исключительно в контексте разработки на php. Это позволяет шторму корректно резолвить пространства имён и подсказывать их при создании кода/тестов в соответствующих директориях. К «вёрстке» это не имеет никакого отношения, рекомендую исправить или удалить этот абзац.
blog.jetbrains.com/phpstorm/2014/04/psr-0-psr-4-and-sourcetest-root-support-in-phpstorm-8-eap

Information

Rating
Does not participate
Location
Екатеринбург, Свердловская обл., Россия
Date of birth
Registered
Activity