• Уважаемые гости и новички, приветствуем Вас на нашем форуме
    Здесь вы можете найти ответы практически на все свои вопросы о серии игр «Готика» (в том числе различных модах на нее), «Ведьмак», «Ризен», «Древние свитки», «Эра дракона» и о многих других играх. Можете также узнать свежие новости о разработке новых проектов, восхититься творчеством наших форумчан, либо самим показать, что вы умеете. Ну и наконец, можете обсудить общие увлечения или просто весело пообщаться с посетителями «Таверны».

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!
  • Друзья, доброго времени суток!
    Стартовал новый литературный конкурс от "Ордена Хранителей" - "Пираты Миртанского моря".
    Каждый может принять в нём участие и снискать славу и уважение, а в случае занятия призового места ещё и получить награду. Дерзайте
Spacer.NET - редактор миров [G1 & G2NR]

Готика 2: НВ Spacer.NET - редактор миров [G1 / G2NR] 1.27

LikerGothic


Модостроитель
Регистрация
11 Фев 2017
Сообщения
1.676
Благодарности
2.532
Баллы
450
  • Первое сообщение
  • #1
Spacer.NET (G1 / G2NR)

Версия игры: "Готика 1 (1.08k_mod), Готика 2 Ночь Ворона"
Страна разработчика:
Россия
Тип: Плагин для Union
Рабочее название: Spacer.NET
Версия: стабильная
Язык: Русский, English, German, Polish, Czech
Размер: ~2 МБ
Автор: LikerGothic
Разработчики: LikerGothic, Patrix, Haart, Saturas, Gratt, Jr13San
Тестеры: Haart, Adept, Jr13San
Статус: выходят обновления
Требования: .NET Framework 4.0, Union 1.0l+

Исходный код:


Уроки по SpacerNET: Ссылка

Основные цели:
  • Максимальная автоматизация процесса вобинга
  • Удобство в работе
  • Нелагающий интерфейс
Основные фишки:
  • Максимально похожий по виду интерфейс на старый спейсер
  • Иерархичное копирование вобов (дети-вобы копируются вместе с родителем)
  • Удобная манипуляция вобом (коллизии не мешают его перемещать и вращать)
  • Изменение родителя для воба
  • Некоторые настройки "под себя"
  • Предпросмотр моделей, PFX-эффектов, итемов
  • Поддержка VobTree
  • Поддержка extended-классов (можно через Юнион создать воб нового типа, и он будет здесь работать)
  • Удобное редактирование содержимого сундуков
  • Настройки отображения FPS, кол-ва вобов и т.д.
  • Поддержка dx11 Ссылка (spacer_net требует особой версии dx11, она по ссылке)
  • Новые возможности, по сравнению со старым спейсером
1.JPG
2.JPG
3.JPG
4.JPG
5.JPG
6.JPG
7.JPG
8.JPG
9.JPG
10.JPG
11.JPG
12.JPG
13.JPG
14.JPG

Управление можно настроить под себя в специальном окне.

Камера:

Зажать ПКМ (правая кнопка мыши) + WASD перемещение, вверх - пробел, вниз - X, перемещать мышь для вращения камеры.
Колесико мышки - быстрое перемещение в направлении взгляда (не работает на готике 1)

Управление выделенным вобом:
  • Выделение воба : ЛКМ, расширенное выделение: левый ctrl+ЛКМ (выделение vobAnimate, некоторой травы)
  • Клавиша 1 - режим перемещения воба (WASD)
  • Клавиша 2 - режим вращения воба (WASD)
  • Клавиша 3 - соединить/разъединить два вейпоинта (один выделяется через shift+ЛКМ, второй просто выделяется, всё как в старом спейсере)
  • Клавиша 4 - снять выделение с воба
  • Клавиша 5 - переместить выделенный воб перед камерой
  • Клавиша 6 - выбрать режим редактирование bbox объекта (для муверов, зон музыки и тд)
  • Клавиши Q/E - вращение воба вокруг вертикальной оси
Модификаторы:
  • LShift - ускорение перемещения/вращения в 10 раз
  • LControl- замедление перемещения/вращения в 10 раз
Сочетания клавиш:
  • Shift+F прижать воб к поверхности (работает через динамическую коллизию)
  • Shift+R сбросить поворот воба по трем осям, нажимать можно несколько раз
  • Control+C, Control+V - скопировать воб и вставить
  • Control+Z, Control+V - вставить выделенный воб в нового родителя (изменение родителя)
Прочее:
  • ПКМ на выбранной модельке в окне поиска визуалов: скопировать имя модели в буфер
  • ПКМ на списке вобов: удалить воб, сохранить vobTree, вставить vobTree
  • F1 - собрать вобы в vobContainer в выбранном радиусе...
  • F2 - вставить вейпоинт со сгенерированным именем (должен быть выделен другой вейпоинт)
  • F3 - скрыть/показать окна
  • После загрузки спейсера ничего не нажимается, меню неактивно. Ответ: зайти в gothic.ini и проставить там ваше разрешение экрана вручную. zVidResFullscreenX=1920, zVidResFullscreenY=1080 (как пример)
  • После загрузки в Спейсере просто черное окно. Ответ: скорее всего вы установили dx11 от обычной игры. Удалите файл ddraw.dll из папки system или установите dx11 для Спейсера. Однако, компировать миры и свет с dx11 нельзя, поэтому легче тупо удалить его при работе со спейсером.
  • Зажимаю правую клавишу мыши, камера не летит/не вертится. Ответ: зайдите 1 раз в игру (до главного меню), чтобы в systempack.ini записались нужные строки и выйдите. Всё заработает
  • В глобальный список вобов локации самостоятельно добавляются какие-то вобы. Зачем? Ответ: это дочерние вобы от PFX-эффектов. Они добавляются, когда камера подлетает к ним или вы делаете предпросмотр некоторых эффектов из меню, и pfx-эффект активируется. Они не сохраняются в ZEN, так что они не опасны.
  • Как сбросить управление на "по умолчанию"? Ответ: зайти в меню с кнопками и нажать "сбросить по умолчанию"
  • Что за звук падения оружия на землю? Ответ: когда мир загрузился или скомпилился, воспроизводится такой звук-оповещение, потом заменим, если не понравится.
  • После загрузки мира вылет. Ответ: скорее всего ваши скрипты используют Lego/Ikarus, выключите пункт "Отключать музыку при загрузке" в окне звуков.
  • Спейсер вылетает при каких-то действиях: отписать в тему, но скорее всего, у вас используются другие плагины Union/Ninja, которые мешает работе спейсера.

  1. Установить Готику 2 Ночь Ворона
  2. Установить gothic2_playerkit-2.6f/g2mdk-2.6_FULL с распаковкой нужных ресурсов для спейсера
  3. Установить Union 1.0l из Resource manager
  4. Поместить spacer_net.ini в папку system (это нужно сделать только один раз, при обновлении заменять его не нужно)
  5. Поместить SpacerNET.mod в папку Data/ModVDF (при обновлении версий, просто закидывать этот обновленный файл с заменой)
  6. Запустить игру один раз, чтобы появились нужные строки в ини-файлах игры (после установки юниона)
  7. Запустить GothicStarter.exe и там выбрать Spacer.NET
Скачать: По кнопке сверху (Ссылка)

Уроки и решение проблем по SpacerNET: Ссылка
 
Последнее редактирование:

N1kX


Модостроитель
Регистрация
13 Ноя 2009
Сообщения
6.263
Благодарности
5.829
Баллы
940
Спасибо за актуальную версию в мастерской стима.
Получилось открыть мир . А тут можно как-то увидеть названия локаций? Там "Старая шахта", "Долина рудников" и тп. Рыл-рыл, не могу найти..
Ни как. Названия зен файлов делаются такими, чтобы отражать суть локации.
Просто переводишь англ название и получаешь искомое
Oldmine - Старая шахта
 

Vzhik

Участник форума
Регистрация
27 Фев 2020
Сообщения
244
Благодарности
37
Баллы
140
Черт. Ладно, спасиб.
 

KirTheSeeker

Участник форума
Регистрация
18 Авг 2017
Сообщения
1.936
Благодарности
562
Баллы
275
Приветствую всех. Несколько раз столкнулся с данной ошибкой, при попытке сохранить zen после расставления нескольких ламп с вобами освещения:
1736464366741.png
LikerGothic, подскажи, пожалуйста, с чем может быть связана такая проблема?
 

Jr13San


Модостроитель
Регистрация
1 Апр 2010
Сообщения
476
Благодарности
309
Баллы
230

KirTheSeeker

Возможно, что у тебя в какой то момент пропадает указатель на меш (zCWorld::bspTree::mesh).
Затем идёт попытка обращения по нулевому указателю, что приводит к вылету.

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

Попробуй закинуть в папку autorun к Спейсеру этот плагин (см. во вложении "Spacer_CompileWorldTest.dll").
Он выводит в правый верхний угол 2 инфо строчки:
wasCompilied - это статический флаг компиляции мира.
bspTreeMesh - это указатель на меш (если = 0, то возможно именно он приводит к вылету!).
Так что внимательно понаблюдай за указателем "bspTreeMesh" и постарайся запомнить действия, при которых он обнуляется.
SpacerTestParams.jpg


Также включи консоль (SystemPack.ini -> [CORE] -> ShowDebugWindow = true)
В ней будет некоторая информация о вызове функций "zCMesh::LoadMSH()" и "zCBspTree::LoadBIN()". Вызовы этих функций помечены зелёным маркером.
SpacerConsole.jpg


В общем, в случае повторного вылета, скинь сообщения из консоли, начиная со сточки: "ZNOSHAREDFEATURES = ..." в текстовый файл и приложи к сообщению.
Может быть появятся какие-то зацепки.
 

Вложения

  • Spacer_CompileWorldTest.zip
    91,1 KB · Просмотры: 3

KirTheSeeker

Участник форума
Регистрация
18 Авг 2017
Сообщения
1.936
Благодарности
562
Баллы
275
В общем, в случае повторного вылета, скинь сообщения из консоли, начиная со сточки: "ZNOSHAREDFEATURES = ..." в текстовый файл и приложи к сообщению.
Может быть появятся какие-то зацепки.
Понял-принял, благодарю. Буду пробовать.

Итак, сделал всё то же самое - копировал/вставлял лампу и пару новых брусков - и получил ошибку при попытке сохранения. Показатель "bspTreeMesh" ни разу не обнулялся - смотрел на него перед каждым действием.
B2.png

Код:
ZNOSHAREDFEATURES = 0
C#: CLASSIC_NEWWORLD_2025_01_A.ZEN is loading...
zCMesh::LoadMSH(ret = 1, param = '0', '\_WORK\DATA\MESHES\_COMPILED\SPHERE.MSH')
zCMesh::LoadMSH(ret = 1, param = '1', '\_WORK\DATA\WORLDS\NEWWORLD\CLASSIC_NEWWORLD_2025_01_A.ZEN')
zCBspTree::LoadBIN(ret = 1, param = '0', '\_WORK\DATA\WORLDS\NEWWORLD\CLASSIC_NEWWORLD_2025_01_A.ZEN')
BuildClassHierarchy
C#: Tree is ready. GlobalEntries count: 25180
GenerateVobsPos: pList size: 25180
C#: Loading ZEN time... (00:01:11.957)
C#: OnVobRemove: All vobs count: 25179
C#: OnVobRemove: All vobs count: 25178
C#: OnVobRemove: All vobs count: 25177
C#: OnVobRemove: All vobs count: 25176
C#: OnVobRemove: All vobs count: 25175
C#: OnVobRemove: All vobs count: 25174
C#: OnVobRemove: All vobs count: 25173
C#: OnVobRemove: All vobs count: 25172
Copy vob: NW_CITY_WOODBEAM_16 (zCVob) parent:
C#: Vobs count: 25173
C#: TreeView Nodes count: 25173
Copy vob: NW_CITY_OILLAMP_01.3DS (zCVob) parent:
C#: Vobs count: 25174
C#: TreeView Nodes count: 25174
Copy vob: vob1 (zCVobLight) parent: NW_CITY_OILLAMP_01.3DS (zCVob)
C#: Vobs count: 25175
C#: TreeView Nodes count: 25175
Copy vob: vob1 (zCVobLight) parent: NW_CITY_OILLAMP_01.3DS (zCVob)
C#: Vobs count: 25176
C#: TreeView Nodes count: 25176
Copy vob: NW_CITY_WOODBEAM_16 (zCVob) parent:
C#: Vobs count: 25177
C#: TreeView Nodes count: 25177

Jr13San, есть идеи?
 

Вложения

  • ZNOSHAREDFEATURES = 0.txt
    1,4 KB · Просмотры: 2
Последнее редактирование:

Jr13San


Модостроитель
Регистрация
1 Апр 2010
Сообщения
476
Благодарности
309
Баллы
230
Нет, судя по короткому логу, я не увидел явных проблем.
Нужно поставить больше перехватчиков для лога событий, чтобы лучше отследить цепочку вызовов.
Но ещё лучше было бы, если бы я смог воспроизвести эту ситуацию у себя, чтобы лишний раз не дергать тебя по этому вопросу.
И пока что мне не удалось этого сделать. Хотя я тоже пробовал копировать лампы и сохранять zen, но никаких вылетов не было.
Мне надо, чтобы у нас совпал используемый софт и знать последовательность действий, которая с большой вероятностью приведёт к вылету.

Но у меня другой вопрос. Используешь ли ты Spacer.NET совместно с рендером DX11, если да, то какой версии рендер?
Потому что в шапке темы указан какой-то специальный: "GD3D11-17.8-dev12_SpacerNET.7z" или у тебя какой-то кастомный рендер?
 

KirTheSeeker

Участник форума
Регистрация
18 Авг 2017
Сообщения
1.936
Благодарности
562
Баллы
275
Но у меня другой вопрос. Используешь ли ты Spacer.NET совместно с рендером DX11, если да, то какой версии рендер?
Потому что в шапке темы указан какой-то специальный: "GD3D11-17.8-dev12_SpacerNET.7z" или у тебя какой-то кастомный рендер?
Да, использую рендер, который рекомендован автором.

Помимо ламп я ещё двигал новые брусы, модели которых закинул в папку D: ... Gothic_2_ModGame\_work\data\Meshes\Mobs\_work
Возможно, проблема с ними, хотя ранее её не наблюдалось. Возникла при использовании рендера, но на всякий случай приложу эти 3ds.
 

Вложения

  • _work.7z
    851 байт · Просмотры: 3

Jr13San


Модостроитель
Регистрация
1 Апр 2010
Сообщения
476
Благодарности
309
Баллы
230
Помимо ламп я ещё двигал новые брусы
Вряд ли дело только в них... Потому что есть ещё два подобных случая, но уже от других людей.

Есть ещё одно место, которое хотелось бы проверить. Но оно очень глубоко, внутри функции "zCMesh::ShareFeatures()", во вложенных циклах, где обрабатываются свойства вертексов и создаются массивы массивов...
Вот здесь:
UnPtr problem.jpg

Смещение +1196 bytes указывает именно на это место, судя по Иде.
В общем, если смотреть со стороны cpp-кода, то там суть в том, что происходит разыменовывание двух указателей и приравнивание одной структуры к другой.
Компилятор, на этапе сборки, посчитал, что нужно сделать копирование одного участка памяти в другой с помощью функции "qmemcpy()". И вот мне кажется, что в коде один из указателей равен нулю. А нулевой нельзя разыменовывать, это считай сразу краш.

А если смотреть со стороны asm и псевдо-кода, то в "qmemcpy()", в адрес назначения "dst" подставляется 0, что как раз равнозначно записи по нулевому адресу, о чём и говорит нам трассировка стека:
Trace error.jpg

Хотя, это всего лишь догадки... Но проверить надо.

KirTheSeeker

Тот старый плагин можешь удалить, а вместо него возьми другой (см. во вложении SpacerNET_ShareFeaturesTest.zip), его также извлеки в авторан.
Какие особенности нового плагина:
1) Перехвачена и переписана функция "zCMesh::ShareFeatures()". Внутри неё выставлены маркеры действий (отсечки).
Нулевые указатели внутри функции помечены красным маркером (тревожные звонки, о том, что что-то пошло не так). В основном это для твоего визуального восприятия. Мне же придётся работать с отчётом, а не со скриншотом.

2) Теперь, если при сохранении локации появится та ошибка, то она уже будет скорей всего связана с плагином (из за перехвата).
Перед вылетом, теоретически должно появится сообщение: "Возможно сейчас будет вылет...". И как только ты подтвердишь это сообщение, то что-то должно будет произойти.
Либо да - вылет, либо - нет. В момент появления этого сообщения, скопируй на всякий случай, сообщения из консоли в текстовый документ.

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

3) Ещё один важный момент заключается в том, что ты можешь включить "обход стороной" функции "zCMesh::ShareFeatures()", с помощью этого флага:
Skip settings.jpg

Его значения:
0 - использовать функцию (по умолчанию),
1 - идти в обход функции (т.е. НЕ вызывать её при сохранении локации).
Флаг переключается на кнопку "B" (англ.) Выводится в правом верхнем углу окна Спейсера.

Здесь можно провести такой эксперимент. Если тебе кажется, что сейчас при сохранении возможен вылет, то включаешь обход функции, установкой флага в "1".
Затем пробуешь сохранить локацию. Если вылет, то копируешь сообщения из консоли.
Если всё ок, значит пробуешь отключить обход функции, вернув флаг в обычное состояние "0". И затем вновь пробуешь сохранить. Если всё ок, значит обознался.
Если вылет, значит был прав. Тогда копируешь сообщения из консоли.
Так мы можем понять, можно ли временно отключить работу функции "zCMesh::ShareFeatures()" на рендере DX11. А, например, на DX7 вновь её включить, если она там не глючит. Либо сохранение и с "1" даёт вылет (что маловероятно).

Ну, т.е. запомни с "0" - это опасное сохранение, с "1" - это теоретически безопасное. Так ли это будет на самом деле - не известно. Поэтому тебе следует проверить этот момент. Только не спеши, делай всё с чувством, с толком, с расстановкой...

SaveWorldTest.jpg
 

Вложения

  • SpacerNET_ShareFeaturesTest.zip
    98,4 KB · Просмотры: 3
Последнее редактирование:

LikerGothic


Модостроитель
Регистрация
11 Фев 2017
Сообщения
1.676
Благодарности
2.532
Баллы
450
LikerGothic обновил(а) ресурс Spacer.NET - редактор миров [G1 & G2NR] новой записью:

1.24

  1. При работе с dx11 help-вобы теперь имеют текстуру (за код спасибо Jr)
  2. При запуске Спейсера помимо разрешения теперь пишется версия DirectX (7 или 11)
  3. Функция вставки координат из буфера обмена теперь работает лучше
  4. Для поля zCZoneZFog теперь также показывается цвет в интерфейсе окна свойств воба
  5. При удалении воба, у которого есть вложенные вобы, теперь будет появляться окно с подтверждением удаления
  6. В окне координат камеры теперь можно скопировать в...

Узнать больше об этом обновлении...
 

LikerGothic


Модостроитель
Регистрация
11 Фев 2017
Сообщения
1.676
Благодарности
2.532
Баллы
450
LikerGothic обновил(а) ресурс Spacer.NET - редактор миров [G1 & G2NR] новой записью:

1.25

  1. WP и FP теперь выделяются мультивыделением в режиме игнорирования коллизий (кнопка CTRL)
  2. Исправлена ошибка: при копировании и вставки воба его дочерние элементы теперь имеют правильное вращение относительно родителя
  3. Исправление ошибки в имени опции bBlockPlayerUseMobInter (файл spacer_net.ini), в строке была ошибка
  4. При выводе свойств материала воба (в режиме показа V) теперь также выводится поле noCollDet (отсутствие динамической коллизии) и MatGroup (группа...

Узнать больше об этом обновлении...
 

RPD

Участник форума
Регистрация
13 Ноя 2023
Сообщения
122
Благодарности
3
Баллы
40
Приветствую! Немного туполобый вопрос, но все же должен ли спейсернет работать с моделями, текстуры которых изменены на версию textures replacer? Я пытался открывать, но вылетал exception, не было видно курсора в приложении
 

LikerGothic


Модостроитель
Регистрация
11 Фев 2017
Сообщения
1.676
Благодарности
2.532
Баллы
450
RPD, любые текстуры будут работать. Вылет потому что неправильно установлен / или другие плагины стоят.
Нет курсора = удалить dx11
 

RPD

Участник форума
Регистрация
13 Ноя 2023
Сообщения
122
Благодарности
3
Баллы
40
RPD, любые текстуры будут работать. Вылет потому что неправильно установлен / или другие плагины стоят.
Нет курсора = удалить dx11
Окей, вот сейчас у меня стоят нативные текстуры и спейсер с ними работает. Сейчас можно спокойно проводить замену текстур?
 

LikerGothic


Модостроитель
Регистрация
11 Фев 2017
Сообщения
1.676
Благодарности
2.532
Баллы
450
RPD, SpacerNET - это просто интерфейс над движком, все будет подгружать также, ну кроме плагинов, которые могут сломать спейсер.
 

LikerGothic


Модостроитель
Регистрация
11 Фев 2017
Сообщения
1.676
Благодарности
2.532
Баллы
450

LikerGothic


Модостроитель
Регистрация
11 Фев 2017
Сообщения
1.676
Благодарности
2.532
Баллы
450
Обновитесь кто юзал 1.24/1.25, скорее всего ничего не сломалось, но мало ли :)
 

LikerGothic


Модостроитель
Регистрация
11 Фев 2017
Сообщения
1.676
Благодарности
2.532
Баллы
450
LikerGothic обновил(а) ресурс Spacer.NET - редактор миров [G1 & G2NR] новой записью:

1.27

  1. В Контейнере вобов теперь можно перемещаться по списку клавишами вверх/вниз. За код спасибо Jr
  2. В Контейнере вобов теперь можно искать в радиусе только PFX (частицы)
  3. В Контейнере вобов теперь можно искать в радиусе только zCZones
  4. В Контейнере вобов максимальный радиус поиска увеличен до 15000
  5. При выборе опции "перезаписать" во вкладке "Триггеры" кнопка "Новый ключ" теперь будет отображаться как "Перезаписать" для...

Узнать больше об этом обновлении...
 
Сверху Снизу