Как скомпилировать движок?

Тема в разделе "Машинное отделение", создана пользователем Алексей Н., 9 сен 2008.

  1. дуп
    Оффлайн

    дуп Учаcтник

    Репутация:
    0
    Очень криво. При чем тут Арена?
    Могу предложить такой вариант: Выбросите то, что вы скачали и скачайте Visual C++ 2008 Express. Он бесплатный, только регистрация нужна. Компилятор там очень хороший, тот же самый, что и во всех версиях 2008. Он установится как надо, а потом я вам пришлю или запостю пошаговую инструкцию что и как сделать.
    http://www.microsoft.com/express/ru/vc/
    Правда бесплатный то он бесплатный, но мегабайт то там не хило.
     
  2. krey
    Оффлайн

    krey Михаил Кройтор Команда форума Команда форума

    Репутация:
    1
    как минимум ошибка
    присуща четвертой версии, так как об std она знать не может. стандарт с++ был принят в 1998 году, когда вышла 6-я студия
     
  3. WinPooh
    Оффлайн

    WinPooh В.М. Команда форума

    Репутация:
    95
    Если не хочется качать огромную бесплатную студию, есть неплохой вариант Code::Blocks, http://www.codeblocks.org/
    Правда, для компиляции конкретно Стрелки придётся чуть поработать напильником...
     
  4. дуп
    Оффлайн

    дуп Учаcтник

    Репутация:
    0
    Наука требует жертв :lol:
    В Visual 2008 тоже без напильника не обошлось.
     
  5. krey
    Оффлайн

    krey Михаил Кройтор Команда форума Команда форума

    Репутация:
    1
    кстати, в своё время я долго мучился чтобы скомпилировать стрелку компилятором gcc. каждой константе приписывал суффикс ULL. и еще что-то менял. зато теперь свободно компилируется и в mc++ и в gcc.
     
  6. Алексей Н.
    Оффлайн

    Алексей Н. Алексей

    Репутация:
    0
    Установил Visual C++ 2008. А что за работа напильником? Если подскажете, буду очень благодарен :p
     
  7. дуп
    Оффлайн

    дуп Учаcтник

    Репутация:
    0
    1. Запускаем студию, создаем проект:
    Create Project -> пишем имя(напр. MyStrelka) и выделяем Win32 Console Application ->
    OK -> Next -> ставим птицу в Empty Project -> Finish.
    2. Появится проект в виде дерева папок. Нужно подправить свойства проекта.
    Сразу поменяйте режим debug на release. Дебаг вам пока не нужен. Это в окошечке
    наверху. Потом поищите над деревом папок большую кнопку Propetis или еще где, не важно,
    нужно, чтобы открылось окно PropertyPages. Выделяем строчку Use Unicode Character Set.
    В выпадающем окне выбрать Use Multi-Byte Character Set. "Применить". OK.
    3. Закрываем студию. Идем туда, где у вас исходники. Можно сразу удалить два файла *.dsw и *.dsp,
    Они больше не нужны. Открываем файл Strelka.h Ниже текста напишите такую байду:
    #pragma warning(disable : 4996) Это нужно, чтобы компилятор не выдавал лишних предупреждений.
    Мелкософтам почему то перестали нравиться стандартные строковые С-функции.
    Затем открываем файл Strelka.c Вверху, где инклюды, найдите строку #include <csetjmp>. Ее
    надо закоментировать, т.е. перед ней поставить // Или удалить. Вместо нее ниже написать
    #include "setjmp.h". С напильником все.
    4. Обычно при установке папка с проектами устанавливается в "Мои документы". Нужно скопировать
    все 11 файлов в Мои документы -> Visual Studio 2008 -> Projects -> MyStrelka -> MyStrelka.
    5. Снова открываем студию. Щелкаем по названию проекта, появляется дерево папок. Правой кн по
    Source Files -> Add -> Existing Item и добавляете только три файла, про которые говорил
    WildCat.
    6. Компилируете. Или F7 или Build Solution через меню. Если все праильно, в дебаг-окне
    появится 0 error(s) 0 warning(s) Build 1 succeeded.

    Я мог сейчас что-то забыть, спать охота. Если что, завтра доделаем.
     
  8. Алексей Н.
    Оффлайн

    Алексей Н. Алексей

    Репутация:
    0
    Дуп, спасибо огромное, все отлично получилось! Шпарит даже чуть быстрее, чем дефоллтная. За мной самосвал арбузов ;) Если в будущем чем смогу помочь, буду рад.
    А инструкция эта может еще кому пригодиться. Я так понял, не только у меня возникали проблемы со сборкой Стрелки.
     
  9. дуп
    Оффлайн

    дуп Учаcтник

    Репутация:
    0
    Пожалуйста :)
    Забыл я вчера одну вещь. В отличии от шестой студии здесь по умолчанию линковка получается динамически. У вас сейчас наверное размер exe - файла очень мал. На вашем компе он работает, а на других, где нет студии он не запустится. Видели, наверное, окошки типа: "Приложению не удалось запустится, оно неверно настроено. Повторная установка поможет решить проблему". Не поможет :lol:
    Нужно перекомпилировать. Опять зайдите в Property -> C/C++ ->
    Code Generation -> строка Rintime Library. Нужно поменять "Muilty-threaded DLL(/MD)" на "Muilty-threaded (/MT)". OK. Ну и опять F7.
    Размер настоящей Стрелки 180 kb. У меня получился 171 kb. Ну и у вас должно где-то так же.
     
  10. WinPooh
    Оффлайн

    WinPooh В.М. Команда форума

    Репутация:
    95
    Можно также поиграться с Properties:Configuration properties:C/C++:Advanced:Calling Convention.
    Выбор __fastcall, возможно, ещё немного ускорит программу.
     
  11. дуп
    Оффлайн

    дуп Учаcтник

    Репутация:
    0
    Ну это мелочи. Радикальней надо:
    Находим ОФ, выкидываем оттуда всякую ерунду, которую Юрий Иванович понаписал, добавляем свое и дело в шляпе :cool:
     
  12. thenewone
    Оффлайн

    thenewone Евгений Манев

    Репутация:
    1
  13. дуп
    Оффлайн

    дуп Учаcтник

    Репутация:
    0
    Я попробую. Я вам напишу.
     
  14. дуп
    Оффлайн

    дуп Учаcтник

    Репутация:
    0
    А чего это у вас за Крафти такая интересная, с целыми файлами из Стрелки?
    С комментариями Игоря Коршунова :lol:
     
  15. WildCat
    Оффлайн

    WildCat Коршунов Игорь Команда форума

    Репутация:
    0
    Там комментарии авторские, а не мои. Судя по всему к Крафти добавлена таблица материальных соотношений из Стрелки.
    Интересно, насколько сила игры этой версии отличается от оригинальной версии?
     
  16. дуп
    Оффлайн

    дуп Учаcтник

    Репутация:
    0
    Да, файл "emater.c" взят практически без изменений. Кое-где просто зачем-то объявлено несколько дефайнов.
    Сейчас пляшу с бубном, пытаюсь скомпилить. Трудности, в основном, из-за поддержки кроссплатформенности. Про warning-и я вообще молчу.
    //
    Вот thenewone и хочет, наверное потестировать.
     
  17. Осипов Юрий
    Оффлайн

    Осипов Юрий Учаcтник

    Репутация:
    11
    Дуп, и от меня спасибо! С твоей подачи решил пересесть на Studio 2008. А то как лох последний до сих пор сижу на 6-й студии.

    Но вот какое дело. Скачал я эту новую студию, а там какой-то ISO-файл. Предлагают слить на DVD, и потом ставить. А я в этом ни уха, ни рыла. Можно простую инструкцию для чайника?
    И еще - там пишут типа того, что должна быть Vista. А под XP будет фунциклировать?
     
  18. bankuss
    Оффлайн

    bankuss Александр баннер

    Репутация:
    6
    Iso файл - образ диска. заливается дискописалками поддерживающими этот формат.
    про студию - 2008 бета у меня на хр жила нормально.
     
  19. WinPooh
    Оффлайн

    WinPooh В.М. Команда форума

    Репутация:
    95
    Когда я ставил 2008 студию, это происходило безо всяких ISO-образов, через веб-инсталлятор. Он маленький, килобайт 100, и сам при установке всё нужное скачивает.
     
  20. thenewone
    Оффлайн

    thenewone Евгений Манев

    Репутация:
    1
    http://jurjevic.org.uk/chess/crafty/html/crafty_v22_0_rj1.html
     
  21. krey
    Оффлайн

    krey Михаил Кройтор Команда форума Команда форума

    Репутация:
    1
    iso образ замечательно распаковывается современными архиваторами (WinRar, 7z). можно просто распаковать куда-либо, а потом устанавливать. VS2008 не требует наличия диска
     
  22. дуп
    Оффлайн

    дуп Учаcтник

    Репутация:
    0
    Вы только на это не обижайтесь, это я пошутил так, может быть неудачно. Наоборот, хотел сказать, что не все так просто, как иногда кажется.
    А насчет VS, так я уже подробностей и не помню. Скачивал еще весной, прямо с сайта Майкрософт, той красивой страницы по моей ссылке еще не существовало. Помню только там было два варианта : для 32-битной ОС (XP) и для 64(Виста). У меня ХР стоит, хотя комп 64-битный. Потом какие-то обновления еще приходили. Ерунда это все, везде будет работать. Покупал не так давно ноутбук (32-бит, двухъядерный), там само-собой стояла Виста. Перед тем, как снести, решил проверить: запустил свой "Тетрис", все работало.
     
  23. Осипов Юрий
    Оффлайн

    Осипов Юрий Учаcтник

    Репутация:
    11
    Ну что вы, Дуп, я совсем не обижаюсь. Наоборот. Чем больше людей будет ковырять Стрелку, что-то из нее выкидывать, что-то добавлять, что-то из нее копировать себе - тем мне будет приятнее.

    Кое-кто, особенно за бугром, любят помусолосить темы клонирования, авторского права, каких-то там лицензий и проч. и проч. Так вот - на Стрелку вся эта буржуазная хреномуть не распространяется. Пользуйтесь на здоровье!
     
  24. Brorn
    Оффлайн

    Brorn Гринь Николай

    Репутация:
    -4
    Интересная штука получилась - решил портировать стрелку в х64 - и обнаружил такую интересную "фичу" от микрософта - vs2008 не поддерживает inline asm, то есть получаем не прирост производительности а наоборот ужасное ее падение из-за невозможности использовать функции first_one и last_one в их первозданном ассемблером виде.
    Вопрос к сообществу - как жить то будем дальше а?
     
  25. WinPooh
    Оффлайн

    WinPooh В.М. Команда форума

    Репутация:
    95
    А что показывает профайлер? Проводились ли измерения - какой процент общего времени занимает выполнение этих операций?
     
  26. Brorn
    Оффлайн

    Brorn Гринь Николай

    Репутация:
    -4
    Смысла производить измерения в данном случае попросту нет - все очевидно, подобные функции для битборд движков одни из самых критичных и вызываются спош и рядом, так для 32-х разрядного приложения (там где есть инлайн асм) с асм-ом скорость счета (nps) в 2.5 раза больше чем с с-шным кодом для той-же логики :(
     
  27. WinPooh
    Оффлайн

    WinPooh В.М. Команда форума

    Репутация:
    95
    Так вызывайте асм не инлайновым образом. Другие же движки портируют с 32 на 64, и прирост скорости получают ощутимый.
    Но всё-таки, если отвлечься от прикидок "на глазок" - какой процент времени занимают эти операции, вы ответить можете? 5%? 10%? 25%?
    Я как-то привык, что в вопросах производительности единственный надёжный источник - это профайлер, никакие "очевидно" в расчёт приниматься не должны :)
     
  28. Brorn
    Оффлайн

    Brorn Гринь Николай

    Репутация:
    -4
    В данном случае я не вижу смысла искать ответа на вопрос во сколько конкретно раз упадет скорость 2.4 или 2.6 - узкое место очевидно.
     
  29. WinPooh
    Оффлайн

    WinPooh В.М. Команда форума

    Репутация:
    95
    В Крафти-то не падает! Что мешает сделать так же?
     
  30. WinPooh
    Оффлайн

    WinPooh В.М. Команда форума

    Репутация:
    95
    Кстати, а кто сказал, что в 2008 студии нет инлайнового асма?
    Сейчас взял и скомпилировал пример из хелпа, вот такой:

    Код:
    // asm_overview.cpp
    // processor: x86
    void __declspec(naked) main()
    {
        // Naked functions must provide their own prolog...
        __asm {
            push ebp
            mov ebp, esp
            sub esp, __LOCAL_SIZE
        }
        
        // ... and epilog
        __asm {
            pop ebp
            ret
        }
    }
    1>——— Build started: Project: test, Configuration: Debug Win32 ———
    1>Compiling...
    1>main.cpp
    1>Compiling manifest to resources...
    1>Microsoft ® Windows ® Resource Compiler Version 6.0.5724.0
    1>Copyright © Microsoft Corporation. All rights reserved.
    1>Linking...
    1>Embedding manifest...
    1>Microsoft ® Windows ® Resource Compiler Version 6.0.5724.0
    1>Copyright © Microsoft Corporation. All rights reserved.
    1>Build log was saved at "file://e:\test\Debug\BuildLog.htm"
    1>test - 0 error(s), 0 warning(s)
    ========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

    Доктор, что я делаю не так? :)
     
  31. Brorn
    Оффлайн

    Brorn Гринь Николай

    Репутация:
    -4
    Сделаю, само собой сделаю отдельную функцию на не онлайн асме, вопрос сотоял не в том что _незозможно_ сделать, а в том что нету инлайн асма для х64. Стрелка просто как пример в нейт то как раз это совершенно не критично - там асм то только в 2-х функциях, и то по 6 строк.
     
  32. WinPooh
    Оффлайн

    WinPooh В.М. Команда форума

    Репутация:
    95
    "Visual C++ support for the Standard C++ asm keyword is limited to the fact that the compiler will not generate an error on the keyword. However, an asm block will not generate any meaningful code. Use __asm instead of asm."
    — MSDN
     
  33. WinPooh
    Оффлайн

    WinPooh В.М. Команда форума

    Репутация:
    95
    Сорри, напутал. Именно для 64-битной версии - не проверял. Это для 32 бит.
    А вообще давно пора портировать Стрелку под gcc :)
     
  34. Brorn
    Оффлайн

    Brorn Гринь Николай

    Репутация:
    -4
  35. krey
    Оффлайн

    krey Михаил Кройтор Команда форума Команда форума

    Репутация:
    1
    а она давно портированна под gcc.