Меню сайта |
|
|
Категории раздела |
|
|
Форма входа |
|
|
Наш сервер CS 1.6 |
|
|
Поиск |
|
|
Наш опрос |
|
|
|
| | |
|
В разделе материалов: 65 Показано материалов: 11-15 |
Страницы: « 1 2 3 4 5 ... 12 13 » |
Работа через сеть: события, сообщения и таблицы строк
|
Сетевые события и сообщения
Движок Source допускает к игре до 255 игроков одновременно в общем
виртуальном мире реального времени. Для синхронизации ввода пользователя
и изменений мира между игроками, Source использует клиент-серверную
архитектуру которая соединяется посредством сетевых пакетов UDP/IP.
Сервер это центральный источник обрабатывающий ввод пользователя и
обновляющий мир в соответствии правилам игры и физики. Сервер с с
высокой частотой рассылает изменения мира ко всем присоединенным
клиентам. Логические и физические объекты в игровом мире называются
'энтитями' и представлены в исходном коде классами порожденными от
общего базового класса. Некоторые объекты существуют только на сервере
(серверные энтити) и некоторые объекты существуют только на клиенте
(энтити клиента), но большинство объектов существуют на сервереи как
соответствующая копия на клиенте. Общий сетевой код энтитей позволяет
удостовериться что эти объекты синхронизируются для всех игроков.
|
Библиотека VGUI 2Библиотека VGUI2 (vgui2.dll) - это составляющая графического интерфейса
пользователя (GUI) поставляемого с движком Source. Все Source и Steam
приложения используют VGUI для отображения окон, диалогов или меню.
Объектная архитектура иерархическаяи все имплементируемые элементы
управляются классами основанными на базе VGUI. Система событий
клавиатуры и мыши очень схожа с другими GUI библиотеками (подобно Java
Swing или .Net-подобным). Имплементация наиболее общих GUI элементов на
подобии кнопок, текстовых полей или изображений предоставляется
библиотекой VGUI-контроллеров (vgui_controls.lib). Кроме отрисовки GUI
элементов и обработки ввода, VGUI также управляет локализацией для
отображения текста предпочтительного для данного польхователя. Все
заголовочные файлы VGUI размещены в publicvgui, управляющие элементы
определяются в publicvgui_controls.
|
Кэширование файлов
Для обеспечения гладкой загрузки файлов для игровой сессии, важно чтобы
движок выполнял как можно больше работы для загрузки этих данных до
начала сесии. Игрок не должен замечать задержек для кэширования файлов
во время сесии, часто проявляющемся в "залипании" игрока или задержках в
рендеринге. Для избежания этих эффектов, энтити должны до начала сесии
объявлять и кэшировать файлы используемые ними. Существуют
вспомогательные функции выполняющие эту работу.
|
Физические энтити на стороне клиента и сервераОсновным преимуществом движка Source является физическая имитация твердых
тел. Эта симуляция имплементирует основную механику и физику Ньютона такие
как гравитация, траэктория, трение, столкновения, прыжки и плавание. Модели
поддерживают эту имитация предоставляя информацию о их модели коллизий, типе
материалов, весе и т.д. В режиме однопользовательской игры все физические
энтити контроллируются и имитируются сервером (физика на стороне сервера) и
коннектится с клиентом. В режиме многопользовательской игры мелкие объекты
подобные жестянкм или бутылкам которые не влияют на геймплей полностью
имитируются на стороне клиента и поэтому не синхронизируется между клиентами.
Это необходимо в связи с тем что движение физических энтитей создает
значительный сетевой траффик с того момента как они изменяют их позицию и
базовую ориентацию в кажом фрейме. Сообщение по сети этих изменений может
почти полнотсью захлебнуть все соединения как только начнут двигаться множество
физ. объектов (взрывы, т.д.). Физ. объекты на стороне клиента не влияют на
движение игрока и значительно меньше чем сам игрок, так что игрок не может
спрятаться за ними. Во время разрушения бьющихся объектов, они разбиваются на
меньшие фрагменты имитирующиеся на стороне клиента.
|
| |
| | |
|