HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Нубские вопросы от <censored> и других нубов
Чтобы не создавать сто тем
7 голосов
Страницы (260): « Первая ... « 146 147 148 149 [150] 151 152 153 154 » ... Последняя »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
ncuxonaT
каков стол, таков и стул

Группа: Опытный
Дата регистрации: Oct 2009
Проживает: город/село/деревня
Сообщений: 1626
Возраст: 33

Рейтинг



Дядя Миша так я и запишу. Вопрос в том, как быть с текстурами. У одного материала цвет задан числами, а у другого - текстурой. Нужно как-то выбирать

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

Старое сообщение 23-04-2020 12:17
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32202
Нанёс повреждений: 392 ед.

Рейтинг



Да сама система эта порочная числа-текстуры. Отсюда и всё дерьмо.
Я бы сделал через убер-шейдеры с #ifdef к примеру.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

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

Старое сообщение 23-04-2020 12:30
-
ncuxonaT
каков стол, таков и стул

Группа: Опытный
Дата регистрации: Oct 2009
Проживает: город/село/деревня
Сообщений: 1626
Возраст: 33

Рейтинг



Дядя Миша понимаю, что порочная, но не вижу альтернативы. #ifdef не подходит, луч может попасть в любой материал, нужно иметь доступ ко всем сразу

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

Старое сообщение 23-04-2020 12:34
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32202
Нанёс повреждений: 392 ед.

Рейтинг



Так что ты надеешься услышать? Без условия очевидно не обойтись.
Ну хочешь - нагенерь мини-текстур в один цвет, засунь их на место диффузок, сравни как быстрее. Проиндексируй эти цвета, чёб не дублировать эти 16-пиксельные текстуры с одинаковым цветом.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

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

Старое сообщение 23-04-2020 12:58
-
ncuxonaT
каков стол, таков и стул

Группа: Опытный
Дата регистрации: Oct 2009
Проживает: город/село/деревня
Сообщений: 1626
Возраст: 33

Рейтинг



Дядя Миша надеялся услышать что-то типа "эээ, не делай через условия, это убьет перформанс, делай через минитекстуры, это будет быстро и универсально". Ну или наоборот

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

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

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

Рейтинг



Цитата:
Дядя Миша писал:
Если декаль нанести на край стены, то она будет висеть в воздухе.

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

Отредактировано Ku2zoff 23-04-2020 в 13:55

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

Старое сообщение 23-04-2020 13:52
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32202
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
ncuxonaT писал:
надеялся услышать что-то типа

мини-текстурки тормозить точно не будут. А убьют ли условия перфоманс зависит от поколения железа. Да и условия-то разные бывают. Я код не видел, почём я знаю.

Цитата:
Ku2zoff писал:
Ну это можно каким-нибудь образом поправить

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

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

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

Старое сообщение 23-04-2020 14:57
-
Ku2zoff
Мастер Ёда из Деревни Дуракоф

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

Рейтинг



Есть ли способ определить на сервере, стоит игра на паузе или нет? На клиенте есть ref_params_s->paused. На сервере в глобалсах ничего подобного нет. Пока что мне не пришло в голову ничего умнее, чем нагородить дурацкий огород:

C++ Source Code:
1
DLL_GLOBAL ULONG		g_ulPostFrameCount;
2
 
3
void PlayerPreThink( edict_t *pEntity )
4
{
5
  entvars_t *pev = &pEntity->v;
6
  CBasePlayer *pPlayer = (CBasePlayer *)GET_PRIVATE(pEntity);
7
 
8
  if (pPlayer)
9
    pPlayer->PreThink( );
10
 
11
  if (g_ulPostFrameCount > g_ulFrameCount) // StartFrame не вызывается, g_ulFrameCount не растёт, игра на паузе
12
    ALERT(at_console, "Paused\n");
13
}
14
 
15
void PlayerPostThink( edict_t *pEntity )
16
{
17
  entvars_t *pev = &pEntity->v;
18
  CBasePlayer *pPlayer = (CBasePlayer *)GET_PRIVATE(pEntity);
19
 
20
  if (pPlayer)
21
    pPlayer->PostThink( );
22
 
23
  g_ulPostFrameCount++;
24
}
25
 
26
void StartFrame( void )
27
{
28
  if ( g_pGameRules )
29
    g_pGameRules->Think();
30
 
31
  if ( g_fGameOver )
32
    return;
33
 
34
  gpGlobals->teamplay = teamplay.value;
35
  g_ulFrameCount++;
36
 
37
  g_ulPostFrameCount = g_ulFrameCount;
38
}


Добавлено 26-04-2020 в 23:32:

Вот, немного дописал. Пауза детектится через две секунды, чтобы не было случайных срабатываний из-за рассинхрона. Учитывает игровой фпс, кстати.
C++ Source Code:
float flSecond = 0.96 / gpGlobals->frametime;
 
if (g_ulPostFrameCount > g_ulFrameCount + int(flSecond * 2.0))
  ALERT(at_console, "Paused\n");

Отредактировано Ku2zoff 26-04-2020 в 16:34

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

Старое сообщение 26-04-2020 16:32
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32202
Нанёс повреждений: 392 ед.

Рейтинг



gpGlobals->frametime == 0.0

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

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

Старое сообщение 26-04-2020 18:13
-
Ku2zoff
Мастер Ёда из Деревни Дуракоф

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

Рейтинг



Дядя Миша неа. Не работает, я пробовал. Даже на паузе фреймтайм равен 0.016xxxx при 60 фпс. Может быть это потому что стим версия?

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

Старое сообщение 26-04-2020 18:16
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32202
Нанёс повреждений: 392 ед.

Рейтинг



А не, в халфе на сервере фреймтайм по идее будет всегда валидным.
Ну тогда чуть сложнее

C++ Source Code:
1
static float oldtime;
2
if( gpGlobals->time == oldtime )
3
{
4
  // paused
5
}
6
oldtime = gpGlobals->time;


Добавлено 26-04-2020 в 21:37:

Проверять в CmdStart

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

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

Старое сообщение 26-04-2020 18:37
-
Ku2zoff
Мастер Ёда из Деревни Дуракоф

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

Рейтинг



Спасибо за подсказку. Теперь серверный фмод в инвазионе имеет паузу:

C++ Source Code:
1
#include "music.h"
2
 
3
float oldtime;
4
 
5
void PlayerPostThink( edict_t *pEntity )
6
{
7
  entvars_t *pev = &pEntity->v;
8
  CBasePlayer *pPlayer = (CBasePlayer *)GET_PRIVATE(pEntity);
9
 
10
  if (pPlayer)
11
    pPlayer->PostThink( );
12
 
13
  g_MusicPlayer.SetVolume();
14
 
15
  if (gpGlobals->time == oldtime)
16
    g_MusicPlayer.Pause(TRUE);
17
 
18
  oldtime = gpGlobals->time;
19
}
20
 
21
void StartFrame( void )
22
{
23
  if ( g_pGameRules )
24
    g_pGameRules->Think();
25
 
26
  if ( g_fGameOver )
27
    return;
28
 
29
  gpGlobals->teamplay = CVAR_GET_FLOAT("teamplay");
30
  g_iSkillLevel = CVAR_GET_FLOAT("skill");
31
  g_ulFrameCount++;
32
 
33
  if (gpGlobals->time != oldtime)
34
    g_MusicPlayer.Pause(FALSE);
35
}

Пришлось раскидать вызовы паузы по разным функциям, потому что фмод включает паузу где-то через полсекунды после постановки на паузу игры (на клиенте так же). Поэтому получается не пауза, а бесконечное заикание, потому что пауза с музыки сразу же снимается.

Отредактировано Ku2zoff 26-04-2020 в 18:38

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

Старое сообщение 26-04-2020 18:37
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32202
Нанёс повреждений: 392 ед.

Рейтинг



Ku2zoff эх, ты бы лутьше декалям клиппинг сделал

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

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

Старое сообщение 26-04-2020 20:34
-
Ku2zoff
Мастер Ёда из Деревни Дуракоф

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

Рейтинг



Дядя Миша ну дык собираюсь. Уже неплохо оптимизировал саму структуру spritedecal_s, чтобы как можно меньше параметров писать в клиентский сейв, вынул функции работы с декалями из gHUD.m_Particules в отдельный класс CDecalManager, избавился от нагромождения iIndex, iIndexNew, oldindex и кучи лишних циклов, перебирающих несколько раз декали по этим индексам... По сути, уже всё довольно неплохо: сохраняются, загружаются, переходят через уровни. Осталось сделать статик-декали, которые накладывает маппер. Ну и обрезку на краях брашей.

Добавлено 27-04-2020 в 13:54:

Правда, насчёт статик-декалей не всё так однозначно. Для них надо ещё как-то нарисовать спрайты.

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

Старое сообщение 27-04-2020 06:54
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32202
Нанёс повреждений: 392 ед.

Рейтинг



Кстати говоря, то что фмод делает паузу с лагом в полсекунды, обусловлено размером его выходного буффера, хотя это и не совсем корректно.
Ну вообщем посмотри, там где-то этот буффер будет задан как 500-600 милисекунд. Меньше ста ставить не рекомендую.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

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

Старое сообщение 27-04-2020 08:51
-
Тема: (Опционально)
Ваш ответ:



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


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

Временная зона GMT. Текущее время 08:29. Новая тема    Ответить
Страницы (260): « Первая ... « 146 147 148 149 [150] 151 152 153 154 » ... Последняя »   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Нубские вопросы от <censored> и других нубов
Чтобы не создавать сто тем
7 голосов
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

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

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

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

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