HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Глобальное изменение масштаба
Уменьшение размеров всего
Страницы (16): « Первая ... « 3 4 5 6 [7] 8 9 10 11 » ... Последняя »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
Ku2zoff
Мастер Ёда из Деревни Дуракоф

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

Рейтинг



Цитата:
FiEctro писал:
P.S. Убрал Волатилу.

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

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

Старое сообщение 27-08-2016 09:29
- За что?
 XaeroX
Crystice Softworks

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

Рейтинг



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


Цитата:
Ku2zoff писал:
Именно поэтому я склонен больше доверять лурке, нежели педивикии.

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

__________________

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

Старое сообщение 27-08-2016 14:54
-
 Дядя Миша
racing for fish

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

Рейтинг



Цитата:
XaeroX писал:
Полностью честный и непредвзятый взгляд на вещи - на официальных сайтах проектов, которые обновляются исключительно авторами.

Ну на пример автор XDM уверен што унего лутший в мири мод, а ведь это нетак.

__________________
My Projects: download page

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

Цитата:

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

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

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

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

Рейтинг



Сейчас протестирвал монстров - тоже проваливаются.

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

Старое сообщение 28-08-2016 09:59
- За что?
 XaeroX
Crystice Softworks

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

Рейтинг



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


Цитата:
Дядя Миша писал:
Ну на пример автор XDM уверен што унего лутший в мири мод, а ведь это нетак.

Это как раз на лурке и написано.

__________________

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

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

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

Рейтинг



Поднимаю тему, простите за некропостинг. Вот что нашёл. Ну нашёл ещё в прошлом году, когда изучал код ксаш-движка, а потом забил на рескейл. Сейчас решил вернуться к этому делу, вдруг получится.
Если проследить цепочку от SV_HullForBsp до движковых функций, экспортируемых наружу, то последняя "инстанция" - это SV_LinkEdict, который много откуда вызывается. Многое из физики нужно тащить в дллку. Это и pfnWalkMove, и pfnMoveToOrigin, и pfnTraceTexture, и pfnSetSize, и pfnDropToFloor, и pfnSetOrigin. Короче очень много.
Ну не страшно, всё это можно вытащить в дллку. У меня вопрос к Дяде Мише. А нет ли внутри движка каких-либо вызовов функций, которые вызывают движковый SV_HullForBsp, а в итоге наружу ничего не торчит? А то, допустим, я сделаю трассу в дллке, подменю движковые функции на свои, где хуллы исправлены, а внутри движка в одном месте будет вызов с неизменёнными хуллами. И всё нафиг изломается.
Хотя, вроде бы всё торчит наружу, в g_engfuncs. Если это действительно так, то можно начинать переносить код.

Добавлено 19-01-2017 в 22:13:

По моим прикидкам, придётся перенести в дллку почти 10 движковых функций.

pfnWalkMove
pfnMoveToOrigin
pfnTraceTexture
pfnSetSize
pfnDropToFloor
pfnSetOrigin

Это те, которые я нашёл, возможно, есть ещё. Надо схему нарисовать, что откуда вызывается, чтоб не запутаться

Добавлено 19-01-2017 в 22:43:

pfnTraceLine
pfnTraceHull
pfnTraceMonsterHull
pfnGetAimVector
pfnEntIsOnFloor
pfnTraceToss
pfnSetModel
pfnRunPlayerMove

Вот ещё добавка. Ну и естественно, SV_LinkEdict вызывается из SV_RunCmd. Всё торчит наружу, заменить можно. Есть пара мест, которые не получится засунуть на сервер:
SV_ExecuteClientMessage и ReapplyDecal. Да и не нужно наверное, вроде бы декали у меня не глючили. А про мессаджи я не знаю. Там уже сеть, туда вообще не стоит лезть.

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

Старое сообщение 19-01-2017 15:43
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



Цитата:
Ku2zoff писал:
Многое из физики нужно тащить в дллку. Это и pfnWalkMove, и pfnMoveToOrigin, и pfnTraceTexture, и pfnSetSize, и pfnDropToFloor, и pfnSetOrigin. Короче очень много.

Так в ксаш-моде давным-давно уже вытащено )
Только я не догоняю каким местом это связано с изменением скейла.

Я тебя научу как визуально увеличить скейл за 3 минуты бесплатно и без смс - опусти камеру к полу. Сразу покажется что всё вокруг огромное.

Цитата:
Ku2zoff писал:
А нет ли внутри движка каких-либо вызовов функций, которые вызывают движковый SV_HullForBsp, а в итоге наружу ничего не торчит?

На данный момент нет, но это не значит, что в будущем они не появятся к примеру. Логичнее наоборот вынести SV_HullForBsp в дллку, чем тащить всю трассу. Я к слову сказать его скоро туда выведу, пригодится.

Цитата:
Ku2zoff писал:
Ну и естественно, SV_LinkEdict вызывается из SV_RunCmd. Всё торчит наружу, заменить можно.

LinkEdict не надо тащить в дллку. Имеет смысл только те вызовы, где touch_triggers установлен в true, т.к. получается два независимых листа триггеров, из-за этого бага в ксаш-моде правильно работают двусторонние порталы (хотя на самом деле работать не должны). Вы небось полагаете, ох какой хороший баг, если из-за него что-то работает? Да хрен бы там. Из-за него же рекурсивный вылет на картах тхамбса, где он мини-игру с мониторами делал. Но в новых версиях я это исправлю.

Цитата:
Ku2zoff писал:
pfnGetAimVector
pfnEntIsOnFloor

это не юзается.

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 19-01-2017 17:57
-
Ku2zoff
Мастер Ёда из Деревни Дуракоф

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

Рейтинг



Цитата:
Дядя Миша писал:
опусти камеру к полу

Ну допустим. А размеры объектов как поменять? Хуллы-то всё равно останутся прежними.
Цитата:
Дядя Миша писал:
Имеет смысл только те вызовы, где touch_triggers установлен в true

То есть, это ограничивает список функцией SV_Move и содержимым sv_phys.c? А как же pfnSetOrigin хотя бы? Выносить в дллку кажется надо всё, что отвечает за движение и расположение моделей.

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

Старое сообщение 19-01-2017 18:52
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



Цитата:
Ku2zoff писал:
А размеры объектов как поменять? Хуллы-то всё равно останутся прежними.

Если совсем без заморочек - проще рескейлить саму карту.

Цитата:
Ku2zoff писал:
То есть, это ограничивает список функцией SV_Move и содержимым sv_phys.c? А как же pfnSetOrigin хотя бы? Выносить в дллку кажется надо всё, что отвечает за движение и расположение моделей.

Я в ксашевском физикс-интерфейсе вынес практически всё необходимое.
Остался только HullForBSP.

__________________
My Projects: download page

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

Цитата:

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

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

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

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

Рейтинг



Цитата:
Дядя Миша писал:
Если совсем без заморочек - проще рескейлить саму карту.

Таким макаром проще применить тутор БУзера по увеличению размера карты. Дело в том, что лучше уменьшить объекты, а мир оставить прежних размеров, чтобы всё, зависимое от координат работало. Если уж не будет хватать места для поездов и огромных башен, тогда можно увеличить карту.
Цитата:
Дядя Миша писал:
Я в ксашевском физикс-интерфейсе вынес практически всё необходимое.

Ну будем посмотреть.

А загвоздка действительно в SV_HullForBsp. Под ксашем с кваром sv_quakehulls 2 всё прекрасно.

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

Старое сообщение 19-01-2017 20:06
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

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

Рейтинг



Буду задавать вопросы. Перечитал ещё раз статью по физике в кваке. В общих чертах всё понял. Теперь очередь конкретно за кодом ксаша.
Что за массивы такие:

C++ Source Code:
static model_t	*com_models[MAX_MODELS];
static model_t	cm_models[MAX_MODELS];

Каким образом они заполняются? Почитал код, не могу понять. Ясно, что они содержат в себе все модели, которые обрабатывает физический движок (может и спрайты тоже, но вроде бы нет).
Массивы создаются пустыми, а потом в момент загрузки моделей игрой, заполняются этими моделями, и каждая модель получает индекс? Пока что я только до этого додумался. Возможно, я не прав.

Добавлено 22-01-2017 в 00:16:

На вход SV_HullForBsp нужно всунуть модель. Можно ли как-то получить её на сервере из эдикта или энтварсов? В энтварсах есть имя модели и её индекс. А вот саму модель можно получить только на клиенте из entity_state_t.

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

Старое сообщение 21-01-2017 17:16
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



Цитата:
Ku2zoff писал:
Каким образом они заполняются? Почитал код, не могу понять.

Это взаимоисключающие утверждения. Если не понял, значит не прочитал код. com_models это index replacement table, поскольку набивка моделей на сервере далеко не всегда совпадает с заполнением массива реально загруженных моделей, ну например после смены карты, кое-какие модели остаются загруженными. А сетевой индекс обнуляется с рестартом и плотно привязан к расположению энтить на карте, порядку прэкеша в дллке итд.

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

Почему только физический движок? Почему спрайты нет? Как ты читал код?

Цитата:
Ku2zoff писал:
На вход SV_HullForBsp нужно всунуть модель. Можно ли как-то получить её на сервере из эдикта или энтварсов?

А это по твоему что?
C++ Source Code:
1
hull_t *SV_HullForBsp( edict_t *ent, const vec3_t mins, const vec3_t maxs, float *offset )
2
{
3
  hull_t		*hull;
4
  model_t		*model;
5
  vec3_t		size;
6
 
7
  // decide which clipping hull to use, based on the size
8
  model = Mod_Handle( ent->v.modelindex );

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 21-01-2017 18:32
-
Ku2zoff
Мастер Ёда из Деревни Дуракоф

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

Рейтинг



Цитата:
Дядя Миша писал:
А это по твоему что?

Ну я вижу, что тут Mod_Handle по модельиндексу находит модель. Из массива. Как заполнить массивы на сервере? Грузить все модели повторно?

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

Старое сообщение 21-01-2017 18:48
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



Цитата:
Ku2zoff писал:
Как заполнить массивы на сервере?

выдернуть Mod_Handle на сервер. Собственно это уже сделано в ксаше.

Цитата:
Ku2zoff писал:
по модельиндексу находит модель. Из массива.

Он не находит. Поиск это - перебор чего-либо. Хэш или бинарная сортировка просто уменьшают сложность перебора, но не избавляют от него совсем. А здесь доступ по индексу
C++ Source Code:
1
model_t *Mod_Handle( int handle )
2
{
3
  if( handle < 0 || handle >= MAX_MODELS )
4
  {
5
    MsgDev( D_NOTE, "Mod_Handle: bad handle #%i\n", handle );
6
    return NULL;
7
  }
8
  return com_models[handle];
9
}

А указатель берётся с com_models вот имено потому, что порядок загрузки моделей и порядок их кэширования на сервере может не совпадать и даже скорее всего не совпадает. Теоретически с подобной системой можно давать клиенту задание грузить модельки на своей стороне, но у меня пока что не возникало такой необходимости.

Добавлено 21-01-2017 в 23:17:

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

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 21-01-2017 20:17
-
Ku2zoff
Мастер Ёда из Деревни Дуракоф

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

Рейтинг



Цитата:
Дядя Миша писал:
выдернуть Mod_Handle на сервер. Собственно это уже сделано в ксаше.

Посредством физического интерфейса, да. pfnGetModel. И оно получает доступ по индексу к уже загруженной движком модели.

Понемногу в голове начинает проясняться. В халфе как эти модели получить? Перебрать энтити при загрузке уровня, и загрузить модели для собственного массива с помощью Mod_RegisterModel?
А почему в халфе невозможен прекэш налету, уже после спауна энтить? Именно из-за вот этих вот дел с моделями и их индексами?

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

Старое сообщение 22-01-2017 03:26
- За что?
Тема: (Опционально)
Ваш ответ:



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


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

Временная зона GMT. Текущее время 12:08. Новая тема    Ответить
Страницы (16): « Первая ... « 3 4 5 6 [7] 8 9 10 11 » ... Последняя »   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Глобальное изменение масштаба
Уменьшение размеров всего
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

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

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

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

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