сделал грубый черновой вариант simulated proxy (в терминах анрыла). это когда сервер спавнит объект, дальше его физоний считает клиент, а сервер вступает только на финальном этапе. это для ракет и фаерболов, если чо. они летят по прямой, и совершенно нет никакого смысла постоянно слать их позицию: клиент справится с этим не хуже, а выглядеть будет плавнее — потому что freestep engine.
autonomous proxy для игроков (это client-side prediction) в процессе, но вряд ли будет в следующем билде. там надо решить порядочно проблем, потому что вавумчик бомбит клиента не позицией объекта игрока, а уже посчитаной позицией камеры. это надо переключить обратно на считание «от mobj» (но не убирать совсем, потому что камера может сидеть и не в глазах плеер обжекта) для начала, и потом физоний. не так просто, как кажется, потому что «игрок» и «пешка игрока» — два разных объекта, и в процессе там делаются некоторые игровые действия, которые на клиенте невозможны. в общем, надо вкладывать блоки на line actions, делать отдельную считалку для Player и так далее. это помимо того, что надо тамштампить все, что исходит из клиента и что идёт обратно, чтобы и клиент, и сервер могли правильно прикинуть момент нажатия, скорости и перемещения. короче, дофига. но итогом будет практически полное отсутствие лага на перемещение даже с большим пингом, оно того стоит в конце концов.
nuts.wad по локалхосту. адовые лаги от того, что и клиент, и сервер запущены с эмуляцией двадцатипроцентного packet loss. ( подкотэ смирельная смирть )
я ВНИЗАПНА споткнулся о сетевой код, так что возможно, что в следующем билде оно будет опять работать. а может и нет.
забавно, что первые версии сети были, похоже, взяты из QW. а потом янис мигрировал в сторону Unreal, но не дошёл. я теперь на распутье: с одной стороны, архитектура скриптов, RPC, всё вот это — анрыл, так что имеет смысл доделать туда. но с другой — можно всё похерить и пойти в q3 с её снапшотами. надо попробовать оба варианта, наверное. ку3 проще, но в анрыле зато Такая-То Система Виртуальных Каналов, и вообще интересно всё.
путём медитаций, матюгов и долгой ебли получился играбельный «memorial». ну, который от Eternal, «все уровни дуда2 на одной карте», с 4к монстров.
ну как «играбельный»… кое-как тянет 19-20 фпс, но в это таки можно играть. правда, мод кровищи надо вырубить (или как минимум отрубить кровищу на полу и потолке; тогда будет проседать в активном бою, но более-менее играть таки можно).
конечно, если бы все эти 4к одновременно активировались, то всё бы мгновенно издохло. но идите далеко и надолго со своими nuts.wad, например.
я писал. в новом билде боссы больше не залипают. но остался печальный баг с отсутствием финального текста, когда садишься на трон. ну и ладно, вы в думчик тексты читать ходите, что ли?
в этом билде кардинально переделан код лайтмапов, и добавлен дисковый кэш для них. то бишь, движок теперь в состоянии скинуть на диск посчитаное освещение, а не считает его заново при каждой загрузке сохранёнки, например. ну, и больше не будет падать с воплями про то, что surface cache overflow.
Янис для ProtectionPowerup вообще какую-то херь написал. настолько, что любой такой поверап защищал игрока вообще от всего, и уменьшал любой дамаг до 1 hp. даже встроеная команда роскомнадзора съедала 1 hp.
вообще, такое впечатление (скорее всего, верное), что damage types в коде не очень закончены были.