NeonLight_Child 06.01.2010 14:28
Linux Games — Компиляция своих линуховых игр для венды
Игры, которые я пишу для линуха, теперь стало возможным компилировать для/в венде. Большое Спасибо Tamahome с форума gamedev.ru. В своих играх я использую связку из С++ + SDL + OpenGL. Для компиляции игры в *.exe для, делаем следущее:1)В начале *.cpp файла программы добавляем:
1 |
|
далее, ищем функцию main() и меняем ее на:
1 |
#ifdef __WIN32__
|
Все, теперь один и тот же текст программы можно компилировать и в вайне/винде (об этом ниже), и, по старому-через команду make в линухе.
2) Для компиляции программы в *.exe в линухе я установил wine (для компиляции в венде, вероятно, все следущие действия будут аналогичными). Многие скажут, что, дескать вайн не ТРУ, но вайн всеравно будет необходим для последущей проверки результата компиляции.
3) Качаем вендовую IDE+gcc отсюда:http://downloads.sourceforge.net/codeblocks/codeblocks-8.02mingw-setup.exe. Под вайном это IDE заводится без проблемм. Под линем работать в ней мы не будем (я предпочитаю geany), а, вот, для компиляции *.exe использовать-самое оно. А в венде для работы ее можно использовать.
4) После, идем на http://www.libsdl.org/projects/ и качаем SDL-ные библиотеки. Я скачивал эти (они не все нужны, просто "чтобы было"):
SDL_Cbs, SDL_image, SDL_mixer, SDL_net, SDL_rtf, SDL_ttf.
Качаем все это из подразделов Binary/Win32. На примере SDL_mixer - это выглядит так: SDL_mixer-1.2.11-win32.zip(это bin) и SDL_mixer-devel-1.2.11-VC.zip (это devel).Не обращаем внимания, если написано что хедеры для VC. На самом деле все подходит без всяких правок. Расспаковываем. Из bin-ов, в последствии, будем набирать необходимые dll для скомпиленного в *.exe проекта (ложить в папку проекта).А в devel-е обычно находятся папки include и lib, их необходимо скопировать в соответствующие папки в %HOME FOLDER%/.wine/drive_c/Progrаmm Files/CodeBlocks/MinGW.
5) Теперь, качаем саму SDL. Идем на http://www.libsdl.org/download-1.2.php и качаем из подраздела Development Libraries/Win32 что-то, похожее на это, SDL-devel-1.2.14-mingw32.tar.gz (Mingw32). Также, оттуда подбираем необходимую SDL.DLL для нашего будущего проекта: подраздел Runtime Libraries/Win32, SDL-1.2.14-win32.zip (ложим в папку проекта). Расспаковав SDL-devel-1.2.14-mingw32.tar.gz, видим, что это один в один папка MinGW. Дополняем НАШУ MinGW этим содержимым.
6) Теперь, запускаем вайновый CodeBlocks. Открываем наш *.cpp проект. Перед его компиляцией в *.exe необходимо подлинковать нужные либы (действие, аналогичное созданию make файла для компиляции в лине). Для этого ползем к верхним менюшкам.
Settings->Compiler and Debuger->откроется окно, по умолчанию в нем стоим на разделе Global Compiler Settings-> вкладка Linker Settings->кнопка Add под левой колонкой->кнопка с тремя точками->нас просят указать нужные библиотеки, идем в папку Codeblocks/MinGW/lib/, и, удерживая Ctrl, выбираем следущие либы:
SDL_image.lib, SDL_mixer.lib, SDL_ttf.lib, libSDL.dll.a, libSDLmain.a, libopengl32.a, libglaux.a, libglu32.a, libglut.a, libglut32.a.
Возможно среди этих библиотек есть лишние.
7)Теперь возможна компиляция проекта в вендовый *.exe - кнопка с шестерней Build или Ctrl+F9. Все, exe готов.
В качестве примера, можно посмотреть последнюю версию SwibPlex.
NeonLight_Child 06.01.2010 14:39 #
+ 1 -
и за что минусуют?
Нет ли в 1) ошибки?
Какие еще игры, кроме Свибплекса? Стало интересно.
#include <здесь_должно_быть_что-то,имхо>
Какие еще игры, кроме Свибплекса? Стало интересно.
Еще делал бомж сурвайвер-надо не дать расстащить кучу припасов.
Последняя версия здесь:http://narod.ru/disk/16546912000/v7.zip.html
Еще есть зачатки карточной игры на основе ККИ "Берсерк", но это только зачатки.
Еще делаю какойто скрул шутер =)
Последняя версия здесь:http://narod.ru/disk/16546912000/v7.zip.html
Еще есть зачатки карточной игры на основе ККИ "Берсерк", но это только зачатки.
Еще делаю какойто скрул шутер =)
#include скобка windows.h скобка, скобки и то что между ними не пишется-хтмл теги:(
может продолжите писать про game dev для линукса может кто заинтересуется и под линукс появится большее интересных игр
Я заинтересовался :)
Если желание не пропадет, может что-нибудь и сделаю.
Если желание не пропадет, может что-нибудь и сделаю.
Если эта тема интересна,то о ней уже можно почитать. Например, есть электронный журнал lingametech, начиная со второго номера, они пишут о создании игр на Си с использованием SDL и OpenGL. Что, в принципе, я и делаю.
Не совсем понял, о чём статья. По сути все пункты кроме первого не имеют отношения к кросскомпиляции.
Наверное, потому что это инструкция по сборке sdl-приложения под Windows, а сайт называется welinux. Или я что-то упустил?
Даже, чтобы предупредить непонимание, сборка sdl-приложения под Windows с использованием windows-библиотек и windows-компилятора.
Просто я был заинтересован в этой теме. В свое вреемя я не нашол этого материала, когда он был необходим. Я думаю, что процесс кросскомпиляции в линуховом code::blocks будет аналогичным. Если есть вайн, то почему его нельзя использовать для компиляции виндовых приложений?
я имею ввиду если игра не с одного ехе состоит, то все-равно больше ничего не надо изменять?
Не совсем понял о чем ты, может пример приведешь? По-моему, надо править только файл *.cpp проекта, остальные-не трогаем. А раз в проекте один cpp, то и exe будет только один.
в папке с игрой обычно куча всяких dll. ехе то ты скомпилишь, а dll? или оно все в ехе слинкует?
Посмотри 4). Там пример есть с SDL_mixer, архив с названием SDL_mixer-1.2.11-win32.zip содержит файл DLL-ки необходимые для работы библиотеки SDL_mixer. Эти DLL подкидывать в папку к exe-шнику. Я так понял, exe-шник после компиляции уже будет знать об их существовании.
насчет собственных dll ничего сказать не могу, ни разу их не делал