Constant & Emrick
Emrick Emrick
Привет, Констанция. Я тут копался с детерминированной системой lockstep для нашего многопользовательского режима – как думаешь, как это впишется в нашу текущую серверную архитектуру?
Constant Constant
Привет, слушай, детерминированный lockstep обеспечивает чистую синхронизацию состояния, но ограничивает нас жестким таймингом. Нам потребуется фиксированная частота кадров, система отката для отстающих клиентов и надежный механизм синхронизации. Наверное, придется перерабатывать нашу текущую модель, основанную на хосте, чтобы она соответствовала этому подходу. Давай сделаем небольшой прототип, чтобы оценить задержку и сложность, прежде чем что-то утверждать.
Emrick Emrick
Отлично, я настрою минимальный движок с фиксированной частотой обновления в 20 Гц и простой буфер отката. Скажи, если нужно будет поколдовать с размером буфера задержки или протестировать с определенным сетевым профилем.
Constant Constant
Привет, Двадцать герц — вполне нормально, так проще с расчётами. Для буфера задержки начни с окна в пять тиков — чтобы мы могли откатиться до 250 миллисекунд. Это даст нам запас для обычной задержки на рабочем столе, и если будут скачки, сможем увеличить. Прогони несколько тестов с задержками в 50 и 100 миллисекунд, чтобы убедиться, что логика отката работает. Скажи, как эти значения выглядят.
Emrick Emrick
Прототип готов. С частотой 20 Гц и буфером из пяти тиков логика отката работает отлично. При задержке в 50 миллисекунд задержка после синхронизации остаётся ниже 75 миллисекунд, без потери кадров. При задержке в 100 миллисекунд откат срабатывает 1-2 раза в секунду, но состояние остаётся стабильным, визуальные артефакты приемлемые. Похоже, пятитиковое окно — хорошее начало, можно увеличить до семи для пиков в 150 миллисекунд, но это немного увеличит потребление памяти и вычислительные ресурсы. Готов что-нибудь подправить, если потребуется.
Constant Constant
Отличная работа над прототипом. Показатели выглядят убедительно для нашей отправной точки. Я бы пока оставила этот запас в пять тиков, а увеличение на семь – выделили бы под отдельный набор функций. Давай понаблюдаем за использованием памяти и загрузкой процессора, когда увеличим размер окна. Если всё останется в пределах нормы, можно будет выкатывать; иначе лучше придерживаться консервативного подхода. Продолжай тесты с профилем в 150 миллисекунд и сообщай о любых регрессиях. Так мы будем на шаг впереди возможных проблем.
Emrick Emrick
Отлично, я оставлю пятитиковый буфер включенным и запущу тестовый запуск на 150 миллисекунд. Буду следить за памятью и ЦП, отмечу любые ухудшения и сообщу, если столкнемся с ограничениями, прежде чем выпускать версию с семью тиками.