Вопрос на засыпку, а были попытки собрать 64 битную версию движка? Вроде бы все зависимые библиотечки есть в 64 битном исполнении, да я для самого движка 64 бита вполне имеют смысл.
так а смысл? 64хбитная система поддерживает 32хбитные приложения, а 32хбитная система не поддерживает 64хбитные приложения Или ты предполагаешь, что 64битный SE будет эффективней работать под 64битную систему?... Имхо, не факт даже. когда придумывал ник моя фантазия умерла
Сообщение отредактировал BamBam - Вторник, 04.12.2012, 04:15
А ничего, что 32 битная версия не может адресовать больше, чем 2 гигабайта адресного пространства? И в общем-то тут скорее вопрос в ловле платформозависимых глюков. При портировании на Линукс или тем более Макос собрать 64 битную версию таки хочешь не хочешь, а придется.
Не 2 Гб, а 4 - есть способ. А для 64 бит придется много всего переделывать, и дело не в библиотеках, а как раз в адресации памяти. В SE активно используются указатели, так вот их всех придется переделать на 64-битные.
Так есть же вполне себе портабельные типы для адресной арифметики типа ptrdff_t в них точно будут указатели влезать. http://www.cplusplus.com/reference/cstddef/ptrdiff_t/ Я всегда ими пользуюсь и вроде еще ни разу не нарывался на сложности с работой в long mode, хотя тут Unix и Windows в плане ABI отличаются, в последнем как раз портироваться гораздо сложнее. Хотя тут наверное по хорошему ещё бы научиться собираться при помощи последних версий GCC и перетащить сборку проекта на cmake, что наверное не слишком долго, но пару неделек точно займет.
Сообщение отредактировал Sauron - Среда, 05.12.2012, 01:31
Пользуюсь premake4 для генерации 64-битного проекта для сборки, а также просто использую указатели типа type_name*. Проблем с портабельностью не получал - важно только использовать size_t и ptrdiff_t там, где это нужно. А так-же в структурах, которые сохраняются на диск прийдётся использовать фиксированые типы (int32_t).
Переделывать указатели не нужно, разве что где-то каст void* -> int... Мне пришлось таки поменять один тип (хендл) с unsigned int на void*.
Не бойтесь перехода, там всё гораздо проще чем кажется. Premake4 хороший инструмент, на выходе генерирует SLN или Makefile, а так-же если надо проекты для XCode/CodeBlocks. Для студии он прямо создаёт x64 как платформу на выбор.
P.S. Моё мнение, что переход - это было бы отлично, но не есть необходимостью. Симулятору X-Plane пришлось переходить на х64, поскольку у них (почему-то) наполнение мира стало накапливаться свыше 2 ГБ. Правда такое ощущение, что они просто ничего не чистят!
Сообщение отредактировал BlackPhoenix - Среда, 05.12.2012, 02:41
premake не использовал, но говорят он таки покрасивее, чем cmake. Да и макроязык в cmake мягко говоря убогий, а в premake вроде же вполне няшный lua используется. Который кстати можно будет потом и для скриптования логики в движке использовать.