HLFX.Ru Forum
Показать все 30 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Технические вопросы (https://hlfx.ru/forum/forumdisplay.php?forumid=20)
-- Endianness - анахронизм? (https://hlfx.ru/forum/showthread.php?threadid=4242)


Отправлено XaeroX 14-01-2014 в 10:41:

Endianness - анахронизм?

Как мы помним с детства, исходники квейков пестрят функциями LittleLong и LittleShort, оставшиеся в наследство от стремления Кармака запускать кваку на своём личном маке с PowerPC, являвшимся процессором big-endian архитектуры. Поэтому и написан код, способный компилироваться раздельно в разные эндианы, а иногда даже детектировать endianness в рантайме.
Но в последнее десятилетие произошли серьёзные события:

  1. MacOS X начала работать с процессорами little-endian, а последняя версия вообще работает только на интелах - то есть PowerPC нафиг сдох, как кокаин из известного фильма Тарантино.
  2. Телефоны на процессорах ARM работают в little-endian режиме, за исключением совсем уж древних, где небось даже злых птичек не запустишь. Т.е. процессор ARM не только умеет работать в обеих endianness, но ещё и little по умолчанию. И всё больше телефонов оснащаются процессорами Intel.

Отсюда возникает закономерный вопрос: а существуют ли сейчас распространённые десктопные решения на основе big endian? Или хотя бы сервера, где можно вешать дедикейтед? Экзотика типа "у моей бабушки нашёлся PowerPC, и я сам поднял на нём свой сервак" не в счёт.
Проголосовавших за "Да" милости просим отметиться в теме, приведя соответствующие аргументы.

UPD: речь только об архитектуре процессора! Про сетевой код вспоминать не нужно.

__________________

xaerox on Vivino


Отправлено FreeSlave 14-01-2014 в 10:53:

Задумываюсь, но не в контексте архитектуры, а в контексте TCP/IP, ибо там как раз порядок байтов иной.
На практике машины с big endian не встречал, но он может быть на HP-UX и Solaris (SPARC).


Отправлено XaeroX 14-01-2014 в 11:00:

Цитата:
FreeSlave писал:
не в контексте архитектуры, а в контексте TCP/IP

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

Добавлено 14-01-2014 в 18:00:

Цитата:
FreeSlave писал:
он может быть на HP-UX и Solaris (SPARC)

Ну кваку на них люди запускают, играют? Или только крузис таки серверная экзотика?

__________________

xaerox on Vivino


Отправлено FreeSlave 14-01-2014 в 11:11:

XaeroX, гугление показало, что квака под соляру таки есть ( http://blog.boreas.ro/2007/08/gaming-on-solaris.html ). Насчёт распространенности не знаю.


Отправлено XaeroX 14-01-2014 в 11:14:

Я понимаю, что есть. Полтора землекопа есть на каждой системе. Речь о полноценной аудитории геймеров. Традиционно такими аудиториями считаются пользователи Windows, Linux, MacOX, и вот теперь iOS и Android. Я к тому, что отныне они все вроде как little-endian, и про LittleLong можно смело забыть, как мы забыли про обязательное выравнивание?

__________________

xaerox on Vivino


Отправлено thambs 14-01-2014 в 11:51:

XaeroX
каким запросом гууглить что такое "обязательное выравнивание"?

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено FreeSlave 14-01-2014 в 12:14:

XaeroX, линуксы и на архитектуры с big-endian есть, но игроков там те же полтора землекопа.
Я думаю, если возникнет внезапная потребность в поддержке big-endian, то написать в нужных местах fromLittleEndian и toLittleEndian будет несложно.


Отправлено XaeroX 14-01-2014 в 12:25:

thambs
Гугли просто "выравнивание", там можно найти статьи, где описывается, что на старых PPC доступ к невыровненным данным возбуждал исключение.
Да вот хотя бы: http://www.ibm.com/developerworks/library/pa-dalign/

Добавлено 14-01-2014 в 19:25:

Цитата:
FreeSlave писал:
написать в нужных местах fromLittleEndian и toLittleEndian будет несложно.

Не скажи, эти места ещё отыскать надо будет, да по всему проекту.

__________________

xaerox on Vivino


Отправлено Дядя Миша 14-01-2014 в 15:36:

Я выбросил эти вещи из ксаша в 2011 году. На весь проект у меня остался один BigShort - для сети.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Government-Man 15-01-2014 в 00:55:

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

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


Отправлено ERIK-13 18-01-2014 в 09:50:

Цитата:
XaeroX писал:
а существуют ли сейчас распространённые десктопные решения на основе big endian?

Существуют консоли. Седьмое поколение консолей (PS3, Xbox 360, Wii) целиком работало на PowerPC. В восьмом поколении на PowerPC работает Wii U.


Отправлено XaeroX 18-01-2014 в 11:36:

ERIK-13
Они же все Little-endian, не?

__________________

xaerox on Vivino


Отправлено ERIK-13 18-01-2014 в 13:15:

XaeroX
Нет, все консоли, которые я перечислил - Big-endian.


Отправлено XaeroX 18-01-2014 в 13:25:

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

__________________

xaerox on Vivino


Отправлено ERIK-13 18-01-2014 в 13:40:

XaeroX
Процы-то сами по себе умеют, а вот SDK для консолей с Little-endian не дружат, и ресурсы консольных игр все записаны в Big-endian. Насколько я знаю, проц в PS3 переключаться в другую эндиану совсем не умеет.

Кстати, Кармак не так давно писал в твиттере про эндиану Wii U: https://twitter.com/ID_AA_Carmack/s...382876312317952


Отправлено Дядя Миша 18-01-2014 в 13:57:

Цитата:
ERIK-13 писал:
Кстати, Кармак не так давно писал в твиттере про эндиану Wii U: https://twitter.com/ID_AA_Carmack/s...382876312317952

Вау! А я думал, ему все эти годы доставляло удовольствие прописывать везде LittleLong, LittleShort

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 18-01-2014 в 15:00:

Цитата:
ERIK-13 писал:
и ресурсы консольных игр все записаны в Big-endian

Этого не может быть, т.к. как записывать ресурсы - определяет разработчик. Я, например, компилирую карты под виндой, а значит, карты в литтле. Это же касается моделей, текстур и т.п.

Добавлено 18-01-2014 в 22:00:

Цитата:
ERIK-13 писал:
Кстати, Кармак не так давно писал в твиттере про эндиану

Ок, будем его избегать.

__________________

xaerox on Vivino


Отправлено Government-Man 18-01-2014 в 20:56:

Цитата:
XaeroX писал:
Этого не может быть, т.к. как записывать ресурсы - определяет разработчик. Я, например, компилирую карты под виндой, а значит, карты в литтле. Это же касается моделей, текстур и т.п.


Можно сделать так, чтобы ресурсы можно было хранить и так и сяк. В уе3 например есть понятие кукинга, когда из пакаджей удаляется лишняя инфа и они записываются в "более удобном для загрузки формате". Наверняка оно и байты свопить умеет, хотя и не факт.


Отправлено Дядя Миша 19-01-2014 в 15:13:

Цитата:
Government-Man писал:
В уе3 например есть понятие кукинга, когда из пакаджей удаляется лишняя инфа и они записываются в "более удобном для загрузки формате".

Это вот та самая пакость, когда в одном паке оглавление, а в остальных - raw-data? Убил бы за такое.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ~ X ~ 19-01-2014 в 19:11:

Дядя Миша +1, give weapon_ripper

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Government-Man 19-01-2014 в 20:07:

Цитата:
Дядя Миша писал:
Это вот та самая пакость, когда в одном паке оглавление, а в остальных - raw-data? Убил бы за такое.


Ты говоришь так, как будто в этом есть что-то плохое.


Отправлено XaeroX 19-01-2014 в 20:08:

Government-Man
Ну как бы есть.
Это когда у тебя кухня в одном городе, а остальная часть квартиры - в другом. Неудобно к холодильнику за пивом бегать, например.

__________________

xaerox on Vivino


Отправлено Government-Man 19-01-2014 в 20:41:

Цитата:
XaeroX писал:
Это когда у тебя кухня в одном городе, а остальная часть квартиры - в другом. Неудобно к холодильнику за пивом бегать, например.


Ну движку анрила видимо удобно.
Он наверное таблицу полностью сразу грузит и потом остальные паки подгружает по мере надобности. Зато каждый ресурс имеет уникальный идентификатор в пределах всей игры.

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


Отправлено XaeroX 19-01-2014 в 20:42:

Цитата:
Government-Man писал:
но формат создавался вовсе не для русских коммунистов, считающих, что ресурсы игры принадлежат обществу

Русские коммунисты пишут русский софт, восполняя недостатки официальных сдк, причём совершенно бесплатно (ибо коммунизм). И вот им как раз неудобно.

__________________

xaerox on Vivino


Отправлено Дядя Миша 19-01-2014 в 21:02:

Цитата:
Government-Man писал:
Ты говоришь так, как будто в этом есть что-то плохое.

Я убиваю оглавление и остальные паки превращаются в dev\urandom.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Government-Man 19-01-2014 в 21:14:

Цитата:
Дядя Миша писал:
Я убиваю оглавление и остальные паки превращаются в dev\urandom.


Ты убиваешь оглавление одного из паков и он превращается в dev\urandom, и движок вылетает из-за отсутствия необходимых ресурсов. Так что на практике проблема несколько надуманная. К тому же игра должна проверять целостность ресурсов на старте и если хоть один пак поврежден, игра должна вылететь с ошибкой обновить файлы через Steam.


Отправлено XaeroX 19-01-2014 в 21:24:

Government-Man
Новый УЕ привязан к стиму?

Добавлено 20-01-2014 в 04:24:

Цитата:
Government-Man писал:
Ты убиваешь оглавление одного из паков и он превращается в dev\urandom

Один пак, а так - все.
Цитата:
Government-Man писал:
и движок вылетает из-за отсутствия необходимых ресурсов

А если убился не критичный пак? Движку-то для загрузки что надо? Всякая мелочь типа шрифтов да gfx.wad. Остальное уже опционально.

__________________

xaerox on Vivino


Отправлено Government-Man 19-01-2014 в 21:36:

Цитата:
XaeroX писал:
Новый УЕ привязан к стиму?


Он не привязан, но у него есть возможность использовать стим. У меня помнится челюсть отвисла, когда при запущенном стиме я запустил UDK и у меня в стиме статус поменялся на "играет в Unreal Development Kit" - ваистину стим слидит!

Но UDK можно запускать и без стима - сам движок к нему не привязан.

Цитата:
XaeroX писал:
А если убился не критичный пак? Движку-то для загрузки что надо? Всякая мелочь типа шрифтов да gfx.wad. Остальное уже опционально.


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


Отправлено XaeroX 19-01-2014 в 21:37:

Government-Man
Не согласен. В ку3, скажем, каждая кастомная карта запакована в отдельный пак. Если пара карт убилась - ничего страшного, можно играть в другие.

__________________

xaerox on Vivino


Отправлено Government-Man 19-01-2014 в 21:43:

XaeroX
Так кастомныя карты же, если какая-то игра на УЕ поддерживает кастомные карты, то они наверняка не будут добавляться в общую таблицу, и при убийстве этих паков ничего не будет. А вот если ресурсы основной игры повреждены - это плохо все же, особенно учитывая то, что УЕ в своих паках еще и код хранит.


Временная зона GMT. Текущее время 20:54.
Показать все 30 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024