Как и обещал - выкладываю свежий апдейт ксаш-мода.
Не надейтесь там найти что-либо новое для себя, апдейт по большей части системный, т.е. проделанные изменения касаются фундаментальной организации, а не добавления новых эффектов.
Changelog:
1. убрано просвечивание небесных энтить сквозь 3d sky-комнатку, если комнатка находится прямо над обычным небом. Вы могли столкнутся с тем, что такие энтити рисуются дважды - один раз на небе, а второй раз - напрямую, просвечивая сквозь небесную комнату. Теперь этого нет.
2. исправлен баг с воспроизведением звуков в func_momentary_door
3. общая оптимизация коллизии для env_static при помощи AABB tree (было в теме про багфиксы).
4. env_laser в качестве EndSprite может принимать не только путь к спрайту, но и имя энтити env_sprite (как в спирите), что позволит более гибко настроить его параметры.
5. добавлено поле "master" для предметов. Предмет невозможно подобрать, если тот заблокирован мастером. Это касается только энтить с префиксом item_, для патронов и оружия не работает. Но можно будет добавить, если вы посчитаете это нужным.
6. новая система сериализации и спавна энтить - минуя DLL-экспорты, как в HL2. Основная идея внедрения - облегчение портирования на всякие там линуксы, а так же реализация полноценного поиска по имени поля во всём классе, а не только в структуре entvars_t. Ну и просто чёб показать, на что способен движок Вам понадобится билд не ниже 2148, чтобы данное нововведение смогло правильно работать.
7. новая string-pool система. Вместо старой, где, как вы помните надо было следить в каком месте использовать MAKE_STRING а где ALLOC_STRING, теперь все строки проверяются на дубликаты и пул содержит только уникальные строки, благодаря чему появилась возможность сравнивать напрямую не сами строки, а их идентификаторы, ну и конечно это экономит память.
Новые консольные команды:
dump_entity_sizes - вывести размеры для каждого класса энтить в байтах.
размер определяется кол-вом наследуемых классов. Т.е. если энтитя была унаследована от CBaseEntity то размер, понятно не очень большой. А если это CBasePlayer то приличный.
dump_entity_names - поскольку имена энтить теперь невозможно увидеть при помощи Dependency Walker была введена вот эта команда. Выводит список названий всех имеющихся энтить. Информативность на том же уровне. Но в дальнейшем на основе этой системы можно будет запилить например генератор FGD.
dump_strings - показать все уникальные строки, которые использует string pool.
Дядя Миша писал: ибо старые ксашы всё-таки были устроены совсем по другому.
А вот кстати в старых ксашах все брашевые энтити были разбиваемыми как брейкабли. У них флаг такой специальный был. Можно что-л. подобное сделать в теперешнем ксашмоде?
Да щяз! Сидишь и как в хл2 сначала вбиваешь
BEGIN_DECLARE_DATADESC()
потом перечисление полей.
Основной профит тут в том, что раньше это перечисление использовалось только для сейва, а теперь может быть использовано для всего.
Цитата:
Ku2zoff писал: Можно что-л. подобное сделать в теперешнем ксашмоде?
Оно просто не нужно с новой парент системой. Ты просто аттачишь к маленькой невидимой func_door большой func_breakable и достигаешь того же самого эффекта. И не надо мне тут возражать про увеличение кол-ва используемых энтить, как ты обычно любишь цепляться к самой надуманной ерунде.
Дядя Миша
Вот в чём прелесть виртуальных машинок - так это в том, что можно сделать специально обученный компилятор, который будет для тебя эти символы сохранять в нужные таблицы.
XaeroX писал: Вот в чём прелесть виртуальных машинок
в виртуальных машинках обычно пишут "public static void", а я так писать не хочу. К тому же они расхолаживают, освобождают человека от ответственности - не буду проверять указатель на валидность, пускай интерпретатор проверяет, не буду память высвобождать, пускай коллектор сам собирает. Потом мы имеем тысячи жутких программ на шарпе, которые требуют двух ядерного проца для своего запуска при функционале паинта. Ну ладно, это уже оффтоп. Если у кого-то еще есть интересные соображения по этой теме, я отрежу этот кусок в самостоятельную тему и перенесу во флуд.
>> убрано просвечивание небесных энтить сквозь 3d sky-комнатку, если комнатка находится прямо над обычным небом. Вы могли столкнутся с тем, что такие энтити рисуются дважды - один раз на небе, а второй раз - напрямую, просвечивая сквозь небесную комнату. Теперь этого нет.
А тот момент о котором ты говорил (когда 3д скай находится в той же коробке где и игрок, пропадают все энтитии) ты пофиксил или оставил?
Впрочим серавно вриатле такое на практике попадётся.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
FiEctro писал: А тот момент о котором ты говорил (когда 3д скай находится в той же коробке где и игрок, пропадают все энтитии) ты пофиксил или оставил?
Это не исправляется, если в формате карт нету ареа-порталов. Так или иначе просвечивание было серъезной проблемой, а вот ставить env_sky рядом с игроком никому не нужно.
Дядя Миша писал: 4. env_laser в качестве EndSprite может принимать не только путь к спрайту, но и имя энтити env_sprite (как в спирите), что позволит более гибко настроить его параметры.
Я тут только что с переходами между уровнями начал возиться и заметил что эти самые переходы не работают. При проходе через trigger_changelevel, абсолютно никакой реакции. Сначала не мог понять в чем дело, вроде все делаю правильно и раньше все работало. Потом попробовал использовать более раннюю версию ксашмода и все снова заработало. (xash0.61_update1 - server.dll) Проверьте кто-нибудь, это действительно с новым апдейтом связано, или я что-то не так сделал.. (Потому что я могу, да )
Видимо мысль изложил невнятно, раз ты меня не понял. Я предполагаю что в "XashXT 0.62 cumulative update" какой-то баг с переходами, поскольку в ранних версиях все работает нормально. Проверить попросил чтобы отследить как работает у других.