Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Закрома Родины
GAMEINATOR forums > S.T.A.L.K.E.R. > Мастерская: создание модов для S.T.A.L.K.E.R.
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77
Astalker375
Цитата(Alex Ros @ 06.07.2014, 22:56) *
Вроде бы понятно движок-исходники, но все таки что именно делаете?

Присоединяюсь. Тут какой-то междусобойчик. Вроде что-то делается, а стороннему человеку вообще не понятно ничего. Интересно было бы увидеть список того, что исправили и что еще хотим получить на данный момент. Может быть свести всё воедино в шапку и тогда было бы понятно всем, а тем кто в теме проще помогать друг-другу.
hi_flyer
Alex Ros,
https://xp-dev.com/wiki/pages/210311
Kontro-zzz
Цитата
не понятно ничего

https://xp-dev.com/sc/history/204486/HEAD/?page=0
там же описаны ревизии.
Alex Ros
Все очень понятно и удобно. Однажды когда был молодой и сдавал проектик мне старший товарищ сказал: "Работай так чтобы если завтра ты помрешь, на твое место придет другой человек и всё поймет". Запомнил это на всю жизнь. И вот именно так на вики и сделано, по крайней мере мне так кажется, может кого иного и не устроит.

Было бы здорово это https://xp-dev.com/wiki/pages/210311 в шапку повесить, а то ведь потеряется пост господина hi_flyer.

Заодно следующий вопрос. Правильно я понял, осмотревшись коротко на вики, что в целом нет ничего касающегося ЗПшной версии движка? В том числе здесь https://xp-dev.com/wiki/210311/Список правок из X-RAY Extensions#tabs-1 X-RAY Extensions имеется в виду строго ТЧ? Правильно неправильно? Или же где то припрятался раздел строго по 1.6.0.2?
HikeR
Цитата(Alex Ros @ 06.07.2014, 23:52) *
Все очень понятно и удобно.

когда изменения, исправления и дополнения валяются в одной куче — это не понятно и не удобно.

хотя может кто объяснит доступно, как быстро и без проблем получить ветку:
- собираемую без ругани
- без вмешательства в звуковую подсистему
- с новыми графическими фишками
- со старым lua/luabind-ом

??
alpet
Цитата(HikeR @ 06.07.2014, 23:08) *
1. используя консоль?? окститесь, есть же lua(jit) с разблокированными файловыми операциями (даже в оригинальных исходниках включается двумя строками), есть элемент интерфейса типа Memo, нужный скрипт загрузил, изменил, записал.
2. опять же, зачем это при наличии исходников? собсно, и без их наличия скрипты и функции прекрасно запускались. с поиском места для их запуска были затруднения, это да, но "стандартное" Esc+F1 для вызова самописного интерфейса хоть со встроенным блокнотом решало.

1. В идеале потом можно будет редактор и на основе полноценного UI. А в случае моей библиотеки, даже удаленный редактор с Web-интерфейсом и отладчиком в одном флаконе. Была-бы только потребность smile.gif
2. Это любопытно, как в таком случае выполнялись скрипты с серьёзными ошибками, приводящими в том числе к эксепшенам? У меня скрипты выполняются в изолированной ВМ (песочнице), что позволяет перехватить разные сбои и вывести кучу отладочной информации. Так что с большинством ошибок я справляюсь без вылета из игры, и соответственно потерь времени на перезагрузку. Впрочем боюсь вам не понять, ведь есть исходники и при наличии десятков часов лишнего времени все кто-то реализует прямо в движке smile.gif Остается только ждать... В то время как мой инструментарий универсален для всей линейки движков Xray, соответственно не нужны исходники для ЧН и ЗП. Более того, его наверняка можно к другим движкам использующим Lua приспособить.
hi_flyer
Alex Ros,
Слили только ТЧ сорцы, поэтому эта СВН ветка ТЧ онли.
HikeR
Цитата(alpet @ 07.07.2014, 00:06) *
как в таком случае выполнялись скрипты с серьёзными ошибками, приводящими в том числе к эксепшенам?

как и в самой игре, зеленожучно.

подавляющее большинство игровых скриптом отладить без запуска игры невозможно, можно лишь на этапе сохранения скормить их Lua для поиска банальных синтаксических ошибок (что-то вроде require("наш_пакет_модуль")), или тестовым запуском функции (типа if pcall(function () ... end) then ... else ...). плюс тотальная проверка входных данных, этого вполне достаточно чтобы игра не вылетала.

вспомните, (опять же) подавляющее большинство патчей содержало тучу if value ~= nil ..., ибо разработчики проверками озаботились только потом.

Цитата(alpet @ 07.07.2014, 00:06) *
Впрочем боюсь вам не понять, ведь есть исходники

поэтому нужно перестраиваться ;)
alpet
Цитата(HikeR @ 07.07.2014, 00:18) *
подавляющее большинство игровых скриптом отладить без запуска игры невозможно

Так вот, и у меня все в игре отлаживается. Без перезапуска самой игры - скрипты перезагружаю из консоли, пространство имен поправляется вручную. Единственно пока не получается так взаимодействовать с теми скриптами, где описываются классы lua-bind (и соответственно живут объекты от этих классов).
Суть в том, что если где-то в другом месте происходит серьёзный сбой, у меня не только все стеки выводятся, но и набор отладочных переменных. По адресам из двоичных стеков и регистров процессора, находятся подсказки в виде указаний на известные объекты. В дальнейшем его думаю переделать в эквивалент Watches для Lua.
HikeR
Цитата(alpet @ 07.07.2014, 01:31) *
не получается так взаимодействовать с теми скриптами, где описываются классы lua-bind

которые и составляют "подавляющее большинство". то есть ваш продукт предназначен только для сторонних lua-функций? так их и в оригинале можно было использовать по требованию и, переключившись в оконный режим, исправлять/изменять в нормальном внешнем редакторе.

Цитата(alpet @ 07.07.2014, 01:31) *
у меня не только все стеки выводятся, но и набор отладочных переменных. По адресам из двоичных стеков и регистров процессора, находятся подсказки в виде указаний на известные объекты.

круто, здорово. и что? юзеркейс какой-нить сделайте, иначе назначение всего этого совершенно неясно.
Antnigm
Цитата(hi_flyer @ 07.07.2014, 00:07) *
Alex Ros,
Слили только ТЧ сорцы, поэтому эта СВН ветка ТЧ онли.

Прикрутить разделение худа на руки/оружие, инверсную кинематику npc, dx11, намокание, лучики, всякую другую приблуду и получится ЗП.
alpet
Цитата(HikeR @ 07.07.2014, 01:53) *
1. которые и составляют "подавляющее большинство". то есть ваш продукт предназначен только для сторонних lua-функций? так их и в оригинале можно было использовать по требованию и, переключившись в оконный режим, исправлять/изменять в нормальном внешнем редакторе.
2. круто, здорово. и что? юзеркейс какой-нить сделайте, иначе назначение всего этого совершенно неясно.

1. Поэтому заметная часть логики мода NLC6 сейчас реализуется вне классов. Чисто структурное программирование.
2. Было дело, когда находились поврежденные объекты в сейвах, ссылки на которые обнаруживались в логе. Отладочные переменные помогают ещё чаще, ведь в них содержится информация о текущей/последней выполняемой задаче в скриптах (подразумеваются задачи запланированные в апдейт task_smart_upd.script).


[update]
Сегодня сделал обновление репозитория до ревизии 75, выложил новую сборку перехватчика и обновил скрипты для него.
Теперь должна нормализоваться прямая работа с памятью движка. Это актуально при использовании реестра игровых объектов, посредством функций InvokeRegistry, UpdateRegistry (и вообще функций в registry.script) для оптимизированной выборки нужных id.
HikeR
поясняю позицию.

как-то понадобился двухпанельный список с кнопками переносящими элементы туда–обратно (типа слева убитые в хлам объекты, справа список того, что можно разобрать для починки выделенного объекта), пришлось делать огромный костыль из пары UIListBox-ов, xml-описателя и скриптов, плюс обвязка для вставки/удаления элементов.
когда появились исходники ради интереса соорудил исконно MVC-шный контрол на сях, с прокруткой, бегунком динамического размера и все такое. это оказалось даже проще, чем тот ужас на скриптах.

ваш "перехватчик" родом из времен, когда без костылей было не обойтись. но сейчас вы продолжаете использовать этот костыль вместо более логичных "нативных" методов. собсно вопрос, зачем?
Shoкer
Извините за небольшой оффтоп.

alpet, для ЗП кстати версию обновлять не будешь? (если там не много возни) Почему то в один момент у меня и у моего знакомого (возможно и у других игроков) при выходе из игры с вкл. перехватчиком она закрывается на ~10 секунд дольше. (просто чёрный экран висит) Видимо luacap.dll не выгружается сразу.

И ещё по diff файлам - можешь пож-ста дать пример одного любого (патч травы например) - мне на синтаксис посмотреть, в текущей версии для ЗП ты вроде бы ввёл их поддержку, правда не знаю работает ли она или нет.
alpet
Цитата(HikeR @ 07.07.2014, 12:18) *
ваш "перехватчик" родом из времен, когда без костылей было не обойтись. но сейчас вы продолжаете использовать этот костыль вместо более логичных "нативных" методов. собсно вопрос, зачем?

Мод NLC6 будет универсальным для оригинального 1.0006 и модифицированного 1.0007+. Потом в библиотеке очень много наработано функционала с целью оптимизации и упрощения работы с движком. Переписывать все это на С++ у меня нет никакой мотивации. Тем более что я состоялся больше как программист на Delphi, и могу отдельные фишки куда быстрее добавлять в dll. Во многих отношениях моя библиотека не отличается от остальных движковых, так что совсем уж костылем она не является.

Shocker
Выложить конечно могу, но собственно все текущие наработки касаются лишь совместимости с 1.0007. Что-же до патчей, то сейчас более удобным решением является модификация исполняемого кода в памяти, смотри примеры в xray_patch.script .
RayTwitty
alpet, юзай дефайны. Не всем нужны лишние либы и перехватчики. Кому надо, пусть отдельно включает.
alpet
Цитата(Shadows @ 07.07.2014, 14:16) *
alpet, юзай дефайны. Не всем нужны лишние либы и перехватчики. Кому надо, пусть отдельно включает.

Сделаю. Но оно по умолчанию использоваться не будет в любом случае, если не загрузить dll с помощью ланчера.
Shoкer
Цитата(alpet @ 07.07.2014, 12:46) *
Выложить конечно могу, но собственно все текущие наработки касаются лишь совместимости с 1.0007. Что-же до патчей, то сейчас более удобным решением является модификация исполняемого кода в памяти, смотри примеры в xray_patch.script .


Я так и делаю, чтобы изменить существующий код, но таким образом трудновато делать крупные врезки.
Код надо писать байтами (что не очень удобно) + нету функций для выделения новой памяти.
Для крупных врезок в код нужно пустое место в коде движка искать, а функции перехватчика для выделения буферов памяти (GetTempBuffer кажется) в ЗП версии перехватчика, как оказалось, нету.
Хорошо если бы была возможность произвольного выделения нужного кол-ва памяти (malloc), с возвратом её адреса.

Эт в принципе всё не проблемы а просто пожелания.

diff-ы, я так полагаю, пишутся чисто на asm-е, или там тоже какой то особый синтаксис?
Если да, то с ними крупные врезки просто будет попроще делать.
Хотя если будет функция выделения памяти, тогда можно и напрямую в скриптах.

Цитата(alpet @ 07.07.2014, 12:46) *
Выложить конечно могу


Ну только если будет свободное время, то не откажусь. Мне на самом деле интересно почему вдруг игра стала закрываться с перехватчиком долго, думаю может новая версия это исправила бы.
alpet
Цитата(Shoкer @ 07.07.2014, 14:38) *
diff-ы, я так полагаю, пишутся чисто на asm-е, или там тоже какой то особый синтаксис?


Нет, это обычный выход от утилиты fc с параметром /b. Все существующие патчи для этого подхода я получил сравнивая разные версии Render*.dll.
Думается мне правильнее в таком случае написать отдельную dll, в которой будут просто куски двоичного кода под замену (как в XrayExtensions), чем выделять куски памяти. Загружать вспомогательные библиотеки можно настроив параметр
UserDLLs в luaicp.conf.

Обновил архив с сегодняшней сборкой luaicp, и сделал сборку под SCoP, правда пока не тестировал. Сам я не часто выхожу из игры традиционным способом, обычно использую сочетание клавиш Ctrl+Alt+End (dll должна уничтожать процесс моментально). С другой стороны можно использовать вызов ExitProcess('message') в скриптах для обработки выхода из меню.

X_Starter_X
Уважаемые, здравствуйте smile.gif ! Прошу сильно не ругать за данный пост, прибыл недавно на форум, пишу первое сообщение.
Данная тема давно интересует меня. Имею желание научиться разбираться в движке, и самостоятельно редактировать его.
Помогите чем можете:
-Есть ли уроки? Можете на них направить?
-Есть ли пост или мануальчик по сборке исходника в рабочее приложение? Можете направить?
-Существует ли стол заказов? Можете направить?

Надеюсь я не ошибся с темой и пишу по адресу.
Заранее благодарен за помощь!
hi_flyer
X_Starter_X,
Почитай "С++ для чайников" smile.gif
https://xp-dev.com/wiki/210311/Compiling%20XRAY_3DA_2007
http://www.gameru.net/forum/index.php?showtopic=55838
jamakasi
X_Starter_X, Не пробой лучше сложные проекты, особенно движки, особенно xray т.к. очень сложно и будет невероятное количество глюков с которыми справится не каждый "среднячек". Почитай что нибудь для чайников, вникай что такое ООП, решай задачи математические. Единственное никогда НИКОГДА не читай про Rad Studio\builder c++ т.к. возникнут необратимые разрушения всех патернов и стандартов которые используются в нормальных компиляторах.
MegaNub
X_Starter_X, VK Docs

Цитата(jamakasi @ 07.07.2014, 19:01) *
Единственное никогда НИКОГДА не читай про Rad Studio\builder c++ т.к. возникнут необратимые разрушения всех патернов и стандартов которые используются в нормальных компиляторах.


Одна "жертва" уже есть, после мучений и извращений родился деревянный (читай X-Ray SDK) biggrin.gif Если кто не понял, про деревянного это шутка.
RayTwitty
Цитата(MegaNub @ 07.07.2014, 19:11) *
Одна "жертва" уже есть, после мучений и извращений родился деревянный (читай X-Ray SDK)

Знаток разработки движков однако.
MegaNub
Цитата(jamakasi @ 07.07.2014, 19:01) *
X_Starter_X, Не пробой лучше сложные проекты, особенно движки, особенно xray т.к. очень сложно и будет невероятное количество глюков с которыми справится не каждый "среднячек". Почитай что нибудь для чайников, вникай что такое ООП, решай задачи математические.

Присоеденяюсь к мнению, действительно, изучи сначала программирование, книжечки по C++, алгоритмам и структурам данных, про ООП что-нибудь.
chriotmao
А компилятора x64 для ЧН\ЗП еще нету? smile.gif
MegaNub
Цитата(chriotmao @ 07.07.2014, 19:29) *
А компилятора x64 для ЧН\ЗП еще нету? smile.gif

Так и исходников ЧН\ЗП нет)
Modera
Уровни от ТЧ же ведь подходят к ЧН/ЗП.
scwosh
Цитата(hi_flyer @ 07.07.2014, 19:54) *
Почитай "С++ для чайников"

Я бы не советовал. Унылое говно.
MegaNub
Цитата(scwosh @ 07.07.2014, 20:43) *
Унылое говно.

А насчёт Шилдта "С++ Базовый курс " что скажете? Стоящая книга?
scwosh
Да. После Дэвиса мне она в своё время просто райской песней показалась.Кроме того, если начинающий берётся за тот же С++ ради игр, то почему бы не изучать язык сразу программируя игры в качестве упражнений от элементарно консольных вплоть до 3D движка? Тогда пусть сразу читает "Хенкеманс Д., Ли М. Программирование на С++". Ну и в том же стиле хороший ресурс ВОТ.
Asterix
ДОКУМЕНТАЦИЯ!!! https://yadi.sk/d/-F2qbaqLW93gp Перед тем, как открыть файл, нужно зайти в свойства и нажать на
"Разблокировать"(Windows Vista/7/8.1).
RayTwitty
Цитата(Mcbeat7 @ 07.07.2014, 21:24) *
ДОКУМЕНТАЦИЯ!!!

Asterix
Shadows, чё? ужо у всех есть?
macron
Цитата(Mcbeat7 @ 07.07.2014, 21:32) *
чё? ужо у всех есть?

Агась, с полгода уже.
Asterix
macron, полгода? Двиг слили в апреле....
MegaNub
Цитата(Mcbeat7 @ 07.07.2014, 21:40) *
macron, полгода? Двиг слили в апреле....

Вы не пришелец с другой планеты?
Tron
Цитата(Mcbeat7 @ 06.07.2014, 17:29) *
Tron, https://bitbucket.org/stalker/x-ray/src этот что ли?

да
MegaNub
Сайты, связанные с разработкой игр (для X_Starter_X)

dtf.ru
uraldev.ru
pmg.org.ru
gamedev.ru
gamedev.net
dronprogs.org
dev.mindillusion.ru
directx.wikia.com
mirgames.ru
Tron
Цитата(alpet @ 06.07.2014, 16:34) *
Цитата(Tron @ 06.07.2014, 16:17) *
Вроде,как негласно,все согласились развивать bitbucket репо..

Видимо я это пропустил. Можно вкраце, какие преимущества у него над гитхаб?

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

Да вроде раз залили,зачем делать еще раз.
krovosnork
Цитата(Mcbeat7 @ 07.07.2014, 18:32) *
Shadows, чё? ужо у всех есть?

Года 2 как laugh.gif
Astalker375
Цитата(Mcbeat7 @ 07.07.2014, 21:40) *
macron, полгода? Двиг слили в апреле....

Это,если не ошибаюсь, файл с запароленного некогда архива. Как там его, xr_3da.rar? А у =Diablo=
он был без пароля и он его слил. Все тогда ещё в шоке были, помню laugh.gif Столько времени ломали архив, а он существовал без пароля.
alpet
Цитата(Tron @ 07.07.2014, 21:50) *
Да там по сути все тоже самое.
Попросту,лично я больше знаком с ним,чем гитхабом.+возможность иметь приватные репо
Насчет команд,не знаю чем отличается.

Да вроде раз залили,зачем делать еще раз.

Приватный реп у меня на личном компьютере есть, с неплохой доступностью ) Гитхаб как раз нужен, чтобы каждый желающий делал свой бранч и иногда отправлял коммиты с исправлением багов.
Tron
Так уже создали общий репозиторий,на bitbucket,и народ туда коммитит,создавать еще один смысла нет
HikeR
Цитата(Tron @ 08.07.2014, 00:12) *
и народ туда коммитит

тоже все в одну кучу, и исправления, и дополнения, и все остальное?
RayTwitty
Цитата(Tron @ 08.07.2014, 00:12) *
Так уже создали общий репозиторий,на bitbucket,и народ туда коммитит,создавать еще один смысла нет

Есть два репо, один xp-dev, второй bitbucket - изначально запилился первый и все туда коммитили. А что в bitbucket и для чего он - хз.
Tron
Цитата(HikeR @ 08.07.2014, 00:19) *
Цитата(Tron @ 08.07.2014, 00:12) *
и народ туда коммитит

тоже все в одну кучу, и исправления, и дополнения, и все остальное?

Хрен его знает,я туда отправлял фикс под новые студии.


Цитата(Shadows @ 08.07.2014, 00:28) *
Цитата(Tron @ 08.07.2014, 00:12) *
Так уже создали общий репозиторий,на bitbucket,и народ туда коммитит,создавать еще один смысла нет

Есть два репо, один xp-dev, второй bitbucket - изначально запилился первый и все туда коммитили. А что в bitbucket и для чего он - хз.

Репо от red python
alpet
Так давайте определимся, сколько сейчас есть общедоступных репозиториев с исходниками.
Мне кстати тоже интересна разбивка проекта на бранчи, чтобы была чистая stable-ветка (только багфиксы) и отдельная ветка с разными фишками. Правда пока плохо представляю как это сделать из уже наработанного материала )
Tron
Лучше туда лить(bitbucket) на самом деле-ибо если прикроют,есть шанс,что у кого то в форке что-то останется
alpet
По поводу 77 ревизии: build_config_defines.h - теперь этих файлов два, причем старый из xrGame де-факто включается совершенно везде (т.к. упомянут в log.h). Хочется уточнить, рационально-ли использовать много таких файлов и везде включать их упоминания?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.