HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Глобальное изменение масштаба (https://hlfx.ru/forum/showthread.php?threadid=4593)
Отправлено Дядя Миша 22-01-2017 в 11:40:
Цитата:
Ku2zoff писал:
В халфе как эти модели получить?
ДА НЕ КАК! Стал бы я городить свои интерфейсы, если бы в халфе было можно. Народ извращался следующим способом в тринити - получал хэндл клиентки, и дергал Mod_Handle из клиентского интерфейса. Это разумеется работало только для листен-сервера. Дедикатед-сервер уже упадёт. Да и вообще способ откровенно стрёмный, хотя и рабочий.
Цитата:
Ku2zoff писал:
А почему в халфе невозможен прекэш налету, уже после спауна энтить? Именно из-за вот этих вот дел с моделями и их индексами?
Нет. Банальная лень. В кваке его не делали, т.к. не было особой нужды, но уже в ку2 его ввели. Собственно прэкеш - это отсылка имени и индекса модели на клиент. В халфе и первокваке это было возможно сделать только для накопленного массива моделей и передать их все разом. А во время игры это делается для каждой модели отдельно и соответствующую сетевую мессагу просто поленились сделать. А потом вообще завязали это всё на даунлод ресурсов, который тоже не умел горячий прекэш и стало еще сложнее что-то переделать.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Ku2zoff 22-01-2017 в 12:59:
Цитата:
Дядя Миша писал:
ДА НЕ КАК! Стал бы я городить свои интерфейсы, если бы в халфе было можно.
Выходит, придётся грузить повторно, дублируя то, что уже загрузил движок. Вот засада. Ну и пофиг. Лишь бы работало.
Цитата:
Дядя Миша писал:
Народ извращался следующим способом в тринити - получал хэндл клиентки, и дергал Mod_Handle из клиентского интерфейса. Это разумеется работало только для листен-сервера. Дедикатед-сервер уже упадёт. Да и вообще способ откровенно стрёмный, хотя и рабочий.
Не, это вообще правда стрёмно. Дедикатед-сервер должен работать в любом случае.
Отправлено Дядя Миша 22-01-2017 в 13:47:
Цитата:
Ku2zoff писал:
Выходит, придётся грузить повторно, дублируя то, что уже загрузил движок.
это еще хужы. К тому же что значит загрузил? Ты умеешь их правильно грузить?__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Ku2zoff 22-01-2017 в 15:27:
Цитата:
Дядя Миша писал:
Ты умеешь их правильно грузить?
На данный момент нет.
Цитата:
Дядя Миша писал:
К тому же что значит загрузил?
В общих чертах - загрузил в память (mdl, bsp, spr). А в данном случае нужно получить model_t каждой энтити, которая имеет модель (mdl, bsp, spr). Пока не знаю, как это сделать, т.к. ещё не разобрался, как это делает движок. После кода дллок (на С с классами) код движка на чистом C выглядит крайне непонятно. Учитывая, что множество переменных и массивов разбросаны по разным файлам, сориентироваться очень трудно.
Отправлено Дядя Миша 22-01-2017 в 15:53:
Я подозреваю, что для решения задчи тебе надо гораздо меньше чем ты сам думаешь.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Ku2zoff 22-01-2017 в 16:11:
Дядя Миша ну а каким образом я это пойму, не изучив как досконально сорцы ксаша? (Я это делать не планирую потому, что форкать его не собираюсь). Ну и польза от этого будет довольно сомнительная, учитывая конечную цель.
Отправлено Ku2zoff 25-01-2017 в 07:18:
А каким образом ещё можно пересчитать хуллы?
Отправлено Ku2zoff 01-02-2017 в 16:48:
Кое-что есть.
C++ Source Code:
1 | // этот код непосредственно где-то на сервере: |
2 | extern "C" model_t *PM_Model(int index); |
4 | model_t *model = PM_Model(pEntity->entindex()); |
7 | model_t *PM_Model(int index) |
9 | for (int i = 0; i < pmove->numphysent; i++) |
11 | if (pmove->physents[i].info == index) |
12 | return pmove->physents[i].model; |
C++ Source Code:
ALERT(at_console, "Model: %s\n", STRING(pEntity->pev->model)); |
ALERT(at_console, "PM_Model: %s\n", model->name); |
Оба алерта выдают одинаковое имя. Осталось проверить, действительно ли модель доступна на сервере. И вообще, будет ли это работать.
Хм. Для поездов, брейкаблей, функ_валлов, функ_баттонов возвращает модель, для пушаблей нет (наверное потому, что они не SOLID_BSP). Для монстров соответственно тоже, т.к. надо возвращать не physents[i].model, а physents[i].studiomodel. Будем копать.
Отправлено Ghoul [BB] 01-02-2017 в 17:48:
А вот что я скажу.
Будут проблемы там, где вы их не ждёте.
А именно: В Tyrian изменение масштаба в 2 раза привело к тому, что прожектайлы стали пролетать сквозь игрока не разрываясь, (не все, а часть и периодически), сбить их тоже стало проблематичным из-за малого размера.
такие дела.
Отправлено Дядя Миша 01-02-2017 в 19:23:
Цитата:
Ku2zoff писал:
И вообще, будет ли это работать.
В радиусе квадрата 256 юнитов вокруг игрока. В списке только эти объекты.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Ku2zoff 02-02-2017 в 01:21:
Дядя Миша а если вместо pmove->physents использовать pmove->visents? Судя по комментарию, объекты будут не только доступные для коллизии, но вообще все отрендеренные в данный момент. Но всё равно мало, максимум 600 объектов.
Добавлено 02-02-2017 в 08:21:
Цитата:
Ghoul [BB] писал:
В Tyrian изменение масштаба в 2 раза привело к тому, что прожектайлы стали пролетать сквозь игрока не разрываясь, (не все, а часть и периодически), сбить их тоже стало проблематичным из-за малого размера.
С игроком проблемы? Подозреваю, что ты размеры хулла не менял. Ни в компиляторах, ни в коде. Уменьшить игрока в два раза можно, влепив ему флаг FL_DUCKING на постоянку. Ну а проджектайлы? Они же и так точечные. Их зачем уменьшать?
Отправлено Ghoul [BB] 02-02-2017 в 11:16:
Цитата:
Ku2zoff писал:
Ну а проджектайлы? Они же и так точечные. Их зачем уменьшать?
Нет, не точечные. У ракет и прочего есть хитбоксы.
Цитата:
Ku2zoff писал:
Подозреваю, что ты размеры хулла не менял.
Размеры хула тоже уменьшил сообразно, в коде.
В компиляторе карты не менял и карту не перекомпиливал, это и не нужно было - размер на карте влияет, чтоб игрок во все дырки мог пролезть, в какие он должен.__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
Отправлено Ku2zoff 02-02-2017 в 14:10:
Короче, как я понял, никаким образом модели на сервере не получить, не загружая их заново внутри дллки. Игра по уменьшению хуллов не стоит свеч. Проще увеличить размер карты и заменить обычные темпэнтити кастомными. Ну и исправить прочие недочёты, которые возникнут из-за увеличившегося размера карты.
Отправлено Дядя Миша 02-02-2017 в 15:16:
Ku2zoff физэнты от визентов отличаются только тем, что в физэнты не попадают несолидные. А радиус тот же.
Цитата:
Ku2zoff писал:
Судя по комментарию, объекты будут не только доступные для коллизии, но вообще все отрендеренные в данный момент.
Никогда не читай вальвовские комментарии и не верь им.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Crystallize 02-02-2017 в 15:58:
Цитата:
Дядя Миша писал:
Никогда не читай вальвовские комментарии и не верь им.
Оппа, что-то новенькое.