![]() |
Страницы (32): « Первая ... « 6 7 8 9 [10] 11 12 13 14 » ... Последняя » Показать все 479 сообщений этой темы на одной странице |
HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Наши проекты (https://hlfx.ru/forum/forumdisplay.php?forumid=1)
-- XashNT: блог разработчика (https://hlfx.ru/forum/showthread.php?threadid=6097)
Общая интерполяция успешно задействована и работает. Осталось самое сложное - интерполяция монстров. Потому что монстры играют анимацию со своим fps, который не совпадает с тем, как часто сервер посылает пакеты.
В первой и второй кваке это несоответствие было решено в лоб. Все анимации были на 10 фпс (и быстрее нельзя) и сервер тоже отправлял пакеты 10 раз в секунду. Вот оно так и получилось, автоматически.
Но уже в ку3 так легко отделаться не получилось.
Тут нужны промежуточные стейты для хранения текущих значений анимации, а так же время переключения кадра для локального значения интерполяционного фактора.
Добавлено 18-08-2024 в 10:04:
А ведь есть ещё такая штука как ходьба монстров. Тут уже не просто локальный лерпинг, тут смешивание двух разных интерполяторов.
Потому что монстры могут находиться на движущейся платформе и одновременно куда-то идти. Самый простой способ устранить это несоответствие - проинтегрировать скорость движения монстра.
Например через velocity. Собственно, в Doom3 оно именно так и сделано.
Добавлено 18-08-2024 в 10:06:
Да и в халфе ведь тоже. Никогда не задумывались, почему монстры моргают на движущихся платформах, а игрок - нет. Да потому что игрок передвигается с помощью заданного ускорения в velocity, а у монстров дискретные шаги, которые интерполируются на клиенте.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша А как происходит фильтрация списка объектов, тех которые нужны конкретному клиенту, например чисто визуальных объектов, которые не взаимодействуют с другими объектами, и их не нужно каждый тик обновлять, если объект сейчас не в кадре?
Unit Я тебе там вопрос задал:
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша
Ничего он не расскажет, он гуманитарий.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
__________________
Kiss my ass if you don't like my Ford!
------------------------------------------
Game Area51 Update 1
First Person Shooter Released Jul 24, 2017
The game is a 3d shooter with the elements of the quest.
http://button.moddb.com/download/medium/125531.png
(_-=ZhekA=-_) Да глобально ничего так-го, есть интерес сделать для мобилок и пк мини-движок, что-бы уровни маппить можно было в "Хамерской" концепции, затем, если не перегорит, выпустить небольшую игру, сейчас использую Hammer для Source 2, написал конверт из VMAP.
__________________
Мой сайт
Xash3D Modding Discord
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Kiss my ass if you don't like my Ford!
------------------------------------------
Game Area51 Update 1
First Person Shooter Released Jul 24, 2017
The game is a 3d shooter with the elements of the quest.
http://button.moddb.com/download/medium/125531.png
@Acerola__t
there's also this fun bug where Unity just randomly stops recompiling your compute shaders, and it gives no indication of this, other than making you think you're insane; so if you make a change to your shader, and it doesn't do anything, it's the bug and you need to restart unity
Сеть была успешно поломана в августе 2019-го года. Пять лет. Пять лет эта ситуация ждала своего часа. Одно цеплялось за другое, без третьего не имело смысл реализовывать четвертое, без которого было бы невозможно пятое, а без пятого реализация сети была попросту невозможна.
Ну я условно. Сперва собственный язык, потом организация игровых библиотек, успешное тестирование прототипа реальной игры (в качестве прототипа выступил первый Quake), перенос Quake2, подключение AI-навигации, поддержки монстров с вершинной анимацией и вот наконец-то очередь дошла и до сети. И эта задача практически выполнена.
Я не стал там изобретать ничего нового, остановился на классической клиент-серверной архитектуре в духе Quake World. Ну или GoldSource, кому как больше нравится. У подобной реализации было несколько слабых мест.
Во первых невозможность передать на клиент новые параметры - только те, что заранее прописаны в entity_state_t. И сам entity_state_t тоже менять нельзя - сломается сетевой протокол. Очень неудобная конструкция.
Второй момент - невозможность передачи на клиент никаких глобальных переменных. В Half-Life была структура movevars_t, но пользовательских переменных там не было. Приходилось городить какие-то отдельные пользовательские сообщения, проверки на время их передачи.
Третий момент - нельзя было передавать на клиент строки. Только числа.
Четвертое - вещественные числа отсылались на клиент в фиксированном виде, надо было подбирать множитель. Легко догадаться в каком исковерканном виде они туда приходили.
Пятое - невозможность нормальной работы с клиентскими энтитями.
Исторически это началось ещё в первого квейка, где пользовательский доступ к клиентским энтитям не предполагался вовсе, в халфе вывели какие-то непонятные каллбэки, вся роль которых сводилась к тому, чтобы скопировать какие-то переменные из одного стейта в другой. Что именно там происходило понять было практически невозможно. Зато все клиентские эффекты так и оставались захардкодены в движке.
XashNT предполагает иной подход. Он позволяет создавать клиентские энтити на основе таких же классов, как и на сервере. При желании можно передать практически все параметры и замутить предиктинг всех объектов, но я пока что так далеко не заглядываю. На данный момент имплементация объектов нужна, чтобы навешивать на них всякие визуальные эффекты - партиклы, динамический свет, лучи.
И будет новая концепция временных энтить. Параллельного массива с этими объектами в новом ксаше больше не будет, а все энтити такого рода будут полностью контролироваться с сервера. Тут как раз и пригодится возможность не наследовать объекты от базового, с целью оптимизации траффика. Впрочем, думаю, уже скоро сами всё увидите и пощупаете.
Добавлено 20-08-2024 в 22:24:
Кстати, по лимитам скажу. Поскольку оно на сетевой протокол подзавязано.
Можно отвязать в дальнейшем, но пока что смысла не вижу.
8192 энтити на сервере. Мог бы поставить меньше, но тогда не заведётся ad_sepulcher из Arcane Dimensions, а я планирую его тоже использовать в качестве стресс-теста. Увеличивать этот лимит едва ли возможно - виртуальная машина без JIT не вытянет.
4096 уникальных моделей
8192 уникальных звука
65535 уникальных строк, которые могут быть переданы на клиент.
При всём при этом, разумеется ничего не мешает засеять сцену двумя-тремя миллионами кустов травы или прочими детайлами - они станут частью мировой модели. Ну или любой другой модели, это не так уж и важно.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Временная зона GMT. Текущее время 08:11. | Страницы (32): « Первая ... « 6 7 8 9 [10] 11 12 13 14 » ... Последняя » Показать все 479 сообщений этой темы на одной странице |
На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024