HLFX.Ru Forum Страницы (2): [1] 2 »
Показать все 16 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- hl_weapons.cpp (https://hlfx.ru/forum/showthread.php?threadid=3758)


Отправлено Jimmy C. 13-01-2013 в 15:15:

Half-Life hl_weapons.cpp

Зачем на клиенте в hl_weapons.cpp нужен следующий код:

C++ Source Code:
1
// HLDM Weapon placeholder entities.
2
CGlock g_Glock;
3
CCrowbar g_Crowbar;
4
CPython g_Python;
5
CMP5 g_Mp5;
6
CCrossbow g_Crossbow;
7
CShotgun g_Shotgun;
8
CRpg g_Rpg;
9
CGauss g_Gauss;
10
CEgon g_Egon;
11
CHgun g_HGun;
12
CHandGrenade g_HandGren;
13
CSatchel g_Satchel;
14
CTripmine g_Tripmine;
15
CSqueak g_Snark;
16
 
17
// Allocate slot(s) for each weapon that we are going to be predicting
18
HUD_PrepEntity( &g_Glock	, &player );
19
HUD_PrepEntity( &g_Crowbar	, &player );
20
HUD_PrepEntity( &g_Python	, &player );
21
HUD_PrepEntity( &g_Mp5	, &player );
22
HUD_PrepEntity( &g_Crossbow	, &player );
23
HUD_PrepEntity( &g_Shotgun	, &player );
24
HUD_PrepEntity( &g_Rpg	, &player );
25
HUD_PrepEntity( &g_Gauss	, &player );
26
HUD_PrepEntity( &g_Egon	, &player );
27
HUD_PrepEntity( &g_HGun	, &player );
28
HUD_PrepEntity( &g_HandGren	, &player );
29
HUD_PrepEntity( &g_Satchel	, &player );
30
HUD_PrepEntity( &g_Tripmine	, &player );
31
HUD_PrepEntity( &g_Snark	, &player );


+ кейсы, но я их не стал выкладывать

В общем смотрел в старых SDK 2.2&2.1 там этого кода нет, я у себя на SDK 2.3 тоже убрал, скомпилил/ разницы не почуял, оружие как работало так и работает. Обьясните для чего он нужен.

PS для чего нужна консольная команда cl_lw?

__________________
Все что делает маппер, программист делает в движке, поскольку ему лень. ©Дядя Миша


Отправлено XaeroX 13-01-2013 в 15:29:

Jimmy C.
Это всё связано с клиентским оружием. Часть эффектов оружия перенесена на клиент с целью экономии сетевого трафика. Т.е. по сути код оружия выполняется и на сервере, и на клиенте. cl_lw - "local weapons" - как раз и включает такое поведение.

__________________

xaerox on Vivino


Отправлено Ku2zoff 13-01-2013 в 15:29:

Jimmy C. комменты с инглиша переводить не пробовал?

C++ Source Code:
// HLDM Weapon placeholder entities.

HLDM энтити-заглушки для оружия
C++ Source Code:
// Allocate slot(s) for each weapon that we are going to be predicting

Выделить слот(ы) для каждого оружия, которому мы собираемся делать предиктинг
Весь этот клиентский код нужен для предиктинга поведения оружий на клиенте. В коде самих оружий есть строчки
C++ Source Code:
#ifndef CLIENT_DLL
#endif

Весь код, что находится между ними, нужен только на сервере, он компилится только когда мы собираем сервер. Весь прочий код собирается и для сервера и для клиента. Короче говоря, мы имеем упрощённые энтити оружий на клиенте. С функциями перезарядки, ожидания, доставания, убирания, стрельбы и проч. без специфического серверного кода. Можно сказать, что на сервере - настоящее оружие, которое стреляет, а на клиенте - муляжи, которые стреляют вхолостую, так, для вида, не оказывая никакого воздействия на серверные энтити.
Это нужно, чтобы при низкой скорости интернет-соединения клиент не ждал три часа пакет от сервера и срабатывание серверной пушки, наблюдая лаги, а видел и слышал, как его клиентская пушка стреляет, оставляет декали и т.д. с минимальной задержкой.


Отправлено Jimmy C. 13-01-2013 в 15:31:

Теперь все ясно, всем огромное спасибо

__________________
Все что делает маппер, программист делает в движке, поскольку ему лень. ©Дядя Миша


Отправлено Ku2zoff 13-01-2013 в 15:33:

Цитата:
XaeroX писал:
Часть эффектов оружия перенесена на клиент

Если неграмотно написать даже чисто серверное оружие, оно без добавления на клиент будет глючить. У меня так с анимациями новой гранаты было. Так что там не только эффекты, мне думается.


Отправлено XaeroX 13-01-2013 в 15:34:

Ku2zoff
Анимация это тоже эффект, тащемта. Есть серверая, а есть чисто клиентская. В случае оружий там ещё важно, чтобы код был одинаковый на сервере и клиенте, а то будут глюки.

__________________

xaerox on Vivino


Отправлено Ku2zoff 13-01-2013 в 15:38:

Цитата:
XaeroX писал:
В случае оружий там ещё важно, чтобы код был одинаковый на сервере и клиенте, а то будут глюки.

Вот, кстати, отсюда вырастает распространённая ошибка: товарищ поменял количество/порядок анимаций у своей пушки, скомпилил сервер, запустил - глючит. Клиент тоже надо пересобирать, даже если у оружия нет эвентов на клиенте, как у ручной гранаты.


Отправлено Jimmy C. 13-01-2013 в 15:42:

Хм.. А как вы думаете, клиентские оружия актуальны в наше время??
Просто мало у кого я думаю очень плохой интернет.

Зацените скриншот. При cl_lw 1 начинаются лаги:



Стреляю один раз а появляется 2 декали. Халфа лицензия, стим.
На серверах играю чаще с cl_lw 0, все оружие нормально работает, кроме монтировки

__________________
Все что делает маппер, программист делает в движке, поскольку ему лень. ©Дядя Миша


Отправлено Ku2zoff 13-01-2013 в 15:49:

Валвэ торопились, доделывая халфу, торопились, когда обновляли. По-хорошему, им надо было полностью перенести все эффекты оружий (анимации, звуки, гильзы, лучи и т.д. и т.п.) на клиент. Но у них мешанина в коде. У той же монтировки все звуки, кроме одного, играются на сервере. Впрочем, код не так уж трудно переписать, перенеся на клиент все звуки и анимации. А вот трейсить лучше только на сервере - не будет расхождений как в спиритах 1.6/1.7, ещё и к хитгруппам доступ есть.

Добавлено 13-01-2013 в 22:46:

Цитата:
Jimmy C. писал:
Хм.. А как вы думаете, клиентские оружия актуальны в наше время??
Актуальны. Ладно если пистолеты и автоматы в контре. А вот если оружие сложное, с кучей эффектов, да ещё и игроков много - представь, какой будет траффик, и какие лаги.

Добавлено 13-01-2013 в 22:49:

Только халфовская реализация - хромая. То и дело где-нибудь вылезет глюк. Например, анимация draw. Ты замечал, что сначала, на долю секунды пушка появляется на экране, потом исчезает, и только потом проигрывается анимация? Так же всякие исчезающие и появляющиеся глушители/прицелы/сошки и прочие бодигруппы. И ещё чота.


Отправлено Jimmy C. 13-01-2013 в 15:52:

Вот что странно. Мои глюки с 2 декалями вылазят только если создать игру через create server (только для меня одного) а если подключится на любой сервер то все работает как надо. Что подскажете господа?

__________________
Все что делает маппер, программист делает в движке, поскольку ему лень. ©Дядя Миша


Отправлено Ku2zoff 13-01-2013 в 16:00:

Jimmy C. а если перезапустить карту после того, как поставишь cl_lw 0?

Добавлено 13-01-2013 в 23:00:

Мне вроде помогло.


Отправлено Jimmy C. 13-01-2013 в 16:05:

Ku2zoff а мот мне никак. Я и рестарт и в конфиг вбивал, все бестолку

Добавлено 13-01-2013 в 20:05:

Заметил еще кое что. На fps_max 250 это происходит через каждый выстрел а если понизить до 72 по дефолту это происходит через каждые примерно 5 выстрелов. То есть вот: .....::.....::.....

__________________
Все что делает маппер, программист делает в движке, поскольку ему лень. ©Дядя Миша


Отправлено marikcool 14-01-2013 в 05:50:

двойные декали это нормально, в контре также это хорошо видно и на авп и на дигле, нужно в серверной части поправить чтобы клиенту не слались декали при cl_lw 1

__________________
vk.com/skullcapstudios


Отправлено XaeroX 14-01-2013 в 07:25:

Цитата:
Jimmy C. писал:
Просто мало у кого я думаю очень плохой интернет.

Зато много где ограничение на размер сетевого буфера. И легко словить overflow, если все эффекты с сервера посылать.

__________________

xaerox on Vivino


Отправлено HAWK0044 14-01-2013 в 13:41:

Jimmy C. у тебя походу не стоит флаг FEV_NOTHOST в PLAYBACK_EVENT_FULL, но вообще я тебе советую выпилить клиентские оружия. Я выпилил, написал что-то похожее на клиентские оружия и нормально. На самом деле эти самые клиентские оружия толку особого не имеют, так что...


Временная зона GMT. Текущее время 08:16. Страницы (2): [1] 2 »
Показать все 16 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024