Sidebar

Xash3D SDL2 форк

nemyax

тндайпц тра
Staff member
Модератор
Jul 30, 2015
643
25
18
2 mittorn:
Сразу не было. Мне же впервые удалось запустить. И xash-extras не распаковывал. Я думал, вы всё нужное сами предоставляете, как тот же вгуй.
 

mittorn

Active member
Apr 22, 2010
1,229
22
38
2 nemyax:
Сразу только на android.
А вообще, не знаю, можно ли эти файлы с собой таскать. Установка, как и документация у нас плохо проработана.
Если разработчику ещё просто всё поставить, то незнакомому с кодом и устройством движка пока сложно.
 
Staff member
VIP
Mar 28, 2010
15,566
315
83
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
2 mittorn: мне пролетарское чутье подсказывает, что вам достался ксаш, который работал. А после пересборки начал сегфолтится на ровном месте )
Такое вот преимущество.
 

mittorn

Active member
Apr 22, 2010
1,229
22
38
2 Дядя Миша:
сегфолтился не ксаш, а vgui. И сегфолтится потому что клиент, зависящий от vgui был загружен без инициализации vgui (смотри выше, библиотека vgui_support там отсутствует)
К сожелаентю, не знаю способа предотвратить загрузку клиента, зависящего от vgui без vgui_support.
Добавлю сообщение с предупреждением при ошибке инициализации, что если клиент использует vgui - будет краш.
Знаю, что это всё плохо, но десктопной версии мы просто уделяем слишком мало внимания.
Можно ещё положить в extras клиент, не зависящий от vgui.
Тут могу подметить, что оригинальный xash не запустится без vgui вообще, даже если он не нужен клиенту.
 
Last edited:

nemyax

тндайпц тра
Staff member
Модератор
Jul 30, 2015
643
25
18
2 Дядя Миша:
Ну причиной сегфолта было отсутствие библиотеки. Ванильный ксаш тоже почти наверняка вряд ли бы такое сдюжил.
 

mittorn

Active member
Apr 22, 2010
1,229
22
38
2 nemyax:
не совсем.
Ванильный ксаш прилинкован к vgui статически, а libvgui_support там внутри. Мало того, что это не позволяет запустить его без vgui в принципе, да ещё и противоречит лицензии GPLv3, под которой формально распространяется код.
Если почитаешь эту тему, там описана причина отделения vgui отдельно (помимо лицензии).
Мне нужна была возможность загрузить клиент от windows в linux версии. vgui был препятствием т.к взаимодействовал напрямую через c++ abi как с движком, так и с клиентом.
Отвязав движок от vgui (теперь они связаны через vgui_support сишным API), я вскоре смог успешно загрузить vgui и клиент. В отличие от c++ интерфейсы на C от разных платформ совместимы
Так что теперь под linux можно играть в моды, собранные только под windows.
Это же позволило мне теперь отказаться от visual studio в windows сборках. Он теперь нужен только для сборки vgui_support.dll
 

nemyax

тндайпц тра
Staff member
Модератор
Jul 30, 2015
643
25
18
Да у меня вообще, откровенно говоря, сбылась мечта идиота: играть в халфу и моды на линуксе нативно без стима. В погоне за этой мечтой я в своё время и попал на hlfx.ru, когда поманил небезызвестный adamix.
Спасибо дяде Мише, a1batross-у, mittorn-у и другим товарищам за наш счастливый средний возраст!
 

gfdjr5

[NULL]
Nov 25, 2012
562
0
0
mittorn said:
Ванильный ксаш прилинкован к vgui статически,
Ты чего народ обманываешь? Или ты не знаешь, что такое статическая линковка? vgui слинкована динамически, её кода внутри собранного движка нет, есть лишь точки связки для подключения динамической либы и заранее сгенерированный код, который на старте сам грузит и связывает её с движком

Post automatically merged:

mittorn said:
В отличие от c++ интерфейсы на C от разных платформ совместимы
Сомнительное утверждение
 
Last edited:

mittorn

Active member
Apr 22, 2010
1,229
22
38
>Ты чего народ обманываешь? Или ты не знаешь, что такое статическая линковка? vgui слинкована динамически, её кода внутри собранного движка нет, есть лишь точки связки для подключения динамической либы и заранее сгенерированный код, который на старте сам грузит и связывает её с движком
2 gfdjr5:
Тут я конечно неправильно выразился, но ты тоже неправ.
Подразумевалась в виду, что была именно линковка, а не загрузка в рантайме.
Сгенерированного кода тут нет, связыванием занимается операционная система. В случае отсутствия vgui LoadLibraryA вернёт шиш т.к система не сможет произвести связывание, следовательно xash.dll не загрузится и на это повлиять никак нелзя.
Единственное, что можно сделать, чтобы избежать использования vgui - подсунуть стабовый vgui.
У меня даже есть такой. Хотел восстановить полностью, но забросил. Однако он уже может быть загружен движком и создать panel. Код кнопок вроде написан, но ни разу не проверял его, для клиента надо больше элементов.
>Сомнительное утверждение
Чем же сомнительное?
Структуры одинаково представлены, calling conversion относится уже к особенностям реализации языка для процессора и на разных платформах одинаковые.
Были такие сложности:
1. VS использует особый манглинг аргументов при возвращении агрегатных типов в Си
2. В linux версии не используется stdcall
Первое не описано стандартом языка c89, который использует штудия для си (C99 они не уважают) и является UB
Второе уже не относится к ABI, а просто так хл портировали. И вообще stdcall - зло.
 
Last edited:

gfdjr5

[NULL]
Nov 25, 2012
562
0
0
2 mittorn:
Прочитай про позднее и раннее связывание
Я имел ввиду, что происходит именно раннее динамическое связывание, статически код vgui в двиг не встраивается
 

mittorn

Active member
Apr 22, 2010
1,229
22
38
2 gfdjr5:
я сказал выше, что неправильно употребил терминологию.
 
Staff member
VIP
Mar 28, 2010
15,566
315
83
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
В погоне за этой мечтой я в своё время и попал на hlfx.ru, когда поманил небезызвестный adamix.
И все эти годы молчал и только сейчас признался!

К слову сказать в XashNT я планирую привязать vgui исключительно на клиенте.
Выведу чуть-чуть функций из движка, типа каллбэка на окно и будет такой вгуи в клиентке. Кому не надо - вырезывает и забывает. А движок про него даже знать и то не будет. Но вам так нельзя - совместимость.
 

mittorn

Active member
Apr 22, 2010
1,229
22
38
2 Дядя Миша:
А не лучше ли чем-нибудь заменить его? Лишние проблемы же
Как видно по существующим модам, vgui использовался в основном из-за невозможности загружать tga и рисовать 2d не в additive режиме. Для пользовательского интерфейса - намного реже.
Если предполагается рисовать hud с клиента через движок (а так удобнее) - то по идее нужно просто сделать функции вроде FillRGBABlend, стенсилы и какую-либо работу с текстом (нам например без vgui не хватает возможности масштабировать шрифт).
Конечно, vgui пускай остаётся, но думаю, не помешала бы возможность его обойти.
 
Staff member
VIP
Mar 28, 2010
15,566
315
83
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
Да мне он в принципе не нужен, но в планах порт паранои-два на новый движок.
И вот там он пригодится. Я надеюсь вы все поняли мой хитрый план?
1. делаем движок сферический в ваккуме. Всё глючит, геймплея нет.
2. делаем дальше. Карты по отдельности заводим, глюки накапливаются, архитектура неоптимальная. Самое время заархивировать и удалить.
3. Ксерокс мне и говорит - а сделай совместиым с халфой. Отладишь движок на модах. Я сначала сопротивлялся, а потом думаю, а ведь действительно - отлажу.
4. Народу нравится, тестируем моды, исправляем баги и ошибки.
5. Затеваю новый проект. Понимаю, что он опять оказывается в сферическом ваккуме без геймплея.
6. И тут Элбер с параноей! Делаем параною. (и римейк кваки еще).
7. У меня есть как минимум одна готовая игра, которую можно портировать под новый движок, чтобы всё отладить. И вот новый движок уже не в ваккуме. Более того - самое время провести работу над ошибками, допущенными над параноей.
Всё это залог того, что новый движок будет заведомо оттестирован перед тем как попадёт в шаловливые ручки мододелов. Разве что опять, у кого-то не окажется GL_EXT_texture_array и GL_HALF_FLOAT.
Но за такое в наше время уже наверное убивать можно или хотя бы насмехаться.
 

a1batross

Umu~!
Jan 6, 2015
674
27
2 mittorn:
Проблема со шрифтом обходима, если грузить спрайт и разрезать его как в hud.txt.

Но да, вещи вроде масштабирования и выбора шрифта должны быть. В меню хорошо это сделанр.
 

gfdjr5

[NULL]
Nov 25, 2012
562
0
0
Дядя Миша said:
Более того - самое время провести работу над ошибками, допущенными над параноей.
Ну, надеюсь, после этой работы над ошибками, монстры, при выстреле из дробовика в упор будут хоть как-то реагировать. Покричат, для приличия, что ли... :facepalm:
И ironsight допили
 
Last edited:

gfdjr5

[NULL]
Nov 25, 2012
562
0
0
Дядя Миша said:
То что там монстрам под 10 000 здоровья проставлено - это не я.
Я думал, сейчас возьму дробовик и разнесу кому-нибудь голову. Выстрел, второй - ничего. В итоге умер он дружественного нпс :facepalm:
А ещё эти идиоты тупо стоят, пока их атакуют монстры, встают в проходах и просят уйти с их пути

Дядя Миша said:
что конкретно?
Всё то же - режим, при котором ironsight будет активен лишь пока удерживаешь клавишу

Post automatically merged:

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

Post automatically merged:

Что я примерно имею ввиду:

Post automatically merged:

Дядя Миша said:
То что там монстрам под 10 000 здоровья проставлено - это не я.
Ну это жирно
Если сократить в два раза, а урон с того же дробовика в тулово установить ~300, в голову - ~500-600 за выстрел, воспроизводя при этом облако партиклов кровищи - самое то было бы
 
Last edited:

mittorn

Active member
Apr 22, 2010
1,229
22
38
2 Дядя Миша:
По идее не помешала бы ещё возможность использовать указатель мышки в клиенте. Пока вроде можно только через vgui это сделать.
 
Staff member
VIP
Mar 28, 2010
15,566
315
83
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
А ещё эти идиоты тупо стоят, пока их атакуют монстры, встают в проходах и просят уйти с их пути
Там один наш общий товарищ что-то нарушил. Но пока сложно сказать, что именно.
режим, при котором ironsight будет активен лишь пока удерживаешь клавишу
А не, так не получится, об этом меня еще Elber просил.