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

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!

OpenGothic - опенсорсная реализация движка Готики2

Try

Участник форума
Регистрация
27 Дек 2019
Сообщения
108
Благодарности
422
Баллы
145
  • Первое сообщение
  • #1
OpenGothic

О пакете Описание Технологии Совместимость Командная строка


  • Ресурсы портала: World of Gothic.ru
    Страна разработчика: Норвегия
    Платформа игры: Кроссплатформенный (Gothic I Classic, Gothic I Sequel, Gothic II Classic, Gothic II NoTR)
    Тип обновления: github-release
    Рабочее название: OpenGothic
    Версия пакета: 1.0.1878
    Язык: Независимо от языка
    Вес: 108 МБ
    Статус: Бета (тестирование)
    Дата релиза: 16.07.2019, 22.01.2023
    Дата обновления: 04.10.2020
    Авторы: Try


    Последний год понемногу после работы пилю свой собственный ремейк оригинальной Готики.
    Пакет работает по принципу замены оригинального *.exe-файла, движок считывает оригинальные текстуры, модели, скрипты из папки игры.




  • Основной игровой процесс завершен, вы можете завершить первую главу за любую гильдию, а также пройти весь контент дополнения.

    Что уже работает:
    • Квесты
    • Диалоги
    • Ближний бой
    • Лук
    • Интерактивные объекты(наковальня, рунный стол и т.п.)
    • Инвентарь
    • Прокачка(кроме взлома)

    Скриншоты:
    scr0.png
    scr8.png
    scr7.png
    scr1.png


    Еще скриншоты: Try/OpenGothic



  • Используемые технологии:
    Vulkan - графика
    OpenAL(модифицированный) и tsf- звук
    Bullet - физика
    ZenLib - чтение ассетов оригинала



  • Совместимость с пакетами расширений скриптов, движка:
    • Поскольку реализация полностью самостоятельная, совместимости с плагинами, сделанными с использованием SP/Union/AST/Lego/Ikarus/G2EXT - нет и быть не может.
    • Не ожидайте, что мод DirectX11 будет работать, так как технически это не мод. Но графика из коробки уже подтянута до современного уровня.

    Совместимость с модами:
    Изначально планируется полная совместимость с "обычными" модами(скрипты + контент).
    • Модификации поставляемые в виде *.mod-файлов и созданые стандартными средствами ГМДК1 и/или ГМДК2 должны работать без проблем, так как они содержат только игровой контент и скрипты.
    • Модификации созданные с помощью UNION/AST-SDK или любых других скриптовых и движковых расширителей НЕ будут работать, так как оригинальные движки Gothic НЕ совместимы с движком OpenGothic в двоичном формате.

    Список поддерживаемых функций дедала в вики проекта: Try/OpenGothic



  • Аргументы командной строки:
    -g - указать каталог игры Готика
    -nomenu - пропустить главное меню
    -w <worldname.zen> - загрузка мира; newworld.zen по-умолчанию
    -save <q> - запуск с быстрого сохранения
    -window - оконный режим
    -rambo - уменьшает урон игрока до 1hp
    -v -validation - включить режим проверки Vulkan



Ссылки:
Github
: Try/OpenGothic
Ссылка на стабильный бетта-билд: Try/OpenGothic
Ссылка на nightly билд: AppVeyor

Nightly содержит самые актуальные изменения в коде и обновляется почти ежедневно, но не тестируется, перед публикацией.
Betta - протестированные вручную билды, с подробной историей правок между билдами. Обновляется примерно два раза в год.

Запуск:
cmd> Gothic2Notr.exe -g "C:\Program Files (x86)\Path\To\Gothic II"
Для правильной работы на Windows, может, понадобится установить Vulkan-runtime: LunarXchange

Интересно узнать мнение о проекте, работает/не работает; если не работает - просьба прикладывать файл crash.log
 
Последнее редактирование:

Try

Участник форума
Регистрация
27 Дек 2019
Сообщения
108
Благодарности
422
Баллы
145
Выложил сборку 1.0.732
34.png

  • Основные
    • Добавлена механика взлома замков
  • Графика:
    • Добавлен эффект прозрачности для воды
    • Добавлено отложенное освещение
    • Оптимизирована анимация
    • Добавлена анимация для окон диалогов
  • API скриптов:
    • AI_UseItemToState теперь поддерживает все возможные значения аргумента state
    • Добавлена функция snd_play3d
    • Добавлена функция wld_setmobroutine
  • Исправление ошибок:
    • Исправлено деление на ноль в расчетах физики
    • Исправлено выравнивание текста в документах
    • Больше нельзя взаимодействовать с миром, если герой мертв или лежит без сознания
    • Исправлен переход из анимации SIT в анимацию Talk
    • Исправлена камера в диалогах, при разговоре с не человеческими npc
Также я создал отдельный канал на youtube для видео по opengothic, на мой личный youtube видео больше выкладываться не будут.
Выложил на канал opengothic 2 видео с прохождением:

 

Try

Участник форума
Регистрация
27 Дек 2019
Сообщения
108
Благодарности
422
Баллы
145
Выложил сборку 1.0.769
36.png

  • Основные
    • Добавлена поддержка механики ныряния и плавания под водой
    • Откалибрована игровая камера, для более плавной картинки
  • Графика
    • Доработал реализацию Nishita sky shader
    • Добавлен эффект тумана
    • Добавлена поддержка флага C_ParticleFX::useEmittersFOR
  • Скриптовое api
    • Уменьшено расстояние поиска free-point (20m -> 5m)
  • Исправления ошибок
    • wld_settime теперь сбрасывает состояние MOBSI
    • Исправлен подсчет свитков заклинаний в инвентаре
    • Более нельзя сохранить игру если персонаж мертв
    • Меню диалогов теперь поддерживает управление стрелками клавиатуры (#88)

Также начал осваивать Reddit
 

Try

Участник форума
Регистрация
27 Дек 2019
Сообщения
108
Благодарности
422
Баллы
145
MaGoth написал(а):
- реализацию нормальной куклы для Гг на уровне двига с возможностью юзания всякого разномастного оружия ближнего/дальнего и прочего боя с полными наборами ключиков для аним по движку, пример такого расписывал тут:: https://worldofplayers.ru/threads/37589/
См., спойлер первого поста., особо интересно было бы видеть оружие на гибкой сцепке.
Предлагаю нашу переписку с gamedev перенести сюда, поскольку речь про моддинг.
Предлагаю вместо кучи новых флагов(ITEM_HAM, ITEM_2HD_HAM, ITEM_SPR, и т.д.) предложенных в оригинальном посте сделать один новый класс:
C++:
class C_WeaponScheme {
  var string wearSlot[2];           // первый слот - основной, второй для дуалов
  var string animationTag;          // тег для анимации
  var string animationOverlays[3];  // оверлеи для анимаций (30% владения, 60%, 90% соответственно)
  var int    allowDual;             // TRUE, если можно одеть два меча
  }

Использование:
C++:
instance Wsc_Spear(C_WeaponScheme)
{
  wearSlot[0]  = "zs_sword";
  animationTag = "1HSpr";
  allowDual    = FALSE;
}

instance ItMw_Spear(C_Item)
{
  ...
  scemeName = "Wsc_Spear"; // scemeName, в ваниле для оружия вроде бы не задействована никак
}
Плюсы реализации - я смогу быстро внедрить это один раз в OpenGothic и больше не возвращаться ради новых типов оружия.
Со стороны модов будем иметь простое и гибкое апи.
 

Raswen

Гражданин Хориниса
Регистрация
18 Фев 2014
Сообщения
1.352
Благодарности
784
Баллы
260
Вид, конечно, суперский. Даже столь отдалённую Эсмеральду видно чётко.
 
Последнее редактирование:

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.301
Благодарности
4.636
Баллы
625
Предлагаю нашу переписку с gamedev перенести сюда, поскольку речь про моддинг.
Предлагаю вместо кучи новых флагов(ITEM_HAM, ITEM_2HD_HAM, ITEM_SPR, и т.д.) предложенных в оригинальном посте сделать один новый класс:
Но точно не так. Ты то без проблем добавишь поле в скриптовый класс, а в движке так не прокатит. Мы стараемся не менять оригинальные поля и не вводить дополнительные классы без особой нужды. Иначе их потом сложно согласовать с другими модами. Так что сильно не спеши с этой идеей, неизвестно когда она получит свою реализацию и надо ли этим заниматься в принципе.
 

KirTheSeeker

Участник форума
Регистрация
18 Авг 2017
Сообщения
1.928
Благодарности
558
Баллы
275
Приветствую всех.
Try, а возможно ли будет, на данной реализации движка, ЗНАЧИТЕЛЬНО увеличить лимит полигонов и размер локаций?
Если конкретнее, мне интересна возможность слепить все "миры" на Хоринисе в один нормальный остров.
 

KirTheSeeker

Участник форума
Регистрация
18 Авг 2017
Сообщения
1.928
Благодарности
558
Баллы
275
Типа как для переключения глав?
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.301
Благодарности
4.636
Баллы
625
Ну как один из множества возможных вариантов, да.
 

Try

Участник форума
Регистрация
27 Дек 2019
Сообщения
108
Благодарности
422
Баллы
145
а возможно ли будет, на данной реализации движка, ЗНАЧИТЕЛЬНО увеличить лимит полигонов и размер локаций?
В текущей реализации у меня уже используются 32х битные индексы - т.е. в модели может быть не более чем (2^32)/3 треугольников.
1 431 655 765 треугольников должно хватить на один нормальный остров?)
Пост автоматически объединён:

Ты то без проблем добавишь поле в скриптовый класс, а в движке так не прокатит.
Ты имеешь ввиду ванильный движок? Потому что, в OpenGothic у меня позднее связывание( почти как в java ) и нет проблемы добавить/убрать поле из общего класса.
 
Последнее редактирование:

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.301
Благодарности
4.636
Баллы
625
Ты имеешь ввиду ванильный движок? Потому что, в OpenGothic у меня позднее связывание( почти как в java ) и нет проблемы добавить/убрать поле из общего класса.
Да. Там выбирается кусок памяти из объекта класса, с которым скрипты будут работать напрямую. Вот класс oCNpc и блок от idx до parserEnd, смещение к которому задается в момент инициализации парсера.
1604875599320.png
 

Goth_Man

Участник форума
Регистрация
27 Окт 2014
Сообщения
196
Благодарности
33
Баллы
190
Дальнейшее развитие модов игры я себе просто не мыслю без расширения функционала, а тут с костылями, несмотря на все достоинства нового движка, совсем не как.
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.815
Баллы
995
Предлагаю нашу переписку с gamedev перенести сюда, поскольку речь про моддинг.
не проблема.. :)

Предлагаю вместо кучи новых флагов(ITEM_HAM, ITEM_2HD_HAM, ITEM_SPR, и т.д.) предложенных в оригинальном посте сделать один новый класс:
идея конечно интересная и скорее всего подошла бы для реализации разномастных дуалов, те в разные руки можно брать разные типы 1Н оружия.. а вот для нашей идеи хз как-то не вижу этой системы нормально.. или я думаю гот стандартами ?!
те смотри, в оригинале у нас есть кукла Гг условно говоря с 4-я слотами, (по 1-му в руках, 1 на бедре, 1 за спиной, тут я про оригинальную модель от РВ толкую), двиг с ними работает через классы и прочие эвенты посредством головного хидера Humans.MDS.
Отсюда вопрос, как будет разгрничиваться анима если не будет флагов и ключиков для этого соответствующих ?! я о разных типах оружия одного и того же вида, как пример меч/шпага/сабля. В оригинале для всего этого одна анима 1Н, даже для топора/палки она же, что есть убого..
И именно от этого мы и хотим уйти, как минимум, а как максимум, добавить в игру максимальное количество разнопланового оружия, которое имело бы место в это время (средневековье) по игре..
те 1 класс, оно может и хорошо, но я пока не понимаю как он может разрешить эти вопросы, и вообще как у тебя реализован класс 1Н с анимой, можешь схему примерно описать, как в ЗенГине или..?!

C++:
class C_WeaponScheme {
  var string wearSlot[2];           // первый слот - основной, второй для дуалов
  var string animationTag;          // тег для анимации
  var string animationOverlays[3];  // оверлеи для анимаций (30% владения, 60%, 90% соответственно)
  var int    allowDual;             // TRUE, если можно одеть два меча
  }
интересно да.., сюда еще несколько стрингов закинуть бы, да массивы увеличить до 5 минимум, и думаю норм. было бы, хотя.. :)

C++:
instance Wsc_Spear(C_WeaponScheme)
{
  wearSlot[0]  = "zs_sword";
  animationTag = "1HSpr";
  allowDual    = FALSE;
}

instance ItMw_Spear(C_Item)
{
  ...
  scemeName = "Wsc_Spear"; // scemeName, в ваниле для оружия вроде бы не задействована никак
}
scemeName - в оригинале используется для воспроизведения аним по рутине непеся(например, готовка у плиты, мытье полов и т.д..) в боевке не пользовалось..
и как оно будет согласоваться с уровнями владения ? нумеровать их будем 1,2,3 или ?!

Плюсы реализации - я смогу быстро внедрить это один раз в OpenGothic и больше не возвращаться ради новых типов оружия. Со стороны модов будем иметь простое и гибкое апи.
и это хорошо..
вообщем, надо будет взвесить и обсудить все за и против ввода/не ввода и т.д. всего этого дела..

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

Try

Участник форума
Регистрация
27 Дек 2019
Сообщения
108
Благодарности
422
Баллы
145
Отсюда вопрос, как будет разгрничиваться анима если не будет флагов и ключиков для этого соответствующих ?!

Нужно будет брать поле "item->scheme", по нему уже брать инстанс класса C_WeaponScheme и смотреть поле C_WeaponScheme::animationTag.
Кода тег получен, то уже по нему движок будет искать правильную анимацию:
C++:
// псевдо-код
const Animation::Sequence* findAtackMove(CWeaponScheme& scheme) {
  char buf[256] = {};
  snprintf(buf,sizeof(buf),"T_%sATTACKMOVE", scheme.animationTag.c_str());
  return findByName(buf);
 // Если схемы нет, тогда - по старинке, через флаги.
  }

Теги анимации:
DEF_FIGHTMODE, который и так избыточен, будет только сигнализировать что оружие нужно переложить в руку/обратно в слот.

и как оно будет согласоваться с уровнями владения ? нумеровать их будем 1,2,3 или ?!
Каждый уровень владения - это по сути просто оверлей для анимации. Оверлеи прописываются в C_WeaponScheme::animationOverlays
 

DillianS

Участник форума
Регистрация
9 Дек 2020
Сообщения
4
Благодарности
0
Баллы
55
Доброго времени суток! Такой вопрос - Готика полностью играбельна? И если нет, то есть примерные даты окончания работы над проектом?
 

Try

Участник форума
Регистрация
27 Дек 2019
Сообщения
108
Благодарности
422
Баллы
145
Доброго времени суток! Такой вопрос - Готика полностью играбельна? И если нет, то есть примерные даты окончания работы над проектом?
Привтет @DilianS! Извиняюсь за поздний ответ - давно на сайт не заходил.

Основная часть работы завершена, по оставшейся работе можно выделить:
1. Заклинания. В последней бета-сборке совсем никак, а в деве сейчас уже прибавились превращения и огненная буря (и другие заклинания-снаряды с уровнями урона)
2. Физики твердых тел. В бете оружие совсем не падает, в деве - физика работает, но тормозит
3. Факел
 

Try

Участник форума
Регистрация
27 Дек 2019
Сообщения
108
Благодарности
422
Баллы
145
Выложил сборку 1.0.908
37.png


  • Основное
    • Теперь можно доставать/убирать оружие во время диалога
    • Добавлено сообщение "слишком далеко", для интерактивных объектов
    • Скорость поворота персонажа мышкой подогнана по оригинал
    • Добавлен фокус боя "box"
    • Добавлена возможность выбрасывать предметы из инвентаря на землю
    • Побежденный npc теперь роняет оружие на землю
    • Доработаны анимации подтягивания, вскарабкивания
    • Добавлена анимация подберания предмета
  • Графика
    • Цвет тумана теперь рассчитывается процедурно и коррелирует с цветом неба
    • Оптимизирована скелетная анимация
  • Api скриптов
    • Добавлена функция wld_stopeffect
    • Добавлена функция ai_gotoitem
    • Добавлена функция wld_detectitem
    • Изменено поведение функции AI_UseMob, для случая, когда MOBSI слишком далеко от npc
    • Добавлены эффекты: screenblend.scx, morph.fov
    • Добавлена поддержка колбека PLAYER_PERC_ASSESSMAGIC
  • Исправления
    • Больше нельзя назначить одну и ту же кнопку на 2 разных действия
    • Добавлен воркэроунд для процедуры B_StopMagicFreeze
    • Обработка AI_Atack теперь пропускается, есть у npc нет актиного оружия
    • Исправлено отображение двухсторонних декалей
    • Кнопка '0' (ноль) теперь работает
    • Теперь игровые мню и инвентарь можно закрыть и через ESC и через клавишу назначенную в настройках управления (#95)
    • Исправлена ошибка обработки подводных пещер
    • Множественные исправления доработка управления в инвентаре (#110) (#111)

Давно не публиковал ничего, потому что много чего было начато, по сути ничего не было толком сделано.
Сейчас с билде есть почти работающие заклинания(area of effect не работает), эффект - тоже некоторые работаю хорошо (заморозка/горение), некоторые никак(глаза дракона-нежить)
 

Try

Участник форума
Регистрация
27 Дек 2019
Сообщения
108
Благодарности
422
Баллы
145
Выложил сборку 1.0.1035
1618785278255.png


* Основное
* Добавлены имена для сохранений
* Доработан AI_ProcessInfo, анимация бега теперь останавливается перед началом диалога
* Оптимизирован ZenLib, что существенно сократило время загрузки
* Добавлен oCMobFire - ночное освещение в городе теперь работает
* Начата работа над факелом

* Графика
* Добавлена поддержка анимации морфингом: лицевая анимация теперь работает
* Сущевственно улучшены тени: работают быстрее и тень получается более четкая
* Улучено поведение камеры, проверка коллизий с ландшафтом для камеры
* Добавлена поддержка "лент" для эффектов

* Api скриптов
* Bugfix: переменная HERO, теперь корректно инициализируется, прежде чем вызывать какие-либо скрипты(initScripts)
* Добавлена overlay-очередь (npc теперь правильно произносят фразы приветствий, например "For the king!")

* UI
* Множество улучшений UI, подгонка под поведение оригинальной игры (#135)

Релиз на github'е: gothic-win32-v1.0.1035 · Discussion #137 · Try/OpenGothic
 
Сверху Снизу