HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > hl_weapons.cpp
Обьясните пожалуйста
Страницы (2): [1] 2 »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
Jimmy C.
Житель форума

Дата регистрации: Aug 2010
Проживает: (void)
Сообщений: 618
Возраст: 29

Рейтинг



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?

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

Сообщить модератору | IP: Записан
Сообщение: 112936

Старое сообщение 13-01-2013 15:15
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 35036
Нанёс повреждений: 514 ед.
Возраст: 38

Рейтинг



Награды
 
[1 награда]


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

__________________

Сообщить модератору | IP: Записан
Сообщение: 112938

Старое сообщение 13-01-2013 15:29
-
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6853
Возраст: 34

Рейтинг



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

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

Сообщить модератору | IP: Записан
Сообщение: 112939

Старое сообщение 13-01-2013 15:29
- За что?
Jimmy C.
Житель форума

Дата регистрации: Aug 2010
Проживает: (void)
Сообщений: 618
Возраст: 29

Рейтинг



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

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

Сообщить модератору | IP: Записан
Сообщение: 112941

Старое сообщение 13-01-2013 15:31
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6853
Возраст: 34

Рейтинг



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

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

Сообщить модератору | IP: Записан
Сообщение: 112942

Старое сообщение 13-01-2013 15:33
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 35036
Нанёс повреждений: 514 ед.
Возраст: 38

Рейтинг



Награды
 
[1 награда]


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

__________________

Сообщить модератору | IP: Записан
Сообщение: 112944

Старое сообщение 13-01-2013 15:34
-
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6853
Возраст: 34

Рейтинг



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

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

Сообщить модератору | IP: Записан
Сообщение: 112945

Старое сообщение 13-01-2013 15:38
- За что?
Jimmy C.
Житель форума

Дата регистрации: Aug 2010
Проживает: (void)
Сообщений: 618
Возраст: 29

Рейтинг



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

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



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

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

Сообщить модератору | IP: Записан
Сообщение: 112946

Старое сообщение 13-01-2013 15:42
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6853
Возраст: 34

Рейтинг



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

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

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

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

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

Сообщить модератору | IP: Записан
Сообщение: 112947

Старое сообщение 13-01-2013 15:49
- За что?
Jimmy C.
Житель форума

Дата регистрации: Aug 2010
Проживает: (void)
Сообщений: 618
Возраст: 29

Рейтинг



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

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

Сообщить модератору | IP: Записан
Сообщение: 112949

Старое сообщение 13-01-2013 15:52
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6853
Возраст: 34

Рейтинг



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

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

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

Сообщить модератору | IP: Записан
Сообщение: 112951

Старое сообщение 13-01-2013 16:00
- За что?
Jimmy C.
Житель форума

Дата регистрации: Aug 2010
Проживает: (void)
Сообщений: 618
Возраст: 29

Рейтинг



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

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

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

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

Сообщить модератору | IP: Записан
Сообщение: 112953

Старое сообщение 13-01-2013 16:05
- За что?
marikcool
Житель форума

Дата регистрации: Jul 2011
Проживает: kz
Сообщений: 1522
Возраст: 39

Рейтинг



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

__________________
vk.com/skullcapstudios

Сообщить модератору | IP: Записан
Сообщение: 113027

Старое сообщение 14-01-2013 05:50
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 35036
Нанёс повреждений: 514 ед.
Возраст: 38

Рейтинг



Награды
 
[1 награда]


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

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

__________________

Сообщить модератору | IP: Записан
Сообщение: 113030

Старое сообщение 14-01-2013 07:25
-
HAWK0044
Житель форума

Дата регистрации: Oct 2010
Проживает: Анапа
Сообщений: 563
Возраст: 28

Рейтинг



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

Сообщить модератору | IP: Записан
Сообщение: 113085

Старое сообщение 14-01-2013 13:41
- За что?
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 18:33. Новая тема    Ответить
Страницы (2): [1] 2 »   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > hl_weapons.cpp
Обьясните пожалуйста
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

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