avatar
Постараюсь пустить заметку в разработку. :)
avatar
Lavayar , я сюда тебе тоже ответ закину, чтобы не дублироваться. :)

Самым ярким примером хорошей рефлексивной системы на данный момент является Factorio. Это не просто полностью рефлексивная система, это настоящий, полноценный клеточный автомат. Полный клеточный автомат, согласно классификации.
Думаю, на этом этапе все становится понятно. :)

Живой мир тоже может быть построен на основе рефлексивных систем обработки данных. Более того, клеточные автоматы являются именно и рефлексивными, и живыми в одно и то же время.

А даже если и пойти дальше по этому тонкому льду скептицизма, то сразу встанет вопрос такого рода. Ну зачем что-то считать на локации, где НПЦ гвоздями прибиты к месту, где игроков еще нет, где нет никаких полезных активностей? Всякие там SEED, Rimworld и.т.д. понятно, там надо. А когда из неигровых и живых только мобы да кустки (и триггерные зоны, но их ни кто еще не видел, так что это секрет что они живые), зачем их значимость приравнивать к игрокам и тратить на них ресурсы реального времени?
avatar
Сами по себе данные обработать можно с использованием двух базовых подходов. Первый подход характеризуется тем, что мы все время проверяем наличие данных и обрабатываем их по мере поступления. Второй подход характеризуется ожиданием данных и обработкой их только в момент поступления.

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

Первый подход так и называется — реактивным. Второй — рефлексивным.

Так вот. Что я видел раньше в серверах? Они были рефлексивными. Это было главным свойством.
Появился игрок на локации, в зоне его интереса от каждого движения начинают считаться варианты. Если игрок движется по зоне спауна мобов, то от каждого перемещения на периферии зоны интереса начинает работать спаунер, выбрасывая мобов с равномерной вероятностью распределения по всей зоне спауна.
Встретились два игрока, пересеклись их зоны интереса, для них начинают считаться механики ближнего действия.
Любое действие, как правило, представлено таймером, который не тикает назад, а сразу говорит время, когда ему сработать. Каст скилла — это таймер. Куллдаун — таймер. Эффект скилла — таймер. На самой локации тоже есть таймер, который подсовывает некоторые события игрокам на тот случай, если все они разом замрут, чтобы локация выглядела живой. Четко оговоренные границы активной работы дают возможность экономить ресурсы и тратить их только по делу.
А когда последний игрок вышел с локации, все ее ресурсы почистились, мобы удалились, ненужные эффекты удалились и локация перешла в спящее состояние.
Это буквально система реального времени, использующая ресурсы только по мере возникновения событий.
eAthena была способна с успехом содержать до 10к активных игроков РО всего на одном ядре с частотой 4ГГц, не загружая его на 100%. А в РО механики далеко не так просты, как может показаться.

Что я вижу в серверах все последнее время. Сервера сплошь и рядом реактивные.
Xeon-Phi на 72 ядра? Нам этого мало! Нам нужен юнит на 4 зеона и 288 ядер! Но и этого будет мало, когда к нам начнут подключаться игроки.
Обозначенный Эльфом бесконечный цикл крутится для каждой локации отдельно. При старте локации, на ней сразу создаются все мобы, все НПЦ, все активности, всё возможное, что для этой локации возможно. Старт локации, при этом, занимает чумовое количество времени. И это еще только цветочки.
После старта локации, для нее безусловно начинает работать цикл обработки событий, а события генерируются вот всем тем, что было в локацию загружено. Мобы ходят, НПЦ скучают, триггерные зоны ищут игроков… От 10 до 100 раз в секунду. Игроков еще нет, а ресурсы уже сожраны под ноль. Кайф!

1 секунда — безумно короткий отрезок времени, в нем всего 1000 миллисекунд.
Если локация работает со скоростью 10 тактов в секунду, то на один ее такт может быть отведено не больше 100 миллисекунд. Но 10 тактов в секунду — это слишком мало для качественной симуляции. Тактов должно быть от 60, лучше 100.
Однако же, 60 тактов означают что на один так не может быть потрачено больше 16.6 миллисекунд. А если тактов нужно 100, то каждый такт надо впихнуть в 10 миллисекунд.

И за эти 10 миллисекунд надо посчитать все то, что накапало в событиях. И это вне зависимости от того, есть игроки на локации или нет. Точнее, если игроков нет, то еще пол беды, а если есть, то хоть вешайся. Помимо НПЦ, триггерных зон, кустиков, колодцев, мобов и прочего контента локации, теперь еще и игроков с их безумными выкрутасами надо считать.

Вот такая вот история выходит. Я не знаю почему при разработке игрового сервера люди стали идти в стороны реактивных систем. Но что это шаг в болото, я всегда догадывался.
Да, создание рефлексивной системы сложнее, требует большей подготовки и более широкого набора навыков.
Является ли это достойным ограничением? Не думаю.
avatar
Больше специальных гостей богу специальных гостей! :)
А то я вас и правда разбаловал. ))
avatar
Все таки, посадка на морскую платформу — это слишком амбициозно…
avatar
Интересно будет увидеть продолжение интервью.
И еще я надеюсь на продолжение темы RoG на Ммозговеде. :)

Будет очень интересно понаблюдать в целом за развитием и жизнью этого проекта.
avatar
У интервью был формат переписки или было общение без помощи техники?

По ходу чтения рассуждений вокруг плексов стало казаться что Вацлав призадумался над своими убеждениями.
Ат, Рыж, вам так не показалось момент интервью?
avatar
Из статьи, на данном этапе, складывается впечатление, что самое главное в играх — монетизация =)
И это ужасно. Это — проблема всех игр за последние лет 5, или больше.
Перед тем, как переходить к интересности и увлекательности механик проекта, приходится обговаривать вопрос монетизации, т.к. иначе игрок может просто оказаться перед очередной торговой витриной, за которой только казино, но никакой игры.
avatar
Все это очень хорошо. Система оценки и строгое следование букве закона.
А как на счет сугубо личного отношения к ситуации? Если ситуацию пропустить через свои глаза?
avatar
Yep… Оно так и есть.

Когда в 1987 году родился GIF, об анимации вообще никто не думал – как и о всемирной сети WWW. Команда программистов из CompuServe под руководством Стива Уилхайта [Steve Wilhite], известного отца формата, создали GIF на основе, совершенно не связанной с сегодняшними анимационными фокусами.

В конце 1994 года GIF был стареющим, но удобным стандартом интернета. А в начале 1995 появилась коалиция, требующая его уничтожения. Что произошло?

Майкл К. Баттилана, разработчик, написавший один из лучших и самых глубоких докладов, посвящённых тогдашним спорам, во время перемен находился в гуще событий. «После всей работы, всех успехов, внезапно выяснилось, что существует патент. Об этом не знал никто».

Это был первородный грех GIF, недосмотр, послуживший причиной начала войны в 1994 году, когда CompuServe и Unisys объявили, что Unisys выдаст лицензию на LZW для CompuServe, с возможностью использования его в GIF за номинальный гонорар. Кроме того, Unisys искала возможности заключения схожих договоров со всеми, кто имел дело с файлами. Для сообразительных технарей это было как огненная надпись на стене. После многих лет бесплатного использования GIF, в процессе которого родилась и всемирная сеть, создание гифок вдруг будет стоить денег.

Ярость вылилась в практический план, сформировавшийся в юзенет-группе «comp.graphics», в ветке обсуждения «Мысли по поводу замены формата GIF». Здесь наиболее продвинутые инженеры веба – включая внёсших большой вклад в создание JPEG – обсуждали альтернативы этому формату. В результате появился новый тип сжатия без потерь, который мог заменить GIF во многих аспектах и не имел его технических недостатков: штучка под именем PNG.

5 ноября 1999 года было объявлено «Днём сжигания всех гифок» [Burn All GIFs Day]. Если бы вы тогда зашли на домашнюю страницу этого проекта, вы бы увидели план его реализации, такой же простой, как его название: «В День сжигания всех GIF все пользователи GIF собираются в Unisys и сжигают все свои файлы GIF». Сопровождали всё это гордые антиподы GIF – файлы формата PNG.
So let the gifs burn!

Подробная история дня сожжения всех гифок по ссылке. Ну и перевод тоже по ссылке.
avatar
Кому интересно, вот ссылка на страницу разработки проекта. :)
avatar
По поводу прихода «официального аниме» буквально сегодня на глаза попалось вот такое эссе.
С приходом «официального аниме» фандаб официально стал пиратством.
avatar
avatar
Там во время эфира образовалась непонятная проблема. Мы все его не слышали в дискорде, т.е. Атрон не мог с этим ничего сделать.
avatar
Moneybadger coalition, собранная на деньги Ironbank (ныне забаненный за рмт) армада для закатки Гуннов, вылившееся в одну из крупнейших войн
В этой истории движуху организовали именно Гунны. И Гуны были бы организаторами этой движухи и без Ironbank-а. И желающие куснуть Гуннов тоже остались бы на своих местах без обильного вливания нелегальной валюты.

Когда для организации «годной движухи» применяются обильные вливания валюты, происхождение которой сомнительно или просто преступно, сама по себе «годная движуха» теряет смысл.
У добытых через РМТ средств нет обоснования в рамках игровой системы. А значит и ценности у нее нет. Свою игровую ценность теряют и ресурсы, полученные за такую валюту. Ценность начинает терять всё, на что меняется валюта сомнительного происхождения.
Вся обозначенная движуха Moneybadger coalition по своей сути акт масштабного обесценивания как достижений Гуннов, так и достижений самих участников Moneybadger coalition. Свой фан они получили слишком легко, ценности в нем нет.
avatar
Уместным в данном случае будет и понимание того, что организатор не упустит случая взять таксу за транзакцию на этой площадке.
А в дополнение ко всему стоит вспомнить параграф из EULA, где внятно оговаривается полное отсутствие прав собственности пользователя сервиса на внутриигровые предметы и достижения.

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

Доступ открывается как для кода клиента, так и для кода сервера.
Проект сделан на Unity. Языком разработки выбран C#.

Чуть погодя постараюсь почитать лицензионное соглашение и, как прочитаю, расскажу о свободах использования этого кода.
avatar
Можно, конечно, пойти другим путем и встроить тот же v8 как embeddable interpreter в программу на C++, но вы, кажется, про вариант с native calls из node.
Я именно про вариант эмбеддинга. :)
Конкретно для задач разработки игр вариант расширения функционала высокого уровня через низкий выглядит как рубашка наизнанку — приносит много неудобства и выглядит некрасиво.
avatar
Давай тогда посмотрим на эту ситуацию другими глазами. Скажем, глазами создателей игры.

Minecraft очень быстро оброс модами, но эта игра никогда не была приспособлена к расширению модами. Для того чтобы дать возможность модам работать и легче создаваться, было создано специальное изменение кода Minecraft, на базе которого уже был создан модхаб Forge. Теперь в пакет Minecraft достаточно внедрить только Forge, а моды уже располагать в отдельной папке. Такое решение стало очень надежным и максимально безопасным с точки зрения возможной порчи пакета игры от неумелых действий.

О чем это все говорит. Люди найдут способ делать моды для игры, которая им нравится. Лучше эту возможность заложить сразу при разработке. Тебе тогда спасибо скажут.
Но давай подумаем дальше. Да, моды мы делать разрешили, сделали API для модов, описали документацию. Давай еще сообщество модеров сделаем, им будет приятно что они «как бы под крылом разработчиков».

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

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

Нужны профессионалы, нужно каким-либо образом из всех модеров отобрать про-разработчиков, для которых критерий отбора будет малозначительным. Размен пачки гос. знаков на доступ к исходному коду является именно таким символическим критерием. Все просто.
И тут нет никаких подтекстов или тайных умыслов. $65 — это не так и много, если ты профи и хочешь заниматься больше чем модингом игры.
Тебе не игровые активности открываются за эти $65, а «доступ на кухню» игры.