HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Разработка игр > Наши проекты > Немного о будущем XDM3038
1 час с ~X~
2 голосов
Страницы (103): « Первая ... « 60 61 62 63 [64] 65 66 67 68 » ... Последняя »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
 Дядя Миша
racing for fish

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

Рейтинг



Цитата:
~ X ~ писал:
перестал портить конфиги до состояния вылета халвы

так это проблема халфы, например.

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 08-10-2016 21:55
-
Ku2zoff
Мастер Ёда из Деревни Дуракоф

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

Рейтинг



Цитата:
~ X ~ писал:
И выясняется что РЕАЛЬНО ПРИХОДИТ несколько занулённых структур!!

Это под голдсорсом?
Цитата:
~ X ~ писал:
я просто не могу смотреть на лютый хак с лучами для эгона на клиенте.

Ну а что не так с этим хаком? Создаются клиентские копии лучей, а потом их состояние изменяется в функции UpdateBeams.

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

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

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

Рейтинг



Цитата:
Ku2zoff писал:
Ну а что не так с этим хаком?

Тов XWider просто не различает где хак, а где нет. Он считает хаком любой код, который выше его понимания
Вот покажи ему деревья хаффмана, он тут же закричит, что это хак и анальщина.

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 09-10-2016 13:34
-
 XaeroX
Crystice Softworks

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

Рейтинг



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


Я бы хотел для начала услышать определение понятий "хак" и "анальщина" от XWider-а. Возможно, мы понимаем под этими словами разные вещи.

__________________

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

Старое сообщение 09-10-2016 13:41
-
 Дядя Миша
racing for fish

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

Рейтинг



Цитата:
XaeroX писал:
Я бы хотел для начала услышать определение понятий "хак" и "анальщина" от XWider-а

Цитата:
— Дело в том, что… Вы знаете, что такое домкрат?

— Ну, конечно, знаю, оставьте меня в покое…

— Как вы себе представляете домкрат? Опишите своими словами.

— Такой… Падает, одним словом.

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 09-10-2016 13:44
-
~ X ~
offline

Дата регистрации: Oct 2005
Проживает: Архангельск
Сообщений: 3619

Рейтинг



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


Цитата:
Ku2zoff писал:
Это под голдсорсом?

Да. Под ксашем пока не тестировал.

Происходит в основном у нелокальных клиентов ( != 127.0.0.1).

Цитата:
Ku2zoff писал:
Ну а что не так с этим хаком? Создаются клиентские копии лучей, а потом их состояние изменяется в функции UpdateBeams.

Потому что объект СОЗДАЁТСЯ на клиенте вместо того чтобы быть одним для всех. Уныние, отчаяние и фацепалм.

XaeroX Дядя Миша нуждается в двух предупреждениях за флуд и двух за неуважение к участникам форума. (г_г)

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]

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

Старое сообщение 09-10-2016 16:11
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



Цитата:
~ X ~ писал:
Потому что объект СОЗДАЁТСЯ на клиенте вместо того чтобы быть одним для всех

Ты слышал кое-что про клиентские энтити? Они создаются на клиенте.

Цитата:
~ X ~ писал:
Дядя Миша нуждается в двух предупреждениях за флуд и двух за неуважение к участникам форума

Это почему это в двух, если участник - один? Который к тому же не хочет пояснить своему позицию по давно интерисующему нас вопросу.
Я вам сейчас покажу как выглядит настоящий хак:
C++ Source Code:
1
item->fuser2					= gun->m_flStartThrow;
2
item->fuser3					= gun->m_flReleaseThrow;
3
item->iuser1					= gun->m_chargeReady;
4
item->iuser2					= gun->m_fInAttack;
5
item->iuser3					= gun->m_fireState;

Видите? Сделали переменные для юзеров, а сами же их и заюзали. Это не только хак, но еще и подлость.

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 09-10-2016 16:20
-
Ku2zoff
Мастер Ёда из Деревни Дуракоф

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

Рейтинг



Цитата:
~ X ~ писал:
Потому что объект СОЗДАЁТСЯ на клиенте вместо того чтобы быть одним для всех.

И что? На клиенте ты никак не создашь объекты, видимые другим игрокам. Можно только отправлять с сервера эвенты или мессаги каждому конкретному игроку. Ну ты же это знаешь. Так что или мирится с подобным кодом, или терпеть заметное подлагиванием пушек.
Что меня действительно напрягает, так это то, что на клиенте нет нормального способа (читай, интерфейса из движка) чтобы управлять массивом объектов. Давеча очень много переписывал код зажигалки, чтобы другие игроки в мультиплеере видели свет от неё. Так вот, пришлось завести 32 длайта, по одному на каждого игрока. Существуют они конечно не всегда, а только в моменты свечения зажигалки. Но страшно напрягает вручную орудовать этим массивом. Ну и ещё ограничение на 32 длайта есть... К счастью, я планирую использовать 8-9 игроков в коопе и не более 16-18 в мультиплеере, если мультиплеер будет. Так что должно хватить, даже если все игроки одновременно будут светить зажигалками.

Добавлено 09-10-2016 в 23:36:

Цитата:
Дядя Миша писал:
Видите? Сделали переменные для юзеров, а сами же их и заюзали. Это не только хак, но еще и подлость.

Подлость в том, что такие структуры нельзя расширить. На кой хрен было фиксировать это дело в движке? Вот ненавижу Валвэ за такие гадости.

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

Старое сообщение 09-10-2016 16:36
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



Цитата:
Ku2zoff писал:
Но страшно напрягает вручную орудовать этим массивом.

Что это значит?
в HUD_AddEntity сделай проверку на
C++ Source Code:
if( pEnt->curstate.effects & EF_LIGHTER )
  CL_AllocDlight( ent->attachment[0], Vector( 223, 160, 0 ), host_frametime );

Это псевдокод, но думаю суть понятна. Какой нахрен массив, какое ручное управление?

Добавлено 09-10-2016 в 20:12:

Ну и раз уш пошла такая пьянка, вот вам в подарок код предиктабельной лазерной точки на клиенте
C++ Source Code:
1
TEMPENTITY *m_pLaserSpot = NULL;
2
 
3
void CL_UpdateLaserSpot( void )
4
{
5
  cl_entity_t	*player = GET_LOCAL_PLAYER();
6
  cl_entity_t	*view = GET_VIEWMODEL();
7
 
8
  if( !player ) return;
9
 
10
  if(( FBitSet( player->curstate.effects, EF_LASERSPOT ) && cl_lw->integer ) && !m_pLaserSpot )
11
  {
12
    // create laserspot
13
    int m_iSpotModel = MODEL_INDEX( "sprites/laserdot.spr" );
14
 
15
    m_pLaserSpot = g_pTempEnts->TempSprite( g_vecZero, g_vecZero, 1.0, m_iSpotModel, kRenderGlow, kRenderFxNoDissipation, 1.0, 9999, FTENT_SPRCYCLE );
16
    if( !m_pLaserSpot ) return;
17
 
18
    m_pLaserSpot->entity.curstate.rendercolor.r = 200;
19
    m_pLaserSpot->entity.curstate.rendercolor.g = 12;
20
    m_pLaserSpot->entity.curstate.rendercolor.b = 12;
21
    //		ALERT( at_console, "CLaserSpot::Create()\n" );
22
  }
23
  else if(( !FBitSet( player->curstate.effects, EF_LASERSPOT ) || !cl_lw->integer ) && m_pLaserSpot )
24
  {
25
    // destroy laserspot
26
    //		ALERT( at_console, "CLaserSpot::Killed()\n" );
27
    m_pLaserSpot->die = 0.0f;
28
    m_pLaserSpot = NULL;
29
    return;
30
  }
31
  else if( !m_pLaserSpot )
32
  {
33
    // inactive
34
    return;
35
  }
36
 
37
  assert( m_pLaserSpot != NULL );
38
 
39
  Vector forward, vecSrc, vecEnd, origin, angles;
40
  trace_t tr;
41
 
42
  if( gHUD.m_iCameraMode )
43
  {
44
    forward = gpGlobals->v_forward;
45
    origin = player->origin;
46
  }
47
  else
48
  {
49
    forward = view->attachment[0].dir;
50
    origin = view->origin;
51
  }
52
 
53
  vecSrc = origin;
54
  vecEnd = vecSrc + forward * 8192.0f;
55
 
56
  tr = TRACE_LINE( vecSrc, vecEnd, PM_NORMAL );
57
 
58
  // update laserspot endpos
59
  m_pLaserSpot->entity.origin = tr.endpos;
60
  m_pLaserSpot->die = gpGlobals->time + 0.1f;
61
}

Вызывать из HUD_CreateEntities.

а вот серверная часть
C++ Source Code:
1
CLaserSpot *CLaserSpot::CreateSpot( edict_t *pOwner )
2
{
3
  CLaserSpot *pSpot = GetClassPtr( (CLaserSpot *)NULL );
4
  pSpot->Spawn();
5
 
6
  pSpot->pev->classname = MAKE_STRING("laser_spot");
7
 
8
  if( pOwner )
9
  {
10
    // predictable laserspot
11
    pSpot->pev->flags |= FL_SKIPLOCALHOST;
12
    pOwner->v.effects |= EF_LASERSPOT;
13
    pSpot->pev->owner = pOwner;
14
  }
15
 
16
  return pSpot;
17
}
18
 
19
//=========================================================
20
//=========================================================
21
LINK_ENTITY_TO_CLASS( laser_spot, CLaserSpot );
22
 
23
void CLaserSpot::Spawn( void )
24
{
25
  Precache( );
26
  pev->movetype = MOVETYPE_NONE;
27
  pev->solid = SOLID_NOT;
28
 
29
  pev->rendermode = kRenderGlow;
30
  pev->renderfx = kRenderFxNoDissipation;
31
  pev->renderamt = 255;
32
  pev->scale = 1.0f;
33
 
34
  SetModel( "sprites/laserdot.spr" );
35
}
36
 
37
//=========================================================
38
// Suspend- make the laser sight invisible.
39
//=========================================================
40
void CLaserSpot::Suspend( float flSuspendTime )
41
{
42
  pev->effects |= EF_NODRAW;
43
 
44
  if( !FNullEnt( pev->owner ))
45
    pev->owner->v.effects &= ~EF_LASERSPOT;
46
 
47
  SetThink( Revive );
48
  pev->nextthink = gpGlobals->time + flSuspendTime;
49
}
50
 
51
//=========================================================
52
// Revive - bring a suspended laser sight back.
53
//=========================================================
54
void CLaserSpot::Revive( void )
55
{
56
  pev->effects &= ~EF_NODRAW;
57
 
58
  if( !FNullEnt( pev->owner ))
59
    pev->owner->v.effects |= EF_LASERSPOT;
60
 
61
  SetThink( NULL );
62
}
63
 
64
void CLaserSpot::OnRemove( void )
65
{
66
  // tell the owner about laserspot
67
  if( !FNullEnt( pev->owner ))
68
    pev->owner->v.effects &= ~EF_LASERSPOT;
69
}
70
 
71
void CLaserSpot::Precache( void )
72
{
73
  PRECACHE_MODEL("sprites/laserdot.spr");
74
}

EF_LASERSPOT просто какой-нибудь незанятый бит по аналогии с соседями в const.h
Код, конечно не для тупой копипасты, это из XashNT. Но я думаю вы его легко адоптируете. И не забудьте в delta.lst увеличить кол-во бит для поля effects.

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 09-10-2016 17:12
-
Ku2zoff
Мастер Ёда из Деревни Дуракоф

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

Рейтинг



Цитата:
Дядя Миша писал:
в HUD_AddEntity сделай проверку на

Ты предлагаешь создавать каждый кадр новый длайт, который буде жить всего кадр?

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

Старое сообщение 09-10-2016 17:22
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



Цитата:
Ku2zoff писал:
Ты предлагаешь создавать каждый кадр новый длайт, который буде жить всего кадр?

А ты что заранее знаешь когда игрок выключит зажигалку? Или ты полагаешь что длайт, который живёт 10 секунд чем-то принципиально отличается от длайта который живёт 1 кадр?
Единственное что - используй параметр key передавая туда entindex игрока, чтобы всегда использовался один и тот же длайт.
Ну типа
C++ Source Code:
1
if( cl.maxclients == 1 )
2
  key = cl.playernum + 1;
3
else key = pEnt->index;
4
 
5
// update flashlight endpos
6
dl = CL_AllocDlight( key );

И вообще привыкай что на клиенте всё живёт один кадр.

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 09-10-2016 17:32
-
Ku2zoff
Мастер Ёда из Деревни Дуракоф

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

Рейтинг



Цитата:
Дядя Миша писал:
А ты что заранее знаешь когда игрок выключит зажигалку?

Это у меня эвентами управляется, так что длайты гасятся принудительно в случае чего.
Цитата:
Дядя Миша писал:
Единственное что - используй параметр key

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

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

Старое сообщение 09-10-2016 18:08
- За что?
~ X ~
offline

Дата регистрации: Oct 2005
Проживает: Архангельск
Сообщений: 3619

Рейтинг



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


Цитата:
Дядя Миша писал:
Видите? Сделали переменные для юзеров, а сами же их и заюзали. Это не только хак, но еще и подлость.

Вот об этом я ещё 10 лет назад говорил.

Цитата:
Ku2zoff писал:
нормального способа (читай, интерфейса из движка) чтобы управлять массивом объектов.

CRenderManager :3

Цитата:
Ku2zoff писал:
Так вот, пришлось завести 32 длайта, по одному на каждого игрока. Существуют они конечно не всегда, а только в моменты свечения зажигалки. Но страшно напрягает вручную орудовать этим массивом. Ну и ещё ограничение на 32 длайта есть...

same shit with flashlights here. Some more dlights (projectiles, etc.) and viola - darkness and flickering.

Цитата:
Дядя Миша писал:
Ну и раз уш пошла такая пьянка, вот вам в подарок код предиктабельной лазерной точки на клиенте

ещё один хак. Нет, много хаков Кроме того, сразу виден как минимум один крэш и overflow 9000 temporary ents.

Цитата:
Дядя Миша писал:
Единственное что - используй параметр key передавая туда entindex игрока, чтобы всегда использовался один и тот же длайт.

А в XDM это уже есть...

Ku2zoff давай-ка то, что тебя напрягает обсуждать в отдельном треде?

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]

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

Старое сообщение 09-10-2016 18:18
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



Цитата:
Ku2zoff писал:
Это у меня эвентами управляется, так что длайты гасятся принудительно в случае чего.



Цитата:
Ku2zoff писал:
Вот ещё бы заставить этот свет мерцать, как в инвазионе.

C++ Source Code:
dl->radius = RANDOM_LONG( 200, 230 );

А ты уже собирался CRenderManager заюзать под это дело? Это всё от полного непонимания происходящих процессов идёт чрезмерное усложнение. Там где можно было обойтись одной строчкой - лепятся какие-то рендер-менеджеры, эвенты на включение и выключение. Нормально оно не работает, постоянно приходят какие-то занулённые структуры.
Из того же XDM можно выкинуть примерно 98% кода и он будет работать только лучше от этого.

Цитата:
~ X ~ писал:
ещё один хак. Нет, много хаков

Предложи своей способ предиктабельной лазерной точки с возможность отключения предиктинга .


Цитата:
~ X ~ писал:
Кроме того, сразу виден как минимум один крэш и overflow 9000 temporary ents.

Да ну! И где же там крэш и где же overflow? Покажи.

Добавлено 09-10-2016 в 23:04:

ЗЫ. Вообще-то сорцы инвазиона доступны с начала этого года.

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 09-10-2016 20:04
-
 XaeroX
Crystice Softworks

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

Рейтинг



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


Пока товарищ XWider ищет, вероятно, несуществующие креши и оверфлоу, я повторю вопрос:

Цитата:
XaeroX писал:
Я бы хотел для начала услышать определение понятий "хак" и "анальщина" от XWider-а. Возможно, мы понимаем под этими словами разные вещи.

__________________

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

Старое сообщение 10-10-2016 00:21
-
Тема: (Опционально)
Ваш ответ:



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


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

Временная зона GMT. Текущее время 03:39. Новая тема    Ответить
Страницы (103): « Первая ... « 60 61 62 63 [64] 65 66 67 68 » ... Последняя »   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Разработка игр > Наши проекты > Немного о будущем XDM3038
1 час с ~X~
2 голосов
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

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

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

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

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