Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Редактирование движка
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, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97
mortan
AndreySol, начнёшь переделывать - сломаешь ещё что-нибудь, и так по кругу пока весь двиг не перелопатишь)
ForserX
mortan, да правда? biggrin.gif
RayTwitty
Цитата(AndreySol @ 25.08.2017, 17:59) *
Ну а результат ? Переделали в более вменяемое, или оставили как было ?

Архитектуру не менял - в рамках внедрения другой фичи, поправил косяки существующей архитектуры и все.
1_A
Собрал x64 движек, оно работает.

ForserX
virus_ua, наивный.
1_A
Forser, теперь вылетов еще больше biggrin.gif
А вообще запускается и то хорошо.
Xottab_DUTY
Цитата(Shoкer @ 25.08.2017, 03:16) *
Цитата(Xottab_DUTY @ 18.08.2017, 17:40) *
K.D., при обновлении LuaBind скорее всего столкнёшься с проблемой, с которой столкнулся OpenXRay. Вкратце, если раньше, на старом 0.7, не синтаксические ошибки в скриптах приводили к тому, что отваливался сам кривой скрипт, то у нас из-за скрипт начал валить весь движок... ...Исправить проблему можно исправив скрипты, но совместимости с оригинальным ЗП не будет. Для совместимости надо копать луабинд...

По моему я там ещё тогда все проблемные места поправил и залил. Там, разве что, возможно парочка функций из движка криво экспортируется, но по логу вылета это легко понять и исправить. С оригинальными скриптами новый Luabind работает, просто он по умолчанию не умеет неявно приводить строки к числам (или наоборот) из-за чего некоторые родные скрипты вылетали. Это тоже правил - https://github.com/OpenXRay/luabind-deboost...4cd2e7578b08510

Хм.. Ну, надо будет тогда ещё раз проверить, когда студия обновится или когда я её откачу до предыдущего обновления. На новом обновлении xrAICore не собирается..
Я просто луабинд тестировал на одном единственном скрипте, который даже править-то, не пытался biggrin.gif Это ui_sleep_dialog, может быть в нём проблема, и надо всё-таки попробовать поправить его.
Спойлер
Луабинду не нравилась 38-я строка: self.sleep_mb:self:SetAutoDelete(true)
Она у нас появилась после исправлений Revo Lucas. Возможно, что правки для CoC, у которого старый луабинд, немножечко не подошли для нового луабинда.
abramcumner
Цитата(Xottab_DUTY @ 26.08.2017, 15:53) *
self.sleep_mb:self:SetAutoDelete(true)

Это явная ошибка. self: в середине не нужен. Скопипастили лишнего.
ForserX
virus_ua, у нас последний билд даже не вылетает.
1_A
Forser, X-Ray не может не вылетать, особенно когда вносишь правки. Всегда найдется что то, в каком то месте. Ваш билд не смотрел, дальше гитхаба, вроде правок много но это и больше отталкивает.
Xottab_DUTY
Насколько я помню, он падал и с
Код
self.sleep_mb:SetAutoDelete(true)

А вот такое не пробовал:
Код
self.sleep_mb.SetAutoDelete(true)
abramcumner
biggrin.gif
Правильный синтаксис self.sleep_mb:SetAutoDelete(true). Методы класса вызываются через двоеточие. Надо уже конкретную ошибку разбирать.
ForserX
virus_ua, а ты подебаж, найди причину, исправь и будет тебе счастье. Не стоит жаловаться на xr, если сам косячишь.
Zagolski
Цитата(Shoкer @ 25.08.2017, 01:16) *
Sin! уже всё расписал. Всё что непосредственно по "двойному рендеру" - https://github.com/ShokerStlk/xray-16-SWM/c...83b6891f53cb2d7 (у меня чудесный английски)

Спасибо, что поделился с общественностью этой наработкой.

Мои мытарства пока дальше выдергивания пред. кадра из рендертаргета не зашли, с дальнейшим размыливанием картинки при увеличении (кстати, называется он не $user$projector, а $user$tonemap_src). Начал второй вьюпорт изобретать, а тут такой подарок!


Нужно будет как-то обойти в этой схеме пропуск каждого третьего кадра, из-за этого дерганье начинается, видимо из-за срыва вертикальной синхронизации. Покопаюсь в этом.
aka_sektor
Zagolski, неужто третий человек, который реализовал сие фичу нарисовался? bravo7kg.gif
Asterix
Zagolski, в следующий раз используй пожалуйста этот фотохостинг
https://images.gameru.net
1_A
Forser, я так и делаю.
ForserX
Цитата(virus_ua @ 26.08.2017, 17:19) *
Ваш билд не смотрел, дальше гитхаба, вроде правок много но это и больше отталкивает

Да ничего интересного особо нет. Багфикс да кастрация движка. Ну, иногда переработка кода.
Zagolski
Цитата(aka_sektor @ 27.08.2017, 15:20) *
Zagolski, неужто третий человек, который реализовал сие фичу нарисовался?

Реализовал по рецепту от Shoker.
1_A
Forser, интересное есть всегда.



© какой то кодер
ForserX
virus_ua, где-то в классах монстров был комментарий "Пиво Олесу".
Xottab_DUTY
Forser, точнее не Олесю, а Диме biggrin.gif
Diesel
Цитата(Forser @ 28.08.2017, 13:35) *
virus_ua, где-то в классах монстров был комментарий "Пиво Олесу".

Цитата(Xottab_DUTY @ 28.08.2017, 14:11) *
Forser, точнее не Олесю, а Диме biggrin.gif

В переводе с русского на русский "Пиво Олесу" (в 90е-2000е) это означает "по почкам Олесу", что не является благодарностью, а наоборот означает выговор. biggrin.gif
А "с Олеся пиво" (так же и переводится, хотя слово "Пиво" имеет массу значений), то это уже требование оплаты работы.
1_A
да мне порой мерещится за спиной Dima laugh.gif .
Xottab_DUTY
andreyholkin, z_crazy.gif про пиво не знал.

К слову, кроме "С Олеся пиво", не нашёл ничего.
---------------------------------------------------------
Никто не в курсе, как откатить Visual Studio 2017 на две обновы назад? До 15.2
ForserX
Цитата(Xottab_DUTY @ 28.08.2017, 16:17) *
Никто не в курсе, как откатить Visual Studio 2017 на две обновы назад? До 15.2

Мы на 15.3.2 работаем нормально. Правда баг в компиляторах есть, но я костыль придумал, на днях залью.
abramcumner
Цитата(Forser @ 28.08.2017, 16:23) *
Мы на 15.3.2 работаем нормально. Правда баг в компиляторах есть, но я костыль придумал, на днях залью.

Что за баг? Вроде все нормально собирается/работает.
Компилятор все стандартней и стандартней.
Xottab_DUTY
Вот вот, а OpenXRay из-за бага в компиляторе вообще не собирается. (точнее не собирается xrAICore, но без него игра не запустится)
kiperenok
Цитата(virus_ua @ 28.08.2017, 09:08) *
Forser, интересное есть всегда.



© какой то кодер

Попахивает международным скандалом и разжиганием laugh.gif
Xottab_DUTY
kiperenok, да это ещё в 14-м всплыло, когда только исходники появились... Пока даже обычных скандалов не наблюдал, не то что международных..

Главное, на этом внимание не заострять biggrin.gif
1_A
THQ уже банкроты и продались в том же 2014 (совпадение?), так что это уже не имеет смысла. Да и кодеров которые это комментили уже давно в GSC нет, а в третьих исходники вообще слили не официально GSC, мало ли кто этот комент оставил.
Diesel
По вопросу компиляции Эдиторов.
Поставил на Вин7 Борланд 2004, начал компиль и поймал кирдык - синий экран, а затем выяснилось, что произошло переформатирование раздела с системой. Кое - как диск обратно переформатировал в ntfs и то при помощи установщика xp.
Что то я боюсь уже второй раз ставить Борланд. Он скорее всего под xp заточен.
1_A
andreyholkin, установи на виртуалку XP -> Борланд -> Даешь апдейты Level Editor -> Profit
Winsor
Цитата(Shoкer @ 25.08.2017, 00:32) *
В таком случае начинает тупить в движке проверка на видимость кости (LL_GetBoneVisible() в ЗП) - она возвращает неверные результаты, из-за чего кость не скрывается при одевании аддона.
Не знаю где именно это правится в ТЧ, но в ЗП это можно (кажется) поправить в функции player_hud.cpp - void attachable_hud_item::set_bone_visible()
Надо убрать проверку видимости кости if(bVisibleNow!=bVisibility) и тогда всё вроде-бы работает.

Спасибо, аналогию я понял. в ТЧ это просто немного размазано по другим местам...

Уважаемый Shoкer, вопрос нуба, ибо плохо пока понимаю идеологию работы вьюпоинтов - а можно ли подход с отдельным viewpoint использовать в принципе для отдельного рисования прицела, не накладывая эффектов, шейдеров и так далее. т.е. рисовать текстуру прицела отдельно, а не поверх худа, как сейчас это например в ТЧ происходит... ну не знаю как еще объяснить... smile.gif наверное видели как в модах добавляют эффект худа костюма в виде текстуры для CustomStatic на главном худе . Вот прицел рисуется "перед" этим худом, с помощью viewpoint можно ли будет отрисовать прицел "за" этим худом?
Shoкer
Вьюпорты к этому никакого отношения не имеют. Чтобы реализовать что ты хочешь - достаточно подменять модель оружия на другую во время прицеливания. Как например было сделано здесь.

В ЗП, когда ещё не было движка, можно было у оружия в CHudItem на ходу заменить содержимое hud_sect на название любой худовой секции - и она мгновенно загружалась у оружия. В ТЧ механизм скорее всего другой, да и с движком можно сделать всё по человечески.

К слову в Battlefield 3 \ 4 закрытая оптика технически реализована именно по такому принципу.
Zagolski
Он скорее всего имеет в виду, чтобы текстура прицела накладывалась вместе с текстурой худа от маски, чтобы при прицеливании через текстурный прицел был виден эффект загрязнения маски и остальное.
Shoкer
Цитата(Zagolski @ 30.08.2017, 04:34) *
Он скорее всего имеет в виду, чтобы текстура прицела накладывалась вместе с текстурой худа от маски, чтобы при прицеливании через текстурный прицел был виден эффект загрязнения маски и остальное.


Ну тут ещё проще. Все UI-окна рисуются на экране по очереди. Нужно найти в движке где регулируется очередь и сделать так чтобы маска на лице рисовалась перед\после прицела. Вообщем это совсем другая тема.

Как вариант по аналогии с 3D-прицелом выше можно просто сделать чёрный квадрат с текстурой прицела и заменять худ им. Т.к это 3D-модель, то весь UI будет поверх неё.

====================================================

Цитата(Xottab_DUTY @ 26.08.2017, 18:03) *
Насколько я помню, он падал и с
Код
self.sleep_mb:SetAutoDelete(true)

А вот такое не пробовал:
Код
self.sleep_mb.SetAutoDelete(true)


Вообщем да, там сразу две (три) проблемы:

1) В самом lua-скрипте синтаксическая ошибка (опечатка с двойным self)
2) Если её исправить, то начнёт вываливаться в другом месте с логом:
Лог
Код
FATAL ERROR

[error] exp​ression    : !m_error_code
[error] Function      : raii_guard::~raii_guard
[error] File          : script_engine.cpp
[error] Line          : 570

[LUA][Error]: No matching overload found, candidates:
void <unknown>(vector2&,custom [float])
Passed arguments [2]: userdata (vector2&), number (361)

stack traceback:
    [C]: at 0x045f1d47
    [C]: in function '__newindex'
    ... call of pripyat\gamedata\scripts\ui_sleep_dialog.script:74: in function 'Initialize'
    ... call of pripyat\gamedata\scripts\ui_sleep_dialog.script:94: in function 'TestAndShow'
    ... call of pripyat\gamedata\scripts\ui_sleep_dialog.script:181: in function 'sleep'
    ...ker - call of pripyat\gamedata\scripts\xr_effects.script:2856: in function <...ker - call of pripyat\gamedata\scripts\xr_effects.script:2846>


Причина вылета в этой строчке ui_sleep_dialog.script:74:
pos.x = self.sleep_static:GetWndPos().x+self.sleep_static:GetWidth(), что равносильно pos.x = 321 + 40 --// 361
А точнее (судя по всему) в LuaJit / LuaBind который почему-то пытается то-ли сложить vector2 с числом в этой строке, то-ли как то ещё криво воспринимает оператор + (хотя мне пока неясно причём он здесь, если мы присваиваем результат свойству .x а не самому vector2).

Я также заметил что такой код стал приводить к вылету:
local pos = vector2():set(123, 456);
tostring(pos);

Раньше бы tostring вернул userdata:, скорее всего класс vector2() экспортирован не правильно, либо проблема гораздо глубже. Продолжу разбираться уже завтра, возможно даже я где-то что-то сломал.

3) В догонку - в текущем Open XRay опять поломан вывод лога (не выводится stack traceback). Я его чинил, но в последующем туда прокралась опечатка:


Впрочем сейчас заметил что там ещё есть просторы по его улучшению. Попробую на днях исправить, но не уверен что в OpenXRay остался хоть кто-то из владельцев, способный принять pull request.

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
И меня ещё волнует (бомбит) что применение автоматического форматирования кода в OpenXRay (в ещё более ранних коммитах) привело к такой "красоте" в некоторых местах:


Хотя в целом авто-форматирование - вещь хорошая, но настроено и применено оно было совершенно бездумно -__-
Теперь даже нельзя diff-ом сравнить правленый движок с оригинальным.
Xottab_DUTY
Shoкer, по PR: из активных там остался Андрей Бояршин, он не указан на странице OpenXRay, но права у него есть. Думаю, надо поговорить с nitrocaster, насчёт этого.
Печалька
Armada651 вообще удалил себя из списка участников OpenXRay sad.gif
Ну и, конечно, я с удовольствием приму PR в своём форке. Хотя, он немного сломан biggrin.gif

3) ... Блин, и, ведь, такие опечатки могли быть не одной штукой..
А на что влияет отсутствие и присутствие точки в def?

По авто-формату:
А если попробовать при сравнении игнорировать whitespace? Немного, но облегчает.. Я когда импортировал себе правки отсюда мне помогла вот эта штука.

Ты, помнится, где-то спрашивал расширение, которое сворачивало бы все диффы на гитхабе, чтобы удобнее было. Нашёл что-нибудь?
Молния в вакууме
Цитата(Xottab_DUTY @ 31.08.2017, 03:09) *
3) ... Блин, и, ведь, такие опечатки могли быть не одной штукой..
А на что влияет отсутствие и присутствие точки в def?

То, что с точкой объявляет методы и пр. класса class_<profile_timer_script>("profile_timer"), а то что без точки глобальные функции.
Технически там всё правильно, проблема в форматировании. wacko.gif
ForserX
Цитата(Xottab_DUTY @ 31.08.2017, 03:09) *
надо поговорить с nitrocaster

Если человек завязал со сталкиром, не стоит его обратно тянуть.

P.S. Не дождался обновления шапки от Тени, залез сам. mad.gif
Xottab_DUTY
saas, вот оно что.. Спасибо, буду знать.. А про опечатку, это я имел ввиду то, что после автоформатирования появился неожиданный return там, где он не должен быть.
Просто не разделил расстоянием про точку и про опечатку smile.gif
Forser, да я не к тому, чтобы его обратно тянуть, а чтобы согласовать изменения в репозитории.

Там, кстати, в репозитории Шокера появились изменения. Может, тоже добавить в список? biggrin.gif
ForserX
Xottab_DUTY, можно.

Кидайте линки, пока Женя меня е покарал.
AndreySol
Добавляю в движок новый инвентарный объект, как говорится по образу и подобию:
В хедере класса (NewInvObject.h):
Код
#pragma once

#include "inventory_item_object.h"
#include "script_export_space.h"

class CNewInvObject : public CInventoryItemObject
{
.......
ляляля
.......

    DECLARE_SCRIPT_REGISTER_FUNCTION
};
add_to_type_list(CNewInvObject)
#undef script_type_list
#define script_type_list save_type_list(CNewInvObject)
в реализации (NewInvObject.cpp):
Код
using namespace luabind;

#pragma optimize("s",on)
void CNewInvObject::script_register(lua_State *L)
{
    module(L)
        [
            class_<CNewInvObject, CGameObject>("CNewInvObject") <-сюда ошибку показывает
            .def(constructor<>())
        ];
}
При попытке скомпилить xrGame ошибка:
1>NewInvObject.cpp(78): error C2065: class_: необъявленный идентификатор
1>NewInvObject.cpp(78): error C2275: CNewInvObject: недопустимое использование этого типа в качестве выражения
1>NewInvObject.cpp(79): error C2228: выражение слева от ".def" должно представлять класс, структуру или объединение
1> тип: const char [13]
1>NewInvObject.cpp(79): error C2065: constructor: необъявленный идентификатор
1>NewInvObject.cpp(79): error C2059: синтаксическая ошибка: >
Естественно все подсматривал, что где и как, у существующих объектов\классов. Подскажите, чего я забыл и где ?
Zagolski
pch_script.h надо в cpp включать.
AndreySol
Цитата
pch_script.h надо в cpp включать.

Спасибо, с компиляцией помогло. Чет я про pch_script.h подумал, что он уже включен...
Но после сборки xrGame игра стала падать с таким логом:
Цитата
[error]Expression : fatal error
[error]Function : CObjectItemSingle<class game_cl_ArtefactHunt,1>::server_object
[error]File : f:\xray2013\xr_src\xr_3da\xrgame\object_item_single_inline.h
[error]Line : 54
[error]Description : <no expression>
[error]Arguments : Cannot instantiate server object, because server class is not declared!
Вроде все что нужно прописал: CLSID для нового класса, в файлах xrServer_Objects_ALife_Items.h\cpp, в CObjectFactory::register_classes, в class_registrator.script, в se_item.script. Что то еще забыл ?
Xottab_DUTY
Forser, вот оно. И ещё там где два репо vincent-t, слово "старый репозиторий" хорошо бы в скобки засунуть smile.gif

Добавил. По поводу скобок, там же вторая ссылка. Пускай лучше так будет. [ForserX]
-StalkMen-
AndreySol,
Серверный класс не добавил
AndreySol
-StalkMen-, это об этом ?
xrServer_Objects_ALife_Items.h
Код
SERVER_ENTITY_DECLARE_BEGIN(CSE_ALifeItemNewInvObject, CSE_ALifeItem)
u32        m_ef_detector_type;
CSE_ALifeItemNewInvObject(LPCSTR caSection);
virtual    ~CSE_ALifeItemNewInvObject();
SERVER_ENTITY_DECLARE_END
add_to_type_list(CSE_ALifeItemNewInvObject)
#define script_type_list save_type_list(CSE_ALifeItemNewInvObject)

и вся остальная реализация в xrServer_Objects_ALife_Items.cpp то же прописано.
В object_factory_register.cpp
Код
CObjectFactory::register_classes()
...
ADD(CNewInvObject,    CSE_ALifeItemNewInvObject, CLSID_DEVICE_NEWOBJECT,     "device_new_object");
...

В xrServer_Objects_ALife_Items_script2.cpp
Код
void CSE_ALifeItemNewInvObject::script_register(lua_State *L)
{
    module(L)[
        luabind_class_item1(
            CSE_ALifeItemNewInvObject,
            "cse_alife_item_new_obj",
            CSE_ALifeItem
            )
    ];
}

Чего еще ему(движку) надо ?
ForserX

x64 Edition. 55-75 FPS. Годно.
-StalkMen-
AndreySol,
Хм, вроде не в новом классе дело, ругается же вообще на game_cl_ArtefactHunt.
Вообще странно, зачем вызвался его "конструктор серверного класса". Отладчик в руки и вперёд.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.