Programowanie w objc pod Windows – początek przygody z IPhone?
Bardzo zainteresował mnie temat tworzenia aplikacji (gier) dla IPhone, więc zacząłem poszukiwać na ten temat informacji.
A więc postaram się odpowiedzieć na pytanie: “Jak zacząć przygodę z programowanie dla IPhone“.
Żeby programować dla IPhone potrzebny jest Mac, albo przynajmniej jego emulacja (czego nie polecam i nie popieram, ponieważ nigdzie nie uzyskamy takiego komfortu pracy jak na oryginalnym sprzęcie Apple).
Java3D – prosty przykład
Stworzenie aplikacji 3D w samej Javie jest możliwe i może temu posłużyć biblioteka Java3D.
Aby rozpocząć z nią pracę, udajemy się do sekcji download i ściągamy odpowiednią dla naszego systemu wersje archiwum zip lub instalatora. W moim przypadku była to wersja zip, którą następnie rozpakowujemy.
Znajdziemy tam jeszcze jedno archiwum zip, które po rozpakowaniu utworzy dwa katalogi: bin i lib. Pliki *.dll z katalogu bin warto skopiować w miejsce dostępne w zmiennej systemowej PATH lub do katalogu z projektem Javy, ponieważ muszą być one widoczne dla naszej aplikacji.
Pliki z katalogu lib dołączymy do external libs naszego projektu.
Zaczynamy.
Czytaj dalej »
Debian: OpenAL + OGG czyli Play Music #2
Było już o odtwarzaniu dźwięku w systemie Windows za pomocą OpenAL i dekodera ogg Vorbis. Postanowiłem opisać, jak można taki sam efekt uzyskać na systemie Debian. Na początek potrzebujemy biblioteki:
- OpenAL - mamy możliwość instalacji w postaci pakietu, lecz jest on trochę “starej daty”. Ponieważ dostępne są tylko źródła, to go sobie skompilujemy sami. Źródła możemy pobrać z oficjalnej strony CreativeLabs lub ze strony OpenAL Soft.
- biblioteki VorbisFile, Vorbis i Ogg są aktualne do zainstalowania z poziomu pakietów, więc polecam zainstalować je wszystkie poleceniem: aptitude install libvorbis-dev które zainstaluje nam również pozostałe biblioteki.
- potrzebujemy również bibliotekę asound, którą zainstalujemy poleceniem: aptitude install libasound2-dev.
Gettext w aplikacjach cpp dla Windows i Debiana.
We wcześniejszym wpisie przedstawiłem wprowadzenie do Gettext i jak używać tego narzędzia do tworzenie wielojęzycznych treści w php. Jak się za moment okaże, analogicznie można tworzyć aplikacje w cpp, które mogą nawet korzystać z tych samych plików *.mo.
Idąc za ciosem, w tym wpisie przedstawię jak można bardzo łatwo stworzyć aplikację dla Windows i Debian’a w cpp, korzystającą z Gettext’a.
Czytaj dalej »
Debian : Eclipse + PDT 2.0.
Instalacja IDE Eclipse dla Debiana nie jest taka prosta. Próba instalacji Eclipse z pakietów Debiana powiodła się lecz sama aplikacja nie działała poprawnie – przy aktualizacji pakietów pojawiał się komunikat błędu:
“An error occurred during provisioning. Cannot connect to keystore. JKS“
Zapewne przyczyną był zainstalowany pakiet Debiana java-gcj-compat. Mogłem spróbować go usunąć ale stwierdziłem, że najlepiej będzie ściągnąć najnowszą wersję (w pakietach była wersja 3.2 która nie współpracuje z PDT 2.0) ze strony Eclipse (wersje EE minimum 3.4 + ręcznie dograć PDT 2.0) lub gotowy, całościowy komplet Eclipse z PDT, Zend Debugger’em i zależnymi bibliotekami ze strony firmy Zend lub gotowych pakietów Eclipse.
Jak się później okazało, do poprawnego działania Eclipse wymagane jest, żeby nie był odpalany na wirtualnej maszynie javy (JVM) java-gcj. To oznacza tyle, że jeśli mamy zainstalowany pakiet Debiana: java-gcj-compat to mamy następujące opcje:
- odinstalować ten pakiet,
- zmienić domyślną JVM,
- lub skonfigurować Eclipse pod konkretną JVM.
Irrlicht + Java + Eclipse = JIRR
Dziś na stół operacyjny podpięcie Irrlicht’a w Javie wykorzystując Eclipse IDE.
Ogólnie sam pomysł na ten wpis pojawił się po przeczytaniu tego wątku na forum gamedev.pl. Oczywiście można ten wpis traktować jako polskie tłumaczenie tego posta ale nie do końca..
Zaczynamy.
Czytaj dalej »
DirectX9 : Eclipse + CDT + MinGW
W ostatnim wpisie było o SDL i poniekąd o OpenGL (OGL), więc dla równowagi coś dla “panującego standardu”, oczywiście z wykorzystaniem Eclipse, CDT i MinGW. Tak naprawdę nie wysiliłem się za bardzo, ponieważ wziąłem przykładowy kod aplikacji DX z template’a dołączonego do Code::Blocks. Czytaj dalej »
SDL : Eclipse + CDT + MinGW
Ponieważ wiele razy wspominałem, ile dobrego zawiera w sobie na starcie MinGW Distro – nuwen.net, dziś stworzymy okienko Windows’a za pomocą SDL.
W skrócie można rzecz, że jest to bardzo prosty interfejs do OpenGL. Jego jedyną (poważną) wadą jest to, że działa on software’owo, czyli nie wykorzystując w pełni karty graficznej, co ma z kolei ten plus, że jest to przenośna biblioteka.
Oczywiście możemy brać z SDL to co najlepsze a resztę robić w “pure” OGL.
Czytaj dalej »
Eclipse + Python = prawdopodobnie najlepsze IDE dla Pythona
Temat wpisu w oczywisty sposób nawiązuje do pewnej grupy reklam – ja z tego nic mieć nie będę ale tytuł pasuje jak ulał. Tak na marginesie.
Kontynuując “cykl” tematów dotyczących języków skryptowych, chciałem przedstawić, w jaki sposób wykorzystać moje ulubione IDE Eclipse do pracy z Python’em. Czytaj dalej »
CPP IDE = Eclipse + MinGW
Ponieważ programując w Javie używałem środowiska Eclipse, postanowiłem krótko opisać, jak wykorzystać to świetne IDE do pracy także z CPP.
Trzeba przyznać, że rozszerzalność tego IDE jest niesamowita – istnieje mnóstwo plugin’ów dzięki którym można wykorzystać Eclipse do programowania w większości języków kompilowanych oraz skryptowych.
Potrzebne będą dwie rzeczy:
- Dystrybucja MinGW,
- Eclipse + CDT lub samo CDT do pobrania przez update software w Eclipse po dodaniu strony
http://download.eclipse.org/tools/cdt/releases/ganymede.
Wykorzystałem dystrybucję MinGW Distro – nuwen.net, ponieważ jest szybka w instalacji (rozpakowanie plików) i zawiera wszelkie podstawowe aplikacje oraz te bardziej specjalne, ale o tym można się dowiedzieć na podanej stronie.
Jeśli chodzi o Eclipse, to jest to wersja specjalnie przygotowana do projektów w cpp i zawiera oprócz CDT (w wersji 6.0) także klienta repozytorium CVS (klienta SVN można ściągnąć ze strony subclipse.tigris.org) oraz Mylyn.
Istotne jest to, jak należy “zainstalować” tą dystrybucję MinGW, żeby była widoczna dla Eclipse. Otóż możemy rozpakować podaną dystrybucję gdziekolwiek (najlepiej bez białych znaków w strukturze katalogów), lecz jeśli nie będzie to standardowe miejsce C:\MinGW\ to musimy utworzyć na dysku C takie katalogi: C:\MinGW\bin\, ponieważ CDT wyszukuje zainstalowanego toolchain‘a od MinGW m.in. po istnieniu podanej ścieżki na dysku C.
To oczywiście nie wszystko – w zmiennej PATH należy dodać lokalizację rozpakowanej dystrybucji ze ścieżką do podkatalogu bin, czyli dla przykładu D:\PRO\MinGW\bin\. Żeby sprawdzić czy wszystko jest ok, należy uruchomić ponownie komputer lub wylogować się z profilu – dopiero wtedy zmiany w PATH zostaną uwzględnione dla systemu (oczywiście można wszystko zmienić z wiersza polecenia ale nie będę komplikował).
W tym momencie należy sprawdzić, czy zmienna systemowa PATH zawiera dystrybucję MinGW – w tym celu wydajemy w konsoli systemu (cmd) polecenie:
g++ -v.
Jeśli wszystko jest ok, to powinniśmy otrzymać parę linii komunikatu kończącego się np. tak:
gcc version 4.2.1-dw2 (mingw32-2).
Czas na odpalenie Eclipse i stworzenie projektu.
W tym celu wybieramy opcję New Project/C++ Project z menu kontekstowego nad oknem Project Explorer, przez przyciśnięcie przycisku na liście toolbox’a New C/C++ Project lub przez menu File.
W otworzonym okienku istotne są dwie rzeczy:
- W prawym panelu powinien być widoczny toolchain MinGW GCC,
- Tworząc “zwykły” projekt .exe wybieramy “Empty Project”, zamiast pozostałych “Hello World …”.
Dalsze okienka akceptujemy bez wprowadzania zmian.
Tworzymy nowy plik implementacji (.cpp) z menu new, i dodajemy tam przykładowy kod:
#include <iostream> using namespace std; int main () { // Say Hello five times for (int index = 0; index < 5; ++index) cout << "HelloWorld!" << endl; exit(0); }
Domyślnie kompilacja następuje przy każdym save’owaniu – o ile przy programowaniu w Java’ie nie jest to uciążliwe (a wręcz bardzo pomocne), to w przypadku pracy z cpp może to przeszkadzać osobom takim jak ja, które wciskają ctrl+s co 20 sekund. Warto więc odznaczyć pole “Build Automatically” w menu Project.
Kompilacji (build całego projektu) dokonywać teraz można np. poprzez skrót ctrl+b lub przez odpowiednią ikonkę “młotka” na toolbox’ie Eclipse’a.
W odpowiedzi w oknie Console dostaniemy podobne podsumowanie:
Build complete for project (twój projekt)
Time consumed: 1578 ms.
Teraz wystarczy otrzymany .exe odpalić bezpośrednio z Eclipse przez menu Run as – Local C/C++ Application i w oknie Console otrzymamy wynik działania aplikacji podanej wyżej.
CPP -> skrypty zewnętrzne część 1
Pamiętam jeszcze czasy “zabaw” z C# i moment, w którym również szukałem języka skryptowego współpracującego z CS. Nie szukałem długo – C# w tej roli mi nie odpowiadał. Dowiedziałem się sporo dobrych rzeczy o Lua – zaliczam to na plus.
Pomijając całą tą otoczkę wokół samej Lua, zgłębiwszy podstawy współpracy Lua z C# do czegoś udało mi się dojść ;) Miałem jednak trochę pecha – projekt upadł. W zasadzie w tym momencie zatrzymała się moja dalsza eksploracja języka C#.
Wracam więc do głównego tematu. Oczywistym wyborem mogłaby być lua w “czystej” postaci, ale zdecydowałem się poszukać dalej. W zasadzie liczą się 4 możliwe rozwiązania z 6 podanych niżej:
- Wspomniana Lua,
- Mocno rozszerzalny Python,
- GameMonkey,
- AngelScript,
- Zawsze można stworzyć swój język skryptowy i parser, korzystając np. z serii artykułów Złośliwca,
- Java przez interfejs JNI.
Bardzo dużo informacji na temat wiązania skryptów Python’a z cpp zawiera strona codesampler a konkretnie rozdział “Extending & Embedding Python with C/C++”.
Jeśli chodzi o Lua to warto odwiedzić stronę lua wiki, oraz docelowo podstronę z Code wrappers. Z dostępnych “Development environments” dla Lua najbardziej przypadło mi do gustu luaeclipse, z uwagi na IDE Eclipse.
Nie najgorzej czułbym się pisząc skrypty w Javie, wykorzystując technologię JNI. Jak się okazuje, język skryptowy używany przez engine Unreal – UnrealScript, ma wiele cech Javy ( i cpp).

