Как-то давно писал алгоритм поиска пути для разноразмерных юнитов, экспериментировал с алгоритмами distance field. Помню, что тогда меня заворожила картинка полученная с использованием манхэттенского расстояния. Обратил внимание, что из нее можно вычленить координаты самого большого прямоугольника, который влезает на карту.
Если можно без него обойтись, то зачем его использовать? На самом деле, даже без «если», просто нельзя его использовать.
Это же дыра в безопасности вида «выполнение произвольного кода». Даже если у вас нету секретов, то можно досить сторонние сайты. Или представьте себе игрока, который будет монетизировать дыру показывая противнику рекламный баннер каждый ход. :)
Спустя год начал разрабатывать пошаговую стратегию, в которой такой метод был бы идеальным для реализации сохранений и сетевого режима (пересылка сохранений от игрока к игроку)
Использование eval для пересоднания объектов гипотетически небезопасно
То есть, в принципе, игру можно модифицировать таким образом, чтобы иногда пропускать ход противника и выполнять два хода подряд. :)
Можно же просто заменить eval на имена функций, которые будут выполнять "десериализацию" существующих объектов?
Выше уже отвечал, что таким и схожими подходами пользуются в редакторах для совместной работы в реальном времени (realtime collaborative editor) или в одноранговых (peer-to-peer) редакторах, когда надо учесть все свои и чужие изменения, а единого места для синхронизации нет.
Таким и схожими подходами пользуются в редакторах для совместной работы в реальном времени (realtime collaborative editor) или в одноранговых (peer-to-peer) редакторах, когда надо учесть все свои и чужие изменения, а единого места для синхронизации нет.
Пример из моего проекта приведен просто для наглядности.
Я формировал суффикс на старте приложения и не менял его по ходу работы приложения. Коллизии возможны только если 2 клиента сгенерируют одинаковое случайное число и будут запущены в одну и ту же секунду. Для конкретно этого проекта это был приемлемый баланс между вероятностью коллизии и размером суффикса.
Вариантов как и когда его формировать уйма. Можно генерировать один раз на старте или на каждую запись. Хоть GUID приписывай, все дело в балансе уникальности и размера.
Чтобы привязаться к игровому времени. На скорости это не так очевидно, а вот со стрельбой становится понятнее, ведь мы можем наспамить 100500 событий выстрела за условные 16мс.
В оригинальной статье описан крайне неэтичный и, скорее всего, незаконный сценарий использования. Может быть можно продавать какую-нибудь статистическую информацию в агрегированном виде?
Аренда доступа к пользователям
Этот способ используется часто и не только в играх. Например, вы можете за денежку (или за кросс-промо) разместить рекламу чужой игры в сообществах своих игр.
Автор статьи поставил перед собой цель собрать как можно больше вариантов монетизации игр, и я считаю, что у него это получилось.
Конечно, если вы будете продавать персональные данные, то вы сам себе злобный буратино. Но для новичка, который набивает себе руку созданием клонов, может оказаться откровением, что можно пойти в условный Макдоналдс в своем городе и договориться о создании рекламной игры, а потом еще и продать исходники.
Про все игры на обложке сказать не могу, но, например, Supergiant Games кроме обычной продажи раздавали свои игры бесплатно с консолями XBox One и PS4, участвовали в Humble Bundle распродажах, продавали DLC Soundtrack. Они запустили Bastion во всех магазинах, даже в Google Chrome, где раздавали бесплатную демо-версию. Они продавали кучу мерчендайза: обои, рингтоны, футболки…
Важно трезво оценивать, какие способы подходят для вашей игры.
Да, статьи рассчитаны на самых новичков. Мне понравились поясняющие видео.
Я и сам не так давно начал изучать все эти технологии real-time render'ов.
Спасибо за ссылки!
А вот такое как раз можно решать с помощью distance field с диагональным манхэттеном :)
Как-то давно писал алгоритм поиска пути для разноразмерных юнитов, экспериментировал с алгоритмами distance field. Помню, что тогда меня заворожила картинка полученная с использованием манхэттенского расстояния. Обратил внимание, что из нее можно вычленить координаты самого большого прямоугольника, который влезает на карту.
Если можно без него обойтись, то зачем его использовать? На самом деле, даже без «если», просто нельзя его использовать.
Это же дыра в безопасности вида «выполнение произвольного кода». Даже если у вас нету секретов, то можно досить сторонние сайты. Или представьте себе игрока, который будет монетизировать дыру показывая противнику рекламный баннер каждый ход. :)
Сложно представить, как бы выглядела эта валидация. Или вы хотите eval еще и на сервере запускать?
То есть, в принципе, игру можно модифицировать таким образом, чтобы иногда пропускать ход противника и выполнять два хода подряд. :)
Можно же просто заменить eval на имена функций, которые будут выполнять "десериализацию" существующих объектов?
Выше уже отвечал, что таким и схожими подходами пользуются в редакторах для совместной работы в реальном времени (realtime collaborative editor) или в одноранговых (peer-to-peer) редакторах, когда надо учесть все свои и чужие изменения, а единого места для синхронизации нет.
Например, Figma использует похожий подход.
Таким и схожими подходами пользуются в редакторах для совместной работы в реальном времени (realtime collaborative editor) или в одноранговых (peer-to-peer) редакторах, когда надо учесть все свои и чужие изменения, а единого места для синхронизации нет.
Например, Figma использует похожий подход.
Пример из моего проекта приведен просто для наглядности.
Я формировал суффикс на старте приложения и не менял его по ходу работы приложения. Коллизии возможны только если 2 клиента сгенерируют одинаковое случайное число и будут запущены в одну и ту же секунду. Для конкретно этого проекта это был приемлемый баланс между вероятностью коллизии и размером суффикса.
Вариантов как и когда его формировать уйма. Можно генерировать один раз на старте или на каждую запись. Хоть GUID приписывай, все дело в балансе уникальности и размера.
Чтобы привязаться к игровому времени. На скорости это не так очевидно, а вот со стрельбой становится понятнее, ведь мы можем наспамить 100500 событий выстрела за условные 16мс.
Этот способ используется часто и не только в играх. Например, вы можете за денежку (или за кросс-промо) разместить рекламу чужой игры в сообществах своих игр.
Конечно, если вы будете продавать персональные данные, то вы сам себе злобный буратино. Но для новичка, который набивает себе руку созданием клонов, может оказаться откровением, что можно пойти в условный Макдоналдс в своем городе и договориться о создании рекламной игры, а потом еще и продать исходники.
Про все игры на обложке сказать не могу, но, например, Supergiant Games кроме обычной продажи раздавали свои игры бесплатно с консолями XBox One и PS4, участвовали в Humble Bundle распродажах, продавали DLC Soundtrack. Они запустили Bastion во всех магазинах, даже в Google Chrome, где раздавали бесплатную демо-версию. Они продавали кучу мерчендайза: обои, рингтоны, футболки…
Важно трезво оценивать, какие способы подходят для вашей игры.
На вашей же картинке:
Написано "List is Empty", и кнопочки "±" намекают на то, что можно добавить несколько получателей мышкой.
Я и сам не так давно начал изучать все эти технологии real-time render'ов.
Спасибо за ссылки!