Звиняйте, други, я долго любил настройки сервера, а настройки сервера любили меня.
Alex2013 писал(а):А свой первый графический редактор я для Ямахи Кувт 2 на школьном кружке писал.
Даа, помню их. Администрация школы сдувала пылинки, поработать в этом классе удалось аж два раза за все школьные годы.
Там даже игрушка была какая-то. Мониторы с зелёным люминофором очень длительного свечения. И народный мститель с большим кулаком оставлял за собой светящийся шлейф.
Shleps писал(а):Живая УКНЦ до сих пор стоит дома
Вай
Просто душу греет.
Alex2013 писал(а): при приближении к луне можно было посмотреть на катающейся по ней луноход и т.п.
Фига ж себе
Добавлено спустя 12 часов 13 минут 4 секунды:В дополнение к
посту от 19 декабря 2015-го:
- слои будут реализовываться за счёт флагов и ускоренных полей (реализованы в 2019-м). Число возможных слоёв ограничено (ориентировочно, 6 слотов: слоёв - максимум 5 + один свободный), т.к. пространства флагов и ускоренных полей очень ограниченные (29 или менее) и достаточно дорогие. Флаги будут отмечать наличие клонов инстанса в других слоях (для скорости: флаги - это одно ускоренное поле), а в ускоренных полях будут храниться ссылки на инстансы (на 64-битной платформе - специальная функция упаковки их в uint32, закодил ещё в 2019-м)
- инстанс на кладбище не может быть удалён, если у него есть клоны в вышележащих слоях: ссылка на инстанс - *всегда* на экземпляр того слоя, где был порождён, а доступ к вышележащим клонам - всегда через его ускоренные поля. То есть, он застревает в зомби-стейте, пока не исчезнут вышележащие слои. Удаление клонов НЕ освобождает его, поскольку эти цепочки имеют знание только снизу вверх.
- поскольку все открываемые на запись инстансы слоя клонируются в ближайший вышележайший - то они не могут быть удалены, пока этот слой не сдохнет. А слой может сдохнуть *только* пребывая на самом верху и будучи заменён следующим всплывшим. Для базого слоя - это может стать проблемой, т.к. он всегда полный, а отпочковывающийся от него слой живёт минимум 500мс. И все инстансы, модифицированные за эти 500мс., продолжат отягощать кладбище. Кстати, серьёзный повод задуматься о дроблении кладбища на несколько, зависимые от слоёв и авто-дропаемые при сдыхании оных.
Инстансы, *созданные* во всплывающем слое - никак не влияют на нижележащий (предполагается, что он породит точно такие же, но свои, когда дотикает до того же места)
- поскольку слой может двигаться только вверх, возможно, порождая отпочковывающихся потомков - и желательно, чтобы сдыхал поскорее, чтобы память не забивалась - не может быть фиксированных ролей слоёв.
1. базовый эталонный, на -500 или -1000 мс, в зависимости от настроек сервера
2. медленный всплывающи - превращается в 3, когда выталкивает тот - а на замену ему 1 отпочковывает новый 2.
3. ближняя база на -200..-150 мс.. превращается в 4, когда его снизу выталкивает 2
4. быстрый всплывающий - превращается в 5, когда выталкивает тот. На замену ему 3-й отпочковывает новый 4-й - если там на подходе нету 2-го, который выпнет сам 3-й стать 4-м.
5. настоящее локального игрока. дискардится, когда его выталкивает всплывший 4.
Очевидно, что этим безобразием надо дирижировать так, чтобы слоёв было не больше пяти, чтобы не получилось, что 2 всплыл заменить 3, пока 4 ещё существует.
Прикидочный порядок выполнения (слой-потомок ничего не знает про слой-прародитель, и никак не влияет на состояние его инстансов, хотя вовсю пользуется принадлежащими ему инстансами - так что, выполнять их можно в любом порядке) (З.Ы. шаг физики - 1мс, т.е. эффективные fps физики = 1000)
- 5 настоящее локального игрока сдвигается на число милисекунд, прошедшее с прошлого кадра
- заполнение командного буфера на рендер
- 1 эталонное прошлое - сдвигается на число милисекунд, прошедшее с прошлого кадра
- 4 быстрый всплывающий - сдвигается по одной милисекунде, пока его выполнение не сожрёт выделенное число милисекунд (с учётом отожранного предыдущими этапами) или он не выпнет 5-й
- 3 ближняя база сдвигается по одной милисекунде, пока не наберёт число милисекунд, прошедшее со времени последнего кадра - или не упрётся в аварийный лимит реального времени.
- 2 медленный всплывающий - сдвигается по одной милисекунде, пока не выжрет оставшееся реальное время по остаточному принципу.
Тут самый адаптивный - 4-й, жгёт циклы до железки ради повышения качества лагокомпенсации (на современном быстром компе - просто тупо пересчитывает все изменения мира за последние 200мс каждый кадр и возносится до 5-го). Балансировщик отнимает у него время, если начинает отставать 3-й или слишком замедляется 2-й (который должен идти вперёд на 1.5х..2х). Если реального времени хоть анусом жуй - ускоряет и 2-й, ибо чем быстрее они всплывают - тем плавнее лагокомпенсация.
Всё, естественно, расчитано на *худший* случай (абсолютно музейный проц + память DDR2 666 МГц) - а на современном игровом компе рискует выйти на околоземную орбиту.
Добавлено спустя 7 часов 22 минуты 23 секунды:З.Ы. Насчёт использования лишних ядер для ИИ - у меня есть весьма извращённая идея. Запускать дополнительный экземпляр екзешника, давать ему копию игрового мира - и присоединять его к игре, как "локальный бот-мыслитель". До опупения неэффективно, т.к. каждый такой будет заодно к ИИ гонять полную копию всего мира - но достижимо.
Но это вилами на воде писано, ибо чую я, что моя оптимизированная физика будет всегда упираться в память, выжирая её пропускную способность одним тредом. И тогда такое распараллеливание ну вот нахрен не нужно.
Основной, жирный, минус - один и тот же объект может существовать в идентичном до бита виде в разных слоях, не затронутый влиянием ни одного игрока - и таких, по факту, будет абсолютное большинство. Но это разные инстансы, один огр подменяется абсолютно идентичным огром, когда слой 4 становится слоем 5, дискардя тот. Иии... Как прикажете связывать их с ассетами? Чтобы, например, экономить на анимации, просчитыва только дельту с прошлого кадра? Или с модифицированным скином, где глаз подбит?
Это *возможно*, за счёт контрольных сумм. По факту, у всех ассетов идентификация по хешу. Но он а) толстый (32 байта) и б) вычисление мд5 суммы тяжёлое. Но всё равно при дропании слоя надо устраивать пляску с передачей ассетов...
..чушь порю. Ассет тупо привязывается к самому старому клону, на который стоит ссылка, а тот не сдохнет, пока есть отпрыски. Проблемы будут *только* у объектов, новосозданных во всплывающих слоях. Будут там неписи? Нет, там будут снаряды всякие, оползни на ландшафте и прочая динамика. Которой унаследование рендер-стейта фиолетово. А спавн персонализируемых объектов (призыв монстров, выбегание врагов из бесконечного домика, актуализация чанков мира при попадании в зону видимости) сделать с задержкой на больше лагокомпенсации. Чтобы визуальными они становились только когда они уже потомки базового слоя, а до того вместо них - малоразмерный, нематериальный объект-обещание.