Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[KTUT] libGDX czyli tworzenie gier na Android i Desktop!


Rekomendowane odpowiedzi

Opublikowano

wstep.png

Jeśli interesowałeś się programowaniem pod wiele platform,zapewne wiesz że nie jest to łatwe .... a jednak się mylisz !

libGDX to biblioteka przeznaczona do tworzenia gier, co jest w niej niezwykłego ? Tworzysz jeden kod - uruchamiasz go na androidzie, linuksie, windowsie, iosie, tosterze i czymkolwiek sobie zapragniesz !

Ponadto, libGDX to jedna z najwydajniejszych bibliotek na androida, ponieważ korzysta ona z:

OpenAL , OpenGL

A krytyczne miejsca zostały napisane w natywnym C++ który jest szybszy od Javy!

instalacja.png

 


#1 Pobieranie wymaganych elementów
Pierwszym krokiem będzie przygotowanie środowiska, by móc rozpocząć programowanie. Elementy które będą nam potrzebne:

  • Java Platform (JDK) Link do oficjalnej strony - pobieramy i instalujemy
  • Eclipse Wersja Eclipse IDE for Java Developers w zupełności nam wystarczy
  • AndroidSDK Rozwijamy USE AN EXISTING IDE i pobieramy SDK Tools. Po zakończeniu instalacji nie uruchamiamy go !
  • LibGDX Setup Służy do automatycznego stworzenia wymaganych projektów
  • Wszystko dobrze jest wypakować/zainstalować do jednego folderu np. na pulpicie (Oczywiście oprócz JDK), tak jak ja to zrobiłem:
    Screenshot_1.png
  • Jakieś błędy ? Link do oficjalnej dokumentacji: https://code.google.com/p/libgdx/wiki/Prerequisits

#2 Konfiguracja AndroidSDK

  • Teraz skonfigurujemy AndroidSDK do współpracy z Eclipse.
  • Odpalamy eclipse i klikamy Help > Install new Software
  • Klikamy Add i wpisujemy Name: ADT Plugin Location:
    https://dl-ssl.google.com/android/eclipse/
    i klikamy OK. Jeśli mamy jakieś problemy, zamiast https w linku, użyjmy http.
  • Jak się wszystko przemieli zaznaczamy ptaszkiem Developer Tools i dusimy Next, Next, akceptujemy i Finish.
  • Po zakończeniu instalacji restartujemy eclipse.
  • Przy pierwszym uruchomieniu poprosi nas o lokalizację Android SDK, wskazujemy ją, instalowaliśmy to przecie kilka minut temu ;) (Jeśli się nie pojawi to znaczy że eclipse już sam znalazł.)
  • Jakieś błędy ? Tutaj link do oficjalnej instrukcji: http://developer.android.com/sdk/installing/index.html

#3 Dodanie platform Androida

  • Odpalamy Android SDK (Przez eclipse: Window > Android SDK Manager lub z folderu gdzie go zainstalowaliśmy)
  • Zaznaczamy ptaszkiem: Tools, Najnowszą wersję androida (np. Android 4.0.3) i Extras > Android Support Library oraz Extras > Google USB Driver
  • Klikamy Install i czekamy aż zainstaluje ;)
  • UFFF ! Koniec ! Możemy jeszcze zainstalować Google Web Toolkit jeśli chcemy również mieć możliwość odpalania naszej gry za pomocą HTML 5. LINK

 

 

nowy-projekt.png

 


#1 Stworzenie nowego projektu

  • Wchodzimy do folderu gdzie wypakowaliśmy libGDX Setup i odpalamy gdx-setup-ui.jar klikając na plik 2x LPM lub za pomocą lini poleceń: java -jar gdx-setup-ui.jar
  • Klikamy wielki przycisk Create
  • W lewym oknie wpisujemy:
    Name - nazwa gry np. Moja-Pierwsza-Gra
    Package - Tutaj wpisujemy domenę naszej strony internetowej, adresu email, od końca, lub: me.NICK.KROTKANAZWA np. com.gmail.piotrek54pl.pierwszagra
    Game Class - Tutaj obojętnie, np. PierwszaGra

    Ja odznaczam Generate iOS i HTML project bo nie będę tego używał.
  • W środkowym (2 oknie) klikamy w linijce z libGDX ikonkę pobierania z S, czyli Download Latest Stable Build, jeśli napis libGDX jest na zielono, to nie musimy tego robić.

    1.png

  • Na koniec klikamy przycisk Open The Generation Screen i następnie Launch! , projekt zostanie wygenerowany do folderu z libGDX Setup.

#2 Importowanie projektu do eclipse

  • Odpalamy eclipse i wybieramy: File > Import... > General > Existing Project into Workspace > Next > Select root directory > Browse > Wybieramy folder z libGDX Setup > Upewniamy się że wszystkie foldery związane z naszym projektem są zaznaczone.

    2.png

  • Jeśli chcemy, zaznaczamy Copy Projects into Workspace, skopiuje to projekty do Workspace, dzięki czemu nie będziemy musieli się o nie martwić że je przypadkowo skasujemy z folderu libGDX Setup.
  • Klikamy Finish by zaimportować, nasze projekty pojawią się w eclipse.
  • Czas na niwelowanie błędów, klikamy na projekt NAZWA-android PPM > Properties, następnie zakładka Android i zaznaczamy w Project Build Target ptaszkiem najnowszego androida którego wcześniej pobraliśmy, np. Android 4.2.2 i klikamy OK

    3.png

  • Jeśli stworzyliśmy projekt NAZWA-html i mamy tam błąd, to zaznaczamy go i na dole w zakładce Errors rozwijamy Errors (X item) , klikamy na błąd PPM i wybieramy Quick Fix. Następnie postępujemy zgodnie z poleceniami.

 

 

hello-world.png

 


#1 Odpalenie dema na Desktopie

  • libGDX Setup domyślnie wrzuca nam do kodu małe demko, dzięki któremu zobaczymy czy wszystko działa poprawnie. Na pierwszy ogień idzie wersja Desktop.
  • Klikamy PPM na NAZWA-desktop > Run As... > Java Application
    W otwartym oknie wybieramy Main - NAZWAPACKAGE i klikamy OK.
  • Przed nami powinno ukazać się okienko wyświetlające obrazek ;)

#2 Odpalenie dema na Androidzie

  • Teraz część trudniejsza, jeśli nie lubimy pokazu slajdów to musimy zaopatrzyć się w urządzenie z androidem i kabelek USB.
  • Bierzemy nasz telefon/tablet/smartphone z androidem i wchodzimy w ustawienia.
  • W zależność od systemu, musimy znaleźć opcję włączającą tryb debugowania USB.
    ICS: Ustawienia -> Opcje Programistyczne -> zaznaczamy Debugowanie USB
    GB: Ustawienia -> Aplikacje -> Dla Programistów -> zaznaczamy Debugowanie USB

    4.png

  • Podłączamy telefon do kompa za pomocą USB.
  • W pasku powiadomień wyskoczy nam informacja o połączeniu, w androidzie 4.1 i wyższym musimy tapnąć to powiadomienie i zmienić tryb połączenia z Urządzenia multimedialne (MTP) na Aparat (PTP)
  • Teraz, jeśli jeszcze tego nie zrobiliśmy, odpalamy eclipse.
  • Klikamy PPM na NAZWA-android > Run As... > Android Application
  • Jeśli pojawiło nam się Android AVD Error: No compatible targets were found oznacza to że nasze urządzenie nie zostało wykryte, albo nie mamy zainstalowanych odpowiednich sterowników:
    • Klikamy na Mój Komputer > PPM > Właściwości > Menedżer urządzeń
    • Szukamy Nieznane Urządzenie lub urządzenia w kategorii Android Device
    • Klikamy na nie PPM > Aktualizuj Oprogramowanie Sterownika > Przeglądaj mój komputer w poszukiwaniu [...] > Pozwól mi wybrać z listy urządzeń [...] > Google inc. > Android ADB Interface > Dalej i czekamy aż się zainstaluje :)
  • Jeśli zainstalowaliśmy odpowiednie sterowniki ale nadal nie wykrywa, spróbujmy:
    • Wyłączenie i włączenie trybu debugowania.
    • Odłączenie i podłączenie telefonu jeszcze raz.
    • Restart telefonu
    • Restart komputera
    • Restart Eclipse
  • Jeśli nadal nie pomaga, zawsze możesz w okienku wybrać Yes i stworzyć wirtualne urządzenie androida (emulator), ale uprzedzam że zobaczysz pokaz slajdów.
  • Jeśli okienko z błędem nie pojawiło się, to uwierz mi że to 90% sukcesu :-D A zamiast niego powinno być takie coś:

    5.png

  • Wybieramy nasze urządzenie z listy i klikamy OK. Po kilku chwilach Eclipse (dokładniej ADB) wyśle skompilowany program (.apk) na nasze urządzenie i automatycznie go uruchomi !

 

 

prosty-program.png

 


#1 Konfiguracja Klasy Startowej

  • Chcemy stworzyć prostą gierkę. Pierwszym krokiem będzie konfiguracja pliku startowego dla destkopa. Otwieramy NAZWA-desktop > src > NAZWAPACKAGE > Main.java
  • Widzimy tam prosty kod, zamieńmy aktualną zawartość klasy Main, na tą:
    public class Main {
       public static void main(String[] args) {
          LwjglApplicationConfiguration cfg = new LwjglApplicationConfiguration();
          cfg.title = "Prosta gra";
          cfg.useGL20 = true;
          cfg.width = 800;
          cfg.height = 480;
          new LwjglApplication(new PierwszaGr(), cfg);
       }
    }
    
    cfg.title Zmieniamy tytuł okna.
    cfg.useGL20 zaznaczamy że chcemy używać OpenGL 2.0
    cfg.width Wybieramy szerokość okna
    cfg.height Wybieramy wysokość okna
    Reszty narazie nie musicie znać ;-] (Jest tu mały kruczek, zrobiony specjalnie, i musisz go sam naprawić)
  • Teraz zrobimy podobnie u androida, wchodzimy kolejno: NAZWA-android > src > NAZWAPACKAGE > MainActivity.java
  • Tutaj zamieniamy aktualną zawartość klasy MainActivity na:
    public class MainActivity extends AndroidApplication {
       @Override
       public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
            
          AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration();
          cfg.useGL20 = true;
          cfg.useAccelerometer = false;
          cfg.useCompass = false;
            
          initialize(new PierwszaGr(), cfg);
       }
    }
    
    cfg.useGL20 Tak jak poprzednio, używamy OpenGL 2.0
    cfg.useAccelerometer W celu oszczędziania energii, wyłączamy akcelerometr.
    cfg.useCompass Podobnie wyłączamy kompas.
    Tutaj wymiarów nie możemy zmienić - jest ona narzucona przez androida i rozdzielczość ekranu użytkownika.

#2 Wczytanie obrazka

  • Nareszcie przejdziemy do głównego kodu, który jest uruchamiany na każdym urządzeniu. Wchodzimy w NAZWA > src > NAZWAPACKAGE > NAZWAKLASY.java
  • Mamy tam kod na wczytanie demka, kasujemy go i zastępujemy tym:
    import com.badlogic.gdx.ApplicationListener;
    
    public class NAZWAKLASY implements ApplicationListener {
    
    	@Override
    	public void create() {		
    	}
    
    	@Override
    	public void dispose() {
    	}
    
    	@Override
    	public void render() {		
    	}
    
    	@Override
    	public void resize(int width, int height) {
    	}
    
    	@Override
    	public void pause() {
    	}
    
    	@Override
    	public void resume() {
    	}
    }
    
    NAZWAKLASY musicie zamienić na tą, którą ustawiliście. (Jest to nazwa pliku bez rozszerzenia)
    Teraz po kolei, widzisz sporo metod, wszystko co jest między klamrami {} wykonuje się w odpowiednim momencie, według tego schematu:


    6.png
    Dodatkowo: resize() wykonuje się tylko na desktopie podczas zmiany rozmiaru okna.

  • W końcu zacznijmy pisać, pierwszym krokiem jest stworzenie zmiennych, czyli stworzenie miejsca w pamięci na nasz obrazek. Na samym początku kodu, tuż po linijce:
    public class NAZWAKLASY implements ApplicationListener {
    
    Dodajemy:
    Texture obrazek;
    
    Powinien pojawić się błąd, klikamy na niego i klikamy 2x LPM na Import 'Texture' (com.badlogic.gdx.graphics)
  • Teraz, zadeklarujemy zmienne. Robi się to tylko raz podczas startu programu, więc wpisujemy w nowej linijce po:
    public void create() {	
    
    To:
    obrazek = new Texture(Gdx.files.internal("obrazek.png"));
    
    No dobrze, ale gdzie ten obrazek wrzucić ? Wrzucić go należy do folderu: NAZWA-android > assets (Mamy tam też folder data, możemy go skasować bo był on potrzebny do demka) metodą przeciągnij i upuść. Pamiętajmy że plik musi nazywać się obrazek.png !
  • Okey, obrazek mamy wczytany do programu. Czas na wyświetlenie go. Tutaj już jest troszkę bardziej skomplikowane. Musimy utworzyć Kamerę (Camera), jest to można powiedzieć okno na SpriteBatch. SpriteBatch ? SpriteBatch to jest zbiór tekstur. Zasada Działania:

    Wszystkie tekstury kopiujemy do Spritebatch -> Ustawiamy Camera na SpriteBatch -> Karta Graficzna wyświetla zawartość Camera, czyli SpriteBatch z naszymi teksturami.

    Dlaczego tekstury nie wysyłamy bezpośrednio tylko na SpriteBatch ? A wyobraź sobie trzymanie wszystkich papierów/zeszytów/kredek/monitora bez biurka. Z technicznego punktu widzenia lepiej jest wysłać do karty jeden obrazek (SpriteBatch), niż, w późniejszym etapie, 20.
  • Wróćmy do kodzenia, w nowej linijce po Texture obrazek; dopisujemy jeszcze:
    OrthographicCamera camera;
    SpriteBatch batch;
    
    Błędy niwelujemy tak samo jak poprzednio.
    I w create() w nowej linijce dopisujemy:
    camera = new OrthographicCamera();
    camera.setToOrtho(false, 800, 480);
    
    batch = new SpriteBatch();
    
    Tutaj ustawiamy szerokość: 800, wysokość:480, czyli taką jaką ma nasz ekran. Jeśli ekran będzie większy/mniejszy to zostanie on automatycznie przeskalowany (Widok z kamery rozszerzy się, albo skurczy)
  • Ostatni punkt ! Teraz wreszcie wyświetlimy nasz obrazek. Ja sobie utworzyłem i wrzuciłem taki:
    obrazek.png
    Ostatnia rzecz, do metody render() wpisujemy:
    Gdx.gl.glClearColor(0, 0, 0, 1);
    Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
    camera.update();
    batch.setProjectionMatrix(camera.combined);
    batch.begin();
    	    
    batch.draw(obrazek, 250, 200);
    	    
    batch.end();
    
    1 i 2 linijka to wyczyszczenie ekranu na czarno.
    3 linijka to aktualizacja kamery
    4 linijka to ustawienie kamery na batch (Od tej chwili widzimy batch na ekranie !)
    5 linijka to "otwarcie" batcha byśmy mogli do niego dodawać elementy.
    7 linijka to narysowanie na batchu naszego obrazka na pozycji 250,200
    9 linijka to "zamknięcie" batcha i uwidocznienie zmian.
    Wszystko wykonuje się jakieś 60 razy na sekundę.
  • Koniec ! Możemy przetestować jak to wygląda na androidzie i na desktopie :)
  • Jeszcze zmodyfikowany, pełny kodzik pozwalający na ruszanie obrazkiem, ale o tym później:

    public class PierwszaGra implements ApplicationListener {
    	Texture obrazek;
    	OrthographicCamera camera;
    	SpriteBatch batch;
    	
    	int pozycjaX = 250;
    	int pozycjaY = 200;
    	
    	@Override
    	public void create() {	
    		obrazek = new Texture(Gdx.files.internal("obrazek.png"));
    		
    		camera = new OrthographicCamera();
    		camera.setToOrtho(false, 800, 480);
    
    		batch = new SpriteBatch();
    	}
    
    	@Override
    	public void dispose() {
    	}
    
    	@Override
    	public void render() {	
    		if(Gdx.input.isTouched()) {
    		      Vector3 touchPos = new Vector3();
    		      touchPos.set(Gdx.input.getX(), Gdx.input.getY(), 0);
    		      pozycjaX = Gdx.input.getX()- 350/2;
    		      pozycjaY = -((Gdx.input.getY()+ 150/2)-480);
    		}
    		
    		
    		Gdx.gl.glClearColor(0, 0, 0, 1);
    	    Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
    	    camera.update();
    	    batch.setProjectionMatrix(camera.combined);
    	    batch.begin();
    	    
    	    batch.draw(obrazek, pozycjaX,  (int) (Gdx.graphics.getHeight() - sprite.getHeight() - y);
    	    
    	    batch.end();
    	}
    
    	@Override
    	public void resize(int width, int height) {
    	}
    
    	@Override
    	public void pause() {
    	}
    
    	@Override
    	public void resume() {
    	}
    }
    

 

 

Opublikowano

Fajnie fajnie - kiedyś pisałem aplikacje na androida, ale jakoś mi to do gustu nie przypadło, może jak kupie sb nowy telefon to spróbuje z tą bilbioteką. Jak dla mnie poradnik na poziomie, mam nadzieję, że wygrasz ten konkurs :)

//gif w sygnie

Opublikowano

No spoko. Wystarczająco informacji, podoba mi się ;)

 

LWJGL , OpenAL , OpenGL

LWJGL == OpenGL.

Opublikowano

No spoko. Wystarczająco informacji, podoba mi się ;)

 

LWJGL , OpenAL , OpenGL

LWJGL == OpenGL.

 

LWJGL = Lightweight Java Game Library

OpenGL = Open Graphics Library

LWJGL != OpenGL

:) LWJGL Opiera się na OGL, ale to nie jest to samo ^_^

 

PS Użyłeś ==, a to jest operator równości, a nie równość ^_^ Czyli zadałeś jakby pytanie, a nie stwierdzenie.

Opublikowano

LWJGL = Lightweight Java Game Library

OpenGL = Open Graphics Library

LWJGL != OpenGL

:) LWJGL Opiera się na OGL, ale to nie jest to samo ^_^

 

PS Użyłeś ==, a to jest operator równości, a nie równość ^_^ Czyli zadałeś jakby pytanie, a nie stwierdzenie.

Lol...

LWJGL to to samo, gdyż w tej bibliotece wykorzystuje się go jako wrapper do opengl-a dla desktopa.

"najwydajniejszych bibliotek na androida," i napisałeś LWJGL a lwjgl nie ma nic wspólnego z androidem.

Wystarczy napisać OPENGL i szlus. Albo rozpisać z czego dana platforma korzysta.

 

ps== :fp: wróć do realnego świata. I myśl normalnie ;o

 

Apropos:

 

        if(Gdx.input.isTouched()) {
         Vector3 touchPos = new Vector3();
         touchPos.set(Gdx.input.getX(), Gdx.input.getY(), 0);
         pozycjaX = Gdx.input.getX()- 350/2;
         //Tutaj jest troszke nagmatwane bo w libGDX punkt x0,y0 to
         //Lewa, dolna czesc ekranu - co komplikuje sprawe.
         pozycjaY = -((Gdx.input.getY()+ 150/2)-480);
        }
     

 

Klikanie jest w porządku 00 jest top left , więc jak chcesz mieć do rysowania tak samo to lepiej podczas rysowania dać:

y = (int) (Gdx.graphics.getHeight() - sprite.getHeight() - y);// we are using topleft 0 0

Opublikowano

 

ps== :fp: wróć do realnego świata. I myśl normalnie ;o

Kolega ma już zboczenie zawodowe. (ja na teście z matmy zamiast napisać = dałem też dwa razy ==:D )

Opublikowano

Tak naprawdę poradnik opisuje tylko instalacje + gotowy kod jakiegoś prostego programu..

/ GA-970A-UD3 / FX-6300 / Sapphire Xtreme 5830 / OCZ ZS 550W / Brutus M23 /

| MPC Coders Team | MPC Gold Member | C#, C++, PHP, (N)ASM, AutoIT, Python, Java |

Opublikowano

Problem: Hello World #1

 

Otóż po uruchomieniu aplikacji jako java script otrzymuje w eclipse błąd o nazwie.

 

Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: com.badlogic.gdx.utils.GdxRuntimeException: OpenGL is not supported by the video driver.
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:113)
Caused by: com.badlogic.gdx.utils.GdxRuntimeException: OpenGL is not supported by the video driver.
at com.badlogic.gdx.backends.lwjgl.LwjglGraphics.createDisplayPixelFormat(LwjglGraphics.java:211)
at com.badlogic.gdx.backends.lwjgl.LwjglGraphics.setupDisplay(LwjglGraphics.java:181)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:122)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:110)
Caused by: org.lwjgl.LWJGLException: Pixel format not accelerated
at org.lwjgl.opengl.WindowsPeerInfo.nChoosePixelFormat(Native Method)
at org.lwjgl.opengl.WindowsPeerInfo.choosePixelFormat(WindowsPeerInfo.java:52)
at org.lwjgl.opengl.WindowsDisplay.createWindow(WindowsDisplay.java:229)
at org.lwjgl.opengl.Display.createWindow(Display.java:303)
at org.lwjgl.opengl.Display.create(Display.java:845)
at org.lwjgl.opengl.Display.create(Display.java:754)
at com.badlogic.gdx.backends.lwjgl.LwjglGraphics.createDisplayPixelFormat(LwjglGraphics.java:208)
... 3 more
Jakies rady...?
Edit: Cos zwiazane z driverami karty graficznej...?!

 

Opublikowano

Jakies rady...?

Nauczyć się czytać błędy :)

 

OpenGL is not supported by the video driver. - OpenGL nie jest wspierany przez kartę graficzną.

Pixel format not accelerated - Brak przyśpieszenia sprzętowego, należy je włączyć!

 

Poszukaj na google, spróbuj we właściwościach karty graficznej poszukać jak włączyć przyśpieszenie sprzętowe i zaktualizować sterowniki. Dobrze by też było znać model, bo jak to jakiś stary netbook to nic nie wskórasz.

 

PS Nie javascript, tylko java, javascript to zupełnie inny język.

Opublikowano

Wybacz druhu. Sterowniki aktualizowalem przedwczoraj. Lapek nie taki stary bo tylko 2 lata.

Prosze tez o kontakt prywatny. Przyjdzie mi jeszcze sie wiele nauczyc. A teraz poszperam w googlach

*Dziekuje za szybka odpowiedz.

 

Edit:

Moje karta wspiera nawet wersje 3,2 wersje OpenGl. Jutro posprawdzam dokladnie sterowniki. Tutaj masz linka do mojej karty. Przepraszam za klopot i braki doswiadczenia.

 

http://www.amd.com/us/products/notebook/graphics/ati-mobility-hd-4000/hd-4600/Pages/hd-4600-specs.aspx


 

Opublikowano

Tak naprawdę poradnik opisuje tylko instalacje + gotowy kod jakiegoś prostego programu..

A czego ty sie spodziewałeś xD

Wybacz druhu. Sterowniki aktualizowalem przedwczoraj. Lapek nie taki stary bo tylko 2 lata.

Prosze tez o kontakt prywatny. Przyjdzie mi jeszcze sie wiele nauczyc. A teraz poszperam w googlach

*Dziekuje za szybka odpowiedz.

 

Edit:

Moje karta wspiera nawet wersje 3,2 wersje OpenGl. Jutro posprawdzam dokladnie sterowniki. Tutaj masz linka do mojej karty. Przepraszam za klopot i braki doswiadczenia.

 

http://www.amd.com/us/products/notebook/graphics/ati-mobility-hd-4000/hd-4600/Pages/hd-4600-specs.aspx

http://www.ononesoftware.com/support/607/

 

jak będzie źle znaczy coś spierniczyłeś.

 

albo i nie : http://forums.adobe.com/thread/841363

 

Min ogl dla libgdx to 1.5 bodajże a 1.5 to mają 10 letnie karty.

Opublikowano

Ten tutorial jest dosyć fajnym wstępem do tworzenia aplikacji na platformy mobilne, jest jednak jedno duże "ale" :)

 

Nie tak dawno (15 maja na konferencji Google I/O) zapowiedziano narzędzie dedykowane developerom, android studio.

W maju także udostępniono pierwsze wersje tego narzędzia tutaj:

http://developer.android.com/sdk/installing/studio.html

Android studio przebija eclipse pod każdym względem. Dodatkowo możliwość bezbolesnej migracji z eclipse do android studio zabiła tego pierwszego gracza (jeżeli chodzi o tworzenie pod androida).

Opublikowano

Ten tutorial jest dosyć fajnym wstępem do tworzenia aplikacji na platformy mobilne, jest jednak jedno duże "ale" :)

 

Nie tak dawno (15 maja na konferencji Google I/O) zapowiedziano narzędzie dedykowane developerom, android studio.

W maju także udostępniono pierwsze wersje tego narzędzia tutaj:

http://developer.android.com/sdk/installing/studio.html

Android studio przebija eclipse pod każdym względem. Dodatkowo możliwość bezbolesnej migracji z eclipse do android studio zabiła tego pierwszego gracza (jeżeli chodzi o tworzenie pod androida).

Przyzwyczaiłem się do eclipse, ponadto ja tu piszę o tworzeniu gier nie tylko na androida, ale też na desktopa i iOSa więc Android Studio się nie nada.

Opublikowano

Ten tutorial jest dosyć fajnym wstępem do tworzenia aplikacji na platformy mobilne, jest jednak jedno duże "ale" :)

 

Nie tak dawno (15 maja na konferencji Google I/O) zapowiedziano narzędzie dedykowane developerom, android studio.

W maju także udostępniono pierwsze wersje tego narzędzia tutaj:

http://developer.android.com/sdk/installing/studio.html
Android studio przebija eclipse pod każdym względem. Dodatkowo możliwość bezbolesnej migracji z eclipse do android studio zabiła tego pierwszego gracza (jeżeli chodzi o tworzenie pod androida).

 

 

EEE?!

 

Nowe android studio = Intelij idea, stare = eclipse.

 

Więc to jedno duże " ale " na pewno nie jest dla programistów.

Jeden kit jaki ide kod trzeba pisać tak czy tak

 

Tak, dodali parę udogodnień związanych z tworzeniam aplikacji na androida, ale my tu mówimy o grach, których nie zrobi się w edytorze gui :s

  • 4 tygodnie później...
Opublikowano

Świetny poradnik! Dawno nie widziałem, żeby ktoś pisał tak konkretnie.

 

Mam tylko pytanie odnośnie folderów - nazwa.android i nazwa.desktop - ich istnienie jest dla mnie logiczne a do czego jest folder NAZWA - czemu w nim się pracuje a nie gdzieś w nazwa.android?

 

I jeszcze jedno, aplikacje otwieram na komputerze (trwa to trochę), demko się otworzyło ale napisany program z wyświetlaniem obrazka już nie. Pojawia mi się taka informacja "The application My LibGDX Game (process pl.wp.nazwaPoczty.NAZWA) has stopped unexpectedly. Please try again." Co może być nie tak?

LogCat w Eclipse pokazuje informacje na czerwono (cześć) ale w kodzie wszystko gra. Proszę o pomoc.

Opublikowano

EDIT: Pozwoliłem sobie zedytować cały post. Błąd był w grafice - "power of two".

 

I wracając do moich pytań:

 

1. Czemu ten folder bez rozszerzenia (w poradniku nazywany NAZWA) wpływa na wygląd całej struktury w folderach nazwa-android i nazwa-desktop? To jest folder główny? Jak mam to interpretować?

2. LibGdx obsługuje tylko grafikę 8 bitową?

3. Możecie polecić jakieś inne kursy przystępne dla laika z podstawową wiedzą z javy?

Opublikowano

EDIT: Pozwoliłem sobie zedytować cały post. Błąd był w grafice - "power of two".

 

I wracając do moich pytań:

 

1. Czemu ten folder bez rozszerzenia (w poradniku nazywany NAZWA) wpływa na wygląd całej struktury w folderach nazwa-android i nazwa-desktop? To jest folder główny? Jak mam to interpretować?

2. LibGdx obsługuje tylko grafikę 8 bitową?

3. Możecie polecić jakieś inne kursy przystępne dla laika z podstawową wiedzą z javy?

1. Możesz sobie nazwać oddzielnie każdy projekt inaczej ale przejrzyściej i ładniej wygląda nazwa_projektu-[android,desktop,core]

Głownie chodzi o to że :

nazwa_projektu : to jest projekt core gdzie piszesz 99% rzeczy.

nazwa_projektu-android,desktop,html5 - to sa podprojekty które tylko mają w sobie launchery do ^

2. ? Nie? Libgdx to OpenGL a o tym to już sobie poczytaj ;)

3. Ten jest najbardziej noob-friendly, lepszego wątpię czy znajdziesz.

Opublikowano

Autor pisze o ustawieniu kamery a ja zrobiłem trochę inaczej:
Zamiast implementować action listener, dziedziczę z klasy Game gdzie action listener już jest. Ktoś mi napisał, żeby każdy obrazek sam się rysował w swojej klasie a klasa główna go tylko wyświetlała. Tak więc zrobiłem osobną klasę o nazwie "Splash":

 

 

package pl.wp.lukaszmoral.giercyna.screens;

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;

public class Splash  implements Screen

{
	private SpriteBatch batch;
	private Sprite splash;
	
	@Override
	public void render(float delta) {
		Gdx.gl.glClearColor(0, 0, 0, 1);
		Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
		
		batch.begin();

		splash.draw(batch);
			    
		batch.end();
	}

	@Override
	public void resize(int width, int height) {
		
	}

	@Override
	public void show() {
		batch = new SpriteBatch();
		
		Texture splashTexture = new Texture(("logo2.png"));
		splash = new Sprite(splashTexture);
		splash.setSize(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
	}

	@Override
	public void hide() {
		
	}

	@Override
	public void pause() {
		
	}

	@Override
	public void resume() {
		
	}

	@Override
	public void dispose() {
		
	}

}

 

 

 

A moja klasa główna wygląda tak:

 

 

 

@Override
	public void create() {
	
		Gdx.app.log(VERSION, "create");
		setScreen(new Splash());
		/*obrazek2 = new Texture (Gdx.files.internal("logo2.png"));
		obrazek = new Texture(Gdx.files.internal("ss.png"));
		camera = new OrthographicCamera();
		camera.setToOrtho(false, 800, 480);

		batch = new SpriteBatch();*/
		Gdx.input.setInputProcessor(new Akcja());
		Gdx.input.setCatchBackKey(true);
		
	}

	@Override
	public void dispose() {
		super.dispose();
		/*batch.dispose();*/
	}

	@Override
	public void render() {
		super.render();
		/*Gdx.gl.glClearColor(0, 0, 0, 1);
		Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
		camera.update();
		batch.setProjectionMatrix(camera.combined);
		batch.begin();
		
		batch.draw(obrazek2, 0, 0, 800, 480);
		batch.draw(obrazek, 10, 20);
		
			    
		batch.end();*/
		
	}

	@Override
	public void resize(int width, int height) {
		super.resize(width, height);
	}

	@Override
	public void pause() {
		super.pause();
	}

	@Override
	public void resume() {
		super.resume();
	}
}

 

 

 

Za-komentowane są te z kursu. Jak to jest, że wszystko działa bez ustawienia kamery?

 

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...