LINUX.ORG.RU

Новая версия открытого движка OpenXRay (S.T.A.L.K.E.R.: Call of Pripyat) версии 730

 , ,


3

1

Минорный релиз версии открытого (не свободного!) игрового движка OpenXRay под номером 730 для Linux.

Список наиболее заметных изменений, по сравнению с предыдущим релизом 558:

Основные исправления:

  • Исправлена отрисовка капель дождя на Linux.
  • Исправлена ошибка сегментирования движка при выходе из игры.
  • Улучшена производительность при отрисовке аномалий.
  • Улучшена сборка мусора Lua (меньше микрофризов в игре).
  • Добавлен режим отрисовки wireframe для OpenGL.
  • Исправлено отображение статистики в команде rs_stats.
  • Бинокль теперь запоминает увеличение.
  • Добавлены ScreenSpace отражения на воде (команда r3_water_refl)!

Перед скачиванием ВНИМАТЕЛЬНО прочитайте инструкцию по установке. https://github.com/OpenXRay/xray-16/wiki/

Напоминаем, что для версии игры из GoG нужно переименовать все файлы и каталоги игровых ресурсов в нижний регистр!

Доступны пакеты для Ubuntu из ppa (https://launchpad.net/~eagleivg/+archive/ubuntu/openxray). (Осторожно, версия из PPA ищет игровые ресурсы в ~/.local/share/GSC/SCOP)

По возникшим проблемам пишите в https://discord.gg/sjRMQwv или в Issues на GitHub.

>>> Сайт проекта

★★★★★

Проверено: cetjs2 ()

Ответ на: комментарий от WatchCat

99.99% - это кто-то не разобрался в предмете, потратил время/деньги, а потом не смог портировать на другую платформу. с другой стороны, в то время особого выбора и не было, и каждый изобретал колесо в меру своих способностей. «не мы такие жизнь такая» (с)

anonymous ()
Ответ на: комментарий от anonymous

Свой алокатор, своя векторная математика, своя строка, свой массив - хаха классика. Примерно так это все и делалось в конце 90х начале 2000х с разной степенью упоротости, да, на это действительно были причины, я же не спорю.

Почему делалось? До сих пор делается.

Reset ★★★★★ ()
Ответ на: комментарий от Reset

Свое решение может работать лучше чем распространенное

Вот только в компиляторах есть специальные оптимизации под стандартные контейнеры. Во всяком случае интеловцы об этом говорили. И я сомневаюсь что самописный контейнер будет лучше стандартного.

WatchCat ★★★★★ ()
Ответ на: комментарий от WatchCat

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

Reset ★★★★★ ()
Ответ на: комментарий от Reset

ручная оптимизация на интринсиках

Которая может оказаться хуже стандартной. Мне интеловцы прямо заявляли, что надо использовать стандартные контейнеры, т.к. они их умно оптимизируют. В т.ч. и всякие итераторы, циклы for и прочая. Думаю в gcc с этим не намного хуже.

По поводу строк вообще отдельная тема. В плюсах это долго был гадкий утёнок. Чего стоит отсутствие конструктора для fstream с входящей строкой.

WatchCat ★★★★★ ()
Последнее исправление: WatchCat (всего исправлений: 1)
Ответ на: комментарий от Reset

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

anonymous ()
Ответ на: комментарий от WatchCat

Чего ты в векторе оптимизировать собрался? Простой как пробка - 3 указателя.

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

Поэтому в играх жертвуют мейнтейгебилити в пользу скорости. Игру 1 раз пишут…

anonymous ()
Ответ на: комментарий от anonymous

нах тебе лицензия, ты этот код в своей проприетарной поделке >использовать собрался, поехавший?

для всего остального исходников достаточно

anonymous (11.07.20 10:09:37)

Приехавший тут ты. Надо быть конченным, чтобы продавать хоть какую-то поделку на это «движке».

anonymous ()
Ответ на: комментарий от anonymous

ну так ирл эти фашисты быстро сдулись, а вот коммуняки…

Удивительно, что во время апокалипса почему-то решили спасти только бомжей и сидевших. И часть из них оказалась фашистами. А часть коммунистами. Что по сути глупее и быть не может. Т.е. фактически – контент для даунов.

anonymous ()
Ответ на: комментарий от Korchevatel

В оригинал уже давно никто не играет. Все играют в моды.

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

anonymous ()
Ответ на: комментарий от anc

Это пять. Посмотрел до конца. «Мне уже двадцать». Так и хочется сказать, школотрон пасть закрой. Он бы ещё обзор по wolf3d сделал.

Ты просто не проэкстрополировал как следует. Если ему зашло Метро, которое не зашло мастеру Герванту, то Свалкер Герванту и подавно не зайдёт. Но твоей трёхнейронной системы ЦА Свалкера на это не хватит, так что не напрягайся.

anonymous ()
Ответ на: комментарий от anonymous

Т.е. фактически – контент для даунов.

Я теперь понял почему мои друзьям так зашла эта игра. Я в неё не играл, да и с друзьями уже не дружу. А Глуховский весь из себя такой, на Эхе эфиры дает.

anonymous ()
Ответ на: Т.е. фактически – контент для даунов. от anonymous

Я теперь понял почему мои друзьям так зашла эта игра. Я в неё не играл, да и с друзьями уже не дружу. А Глуховский весь из себя такой, на Эхе эфиры дает.

Точь в точь моя история.

https://www.youtube.com/watch?v=q04k6QAVMCc

anonymous ()
Ответ на: комментарий от WatchCat

Игра изначально собиралась борландовским компилятором, какой интел? После слива исходники адаптировали под msvc, а теперь ещё и под g++-8 и выше. Что касается скорости работы контейнеров и почему в геймдеве так не любят std, рекомендую найти на ютубе серию лекций от Unigine про c++, там этот вопрос подробно разбирается

eagleivg ★★★★★ ()

Re: Григорович же дал отмашку вида «делайте что хотите, за исключением коммерческого использования».

ну напишите свой с нуля под GLP Невозможно написать свой с нуля, полностью совместимый с оригиналом, так что в этом случае потребовалось бы и ресурсы все с нуля нарисовать. Чтобы очень близко соответствовать по поведению требуется очень близко соответствовать по коду, иначе каждый граничный случай (коих в игре дофига) не будет иметь точного соответствия в новом движке.

anonymous ()

Re: Григорович же дал отмашку вида «делайте что хотите, за исключением коммерческого использования».

ну напишите свой с нуля под GLP

Невозможно написать свой с нуля, полностью совместимый с оригиналом, так что в этом случае потребовалось бы и ресурсы все с нуля нарисовать. Чтобы очень близко соответствовать по поведению требуется очень близко соответствовать по коду, иначе каждый граничный случай (коих в игре дофига) не будет иметь точного соответствия в новом движке.

anonymous ()
Ответ на: комментарий от anonymous

Ты вообще не в курсе что такое геймдев и как оно работает. Взгляни на любой крупный двиг там херова гора «базовых» вещей свои включая языки разработки. И чем круче и современее двиг тем больше своего. Конструкторы из либ общих умерли именно в 2000ных. А либы переделывают в модули пробрасывая интерфейсы к ним что-бы не завязываться на них.

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

LINUX-ORG-RU ★★ ()
Ответ на: комментарий от WatchCat

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

LINUX-ORG-RU ★★ ()
Ответ на: комментарий от WatchCat

Могут например обернуть utf8 в паскалевские строки и никакие стандартные штуки тут уже увы кроме операций с памятью и то не факт что системное будет использоваться =).

LINUX-ORG-RU ★★ ()
Ответ на: комментарий от hobbit

Получается, что проект висит на честном слове одного человека.

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

LINUX-ORG-RU ★★ ()
Ответ на: комментарий от LINUX-ORG-RU

пацаны, а вы же реально застряли в 90х. во-первых, вы в школе чтоли не понаписывались своих реализаций списков и массивов? во-вторых, за 20 лет и стандартная библиотека продвинулась вперёд, и программы запускаются не на пентиум 200 ммх.

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

anonymous ()
Ответ на: комментарий от Reset

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

anonymous ()
Ответ на: комментарий от Behem0th

Из-за того что возможно работа пойдет насмарку

This. Причём, как показывают некоторые истории, возможные организаторы претензий спохватываются далеко не сразу…

hobbit ★★★★★ ()
Ответ на: комментарий от anonymous

Спасибо. Получается, по 100 и больше коммитов у 6 человек, и отчётливо виден Тот, Кто Всё Тащит… И ещё несколько человек с чуть меньшей активностью.

Я, честно говоря, ожидал меньшего размаха.

Тем обиднее будет, если у проекта случатся неприятности.

hobbit ★★★★★ ()

Я вот одного не понимаю, не легче было взять Unity 3d, ну или Unreal Engine 4 и научить его грузить: карты, модели, скрипты НПС-ей, чем X-ray насиловать.

anonymous ()
Ответ на: комментарий от anonymous

Гораздо сложнее. Они удобны только в рамках их ресурсной системы и той парадигме, которую задумывали создатели. Если бы ресурсы были свободными, можно было бы их импортировать, а так даже с нуля написать движок проще, чем бороться с ограничениями и многочисленными багами, которые никто ради тебя не будет чинить только потому что ты используешь движок не так, как все

anonymous ()
Ответ на: комментарий от anonymous

Например, в Юнити звуки можно грузить только из файлов, поэтому .db придётся в рантайме распаковывать во временные файлы и оттуда играть. Проще написать свою систему скелетной анимации, чем заставить Юнити адекватно работать с загружаемой в рантайме, потому что у неё костыли расставлены в коде импорта, а не в том месте, где данные передаются в движок. И производительность создания анимаций в рантайме просто неадекватная, подгружает вроде быстро, но потом секунды тормозит на одном кадре. Уже этого достаточно, чтобы перестать считать это хорошей идеей

anonymous ()
Ответ на: комментарий от Bagrov

А значит, лавочку теоретически могут прикрыть

Не прикроют, не переживай.

Движок уже давно пилят и модифицируют, тот же OGSR на ТЧ, Prosectors project. Григорович уже всё видел и в курсе.

И… Ребята, не пишите фигню, исходники финальных патчей были слиты самими разработчиками, как и исходники СДК. Согласно лицензионному соглашению материалы не могут использоваться в коммерческих целях, они и не используются, всё доступно бесплатно, качай, ставь, играй.

anonymous ()
Ответ на: комментарий от hobbit

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

anonymous ()
Ответ на: комментарий от anonymous

Есть предостаточно субъектов, которые разрабатывать никогда ничего не будут, а вот выкупить права специально для того, чтобы тянуть с людей бабло — это как здрасте. Типа патентных троллей (только в данном случае, скорее, не патентных, а «лицензионных»).

hobbit ★★★★★ ()
Ответ на: комментарий от anonymous

Да. Если конфиги строковые, к примеру. В сабжевом движке именно так. Или если ресурсы (свят-свят)строковые, или вообще, прости г-ди, в xml.

eagleivg ★★★★★ ()
Последнее исправление: eagleivg (всего исправлений: 1)
Ответ на: комментарий от anonymous

Увы, GL рендер написан как калька с DX, поэтому получилось немного … неоптимально. А спецы по рендеру GL не особо интересуются опенсорсом - они, как правило, уже трудоустроены и фофаниться тем же, с чем приходится пердолиться на работе, не хотят. См. «кругом станки, станки, станки…»

eagleivg ★★★★★ ()
Ответ на: комментарий от eagleivg

Или если ресурсы (свят-свят)строковые

Имена ресурсов точно не кандидат в стрингпулы, такое один раз на загрузке связывается. А в данных на диске обращаться по именам распространённая практика, это практически единственный вариант, если нет глобального редактора с метой как в (прости г-ди) Юнити.

anonymous ()
Ответ на: комментарий от eagleivg

Все равно слабо себе представляю, где работа со строками настолько влияет на производительность, что ее надо оптимизировать. В контексте шутеров или гонок. Или обращение строковому конфигу идёт по несколько раз на кадр?

anonymous ()
Ответ на: комментарий от eagleivg

Навскидку, в glBufferUtils.cpp не помешает:

To orphan, just use the buffer re-specification technique (glBufferData(NULL), glMapBufferRange(GL_MAP_INVALIDATE_BUFFER_BIT), or glInvalidateBufferData). You then get a fresh block of storage underneath the buffer handle to scribble on that no other GL commands can be referring to, so no synchronize is needed.

https://www.khronos.org/opengl/wiki/Buffer_Object_Streaming

anonymous ()
Ответ на: комментарий от eagleivg

Я рандомно потыкался в core/common заголовки сабжевого движка - явно видны следы модернизации и избавления от велосипедов, в частности использование stl-контейнеров. К сожелению, такое как раз может как раз приводить к серьезной просадке производительности, но не из-за того, что stl плохой, а просто разные предпосылки. К примеру, раньше были контейнеры или строки (я спекулирую уже на примере другого проекта) cow и повсюду возвращались by value. При тупой замене на stl через type alias будет очень много ненужных аллокаций памяти и копирования. Поэтому такие вещи надо менять аккуратно и а выстраивать четкую иерархию объектов чтобы можно было работать со ссылками и сырыми указателями (что сейчас ок в С++).

anonymous ()
Ответ на: комментарий от anonymous

Все равно слабо себе представляю, где работа со строками настолько влияет на производительность, что ее надо оптимизировать. В контексте шутеров или гонок. Или обращение строковому конфигу идёт по несколько раз на кадр?

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

anonymous ()