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

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!
  • Друзья, доброго времени суток! Спешите принять участие в конкурсе "Таинственные миры" 2024!
    Ждем именно вас!

    Ссылка на конкурсную тему - тык

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

jeraqiv

Участник форума
Регистрация
31 Май 2016
Сообщения
36
Благодарности
2
Баллы
155
Приветствую уважаемые форумчане. По себе могу сказать, что я человек который ищет на свою голову приключения и различные испытания. Особенно я стараюсь разрабатывать вещи при которых все мои идеи могут быть воплощены без какой либо зависимости (например в ожидании какой-либо сторонней разработки). И мне очень сильно заинтересовала 3D графика, а именно можно сказать разработка 3D-игр с полного нуля с использованием OpenGL и DirectX. А особенно интересно внедрить свою систему внутрь другой, что будет возможным воплотить свой собственный графический интерфейс.

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

1. Как Вы постигали эти области? Какие были сложности и как с этим боролись.
2. Верно-ли, что процентное соотношение теории и практики в данном случаи будет 50 / 50?
3. На что именно стоит акцентировать своё внимание? Например, может быть запомнить или зазубрить API.
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.276
Благодарности
4.579
Баллы
625
jeraqiv
не туда ты зашел с такими вопросами. тут комьюнити даже костыли написать без других костылей не могут, а ты такие сложные вещи пишешь
 

НастасьСанна

Участник форума
Регистрация
6 Дек 2012
Сообщения
351
Благодарности
521
Баллы
325
Заметил что FRAMEFUNCTIONS в Лего продолжают работать даже если нажата пауза или открыто меню, как можно проверить, стоит ли игра на паузе, чтобы приостановить функции на это время?
Пару лет назад пыталась с этим разобраться, но так и не дошли руки. Попробуй посмотреть значения CGameManager.gameIdle и oCGame.singleStep. Или отслеживать срабатывание oCGame:: Pause(int) и oCGame::Unpause(void).
 

Orc Hunter


Модостроитель
Регистрация
12 Окт 2013
Сообщения
1.269
Благодарности
1.663
Баллы
305
Пару лет назад пыталась с этим разобраться, но так и не дошли руки. Попробуй посмотреть значения CGameManager.gameIdle и oCGame.singleStep. Или отслеживать срабатывание oCGame:: Pause(int) и oCGame::Unpause(void).
У немцев нашел тему https://forum.worldofplayers.de/for...in-pause-(menu-open)?highlight=oCGame::+Pause
 

jeraqiv

Участник форума
Регистрация
31 Май 2016
Сообщения
36
Благодарности
2
Баллы
155
jeraqiv
не туда ты зашел с такими вопросами. тут комьюнити даже костыли написать без других костылей не могут, а ты такие сложные вещи пишешь

Разве разработчики AST не знают как это всё дело работает? Если костыли, то от чего отталкивались? Где бралось понимание и начальное предоставления о том, как это всё менять и модифицировать под себя?
 

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.160
Благодарности
6.141
Баллы
1.565
Разве разработчики AST не знают как это всё дело работает? Если костыли, то от чего отталкивались? Где бралось понимание и начальное предоставления о том, как это всё менять и модифицировать под себя?
В начале было слово. И слово это было "Код"
https://code-live.ru/tag/cpp-manual/
А по вопросам:
1) Знание программирования. Знание, того или иного вида разрабатывания. Сложностей было куча, но спасала обычная логика, бывало и не обычная, т.е. обход проблемы через заднее место.
2) Это процентное соотношение верно для абсолютно всего, когда постигаешь что-то новое. Читаешь(теория) - тут же это воплощаешь в жизнь(практика), и после долгих и продолжительных изучений, теория-практика, начинаешь придумывать свое...
3) На все.
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.276
Благодарности
4.579
Баллы
625
Разве разработчики AST не знают как это всё дело работает?
для начла поясни что ты подразумеваешь под графическим интерфейсом. манипуляции над DX в движке не всегда могут быть очевидны, как казалось бы на первый взгляд. если не понимаешь как устроен движок, ты в нем потеряешься.
Если костыли, то от чего отталкивались?
от соображений не использовать их.
Как Вы постигали эти области? Какие были сложности и как с этим боролись.
очевидно что с азов. берешь экстендер на котором планируешь внедрять графические новшества, изучаешь его интерфейс, потом непосредственно сам двиг.
Верно-ли, что процентное соотношение теории и практики в данном случаи будет 50 / 50?
нет, это определение вообще никогда не верно.
На что именно стоит акцентировать своё внимание? Например, может быть запомнить или зазубрить API.
не запомнить, а понять. а то вместо продуктивной работы пойдут вопросы как поставить игру на паузу и прочие, которые должны были отлетать от твоих пальцев без малейших раздумий.
 

jeraqiv

Участник форума
Регистрация
31 Май 2016
Сообщения
36
Благодарности
2
Баллы
155
Gratt, MEG@V0LT

Так или иначе я уверен что исходный код библиотек AST время от времени терпит изменения в процессе рефакторинга. А вообще, я не увидел, AST не open-source? Могу ли я взять и посмотреть на работающие "костыли"?
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.276
Благодарности
4.579
Баллы
625
А вообще, я не увидел, AST не open-source?
а зачем тебе опен сорс если плагины по возможностям ни разу не уступают AST? а ко всему прочему весь инструментарий головной библиотеки в полном объеме экспортирован и доступен к использованию другими лицами.

Так или иначе я уверен что исходный код библиотек AST время от времени терпит изменения в процессе рефакторинга.
терпит. еще одна причина не открывать сорсы. народ пускай работает со своми проектами и не зависит от переделок библиотеки сторонними людьми.

Могу ли я взять и посмотреть на работающие "костыли"?
смотря что ты считаешь костылем с инженерной точки зрения и что именно тебе интересно.
 

jeraqiv

Участник форума
Регистрация
31 Май 2016
Сообщения
36
Благодарности
2
Баллы
155
а зачем тебе опен сорс если плагины по возможностям ни разу не уступают AST? а ко всему прочему весь инструментарий головной библиотеки в полном объеме экспортирован и доступен к использованию другими лицами.


терпит. еще одна причина не открывать сорсы. народ пускай работает со своми проектами и не зависит от переделок библиотеки сторонними людьми.


смотря что ты считаешь костылем с инженерной точки зрения и что именно тебе интересно.

Начну с того, что я интересуюсь в основном разработкой игрового сервера на платформе Gothic Online. Данная платформа в своем ассортименте API предоставляет функции, позволяющие рисовать текстуры и тексты на экране монитора. Возникла единственная проблема, невозможно добиться четкой адаптации текстур и текста под различный спектр мониторов. Попытки сделать некий костыль приводил к тому, что текстуры и сам текст приблизительно попадали под итоговый результат (существовала коллизия). В итоге я решил освоить наконец основы Reverse Engineering'a, и внедрить в движок игры свой комплект функций, которые-бы отображали текст и текстуры без TGA и прочего.

Но для этого нужны как минимум минимальное понимание принципа работы GPU и API DirectX. Но, на сегодня я лишь узнаю информацию у людей, которые возможно с этим уже работали.
 
Последнее редактирование модератором:

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.276
Благодарности
4.579
Баллы
625
Возникла единственная проблема, невозможно добиться четкой адаптации текстур и текста под различный спектр мониторов
значит стремный у вас апи, раз даже такое оказалось непостижимой задачей

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

Но для этого нужны как минимум минимальное понимание принципа работы GPU и API DirectX.
а при чем тут AST и DX?
 

jeraqiv

Участник форума
Регистрация
31 Май 2016
Сообщения
36
Благодарности
2
Баллы
155
зачем? - В целях обучения. В принципе, хочется научиться модифицировать некоторые вещи под себя.

а при чем тут AST и DX? - Дело не на прямую к AST. Игра Gothic использует DirectX API.
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.276
Благодарности
4.579
Баллы
625
пока что вместо конкретной цели я вижу сборную солянку офигительных идей. давай расставим пару моментов по своим местам.

зачем? - В целях обучения. В принципе, хочется научиться модифицировать некоторые вещи под себя.
только вот сильно сомневаюсь что GO сможет дать хоть какое-то представление о движке и его структуре в целом. если возвращаться к теме аст, то для создания сложных расширений тебе нужно как минимум неплохо знать C/C++ и иметь под рукой скажем IDA. далее меняй все что хочешь - от значений переменных по адресу, до полного изменения любой функции движка на свою.
1.png G2AST_2017_7_2_16_27_27_114.jpeg

Дело не на прямую к AST. Игра Gothic использует DirectX API.
она много что использует и много что могла бы использовать. какое это имеет значение? это тебя как-то ограничивает в чем-то? нет. смысл от этого не меняется, даже если бы игра использовала в качестве графического движка OpenGL. принцип один: перехватываешь-переписываешь.

Но для этого нужны как минимум минимальное понимание принципа работы GPU и API DirectX.
это понимание ты должен получить написав пару десятков программ с использованием графических библиотек. а что до движка, там используется DX7 и, соответственно, тебе придется либо работать с ним же, либо совершить подвиг - переписать его на любую удобную тебе графическую платформу. если первый вариант - в помощь классы рендера - zCRenderer, zCRnd_D3D, а также IDA в поисках DX девайсов.

Данная платформа в своем ассортименте API предоставляет функции, позволяющие рисовать текстуры и тексты на экране монитора.
и чтож это за инструменты? есть вполне удобный штатный класс отрисовки 2D полигонов на экран - zCView. в него же и выводится текст и прочая шелуха. чисто примера ради вывод GUI с использованием его инструментов:

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

и внедрить в движок игры свой комплект функций, которые-бы отображали текст и текстуры без TGA и прочего.
и в чем прикол сего действия? тянуть текстуры прямо из сети? так не проблема, передавай инфу одного объекта zCTexture другому и применяй ее куда хочешь
 
Последнее редактирование:

jeraqiv

Участник форума
Регистрация
31 Май 2016
Сообщения
36
Благодарности
2
Баллы
155
Мне лично интересно узнать от тебя то, как вообще всё начиналось с момента первого написания оболочки AST. На тот момент, возможно, ты имел недостаточно глубокое и объективное понимание тех вещей, с которыми ты работаешь повседневно.

Например. Лично я сейчас нахожусь на том этапе, что синтаксическая и семантическая часть языка C++ мне более менее понятна (хочу акцентировать на выделенном, ибо без 24/7 практики невозможно окончательно давать вердикт). Но, большая проблема состоит в том, что я никак не применил эти знания в достойное русло.

Спешу предположить, что освоение того-же IDA Pro, принципа внедрения и изменения отдельных байтов в ОЗУ постигалось методом тыка, проб ошибок. Но, через некоторое время спустя начала первого достижения приходит озарение, что прошлые 3 - 5 месяцев ты делал какие-то идиотские вещи (в процессе изучения), и вернув время назад ты-бы решил по другому.

Лично мне хочется увидеть грамотный вектор обучения, вектор, который направлен под нужным углом. Дураку понятно, что освоить одну и тужу вещь можно разными путями. Но, время и силы потраченные на это - разнятся.
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.276
Благодарности
4.579
Баллы
625
Спешу предположить, что освоение того-же IDA Pro, принципа внедрения и изменения отдельных байтов в ОЗУ постигалось методом тыка, проб ошибок.
подобных подход имеет место быть везде, но даже при работе методом тыка ты должен понимать что делаешь, иначе это бессмысленно.

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

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

jeraqiv

Участник форума
Регистрация
31 Май 2016
Сообщения
36
Благодарности
2
Баллы
155
Некоторые вещи стали более ясными. Буду стараться и грызть гранит науки.
 

Orc Hunter


Модостроитель
Регистрация
12 Окт 2013
Сообщения
1.269
Благодарности
1.663
Баллы
305
Есть ли способ узнать, открыт ли инвентарь ГГ через Икарус или Лего? На АСТ вроде была функция Hlp_InventoryIsOpen(), есть ли аналог в Икарусе?
Я недавно спрашивал о том как узнать открыт ли инвентарь. В общем написал такой скрипт
Код:
var int Hlp_InventoryIsOpen;

func void Hook_oCNpc__OpenInventory ()
{
    HookEngine(oCNpc__OpenInventory, 6, "OpenInventory");
    HookEngine(oCNpc__CloseInventory, 6, "CloseInventory");
};

func void OpenInventory()
{
    Hlp_InventoryIsOpen = 1;
};

func void CloseInventory ()
{
    Hlp_InventoryIsOpen = 0;
};
Он работает, но проблема в том что с ним жутко проседает фпс. Подскажите, что я сделал не так?
 

НастасьСанна

Участник форума
Регистрация
6 Дек 2012
Сообщения
351
Благодарности
521
Баллы
325
Подскажите, что я сделал не так?
Во-первых, у CloseInventory константа 9, а не 6.
Код:
HookEngine(oCNpc__CloseInventory, 9, "CloseInventory");
Во-вторых, удостоверься, что хук выполняешь правильно и только один раз. Примерно так:
Код:
const int Hook_Once = FALSE;
if (!Hook_Once)
{
    Hook_oCNpc__OpenInventory();
    Hook_Once = TRUE;
};

А лучше, как написал Gratt, использовать
virtual int __thiscall oCItemContainer::IsOpen(void) 0x00709200=7377408
 

kraw


Модостроитель
Регистрация
11 Окт 2005
Сообщения
2.095
Благодарности
871
Баллы
295
Обратил внимание, что при компилляции zen-файла можно указать опцию "detect leaks". А как там результаты этих утечек увидеть?
 
Сверху Снизу