Sidebar

Портирование Xash3D на android

a1batross

Umu~!
Jan 6, 2015
664
27
Это на ПК. Ксаш-то не только на Андроид портирован, а вообще на линукс. Впрочем, благодаря этому и порт на андроид родился.

Так вот, я таки решил проблему со сменой игры. Дело не в флагах и ничем другом.

В binutils есть два линкера -- bfd и gold. Последний как бы стремится заменить первый. Оба этих линкера на функции с шаблонами ставят флаг STB_GNU_UNIQUE. (которые из CUtlRBTree<I, T>::Links(T)).

libdl видит этот флаг и после dlclose() библиотеку закрывает, но из памяти не выгружает. (!)

В общем, переключил в системе линкер на gold, прописал флаг --no-gnu-unique и смена игры заработала так, как нужно.
 

gfdjr5

[NULL]
Nov 25, 2012
563
0
0
a1batross said:
libdl видит этот флаг и после dlclose() библиотеку закрывает, но из памяти не выгружает. (!)
Привет, утечка.
 

gfdjr5

[NULL]
Nov 25, 2012
563
0
0
a1batross said:
Это не будет утечкой, но поведение libdl как раз таки неправильное.
Память не аннулируется, но и освобождать её некому будет.
 

a1batross

Umu~!
Jan 6, 2015
664
27
Last edited:

FiEctro

Ведущий
Jul 28, 2006
17,139
33
a1batross said:
Чем душа хочет заниматься, тем и занимается.

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


a1batross said:
После этого осознания я начал понимать прогеров из вальвы, которые не хотят нам делать третью часть сами знаете какой серии.

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

mittorn

New member
Apr 22, 2010
1,213
15
0
Дядя Миша said:
Не надо давать пользователю вносить свои режимы. Он мигом поставит там 1024х0 и повесит видеодрайвер или еще что-нибудь придумает.
Если от этого повиснет видеодрайвер, значит так и надо видимо. Только вот я не видел видеодрайвера, который бы включил недопустимый режим. Выдать ошибку при попытке задать правильный - пожалуйста, но не недопустимый. И даже goldsrc разных версий позволяет указывать режимы через коммандную строку.
У меня планшеты с разрешениями 800x450 и 1280x800. Первое как видно вообще не под один режим не подгоняется. goldsrc запускается правильно (хотя без аппаратного opengl в exagear особо не поиграешь).
Что касается меню: почему бы не переделать его на макросы? в таком виде, как оно есть, добавить или подвинуть что-то - возня почти на час. А так был бы макрос MSGBOX(name, text, b1,b2) например, который делал бы то же самое в одной строке.
 

a1batross

Umu~!
Jan 6, 2015
664
27
2 FiEctro:
Вообще, это и затевалось ради порта ксаша на SDL2. Ибо такую-то вещь действительно стоило бы сделать кроссплатформенной. Ну это изначально, да. В процессе того, как я более погружался в код, тем больше хотелось переписать некоторые вещи.
Затем внезапно появилась цель -- допилить ксаш под ARM и выпустить на Android, но желание убрать и заменить некоторые вещи всё ещё в силе. Правда, его пока хватает только на флуд.
 

GNU/Hurt

Ma&#239;t&#233;
Mar 5, 2014
1,094
23
0
>желание убрать и заменить некоторые вещи
даёшь ксашмод!
 

FiEctro

Ведущий
Jul 28, 2006
17,139
33
2 a1batross:
>> Вообще, это и затевалось ради порта ксаша на SDL2.

Я кстати тоже непонимаю чего все так на СДЛ агрятся, валва пошла по тому же пути. К тому же ваш порт получился довольно шустрым.

Вы кстати вкурсе что они кроссплатформенный СДК на гитхаб недавно выложили? Думаю вам будет полезно:
https://github.com/ValveSoftware/halflife

И вот еще исходники мода Blue Shift (на обычном хлсдк 2.3):
http://gamer-lab.com/rus/code_mods_goldsrc/Half-life_Blue-Shift

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

Будь очень осторожен, весь ксаш работает по принципу «Работает — не трогай», и любое неосторожное изменение может потом выплыть в целую кучу багов.

>> но желание убрать и заменить некоторые вещи всё ещё в силе.

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

>> Правда, его пока хватает только на флуд.

Я с кодом врядли помочь смогу, а в остальном обращайтесь.
 
Last edited:

a1batross

Umu~!
Jan 6, 2015
664
27
Да. Этот же кроссплатформенный SDK и испольщуется. Точнее, сервер из него.
Так-то да, сейчас работа как раз таки и ведется над андроидом. mittorn, например, экспериментирует с флагами оптимизации, буквально борясь, чтобы за одну секунду движок нарендерил больше кадров. Я сам Java-лаунчер и сенсорное управление пилю. Вот наверное сегодня вечером и сяду колупать клиент, как бы в него ивенты с SDL отправлять. Особенно TouchEvent и JoystickEvent. Код.джойстика сейчас вообще каждый кадр дергает SDL.
 

mittorn

New member
Apr 22, 2010
1,213
15
0
FiEctro said:
Я кстати тоже непонимаю чего все так на СДЛ агрятся, валва пошла по тому же пути. К тому же ваш порт получился довольно шустрым.
Ну например большое количество багов на данный момент. Не знаю, как в windows, но на android с ним всё плохо.
Ещё valve плохо сделали, что клиент платформозависим. Теперь клиент от WON если и работает, то на костылях. А новый клиент даже в виндовом xash не работает (если я ничего не упустил).
Сейчас вижу такое возможное исправление со стороны виндового xash: эмулировать те функции SDL, которые используются в клиенте. Их не много, так что это будет просто скорее проброс ввода.
Возможно и в кроссплатформенном xash сделать систему бэкендов (для клиента тоже SDL эмулировать, либо вообще отделить API ввода от клиента).
А ещё на android SDL съедает половину производительности. Не знаю даже, баг это или так и должно быть, ведь android все события из другого потока вызывает и sdl организует какую-то очередь.
 
Last edited:

Raid

VIP
Jul 11, 2006
8,308
33
220
0
CSM-чат
gfdjr5 said:
Выводить варнинг о том, что разрешение окна в два раза больше разрешения твоего экрана? А ты его увидеть сможешь? Или только усы Фримена увидишь в меню? В таком случае, под запретом имеется ввиду, что размер окна автоматом будет переключён на нативный размер экрана, а там уже и варнинг можно вывести.
Вот к вопросу о том, чего стоит запрещать, а чего нет. Поставил я ку3 значит. А там, есессно, нет поддержки вайдскрина. Ну я полез в конфиги, искать чо бы там такого поменять можно, похожего на разрешение. И нашёл строчки
Code:
seta r_customheight "1024"
seta r_customwidth "1600"
Поставив туда 1080 пи. Однако, после запуска игры разрешение не поменялось. Я полез гуглить, и наткнулся на статью в которой в глаза сразу же бросился интересный параметр "-1" в строке "seta r_mode" который у меня стоял "3". Так вот. Если б создатели кваки рассуждали в своё время как ты - без перекомпиливания и костылей не обошлось бы. И всё только для того, чтобы выставить разрешение. Но они были умнее, и дали возможность ручного управления при горячем желании. Понимаешь? Наличие простого шпингалета в конфиге делает волшебные вещи, в отличие от гвоздей в двигло.
 
Last edited:

gfdjr5

[NULL]
Nov 25, 2012
563
0
0
Raid said:
Вот к вопросу о том, чего стоит запрещать, а чего нет. Поставил я ку3 значит. А там, есессно, нет поддержки вайдскрина. Ну я полез в конфиги, искать чо бы там такого поменять можно, похожего на разрешение. И нашёл строчки
Code:
seta r_customheight "1024"
 seta r_customwidth "1600"
Поставив туда 1080 пи. Однако, после запуска игры разрешение не поменялось. Я полез гуглить, и наткнулся на статью в которой в глаза сразу же бросился интересный параметр "-1" в строке "seta r_mode" который у меня стоял "3". Так вот. Если б создатели кваки рассуждали в своё время как ты - без перекомпиливания и костылей не обошлось бы. И всё только для того, чтобы выставить разрешение. Но они были умнее, и дали возможность ручного управления при горячем желании. Понимаешь? Наличие простого шпингалета в конфиге делает волшебные вещи, в отличие от гвоздей в двигло.
К чему это всё? Какого перекомпилирования и костылей? Я же написал, что видеорежимы выносятся в отдельный файл и брать информацию о них движок будет именно из этого файла. При первом запуске и при выставленных размерах, больше тех, что имеет монитор нативно, выставляются корректировки. Кто тебе мешает выставить кастомное разрешение?
 

Raid

VIP
Jul 11, 2006
8,308
33
220
0
CSM-чат
2 gfdjr5:
Ну раз при первом, то ладно тогда.

klu-140212-016.jpg
 

Дядя Миша

Супер Модератор
Mar 28, 2010
15,347
235
0
Кубань
У кого зависает на карте c2a3c - просто подождите 10-15 секунд. Там даже на core-i5 подвисает при первой загрузке карты.
А вот c c2a3d какие-то проблемы. Спасает подсовывание готового nod-файла. Тут на core-i5 висит 2 секунды.
Похоже какая-то регрессия ещё в оригинальном в xash, ибо на компах 2000х оно бы висело по нескольку минут, если даже не часов.
P.S на c2a3d тоже ждите, ждите и ещё раз ждите. На момент исправления этого комментария оно уже отвисло

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

a1batross

Umu~!
Jan 6, 2015
664
27
2 Дядя Миша:
Никогда не знал, что они поставлялись с игрой. Просто подсказка с удалением графов еще висит с исправления навигации NPC.
 

Дядя Миша

Супер Модератор
Mar 28, 2010
15,347
235
0
Кубань
2 a1batross: это правило хорошего тона - класть ноды вместе с релизом.
Любителям линукса не понять, они привыкли, что им дают кучу какого-то малопонятного говна, из которого они путём компиляции собирают условную конфету.
А на винде народ привыкший, что всё уже скомпилено до них.
 

a1batross

Umu~!
Jan 6, 2015
664
27
2 Дядя Миша:
я проигнорирую твой выпад в сторону линуксов.

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

Game Server

CSM TV

Page QR Code

QR Code

Donate Campaign

Total amount
$0.00
Goal
$25.00

Latest profile posts

TestUser wrote on TRUP@C's profile.
Master?
TestUser wrote on TRUP@C's profile.
Hello Father

Members online

No members online now.

Discord