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

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

  1. дуп Учаcтник

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

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

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

    • Участник
    Рег.:
    11.09.2007
    Сообщения:
    113
    Симпатии:
    0
    Репутация:
    0
    Адрес:
    Великий Новгород
    Оффлайн
    Наука требует жертв :lol:
    В Visual 2008 тоже без напильника не обошлось.
  5. krey Михаил Кройтор

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

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

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

    • Участник
    Рег.:
    11.09.2007
    Сообщения:
    113
    Симпатии:
    0
    Репутация:
    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. TopicStarter Overlay

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

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

    • Участник
    Рег.:
    11.09.2007
    Сообщения:
    113
    Симпатии:
    0
    Репутация:
    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 В.М.

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

    • Участник
    Рег.:
    11.09.2007
    Сообщения:
    113
    Симпатии:
    0
    Репутация:
    0
    Адрес:
    Великий Новгород
    Оффлайн
    Ну это мелочи. Радикальней надо:
    Находим ОФ, выкидываем оттуда всякую ерунду, которую Юрий Иванович понаписал, добавляем свое и дело в шляпе :cool:
  12. thenewone Евгений Манев

    • Участник
    • Старожил
    Рег.:
    09.06.2006
    Сообщения:
    3.173
    Симпатии:
    18
    Репутация:
    1
    Адрес:
    Пловдив
    Оффлайн
  13. дуп Учаcтник

    • Участник
    Рег.:
    11.09.2007
    Сообщения:
    113
    Симпатии:
    0
    Репутация:
    0
    Адрес:
    Великий Новгород
    Оффлайн
    Я попробую. Я вам напишу.
  14. дуп Учаcтник

    • Участник
    Рег.:
    11.09.2007
    Сообщения:
    113
    Симпатии:
    0
    Репутация:
    0
    Адрес:
    Великий Новгород
    Оффлайн
    А чего это у вас за Крафти такая интересная, с целыми файлами из Стрелки?
    С комментариями Игоря Коршунова :lol:
  15. WildCat Коршунов Игорь

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

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

    • Участник
    Рег.:
    18.06.2007
    Сообщения:
    399
    Симпатии:
    475
    Репутация:
    11
    Адрес:
    Правда
    Оффлайн
    Дуп, и от меня спасибо! С твоей подачи решил пересесть на Studio 2008. А то как лох последний до сих пор сижу на 6-й студии.

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

    • Заслуженный
    • Участник
    • Старожил
    Рег.:
    24.05.2006
    Сообщения:
    1.084
    Симпатии:
    38
    Репутация:
    6
    Оффлайн
    Iso файл - образ диска. заливается дискописалками поддерживающими этот формат.
    про студию - 2008 бета у меня на хр жила нормально.
  19. WinPooh В.М.

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

    • Участник
    • Старожил
    Рег.:
    09.06.2006
    Сообщения:
    3.173
    Симпатии:
    18
    Репутация:
    1
    Адрес:
    Пловдив
    Оффлайн
    http://jurjevic.org.uk/chess/crafty/html/crafty_v22_0_rj1.html
  21. krey Михаил Кройтор

    • Команда форума
    Рег.:
    10.04.2006
    Сообщения:
    3.709
    Симпатии:
    50
    Репутация:
    1
    Адрес:
    Кишинев
    Оффлайн
    iso образ замечательно распаковывается современными архиваторами (WinRar, 7z). можно просто распаковать куда-либо, а потом устанавливать. VS2008 не требует наличия диска
  22. дуп Учаcтник

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

    • Участник
    Рег.:
    18.06.2007
    Сообщения:
    399
    Симпатии:
    475
    Репутация:
    11
    Адрес:
    Правда
    Оффлайн
    Ну что вы, Дуп, я совсем не обижаюсь. Наоборот. Чем больше людей будет ковырять Стрелку, что-то из нее выкидывать, что-то добавлять, что-то из нее копировать себе - тем мне будет приятнее.

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

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

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

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

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

    • Участник
    Рег.:
    10.05.2007
    Сообщения:
    302
    Симпатии:
    32
    Репутация:
    -4
    Адрес:
    Луганск
    Оффлайн
    В данном случае я не вижу смысла искать ответа на вопрос во сколько конкретно раз упадет скорость 2.4 или 2.6 - узкое место очевидно.
  29. WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    9.492
    Симпатии:
    3.122
    Репутация:
    95
    Адрес:
    Москва
    Оффлайн
    В Крафти-то не падает! Что мешает сделать так же?
  30. WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    9.492
    Симпатии:
    3.122
    Репутация:
    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 Гринь Николай

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

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    9.492
    Симпатии:
    3.122
    Репутация:
    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 В.М.

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

    • Участник
    Рег.:
    10.05.2007
    Сообщения:
    302
    Симпатии:
    32
    Репутация:
    -4
    Адрес:
    Луганск
    Оффлайн
  35. krey Михаил Кройтор

    • Команда форума
    Рег.:
    10.04.2006
    Сообщения:
    3.709
    Симпатии:
    50
    Репутация:
    1
    Адрес:
    Кишинев
    Оффлайн
    а она давно портированна под gcc.

Поделиться этой страницей