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

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

Не стесняюсь спросить....

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.300
Благодарности
4.633
Баллы
625
Я конечно не особо компетентен в вопросах 3д, но насколько я помню г1 умеет в LOD миров. А для правильной его работы меш должен быть не бездумно порезан, а распределен на сегменты примерно равной площади.
И вообще давно бы скинул исходник локации пощупать. Пальцем в небо тыкать можно вечно.
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.815
Баллы
995
На 66 485-ти вершинах уже сохраняется без ошибки. Вот только это ограничение меня дико напрягает. Крайне трудно уложиться в эти рамки
если я правильно помню то 65535 это ограничение экспортера макса, поэтому тут ловить нечего..

Проверил оригинальный мир Г1, он ~67к вершин. То есть практически подобрался к пределу. Но вот есть, например, ReloadMod, в котором оригинальная колония значительно прибавила в полигональности. Как они смогли это сделать, если 67к, судя по всему, потолок?
в Релоаде Андре то ли хукал то ли переписывал БСП-дерьмо игры под ДХ11, не помню уже..
побного говна в г2 нет(формат изменен), оттого там и нет проблем с этим, а в г1 эта хрень юзается повсюду для мира, отсюда и грабли с ограничениями..
выход: сокращай вершины до указанного числа..
 
Последнее редактирование:

Trazege

Участник форума
Регистрация
20 Фев 2008
Сообщения
1.760
Благодарности
1.394
Баллы
340
Вопрос к знатокам с++ - возможно ли заставить скрипты или юню определить- используется ли игрой дх11 или нет? Или это возможно только если чекать это через сам модуль дх?
 

N1kX


Модостроитель
Регистрация
13 Ноя 2009
Сообщения
6.101
Благодарности
5.592
Баллы
910
Пусть кто-нибудь переведет на юню
Daedalus:
var int D3D11_enabled;
func void CheckDx11()
{
    var int lib; lib = LoadLibrary("ddraw.dll");
    
    if (lib)
    {
        var int adr; adr = GetProcAddress(lib, "GDX_AddPointLocator");
    
       if (adr)
       {
           D3D11_enabled = true;
       }
       else
       {
         D3D11_enabled = false;
       };
    };

};
 

Dimus

★★★★★★★★★
Супермодератор
Регистрация
19 Июл 2010
Сообщения
5.574
Благодарности
4.167
Баллы
915
Зачем использовать глобальную переменную D3D11_enabled, если можно возвращать результат функции CheckDx11() (true или false)?
Daedalus:
func int CheckDx11()
{
    var int lib; lib = LoadLibrary("ddraw.dll");
    
    if (lib)
    {
        var int adr; adr = GetProcAddress(lib, "GDX_AddPointLocator");
    
       if (adr)
       {
           return true;
       }
       else
       {
         return false;
       };
    };
    return false;
};
 

alexeich2019

Участник форума
Регистрация
28 Июн 2019
Сообщения
191
Благодарности
73
Баллы
175
Dimus, я так понял, @NikX предложил один раз вызвать CheckDx11 при инициализации готики, а потом уже пользоваться переменной. Рендер Dx11 загружается с игрой, соответственно, если D3D11_enabled == true, значит Dx11 включен, нет смысла дергать функции проверки. Оптимизация.
 

Myxomop

Почетный форумчанин
Регистрация
28 Май 2005
Сообщения
3.239
Благодарности
2.581
Баллы
455
alexeich2019,
Если проверка не вызывается через циклическую функцию раз в секунду или меньший промежуток времени, то и на игровую производительность она никоим образом не повлияет, а значит нет смысла делать лишние глобальные переменные. Оптимизация.
 

N1kX


Модостроитель
Регистрация
13 Ноя 2009
Сообщения
6.101
Благодарности
5.592
Баллы
910
Зачем использовать глобальную переменную D3D11_enabled, если можно возвращать результат функции CheckDx11() (true или false)?
Daedalus:
func int CheckDx11()
{
    var int lib; lib = LoadLibrary("ddraw.dll");
   
    if (lib)
    {
        var int adr; adr = GetProcAddress(lib, "GDX_AddPointLocator");
   
       if (adr)
       {
           return true;
       }
       else
       {
         return false;
       };
    };
    return false;
};

Если уж пошло на оптимизацию, последний return false не нужен.

Вот пример, почему много где return был не нужен, в стеке движка все равно был вызов, доп return лишь увеличивает стек и все
Пример
Daedalus:
FUNC INT DIA_Addon_Paul_PICKPOCKET_Condition()
{
    C_Beklauen (22, 19);
};

Когда НПС смотрит на ГГ, в стеке есть следующее
Код:
zPAR_TOK_PUSHINT 22
zPAR_TOK_PUSHINT 19
zPAR_TOK_CALL offset(C_Beklauen)
zPAR_TOK_RET

Если мы убираем предупреждение сделав вот так
Daedalus:
FUNC INT DIA_Addon_Paul_PICKPOCKET_Condition()
{
    return C_Beklauen (22, 19);
};

Стек будет таким
Код:
zPAR_TOK_PUSHINT 22
zPAR_TOK_PUSHINT 19
zPAR_TOK_CALL offset(C_Beklauen)
zPAR_TOK_RET
zPAR_TOK_RET

Просто дублирующий токен возвращаемого значения zPAR_TOK_RET

Ну и мне просто банального удобно юзать переменку :)
 

Trazege

Участник форума
Регистрация
20 Фев 2008
Сообщения
1.760
Благодарности
1.394
Баллы
340
Пусть кто-нибудь переведет на юню
Daedalus:
var int D3D11_enabled;
func void CheckDx11()
{
    var int lib; lib = LoadLibrary("ddraw.dll");

    if (lib)
    {
        var int adr; adr = GetProcAddress(lib, "GDX_AddPointLocator");

       if (adr)
       {
           D3D11_enabled = true;
       }
       else
       {
         D3D11_enabled = false;
       };
    };

};

Это реализация на икарусе? Функции LoadLibrary и GetProcAddress это его функцинал? Если так, то буду юзать его, ибо местаим использую его в проекте. На юне я так и не дотумкал, как определить этот момент. CheckDx11 можно использовать сразу после MEM_InitAll?
 
Последнее редактирование:

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.300
Благодарности
4.633
Баллы
625
Это реализация на икарусе? Функции LoadLibrary и GetProcAddress это его функцинал?
winapi это перенесенные в скрипты.
C++:
  inline bool CheckDx11() {
    HMODULE module = GetModuleHandle( "ddraw.dll" );

    return
      module != Null &&
      GetProcAddress( module, "GDX_AddPointLocator" );
  }

  bool Dx11IsEnabled() {
    static bool isEnabled = CheckDx11();
    return isEnabled;
  }
 

Myxomop

Почетный форумчанин
Регистрация
28 Май 2005
Сообщения
3.239
Благодарности
2.581
Баллы
455
куда это добро пихать?
Это для примера, откуда добро описанное выше взялось. Там реализовано управление настройками рендера скриптами Икаруса.
Но у меня при использовании Union загрузка любых внешних dll средствами Икаруса при помощи LoadLibrary больше не срабатывала.
 

Trazege

Участник форума
Регистрация
20 Фев 2008
Сообщения
1.760
Благодарности
1.394
Баллы
340
Камрады, кто нить помнит каким образом дефолтовый туман зоны в ДР по умолчанию всегда серый, а в остальных синий?
 

N1kX


Модостроитель
Регистрация
13 Ноя 2009
Сообщения
6.101
Благодарности
5.592
Баллы
910
Камрады, кто нить помнит каким образом дефолтовый туман зоны в ДР по умолчанию всегда серый, а в остальных синий?
[SKY_OUTDOOR]

zDayColor0=82 109 198
zDayColor1=255 255 0
zDayColor2=18 16 60
zDayColor3=134 104 125
zDayColor0_OW=90 80 80
zDayColor1_OW=90 80 80
zDayColor2_OW=90 80 80
zDayColor3_OW=90 80 80
; ... these values tune the different sky colors during different daytimes
 

LastDragon

Участник форума
Регистрация
5 Июл 2017
Сообщения
18
Благодарности
1
Баллы
155
Всем привет. Есть ли возможность корректно добавить 6 основных гильдий для ГГ? 3 свободные в массиве можно изменить, это понятно... а остальные? В некоторых модах видел кучу новых гильдий, но как реализовано не понятно.
 

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.849
Благодарности
6.725
Баллы
1.625
Привет, есть.
Эх.... не хочешь задавать правильный вопрос...
Ладно:
расширяешь диапозон сепаратор_хум, на столько, сколько нужно.
Увеличиваешь МАКС_ГУЛД до столько, сколько реально гильдий получилось.
Выставляешь соотношения для новых гильдий, по аналогиями с другими.
 
Последнее редактирование:

LastDragon

Участник форума
Регистрация
5 Июл 2017
Сообщения
18
Благодарности
1
Баллы
155
Привет, есть.
Эх.... не хочешь задавать правильный вопрос...
Ладно:
расширяешь диапозон сепаратор_хум, на столько, сколько нужно.
Увеличиваешь МАКС_ГУЛД до столько, сколько реально гильдий получилось.
Выставляешь соотношения для новых гильдий, по аналогиями с другими.

Я исправлюсь :)
КАК расширить диапазон сепаратор_хум?
 
Сверху Снизу