1. Just nu får du 3 månader till halva priset & 50GB extra surf när du beställer ett mobilabonnemang hos Fello! Testa Årets Mobiloperatör du med! Surfa in på fello.se
    Stäng notis
  2. Registrera ett konto hos Sveriges trevligaste techcommunity!
    Stäng notis
  3. Stäng notis
  4. Stäng notis
  5. Stäng notis
  6. Stäng notis

LIBGDX - Desktop/Android/BlackBerry/iOS/HTML5 Java game development framework

Diskussion i 'Frågor, support och diskussion' startad av kallt_kaffe, 2 mar 2014.

  1. kallt_kaffe

    kallt_kaffe Professional Droid Medlem

    Blev medlem:
    2 aug 2010
    Inlägg:
    2 682
    Mottagna gillanden:
    1 685
    Operatör:
    Comviq
    Telefon:
    Xiaomi Mi Note 10

    MINA ENHETER

    Operatör:
    Comviq
    Telefon:
    Xiaomi Mi Note 10
    Tanken med denna tråd är att utbyta erfarenheter och diskutera utveckling där libGDX används.

    Jag har själv precis börjat använda libGDX då jag är sugen på att prova att göra spel och dessutom vill jag ha möjligheten att enkelt "porta" dem till, i första hand, iOS plattformen.

    Med libGDX utvecklar man i Java och i Eclipse och man skriver koden en gång och sedan krävs bara några mindre justeringar för varje plattform och sen har man Java-desktop, Android, iOS och HTML5 versioner av sitt spel nästan helt automatiskt. Det är också smidigt att använda sig av desktop versionen medan man utvecklar och testar istället för att hela tiden behöva testa appen på en telefon/platta.

    Just nu håller jag på, i utbildningssyfte, med en Flappy Bird klon och jag har lyckats få fart på den i desktopversion, androidversion, iOS-version och HTML5-version. HTML5-versionen har jag även publicerat som en webapp i Chrome Web Store (något som visade sig vara otroligt simpelt om man redan lagt ut HTML5 versionen på en website)

    Det står också att libGDX har stöd för Blackberry version men jag har inte undersökt det något djupare ännu. Någon som publicerat något för Blackberry?
     
  2. haringetliv

    haringetliv Infant Droid Medlem

    Blev medlem:
    3 mar 2014
    Inlägg:
    9
    Mottagna gillanden:
    0

    MINA ENHETER

    Håller oxå på och leker med den koden :) hur fick du HTML delen att fungera? har snart testat allt men får felmeddelande när jag kör google compile. Har du nåt tips? måste jag vara inloggad på mitt googlekonto i eclipse?

    Har fått PC och android versionen att fungera iaf :)
     
  3. kallt_kaffe

    kallt_kaffe Professional Droid Medlem

    Blev medlem:
    2 aug 2010
    Inlägg:
    2 682
    Mottagna gillanden:
    1 685
    Operatör:
    Comviq
    Telefon:
    Xiaomi Mi Note 10

    MINA ENHETER

    Operatör:
    Comviq
    Telefon:
    Xiaomi Mi Note 10
    I huvudprojektet finns en fil som heter ZBGame.gwt.xml. Ta bort sista nivån i source pathen. Alternativt, lägg in i en rad för varje "package" du har i huvudprojektet.

    Efter det så bör du kunna komplera HTML5 projektet. Justera också upplösningen i HTML projectets java fil om du inte redan gjort det.

    Sen när den kompilerat klart så kopierat du allt i "war" katalogen (utom WEB-INF) till en webserver. Det går att nytta public folder på dropbox som webserver.
     
    haringetliv och evening.beam gillar detta.
  4. haringetliv

    haringetliv Infant Droid Medlem

    Blev medlem:
    3 mar 2014
    Inlägg:
    9
    Mottagna gillanden:
    0

    MINA ENHETER

    Tack! ska testa detta och återkommer senare :)
     
  5. haringetliv

    haringetliv Infant Droid Medlem

    Blev medlem:
    3 mar 2014
    Inlägg:
    9
    Mottagna gillanden:
    0

    MINA ENHETER

    Hej igen, gjorde som du sa i

    HTML:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit trunk//EN" "http://google-web-toolkit.googlecode.com/svn/trunk/distro-source/core/src/gwt-module.dtd">
    <module>
    	<source>com.kilobolt.GameObjects</source>
    	<source>com.kilobolt.GameWorld</source>	
    	<source>com.kilobolt.Screens</source>	
    	<source>com.kilobolt.TweenAccessors</source>
    	<source>com.kilobolt.ui</source>	
    	<source>com.kilobolt.ZBHelpers</source>	
    	<source>com.kilobolt.ZombieBird</source>	
    </module>
    Samt ändrade bildstorleken, men får fortfarande ett fel i compileringen. Inget direkt fel som den hänvisar till men detta är sista raderna i consolen efter flera 1000 rader kod.

    HTML:
              <when-type-is class='com.google.gwt.logging.impl.LevelImplNull'/>
                      Not an exact match
                   No: One or more subconditions was false
             Rule did not match
             Found better fallback match for <replace-with class='com.google.gwt.logging.impl.LevelImplRegular'/>
             Rebind result was com.google.gwt.storage.client.Storage.StorageSupportDetector
    Shutting down PersistentUnitCache thread
     

    Bifogade filer:

    Last edited: 4 mar 2014
  6. kallt_kaffe

    kallt_kaffe Professional Droid Medlem

    Blev medlem:
    2 aug 2010
    Inlägg:
    2 682
    Mottagna gillanden:
    1 685
    Operatör:
    Comviq
    Telefon:
    Xiaomi Mi Note 10

    MINA ENHETER

    Operatör:
    Comviq
    Telefon:
    Xiaomi Mi Note 10
    Det jag ser direkt som skiljer mitt projekt från ditt är jag inte har installerat App Engine, jag saknar helt den "mappen" i projektet.

    Min ZBGame.gwt.xml ser ut så här:
    HTML:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit trunk//EN" "http://google-web-toolkit.googlecode.com/svn/trunk/distro-source/core/src/gwt-module.dtd">
    <module>
    	<source path="com/apedroid/" />
    </module>
    När jag kompilerar så högerklickar jag på projektet och väljer Google --> GWT Compile
     
    haringetliv gillar detta.
  7. haringetliv

    haringetliv Infant Droid Medlem

    Blev medlem:
    3 mar 2014
    Inlägg:
    9
    Mottagna gillanden:
    0

    MINA ENHETER

    Okej, tack. ska prova o ta bort det o se om jag lyckas bättre :)
     
  8. haringetliv

    haringetliv Infant Droid Medlem

    Blev medlem:
    3 mar 2014
    Inlägg:
    9
    Mottagna gillanden:
    0

    MINA ENHETER

    ZBGame.gwt.xml ser ut som din nu och det gjorde susen. TACK för hjälpen! :) Nåt särskilt jag ska tänka på vis portering till ios?
     
  9. kallt_kaffe

    kallt_kaffe Professional Droid Medlem

    Blev medlem:
    2 aug 2010
    Inlägg:
    2 682
    Mottagna gillanden:
    1 685
    Operatör:
    Comviq
    Telefon:
    Xiaomi Mi Note 10

    MINA ENHETER

    Operatör:
    Comviq
    Telefon:
    Xiaomi Mi Note 10
    Dag 11 i kilobolts tutorial beskriver hur du får fart på iOS versionen. Det är (var?) problem med iOS simulatorn och verison 5.1 av Xcode men de kanske har löst det nu.

    Om du använder nighltyn av libgdx så måste du även köra nighlty på robovm annars så kommer det inte att fungera.

    Om du skall publicera i AppStore så kostar det runt 800kr/år och det tar ungefär en vecka från att du laddar upp en app (eller ny version av app) innan Apple gör review på den och om de rejectar den så är du tillbaka på ruta noll. Mycket frustrerande så det gäller att få det rätt från början.

    Och, jo så klart, du måste ha en Mac för att köra Xcode.
     
    haringetliv gillar detta.
  10. haringetliv

    haringetliv Infant Droid Medlem

    Blev medlem:
    3 mar 2014
    Inlägg:
    9
    Mottagna gillanden:
    0

    MINA ENHETER

    Tack återigen :) kul att du kommit så långt med ditt spel, ska ge mig på ios versionen nu i veckan. Hur löste du det men mellanslag i html verisionen? när jag provar min och håller ner space så kan fågeln flyga över spelet, samma i originalet från kilobolt, men inte i ditt :)

    Ska även försöka få det att lira i internet explorer, återkommer med en lösning här om jag finner någon sådan :)
     
  11. kallt_kaffe

    kallt_kaffe Professional Droid Medlem

    Blev medlem:
    2 aug 2010
    Inlägg:
    2 682
    Mottagna gillanden:
    1 685
    Operatör:
    Comviq
    Telefon:
    Xiaomi Mi Note 10

    MINA ENHETER

    Operatör:
    Comviq
    Telefon:
    Xiaomi Mi Note 10
    Hmm... det är inget jag medvetet fixat men jag lade till space och skrev kod för att undvika att man flög över rören innan de sakerna dök upp i tutorialen så det är möjligt att jag löste det lite annorlunda.

    Min keydown ser ut så här:
    Kod:
    	@Override
    	public boolean keyDown(int keycode) {
    		switch (keycode) {
    		case Keys.SPACE:
                if (myWorld.isRunning()) {
        			myBird.onClick();
        		} else if (myWorld.isReady()) {
             		myWorld.start();
        			myBird.onClick();
            	} 
                return true;
    		default:
    			return false;
    		}
    	}
    
    Sen har jag även detta i min keyup:
    Kod:
    	@Override
    	public boolean keyUp(int keycode) {
    		switch (keycode) {
    		case Keys.SPACE:
            	if (myWorld.isMenu()) {
            		myWorld.ready();
            	} else if (myWorld.isGameOver() || myWorld.isHighScore()) {
            		myWorld.restart();
            	}
    			return true;
    		default:
    			return false;
    		}
    	}
    
    Kanske det att jag gör en return true när jag hanterat SPACE i både keyup and keydown gör att jag inte får repeats?

    Sen gjorde jag nog min "inte-flyga-för-högt"-kod lite annorlunda. Bl.a. så har jag förlängt hitboxarna för rören i bit upp så att man kan flyga en bit ovanför synbart område utan att för den skull kunna flyga över dem.
     
  12. haringetliv

    haringetliv Infant Droid Medlem

    Blev medlem:
    3 mar 2014
    Inlägg:
    9
    Mottagna gillanden:
    0

    MINA ENHETER

    Fick till det genom att ändra hitboxen :) Vad använder du för reklam, admob? är det svårt att implementera? Väldigt tjusigt att ha som du har att det bara kommer fram på skärmen när man är död. :)
     
  13. kallt_kaffe

    kallt_kaffe Professional Droid Medlem

    Blev medlem:
    2 aug 2010
    Inlägg:
    2 682
    Mottagna gillanden:
    1 685
    Operatör:
    Comviq
    Telefon:
    Xiaomi Mi Note 10

    MINA ENHETER

    Operatör:
    Comviq
    Telefon:
    Xiaomi Mi Note 10
  14. haringetliv

    haringetliv Infant Droid Medlem

    Blev medlem:
    3 mar 2014
    Inlägg:
    9
    Mottagna gillanden:
    0

    MINA ENHETER

    Ursäkta för mina dumma frågor men är nog lite halvtrög o försöker lära mig.. o_O

    Alltså min mainactivity såg från början ut såhär:

    Kod:
    package com.kilobolt.ZombieBird;
    
    import android.os.Bundle;
    
    import com.badlogic.gdx.backends.android.AndroidApplication;
    import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration;
    
    public class MainActivity extends AndroidApplication {
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration();
            cfg.useGL20 = false;
            
            initialize(new ZBGame(), cfg);
        }
        
    }
    
    Och efter guiden du länkade till såhär:

    Kod:
    package com.kilobolt.ZombieBird;
    import com.google.android.gms.ads.*;
    import android.os.Bundle;
    
    import com.badlogic.gdx.backends.android.AndroidApplication;
    import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration;
    
    public class MainActivity extends AndroidApplication {
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            
            // Create the layout
            RelativeLayout layout = new RelativeLayout(this);
    
            // Do the stuff that initialize() would do for you
            requestWindowFeature(Window.FEATURE_NO_TITLE);
            getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
                    WindowManager.LayoutParams.FLAG_FULLSCREEN);
            getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
    
            // Create the libgdx View
            View gameView = initializeForView(new ZBGame(), false);
    
            // Create and setup the AdMob view
            AdView adView = new AdView(this, AdSize.BANNER, "xxxxxxxx"); // Put in your secret key here
            adView.loadAd(new AdRequest());
    
            // Add the libgdx view
            layout.addView(gameView);
    
            // Add the AdMob view
            RelativeLayout.LayoutParams adParams = 
                new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, 
                        RelativeLayout.LayoutParams.WRAP_CONTENT);
            adParams.addRule(RelativeLayout.ALIGN_PARENT_TOP);
            adParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
    
            layout.addView(adView, adParams);
    
            // Hook it all up
            setContentView(layout);
    
            AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration();
            cfg.useGL20 = false;
            
            initialize(new ZBGame(), cfg);
        }
        
    }
    
    Är jag helt ute o cyklar? :)

    Vad ska jag göra med RelativeLayout, Window, WindowManager, new AdView och new AdRequest som jag får röda streck under i eclipse?

    Tacksam för all hjälp so far, allt är så mycket enklare på svenska..
     
  15. kallt_kaffe

    kallt_kaffe Professional Droid Medlem

    Blev medlem:
    2 aug 2010
    Inlägg:
    2 682
    Mottagna gillanden:
    1 685
    Operatör:
    Comviq
    Telefon:
    Xiaomi Mi Note 10

    MINA ENHETER

    Operatör:
    Comviq
    Telefon:
    Xiaomi Mi Note 10
    Ta bort "import com.google.android.gms.ads.*;"

    Tryck sedan Ctrl+Shift+O så lägger den till alla imports som saknas.

    Du måste också göra om AdView anropet lite då Play services ser lite annorlunda ut än i AdMob SDKn som guiden handlar om.

    Kod:
                adView = new AdView(this);
                adView.setAdUnitId("xxxxxxxxxxxxxxxxxxx");
                adView.setAdSize(AdSize.SMART_BANNER);
                adView.loadAd(new AdRequest.Builder().build());
    
     
    Last edited: 21 mar 2014
  16. haringetliv

    haringetliv Infant Droid Medlem

    Blev medlem:
    3 mar 2014
    Inlägg:
    9
    Mottagna gillanden:
    0

    MINA ENHETER

    Tänkte bara meddela att jag fick igång det :) här är min kod om någon behöver:

    Kod:
    package com.kilobolt.ZombieBird;
    
    import android.os.Bundle;
    import android.view.View;
    import android.view.Window;
    import android.view.WindowManager;
    import android.widget.RelativeLayout;
    
    import com.badlogic.gdx.backends.android.AndroidApplication;
    import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration;
    import com.google.android.gms.ads.AdRequest;
    import com.google.android.gms.ads.AdSize;
    import com.google.android.gms.ads.AdView;
    
    public class MainActivity extends AndroidApplication {
        @Override public void onCreate (Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            // Do the stuff that initialize() would do for you
            requestWindowFeature(Window.FEATURE_NO_TITLE);
            getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
                    WindowManager.LayoutParams.FLAG_FULLSCREEN);
            getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
            
            setContentView(R.layout.main);
            
            AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration();
            cfg.useGL20 = false;
            cfg.useAccelerometer = false;
            cfg.useCompass = false;
            
            RelativeLayout layout = (RelativeLayout)findViewById(R.id.mainLayout);
            
            View gameView = initializeForView(new ZBGame(), false);
    
            AdView adView = new AdView(this);
            adView.setAdUnitId("xxxxxxxxx");
            adView.setAdSize(AdSize.SMART_BANNER);
            
            AdRequest adRequest = new AdRequest.Builder().build();
            adView.loadAd(adRequest);
            
            layout.addView(gameView);
    
            RelativeLayout.LayoutParams adParams = 
                new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, 
                        RelativeLayout.LayoutParams.WRAP_CONTENT);
            adParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
            adParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
    
            layout.addView(adView, adParams);
    
            setContentView(layout);
            
        }
    }
    
    Nu visas dock reklamen hela tiden.. Är det avancerat att få den o bara visas när man är död?
     
    Last edited: 21 mar 2014
  17. kallt_kaffe

    kallt_kaffe Professional Droid Medlem

    Blev medlem:
    2 aug 2010
    Inlägg:
    2 682
    Mottagna gillanden:
    1 685
    Operatör:
    Comviq
    Telefon:
    Xiaomi Mi Note 10

    MINA ENHETER

    Operatör:
    Comviq
    Telefon:
    Xiaomi Mi Note 10