Вот кстати не соглашусь, с XML то понятно, если можно им обойтись, то ладно. А вот перед использованием python'а у SDK есть целый ряд преимуществ. Сразу скажу с питоном почти не знаком, так что кое-где могу ошибаться.Но SDK нужно использовать только когда нельзя что-то сделать в xml и python. Значит редко.
1. SDK это основа игры, то что меняется там, меняет сам код, а python лишь добавляет свой поверх, а вследствие этого, ну и особенностей питона, SDK получается быстрее. Навороты в SDK требуют куда меньше ресурсов, а то что тебе не нравится можно изменить в корне, а подправлять подпорками. А с производительностью в циве большие проблемы.
2. SDK позволяет научить AI пользоваться твоими придумками, и при желании научить это делать правильно. SDK обеспечивает также такие удобные штуки, как автозаполнение цивилопедии и подсказки во время игры. Кроме того куда меньше проблем, когда реализуешь что-то сложное на уровне SDK.
3. Самое главное что можно сделать с SDK, это вводить и изменять новые категории и выводить их на XML. Придумав новую прокачку, можно добавить новый тег, и изменив код, забыть про SDK, потому что настраивать её можно будет по старинке, в XML. С Питоном такого, как я понимаю не получится. Он конечно много чего умеет, но лишь то, что ему выделили в SDK.
В итоге, Питон используется для интерфейса, да проверки каких-нибудь мелочей. К тому же, если не знаком с программированием вообще, SDK осваивается легче. Единственно, его ещё скомпилировать нужно, но это дело десятка минут и одного нажатия кнопки. Вообще единственная его реальная проблема, он медленнее, а для модов это критично.
Я не спорю, что в SDK можно сделать то, что нельзя сделать в python'е. Но есть такие вещи, которые можно сделать и в python'е. А в нём сделать всё легче. Я не знал язык python, но когда посмотрел на него, всё сразу понял. А язык с++ я знал, даже небольшую программу-калькулятор сделал, а в SDK всё равно не разобрался.
3.Что делать дальше со скачанным Platform SDK?Скачиваем Platform SDK. также можно использовать internet explorer, для автоматической установки (рекомендуется). ОСТОРОЖНО она скачивает все нужное ей с инета, у меня папка в итоге заняла 878 МБ. Преимущественно для обладателей анлима.
Господа, простой случай. Я бы даже сказал, типичный.
Рабочая машина: ноутбук самсунг i5 2.4GHz, RAM=8Gb, Windows7/64
Хочу поставить SDK и прорешать ваши уроки.
Беру инструкцию с http://www.civfanatics.ru/threads/74...0%B8%D1%8F-SDK
Первые два пункта прошел.
Про Platform SDK имею следующую информацию: http://social.msdn.microsoft.com/For...3-on-windows-7
там советуют поставить виртуальную машину с Windows XP и ставить Platform SDK 2003 на ней.
Я так и сделаю. О результатах доложу. Если есть более прямой путь (не использовать виртмашину) -- ткните пальцем в соответствующий пост, пожалуйста.
Устанавливать VS 2005/2008 на рабочую машину особого смсыла не вижу -- от Халька Юсдаля была информация, что там нужно шаманство как минимум.
Вот что удивительно. Сами добавили пробелы в имена файлов, а теперь не знают, что эти пробелы входят в имена файлов.
"C:\Program", разумеется, не является командой. Может, конечно, у меня make такой...Код:1> "C:\Program Files (x86)\Microsoft Visual C++ Toolkit 2003\bin\cl.exe" /nologo /MD /O2 /Oy /Oi /G7 /DNDEBUG /DFINAL_RELEASE /Fp"Release\CvGameCoreDLL.pch" /GR /Gy /W3 /EHsc /Gd /Gm- /DWIN32 /D_WINDOWS /D_USRDLL /DCVGAMECOREDLL_EXPORTS /Yu"CvGameCoreDLL.h" /IBoost-1.32.0/include /IPython24/include /I"C:\Program Files (x86)\Microsoft Visual C++ Toolkit 2003/include" /I"D:\WindowsSDK/Include" /I"D:\WindowsSDK/Include/mfc" /I"C:\Program Files (x86)\Sid Meier's Civilization 4 Complete\Beyond the Sword\CvGameCoreDLL\Boost-1.32.0/include" /I"C:\Program Files (x86)\Sid Meier's Civilization 4 Complete\Beyond the Sword\CvGameCoreDLL\Python24/include" /YcCvGameCoreDLL.h /Fo"Release\_precompile.obj" /c _precompile.cpp 1>"C:\Program" не является внутренней или внешней 1>командой, исполняемой программой или пакетным файлом.
Где лежит штатный make для VS?Код:D:\CvGameCoreDLL>make --version GNU Make 3.82 Built for i386-pc-mingw32 Copyright (C) 2010 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.
UPD1: OK, сам себе и отвечу.
1) на самом деле надо использовать C:\Program Files (x86)\Microsoft Visual Studio 9.0, а make там называется nmake. Обычный gnu make не понимает некоторые конструкции имеющегося make-файла.
2) тем не менее, ничего не изменилось. Продолжает ругаться.
UPD2: Переустановил студию в директорию без пробелов в имени. Строка "TOOLKIT" теперь выглядит так:
Код:TOOLKIT=C:\vs90\VC
Вот, собственно, начались те грабли, о существовании которых я подозревал с того момента, как увидел эту тему.
А ошибки там двух типов. Есть простые и понятные:Код:1>CvGameCoreDLL - 36 error(s), 547 warning(s)
есть и другие:Код:1>CvGame.cpp(1809) : error C2065: 'iK' : undeclared identifier 1>CvGame.cpp(1809) : error C2065: 'iK' : undeclared identifier 1>CvGame.cpp(1809) : error C2065: 'iK' : undeclared identifier 1>CvGame.cpp(1811) : error C2065: 'iK' : undeclared identifier
По второму типу ошибок можно сидеть и разбираться. Строка, где это произошло имеет номер 1815:Код:1>CvGame.cpp(1815) : error C2228: left of '.getYieldChange' must have class/struct/union
GC -- это макрос, описанный в CvGlobals.h, и выглядит он какКод:if (GC.getBonusInfo((BonusTypes)iK).isNormalize())
Причем этот макрос неоднократно использовался выше строки 1815. Где-то он дезавуирован. Ну да ладно.Код:#define GC CvGlobals::getInstance()
Что я хочу сказать по этому поводу. Программа, выложенная в свободный доступ, имеет незадекларированные переменные. Это сейчас так модно? Ослиный мостик? Всякий, неспособный исправить эту ошибку, не будет мододелом? Или в чем тут прикол? Я не понимаю.
4ка вроде писалась в VS2003, так что 2005 и 2008 могут иметь доп. приколы. Я в свое время с трудом достал уже отходивший VS2003 и даже скомпилировал dll, но на этом мое знакомство с ним и закончилось.
Честно скажу, делал все как и пересказывал, по вот этой статье с ихфанатиков. http://forums.civfanatics.com/showthread.php?t=405444
Все заработало с первого раза. Ставил также на ноутбуке, где интернета не было, тоже заработало и работает нормально, хотя далеко не сразу сумел установить VC2008 оффлайн через командную строку. По первой инструкции запустить не получалось, поэтому нашел эту.
VC2008 у меня ошибок при компиляции просто так не выдает, только если сам наделаю. Вот если интересно архив с чем я работаю. У меня компилируется спокойно. https://docs.google.com/file/d/0B-pf...dDOXg1TXc/edit
Докладываю.
Скачал исходники по ссылке, предоставленной Cansei выше. Все ошибки -- неописанная переменная цикла. Причина: в 2003 M$ не спешил привести свой компилятор в соответствие со стандартом. То есть конструкции вида
Версией компилятора 2003 года преспокойно транслировались, первое объявление переменной цикла внутри for становилось видимым снаружи.Код:for(int iI=0; iI<iIMAX; ++iI) { // body1 } for(iI=0; iI<iIMAX; ++iI) { // body2 }
Докладываю еще раз.
Поставил виртмашину со зверем. Поставил там студию 2003 года. Собирается из исходников по ссылке http://forums.civfanatics.com/downlo...=file&id=16274
Из исходников, которые идут вместе с Civ4 от 1С, не собирается.
Собранная DLL вроде даже работает. Не знаю, как проще всего проверить, что работает именно данная DLL.
К сожалению, там всё тормозит, и не хватает привычного окружения. Поэтому я выполнил следующие мероприятия:
вытащил из установленных студии и платформы минимальный набор, который позволяет собрать DLL под Windows7.
Когда куплю себе новый десктопный комп, проверю, достаточно ли этого набора без установки VS и PSDK.