Skocz do zawartości

[Java] Gamelib


Shockah

Rekomendowane odpowiedzi

No cóż. Gdybym teraz szukał czegoś do kodzenia gierek, to bym się pewnie zdecydował na libgdx, ale wtedy jak zaczynałem znalazłem właśnie Slicka :P. A że już sobie napisałem "bazę" pod projekty, to nie mam ochoty się przenosić.
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 ;_;

Odnośnik do komentarza
Udostępnij na innych stronach

opengl es nie boli, w rzeczywistości to jest bardzo przyjemny - w wersji 2.0 nie ma fixed pipeline - wsio jest programowalne na shaderach ^^

Odnośnik do komentarza
Udostępnij na innych stronach

kod testow wydaje sie byc prosty, ale przydalby sie example jednej malej gotowej gry, taki arkanoidowy Hello World jaki mam w androidowej wersji xenona, bo chcialbym przetestowac libke, a niewiele wiem z drobnych przykladow.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...