среда, 6 января 2010 г.

Компиляция игр для/в венды/венде

Игры, которые я пишу для линуха, теперь стало возможным компилировать для/в венде. Большое Спасибо Tamahome с форума gamedev.ru. В своих играх я использую связку из С++ + SDL + OpenGL. Для компиляции игры в *.exe для, делаем следущее:

1)В начале *.cpp файла программы добавляем:

#ifdef __WIN32__
#include скобка влево windows.h скобка вправо
#endif

далее, ищем функцию main() и меняем ее на:

#ifdef __WIN32__
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow){
#else
int main(int argc, char **argv){
#endif

Все, теперь один и тот же текст программы можно компилировать и в вайне/винде (об этом ниже), и,по старому-через команду 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 готов.

воскресенье, 27 декабря 2009 г.

Совсем забыл, опять Swibplex

На сурцах доступна новая версия от 23.12.2009 (версия 28) для линукс и венды
Скачать

Изменения и дополнения:
-исходники теперь можно компилировать не только в линухе, но и в винде.
-добавлена кнопка рестарта уровня в меню игры.
-игровой модуль game.h разбит на несколоко *.h составляющих
-кнопка F9 меняет трек композицию
-добавлена одна карта, теперь их стало 13
-введен параметр show_fps, устанавливается в splex.cfg
-по мелочи

И еще, теперь игра засветилась на оффициальном сайте Свиборга: ТЫЦ!:))

среда, 23 декабря 2009 г.

Мое GIMPовское творчество...

Когда находится немного свободного времени-лучшим средством для его проведения может стать глумление над фотками при помощи GIMP.

Вот, например, групповая фотография всего нашего проектного института (все картинки кликабельны):

После небольших изменений, получилось вот что:

Или, вот, другой пример: нравится группа Mechanical Poet, а ни одного нормального валлпапера ни нашол. Слепил свой из того что было:

А вот к игре SwibPlex создал такую вот пикчу:

Почетными донорами для этого изврата стали:
оригинальная картинка из игры

и шар Свиборга

Также, создавал коллажи к юбилеям, например вот такие:




мне больше нравится такой вариант:


В качестве инструментов использовались в основном:палец, ластик/антиластик, лассо, тонирование и изменение яркостей, немного фильтров, слои.
Ничего сложного.

вторник, 15 декабря 2009 г.

Еще немного про SwibPlex...

1) УРА! Добрые люди (спасибо Tamahome) скомпилили винд версию последнего билда: http://slil.ru/28345839

2) Открыл соответствующий проект на соурцфордж: http://swibplex.sourceforge.net/

ща там валяется последняя линух версия за номером 27, изменений никаких кроме того, что либы для компиляции нацелены на убунту 9.10, а не 8.04

3) Нового пока ничего добавлять не буду, кроме карт

понедельник, 14 декабря 2009 г.

ВЫнЬда сыграла в ..."ящик"...или продолжение маразмов про сетевой принтер...

И еще одна моя перепечатка с welinux.ru

Сей бред о том, как мне удалось на работе вывести на сетевом принтере слово "ПРЕВЕД!":)

У нас на предприятии есть внутренняя сеть, он устроена (как мне кажется) следующим образом:
1)Все компы соеденены в единую рабочую группу, которая находится в едином ВНУТРЕННЕМ домене вида, например, sharaga.corp.
2)У всех работников на компах в качестве ОС установлена хрюша.
3)Для того, чтобы компютер работника вошел во внутренню сеть, он должен вбивть свои логин и пасс (необходимые для входа в домен-все учетки свалены на серваке)

Наверно, на всех предприятиях сетки устроены примерно таким образом.

На своем компютере работник "только гость": usb заблокированы, инета нету, установка своего ПО заблокирована, ну и в таком духе...

Кстати, есть одна баг/фича ВЫньды. Для установки своего ПО, иногда, достаточно выбрать режим совместимости "выньда 95-МЕ" для загрузки *.exe инсталятора. А иногда, хватает просто переименовать setup.exe в, какой-нибудь, hren.exe.

Так вот, пользователь ограничен в возможностях, он может только работать, печатать на сетевом принтере, обмениватся почтой внутри домена. Все, больше он ничего не может.

Моей задачей стало - добраться до этого сетевого принтера, при этом находясь в линухе.

Биос у меня на рабочем компе не заблокирован-повезло.Гружусь с своего портативного харда-на нем стоит хубунта 9.10. Сетевое окружение в хубунте вижу,но влезть ни к кому не могу.
Требуют пароль. Своя сетевая учетка не спасает...

Значит для входа надо использовать венду, установленную в рабочий комп!

У меня получилось залить ее в VDI виртуальной машины. Для этой цели использовал VirtualBox 3.0 OSE.
Заливал через акронис, используя Alkid PE Live CD.
Хотя, наверно, можно было и через dd (кто знает как-научите HDD->dd->VDI?).

В итоге получаем VDI c образом "рабочей венды". В настройках виртуальной машины ставим IO APIC (иначе при старте виртуалки получаем "зависон" в виде темного экрана с курсором). Подрубаем сеть через БРИДЖ .. и .. венда стартует, но в домен,падла, не пускает:(
Все из-за того, что дрова для сетевухи стоят от реального железа, а не от виртуального.

Для установки новых драйверов от виртуалки виртуальную хрюшу надо ломать. Как ломать, пусть этот вопрос каждый решает сам для себя. Я воспользовался все тем-же образом лайв ПЕ. Необходима локальная админская учетка. Главное, установить драйвера от сетевухи. Когда все дрова встали, винда загрузилась и сумела войти в сеть без проблем.

Теперь сетевой принтер стал доступен.
Для проверки я отправил на печать первое что пришло в голову-слово "ПРЕВЕД!" (почти как"Hello, world!").

Но есть проблемы: всетаки хубунта в вендовом сетевом окружении "ярко светит". В описании компа, находящгося внутри сети под хубунтой, числятся такие страшные слова как ubuntu-desktop, samba и т.д..

Подскажите, как можно все это дело замаскировать?

Загрузка реального HDD с вЕндой в VirtualBox

Эту статейку публиковал недавно на welinux.ru

На днях заморочился во такой темой - как загрузить уже установленную винду на реальном жестком диске в виртуальную машину VirtualBox *buntu. Все из-за того, что мне надо каким-то образом на работе добратся до сетевого принтера, который доступен только в винде-чертежи печатать. Сами знаете, с чертежными программами в линухе бяда:( Пока, вот, еще не добрался:( Но подумалось, что загрузя реальную вянду в виртуалке, получится это сделать. Вот, что удалось нарыть по теме такой загрузки:

http://blarts.wordpress.com/2007/12/06/how-to-run-virtualbox-using-a-physical-partition-using-ubuntu-feisty-fawn/

http://forum.ubuntu.ru/index.php?topic=57330.0

http://forums.virtualbox.org/viewtopic.php?t=333&highlight=createrawvmdk

http://ubuntuforums.org/showthread.php?s=6b10aeaf299568ef547c876c19e41f8f&t=769883

Вероятно, все последущие действия не так сильно зависят от версии VirtualBox (все решения, которые удалось найти в инете по этой теме, проиходили еще с первыми версиями VirtualBox). В моем случае: основная ОС это XUbuntu 9.10, гостевая - ВЕНДА XР, VirtualBox 3.0 OSE из оффициального репозитория. Все приведенные ниже действия, я проводил на свой страх и риск. Если будете "химичить" по этой мануалке, за сохранность информации на подопотных носителях отвечаете сами)) Проблемы были, и о них я тоже упомяну ниже.
Вероятно, в мануал придется вносить поправки. Вот, что пока получается:

1)Добавляем группу vboxusers: в меню XFCE -> система -> пользователи и группы
2)Теперь в консоле (в моем случае, для пользователя neon): sudo usermod -G disk,vboxusers -a neon
3)Делаем логаут и снова входим. Ура, теперь не ненужно быть рутом для создания VDMK файлов (файл-ссылки на образ физического HDD, который будем впоследствиее скармливать в virtualbox)
4)Создание VDMK файла происходит командой в консоле:
Если венда стоит на физическом диске в разделе /dev/sda1 то -> значение partitions=1

VBoxManage internalcommands createrawvmdk -filename ~/.VirtualBox/WinHD.vmdk -rawdisk /dev/sda -partitions 1 -relative -register

Создастся VDMK и его можно попытатся загрузить в виртуальной машине, но, как пить дать, столкнемся с тем, что запуска не произойдет, из-за не правильно настроенного загрузчика (у меня ругался grub)

Можно использовать в качестве ВИРТУАЛЬНОГО ЗАГРУЗЧИКА mbr, его придется установить в основную систему заранее,в консоле:

sudo apt-get install mbr

Теперь можно созать виртуальный загрузчик:

install-mbr winxp.mbr --force

И, наконец - VDMK, как результат склеивания HDD с виртуальным звгрузчиком, будет получатся так:

VBoxManage internalcommands createrawvmdk -filename /home/neon/.VirtualBox/WindowsXP.vmdk -rawdisk /dev/sda -partitions 1 -mbr winxp.mbr -relative -register

5)В свойствах виртуальной машины, перед стартом, надо поставить галки в "включить ACPI", "включать IO APIC"

6)Винда загрузится, но полезет куча ошибок. Вероятно, это из-за того, что драйвера оборудования стоящие в вЯнде, расчитаны на реальное железо, а не на виртуальное. Поэтому, перед запуском вЫнды в виртуалке, необходимо ее подготовить-заранее создать дополнительный профиль оборудования-виртуального (новый), наряду с уже существующим физическим(реального железа, текущий профиль). Для этого: панель управления-> система-> вкладка оборудование -> профиль оборудования). После этого, нужный профиль можно будет выбрать при последующем старте винды. В последствии, в виртуальный профиле устанавливаются Virtual Box Guest Addition. Будьте осторожны!!! У меня полетели все ярлыке на рабочем столе!

Послесловие:
Вот как-то примерно так)) Если что, я тут не причем)
Пробовал таким образом загрузить линух, установленный на портативном жестком диске, загрузка добралась только до терминала:( В последствии, при попытке загрузится с этого портативного диска, были косяки в загрузчике и битый fstab. В итоге: мне так и не получилось добратся до злополучного принтера из-за проблем с драйверами, но это уже другая история)))