Uhhh. Nie wyszło mi to.
Kilka miesięcy temu zacząłem pisać własną bibliotekę do tworzenia gier 2D - z braku pomysłów nazwałem ją po prostu Gamelib.
Gamelib jest biblioteką (można też powiedzieć silnikiem) pozwalającym łatwo i przyjemnie tworzyć gry 2D w Javie (konkretnie wersja 7, choć nie byłoby problemu użyć wersji 6), używając jako silnika graficznego OpenGL, zamiast Java2D. Wykorzystuje bibliotekę LWJGL (znaną choćby z Minecrafta) właśnie do obsługi OpenGLa. Sam LWJGL działa na Windowsie, Linuxie, OS X i Solarisie, więc Gamelib powinien również.
Jako że dobre 7-8 lat spędziłem nad GMem, trochę sie na nim wzorowałem, co można czasem zauważyć po tym jak wszystko jest zorganizowane.
Funkcjonalność na daną chwilę:
* tworzenie "roomów", przejścia między nimi
* tworzenie i niszczenie obiektów, pobieranie listy wszystkich obiektów danego typu
* proste sprawdzanie kolizji między obiektami
* sortowanie obiektów po głębokości
* podział rysowania obiektów na warstwy (dużo lepsza wydajność przy rysowaniu wielu różnych obrazków w jednym obiekcie)
* rysowanie kształtów (linie, prostokąty, koła, elipsy, polygony)
* rysowanie obrazków, wyciętych kawałków obrazków
* obsługa spritesheetów/tilesetów i atlasów (spritesheet: jedna stała siatka; atlas: wycinek obrazka o podanych wymiarach - np. rozciągalne okna dialogowe w jednym atlasie)
* rysowanie tekstu z czcionkami TTF
* bardzo proste ładowanie zasobów (BMP, JPG, PNG, GIF, WBMP, jak i SVG z pomocą biblioteki Apache Batik (nie jest ona wymagana jeśli nie używamy plików SVG))
* blend mode'y
* systemy cząsteczkowe
* surface'y
* shadery (vertex i fragment)
* obsługa klawiatury (zarówno poprzez eventy (np. wpisywanie tekstu z klawiatury) jak i poprzez sprawdzanie stanu (np. ruch postaci)) i myszki
Sam kod Gameliba dostępny jest publicznie na Githubie - https://github.com/Shockah/Gamelib.
Wymaga on mojej paczki pl.shockah.json (do ładowania atlasów) - https://github.com/Shockah/pl.shockah.json.
Przykładowe projekty napisane przeze mnie w Gamelibie - czołgi pisane do szkoły na specjalizację z programowania i wczesna wersja TimeSurfa:
Z Dropboxa: https://dl.dropboxusercontent.com/u/1765403...t%20Release.zip
Z GMClanowego uploadera: https://gmclan.org/up2763_3_Gamelib_Public_Test_Release.html
W paczce dostępne zarówno źródła jak i wyeksportowane wykonywalne JARy (przygotowane pod Windowsa, nie chciałem specjalnie kopiować natywnych bibliotek również dla innych systemów).
Na Githubie dostępne są też proste testy biblioteki: https://github.com/Shockah/Gamelib/tree/mas.../srctests/tests
Czego jeszcze nie zaimplementowałem w bibliotece:
* obsługi dźwięku
* obsługi sieci
* obsługi kontrolerów typu gamepady
W planach jest również sportowanie Gameliba na Androida, jako że mam dostęp do jednego urządzenia z tym systemem. Ale OpenGL ES boli ;_;