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

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

Рейтинг



Ну вызови SV_CreateAreaNode из SetCollisionBox, но с защёлкой. Типа инициализация при первом обращении
Токо при DeactivateServer не забудь эту защёлку обнулить.

__________________
My Projects: download page

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

Цитата:

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

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

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

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

Рейтинг



Цитата:
Дядя Миша писал:
но с защёлкой.

Ну это ясно понятно. Чтобы это дело только один раз вызывалось.
Цитата:
Дядя Миша писал:
SetCollisionBox

Как вариант пойдёт, т.к. вызывается из SV_LinkEdict до первого обращения к areanode_t. Тут другая проблема. На момент вызова SV_LinkEdict из pfnSetOrigin, например, ещё недоступна функция IEngineStudio.GetModelByIndex. Ну или я просто не из того места вызывал её. Клиентка вообще грузится сразу при запуске халфы (стимовской). А вот интерфейс студиорендерера наверное грузится уже при загрузке уровня. ХЗ, надо проверить.

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

Старое сообщение 08-02-2017 14:09
- За что?
KiQ
Житель форума

Дата регистрации: Aug 2010
Проживает: Смоленск, Москва
Сообщений: 2087

Рейтинг



Цитата:
Ku2zoff писал:
Можно даже не задерживать спаун, а зациклить вызовы тех же pfnSetOrigin, pfnWalkMove и прочих (возвращая NULL грубо говоря), до тех пор, пока не будет возможно их выполнить с нужным результатом.

Я всегда стараюсь исключать такие варианты. Это приемлемо в многопоточных приложениях, когда нужна синхронизация потоков, но если всё выполняется последовательно, то всегда лучше сделать вменяемую проверку

__________________
-Brain is dead-

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

Старое сообщение 08-02-2017 16:44
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

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

Рейтинг



Цитата:
Ku2zoff писал:
А вот интерфейс студиорендерера наверное грузится уже при загрузке уровня. ХЗ, надо проверить.

Действительно, модель мира никак недоступна при первых вызовах SV_LinkEdict. Надо либо грузить её прямо в дллке, либо вызывать функции повторно, после её загрузки.

Добавлено 09-02-2017 в 00:15:

Придётся тащить в дллку Mod_LoadBrushModel, а потом выкидывать всё, что не нужно на сервере.
C++ Source Code:
1
Mod_LoadVertexes( &header->lumps[LUMP_VERTEXES] );
2
Mod_LoadEdges( &header->lumps[LUMP_EDGES] );
3
Mod_LoadSurfEdges( &header->lumps[LUMP_SURFEDGES] );
4
Mod_LoadTextures( &header->lumps[LUMP_TEXTURES] );
5
Mod_LoadLighting( &header->lumps[LUMP_LIGHTING] );
6
Mod_LoadVisibility( &header->lumps[LUMP_VISIBILITY] );
7
Mod_LoadTexInfo( &header->lumps[LUMP_TEXINFO] );
8
Mod_LoadSurfaces( &header->lumps[LUMP_FACES] );
9
Mod_LoadMarkSurfaces( &header->lumps[LUMP_MARKSURFACES] );
10
Mod_LoadLeafs( &header->lumps[LUMP_LEAFS] );
11
Mod_LoadNodes( &header->lumps[LUMP_NODES] );


Думаю, что сразу можно выбросить освещение и текстуры. Может быть и видимость. Надо повнимательнее почитать код, какие компоненты модели нам нужны для физики. Ну и грузить придётся опять же из SetCollisionBox.

А можно и не выкидывать. По крайней мере, загрузив освещение, можно заставить правильно работать pfnGetEntityIllum, который вроде бы не работает как надо в халфе.

Добавлено 09-02-2017 в 00:38:

Надеюсь, если запихнуть загрузку карты (и своего собственного массива моделей) в ServerActivate, то всё будет успевать загрузиться раньше спауна и вызовов SET_MODEL и SET_ORIGIN. Хотя наверное нет, и тогда придётся хитрить со спауном, как для игрока в DMC: сначала спауним без SET_MODEL и SET_ORIGIN, а потом уже спауним повторно из ServerActivate с полным набором функций. И да, через SET_MODEL в этом случае можно будет загнать модели не только в движковый, но и в собственный список.

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

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

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

Рейтинг



Цитата:
Ku2zoff писал:
На момент вызова SV_LinkEdict из pfnSetOrigin, например, ещё недоступна функция IEngineStudio.GetModelByIndex

Я тебя наверное опять расстрою, но в серверном интерфейсе нет такой функции.
Там вот такое:
C++ Source Code:
1
// Allocate number*size bytes and zero it
2
void			*( *Mem_Calloc )				( int number, size_t size );
3
// Check to see if pointer is in the cache
4
void			*( *Cache_Check )				( struct cache_user_s *c );
5
// Load file into cache ( can be swapped out on demand )
6
void			( *LoadCacheFile )				( char *path, struct cache_user_s *cu );
7
// Retrieve pointer to studio model data block from a model
8
void			*( *Mod_Extradata )				( struct model_s *mod );

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

__________________
My Projects: download page

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

Цитата:

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

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

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

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

Рейтинг



Цитата:
Дядя Миша писал:
Я тебя наверное опять расстрою

IEngineStudio.GetModelByIndex у меня дёрнута с клиентки, как в тринити. Временно. Буду делать свою загрузку моделей из дллки.

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

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

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

Рейтинг



Есть небольшой прогресс. Сделал проверки на загруженность модели мира и ареанодов. Грузить при использовании клиентской IEngineStudio.GetModelByIndex можно смело только из StartFrame, т.к. на момент вызова ServerActivate экспорты клиентки ещё недоступны.
Короче говоря, нужна защёлка, по которой сначала грузим модель мира, сразу за ней ареаноды, а потом заново вызываем SET_MODEL, SET_ORIGIN и SET_SIZE для тех энтить, которым это нужно, чтобы установить правильные размеры. Можно конечно и не вызывать первый раз, а только во второй. Но не знаю, поломается от этого что-то или нет. Вообще, два раза имеет смысл вызывать только SET_MODEL. Первый раз для регистрации модели в движке, а второй раз уже для установки размеров в дллке.
Сейчас уже нет сил на эксперименты. Надеюсь, что за пару недель у меня что-нибудь получится.

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

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

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

Рейтинг



Цитата:
Ku2zoff писал:
т.к. на момент вызова ServerActivate экспорты клиентки ещё недоступны.

Не экспорты клиентки недоступны, а конкретно эта функция возвращает NULL, потому что на клиент еще не пришло обновление. А так, экспорты клиентки доступны еще до того, как серверная дллка вообще будет загружена.

__________________
My Projects: download page

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

Цитата:

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

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

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

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

Рейтинг



Цитата:
Дядя Миша писал:
А так, экспорты клиентки доступны еще до того, как серверная дллка вообще будет загружена.

А, точно. Я что попало понаписал. Клиентка же грузится движком раньше сервера.

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

Старое сообщение 17-02-2017 03:30
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

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

Рейтинг



Итак, я зашёл в тупик. Помимо подмены движковых экспортов, нужно ещё написать собственную функцию SV_Physics_Entity, из которой вызывается обработка физики для энтить (которая естественно никуда не экспортируется). Это всё конечно не проблема, но придётся заводить новые movetype, о которых движок не знает, чтобы он не обрабатывал энтити, а "отдавал" их на обработку дллке.

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

Старое сообщение 02-03-2017 05:35
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



Цитата:
Ku2zoff писал:
но придётся заводить новые movetype, о которых движок не знает, чтобы он не обрабатывал энтити, а "отдавал" их на обработку дллке.


Ты не сможешь завести новые моветипы никоим образом, потому что SV_Physics настроен на вполне конкретное условие: если моветип незнакомый, то вызывается Sys_Error, штоб неповадно было. Ты наверное ксаш смотрел, где нет такого повидения. А надо было заглянуть в ReHLDS или в OSHLDS. Так что новые моветипы ты не заведёшь. И всё же способ перенести физику на сервер есть и он довольно простой. Но я не буду тебе его сообщать, мне хочется чтобы ты сам догадался. Я даже больше скажу - этот метод был вполне успешно опробован в HLFX 0.7, т.е. он стопроцентно рабочий.

__________________
My Projects: download page

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

Цитата:

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

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

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

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

Рейтинг



Цитата:
Дядя Миша писал:
Но я не буду тебе его сообщать, мне хочется чтобы ты сам догадался.

Ох, ну на это может уйти много времени Если способ довольно простой, то я тем более не догадаюсь. Разве что он частично есть в ксашмоде.
Цитата:
Дядя Миша писал:
Но я не буду тебе его сообщать

Да это всё для того, чтобы заставить на ксаш перейти. А вот нет. По крайней мере пока. Посмотрим, что будет после релизв 26 апреля. Если моды начнут заводиться искаропки 1в1 как под халфой (то есть cfg, scr и liblist.gam будут правильно парситься) и будет поддержка новой клиентки с SDL, тады да. А если будет винегрет как сейчас, тогда я лучше пожертвую размерами уровней и наличием некоторых фич.

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

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

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32188
Нанёс повреждений: 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: Записан
Сообщение: 165137

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

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

Рейтинг



Цитата:
Дядя Миша писал:
Движок обманывается ровно тремя строчками кода.

Единственное, что мне пришло в голову, это pev->movetype = MOVETYPE_NONE. Для энтить с этим мувтипом физика не выполняется. Выполняется только тчинк. Но это только одна строчка.

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

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

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

Рейтинг



Цитата:
Ku2zoff писал:
Да это всё для того, чтобы заставить на ксаш перейти. А вот нет. По крайней мере пока.

Ты всеръез думаешь, что я на ксаш кого-то заманываю? Или ты думаешь, что ты какой-то важный разработчик, которого я задался целью на ксаш заманить? Охренеть у людей фантазии.

Цитата:
Ku2zoff писал:
(то есть cfg, scr и liblist.gam будут правильно парситься) и будет поддержка новой клиентки с SDL, тады да.

cfg, scr и liblist.gam - да. Собственно я это давно мог сделать, но не въезжал в этот механизм, да меня он на тот момент не сильно волновал, т.к. я не придавал мультиплееру большого значения - предиктинг всё равно не работал как следовает. А теперь конечно сделаю.
А вот клиентку с SDL я делать пока не планирую. По одной простой причине - через SDL невозможно включить расширенный отладочный GL-контекст, ну по крайней мере с той версией, которую юзает халфа. А он мне нужен. Вероятно есть и какие-то другие ограничения, так что SDL отправляется фтопку. К тому же, как я понял он не даст мне сделать окошко системной консоли выделенного сервера. Если какие-то придурки собирают мод с SDL, то это исключительно их проблемы. Я это говно к себе тянуть не буду. Вон в форке пусть альбатросы тянут на здоровье.

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 02-03-2017 17:27
-
Тема: (Опционально)
Ваш ответ:



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


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

Временная зона GMT. Текущее время 09:59. Новая тема    Ответить
Страницы (16): « Первая ... « 6 7 8 9 [10] 11 12 13 14 » ... Последняя »   Предыдущая тема   Следующая тема
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