quaddev.com » 2008 » June
Tak jak w tytule - w ramach nawrócenia na gamedev, a w przerwie pisania GUI do silnika szachowego - zabrałem się za pisanie małego frameworka, na którym mógłbym oprzeć jakąś prostą gierkę, a przy okazji zrelacjonować walkę;)
Założenia od strony oprogramowania i bibliotek: C++, SDL, OpenGL, jak się da to kompilowalny na Windows i na Linuksie:)
Tradycyjnie przygotowania rozpocząłem od użycia google;) I jakie było moje zdziwienie, kiedy trafiłem na SDL Tutorial Basics @ Dev Hub. To o czym pomyślałem - przynajmniej odnośnie SDL, pomijając narazie OpenGL - właśnie tam znalazłem w świetnej formie. Jak na to patrzę, to inaczej bym tego raczej nie napisał, więc podrzucam linka.
Z rzeczy, które mnie tam jeszcze zainteresowały, przy okazji założonego celu - znalazłem obsługę zdarzeń wykorzystującą SDL - akurat jestem na etapie adaptowania tej lekcji na własny użytek. Szczerze polecam:) Zwłaszcza tym, którzy sobie tak długą przerwę w kodzeniu zrobili, jak ja… To nie było dobre.
Dzisiaj “Download Day“, czyli próba bicia (przez Mozillę) rekordu ściągnięć aplikacji w ciągu doby (lub alternatywnie - jak Xion napisał - niedziałającego serwera;)
Zamieszanie trwa już od jakiegoś czasu, w tamtym tygodniu pojawiła się finalna Opera 9.5, dzisiaj będzie Firefox 3.0. Tego ostatniego próbowałem w wersjach RC, jestem zadowolony - zarówno na WinXP jak i Ubuntu nie miałem z nim problemów, “ale ale”… Postanowiłem też dać szansę Operze (której już daaaawno nie używałem).
Z instalacją żadnych problemów nie było, zakładek z Firefoxa przeniosła się tylko część, no ale ok, na to przymknę oko. Co zauważyłem:
- prędkość działania - “szału nie robi” jak dla mnie w porównaniu do Firefoxa
- klikalność - jest wygodna, prawda, co nie znaczy, że jakoś nieporównywalnie wygodniejsza od konkurenta
- pod linuksem na stronach z flashem często ekran robił się szary i przeglądarka przestawała odpowiadać
Oprócz tego ostatniego nie jest zła, ale tak po trzech dniach używania jej doszedłem do wniosku, że zostaję przy Firefoxie. Dla mnie Opera nie ma w sobie niczego takiego, co by spowodowało zmianę moich upodobań.
Nie będę już się rozpisywał o konfigurowalności, wtyczkach, widgetach. Klienta pocztowego używam tylko w pracy, więc ten w Operze mnie nie rusza, tak samo jak wbudowany klient torrent. Poprostu w zwykłej, codziennej pracy czy rozrywce nie wybija się szczególnie.
Całe to zamieszanie wokół nowych wersji tych dwóch przeglądarek - kolejny spór w klimatach wyższości jednych świąt nad drugimi;)
Naszło mnie dzisiaj, żeby sobie pod linuksem skonfigurować Eclipse i pobawić się z OpenGL+SDL. Do tej pory robiłem to w Dev-C++.
(Zakładam, że podstawy typu obsługa Eclipse i budowanie projektów jest nam znana)
Co potrzebujemy?
- linuks (u mnie ubuntu 8.04 - tak, wiem, linuks jak windows, click&play - i o to chodzi - nie mam czasu na kopanie po plikach;)
- Eclipse z CDT
- biblioteki do OpenGL i SDL (libGL i libSDL)
Uruchamiamy Eclipse i klikamy kolejno:
- file->new->managed make c++ project
- w oknie, które się pojawiło wpisujemy nazwę naszego projektu
- next
- finish
- w nawigatorze pojawia się nasz projekt, klikamy w niego prawym i dajemy:
- new->source file
- wpisujemy nazwę pliku (np. main.cpp) i dajemy finish
Teraz możemy wkleić do pliku poniższy kod (prosta inicjalizacja okna):
#include <stdio.h>; #include <SDL/SDL.h>; #include <SDL/SDL_opengl.h>; int main(int argc, char *argv[]) { SDL_Surface *screen; if ( SDL_Init(SDL_INIT_VIDEO) != 0 ) { printf("Inicjalizacja SDL nie powiodła się: %s\n", SDL_GetError()); return 1; } SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 ); screen = SDL_SetVideoMode( 640, 480, 16, SDL_OPENGL ); SDL_Delay(1000); SDL_Quit(); return 0; }
Oczywiście próba uruchomienia skończy się na wysypaniu kilku błędów linkowania:
main.cpp:10: undefined reference to `SDL_Init' main.cpp:11: undefined reference to `SDL_GetError' main.cpp:15: undefined reference to `SDL_GL_SetAttribute' main.cpp:17: undefined reference to `SDL_SetVideoMode' main.cpp:19: undefined reference to `SDL_Delay' main.cpp:21: undefined reference to `SDL_Quit'
Teraz musimy dodać linkerowi biblioteki. W tym celu klikamy:
- project->properties->C/C++ build
- w zakładce tools wybieramy GCC C++ linker->libraries->add:
- SDL
- SDLmain
- GL
I już powinno być OK. Program wyświetli okno i po sekundzie się zamknie:)
Od dłuższego czasu zbierałem się, żeby na quaddev.com wstawić coś więcej niż kilka linków. Postanowiłem zacząć prowadzić coś a’la strona domowa w formie bloga - a że prowadzić dwa jest bez sensu, więc importowałem większość notek z quaddev.blogspot.com. Tamten blog usypiam, od tej pory będę pisał tutaj.
:)
