Войти
ПроектыФорумОцените

Готика 2 - ремейк (5 стр)

Advanced: Тема повышенной сложности или важная.

Страницы: 1 2 3 4 5
#60
(Правка: 22:54) 22:52, 29 июля 2020

Try
> Да точно также, поскольку за эту часть отвечают скрипты игры
А вот это интересно. В Gothic часть игровой логики написана на скриптах, хранящихся в данных игры?
А что тогда делает непосредственно движок? Что из игровой или околоигровой логики там есть? Физическое взаимодействие? Поиск пути? обработка анимаций? Поясни, пожалуйста.

Кстати, если логика вся в скриптах, то, может быть, есть возможность запустить на твоём движке и Gothic 1? Или же там есть какие-то различия?


#61
(Правка: 30 июля 2020, 0:00) 23:59, 29 июля 2020

Panzerschrek[CN]
> А что тогда делает непосредственно движок?
Делает графику, физику, поиск путей, звук. Я понимаю, что такое объяснение весьма абстрактное, лучше на примере:

// фрагмент скрипта AI орка
INSTANCE FA_MY_W_FOCUS_12 (C_FightAI)
{
  move[0] = MOVE_ATTACK;
  move[1] = MOVE_SIDEATTACK;
  move[2] = MOVE_TRIPLEATTACK;
  move[3] = MOVE_WAIT;
  move[4] = MOVE_WAIT;
  move[5] = MOVE_WAIT;
};
FA_MY_W_FOCUS - описание игровой ситуации, озачает что враг находится в "фокусе боя"
12 - id тактики боя(берется из npc.fight_tactic)

При обработке команды AI_Atack из ai-очереди, движок должен создать объект:

auto fai = new C_FightAI(gameStateToStr()+to_string(npc.fight_tactic));
auto inst = fai->move[rand()%fai->move.size()];
// далее нужно выполнить выбранную инструкцию

Чуть более содержательный пример:

func int ZS_Sleep_Loop()
{
  if(!C_BodyStateContains(self,BS_LIE))  // npc еще не в кровати
  {
    if(Wld_IsMobAvailable(self,"BEDHIGH")) // ищем кровать
    {
      AI_UseMob(self,"BEDHIGH",1); // добавляем в очередь команду на использование кровати
    }
    else if((Player_GetOutOfMyBedComment == FALSE) && C_BodyStateContains(hero,BS_LIE) 
            && (Npc_GetDistToNpc(self,hero) <= 500))
    {
      B_TurnToNpc(self,hero);
      B_Say(self,other,"$GETOUTOFMYBED"); // npc жалуется на игрока: "вылезай из моей кровати!" (звук+анимация)
      Player_GetOutOfMyBedComment = TRUE;
    };
  };
  // LOOP_CONTINUE - это часть "фреймворка" поведения персонажей
  // если бы вернули LOOP_END, то движок обязан вызвать ZS_Sleep_End, а потом
  // определить новое состояние с ново *_LOOP функцией
  return LOOP_CONTINUE; 
};

Скрптовое апи богатое, высокоуровневое, и иногда непоследовательное, я для себя даже вики написал, чтобы в голове не держать все детали:
https://github.com/Try/OpenGothic/wiki/Daedalus-scripts

> Кстати, если логика вся в скриптах, то, может быть, есть возможность запустить на твоём движке и Gothic 1?
Апи отличается, расчет урона отличается, может еще-что - я сильно первую готику не тестил
1 | Готика 2 - ремейк

#62
16:56, 4 окт. 2020

Выложил сборку 1.0.732
Изображение

Основные
  Добавлена механика взлома замков
  Добавлен кодек для BINK видео - игровые видеоролики теперь работают

Графика
  Добавлен эффект прозрачности для воды
  Добавлено отложенное освещение
  Оптимизирована анимация
  Добавлена анимация для окон диалогов

API скриптов
  AI_UseItemToState теперь поддерживает все возможные значения аргумента state
  Добавлена функция snd_play3d
  Добавлена функция wld_setmobroutine* Исправление ошибок:
  Исправлено деление на ноль в расчетах физики
  Исправлено выравнивание текста в документах
  Больше нельзя взаимодействовать с миром, если герой мертв или лежит без сознания
  Исправлен переход из анимации SIT в анимацию Talk
  Исправлена камера в диалогах, при разговоре с не человеческими npc

Также я создал отдельный канал на youtube для видео по opengothic, на мой личный youtube видео больше выкладываться не будут.
Выложил на канал opengothic 2 видео с прохождением:

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры

#63
17:27, 4 окт. 2020

Try бинды-то в отличие от нативной - теперь сменные? все сижу жду, хотя и не отслеживаю пошагово, игра сама нравилась, но  раскладка бесила страшно

#64
17:44, 4 окт. 2020

refroqus
Может я не совсем понимаю о чем ты, но и у меня и в оригинале есть настройки управления имеются

#65
18:28, 4 окт. 2020

Try
> Добавлено отложенное освещение
А это ещё зачем? Делать много динамических источников света?
Вообще, каковы планы по переделке оригинального освещения? Что осталось, что добавлено?

#66
19:20, 4 окт. 2020

Panzerschrek[CN]
> А это ещё зачем? Делать много динамических источников света?
В целом да - чтобы большое количество источников освещения не создавало тормозов.
В прошлом билде освещение было форвардом(с лимитом на 16 источников освещения для объекта), но такой подход не всегда работал хорошо, особенно в местах где много мелких источников света.
Сейчас все работает четко, и быстрее. Старую имплементацию с форвардом полностью не удалял - пригодится для прозрачных объектов.

> Вообще, каковы планы по переделке оригинального освещения?
Тут не переделка, а скорее наоборот - максимально правильная реализация оригинальной системы освещения, без упрощений сделанных в старом dx7 рендере.
Осталось:
  Факел (там не рендером проблемы, а с игровой механикой)
  Фонари (тоже с механикой проблема - неизвестно точно как и чем они включаются)
  Конические источники света(в редакторе они есть, но в самой игре не видел)
  Тени от локальных источников света
  GI (пока не знаю SSAO/SSDO буду делать)

#67
(Правка: 7:06) 6:58, 16 окт. 2020

Круть

#68
1:06, 26 окт. 2020

Можно поинтересоваться, в чём смысл проекта?
Планируется точное копирование для последующей замены графики
на современную (модели новые, текстуры, шейдеры), или нет?
Если нет, то я не понял. Если да, то круто.

#69
1:23, 26 окт. 2020

Я бы не стал менять ассеты, мне очень нравятся текущие ассеты и текстуры, но было бы неплохо переделать освещение, сделать тени, посчитать индирект, может где-то сгенерить бампмапы, а то всё уж очень плоское. Переделать все ассеты на ПБР - это конечно из области фантастики, это непосильный объём работы совершенно, но кое-где руками подтюнить бы. Сделать HDR нормальный опять же.

#70
20:36, 27 окт. 2020

Try
> Фонари (тоже с механикой проблема - неизвестно точно как и чем они включаются)
они всегда факелом включались или любым другим источником огня, например огненная стрела из лука или закл и прочая, прочая. вроде так...

Страницы: 1 2 3 4 5
ПроектыФорумОцените