fredag 15 augusti 2014

Min tredje app.

Min tredje app: Catch a note eller Ta en ton. Du är musik dirigenten Edvard som har tappat sina noter. Du måste samla ihop dem innan musiken tar slut.

tisdag 22 juli 2014

Lägg till reklam i din app med Game Maker Studio


  • Öppna Game Maker Studio och tryck på fliken "Demos"
  • Leta dig fram till "Ad Providers" och tryck på "Google_mobile_ad"
  • I projektet så gå till "Extension" i vänstra fältet och högerklicka med musen och välj exportera.
    • Spara den på ett bra ställe.
  • Öppna ditt eget projekt och högerklicka på "Extension" och importera filen från det bra stället.
  • I ett objekt med en "Game Start" event klistra in följande
    /// Init Ads
    GoogleMobileAds_Init("ca-app-pub-2978192583326741/6837289118");
  • I samma objekt i en "Create" event:
    GoogleMobileAds_AddBanner("ca-app-pub-2978192583326741/6837289118", GoogleMobileAds_Banner);
    // Position it at bottom right of screen
    var bw,bh,px,py;
    var bw = GoogleMobileAds_BannerGetWidth();
    var bh = GoogleMobileAds_BannerGetHeight();
    var px = display_get_width()-bw;
    var py = display_get_height()-bh;
    GoogleMobileAds_MoveBanner(px, py);
  • Observera att GoogleMobileAds_AddBanner och GoogleMobileAds_Init använder samma ID nummer. Om du villanvända fler banners så gör följande:
    GoogleMobileAds_Init("ca-app-pub-2978192583326741/6837289118","ca-app-pub-2978192583326741/6837289119",...);
    • Lägg till alla du vill ha med ett komma mellan.

"the application is incorrectly configured" säger Andoid.


  • Om du får följande meddelande när du kör ditt färdiga spel på Andoid och vill koppla dig till Google Play:
    • "the application is incorrectly configured. check that the package name and signing certificate match the client id created in developer console. also, if the application is not yet published, check that the account you are trying to sing in with is listed as a tester account. see logs for more information."
  • Så måste du ange din plattas gmail adress till testare i google developer console:


Buggar i Game Maker


  • Jag har stött på några buggar när jag försöker starta mitt första android spel:
    • Om du ska använda Game Maker och testköra spelet så måste du göra följande. Annars kraschar den på plattan direkt:
      •  Avaktivera "Google Services" i "Global game settings" -> "Android" -> "Social".
    • För att undvika att Game Maker hänger sig närdu testkör till Android så gör följande:
      • På plattan: avinstallera "yoyorunner". Varje dag.
      • På PC: starta om Game Maker Studio. Efter varje testkörning.
      • Om det hänger sig i alla fall så:
        • På PC: Innan du testkör på plattan testkör alltid en gång på windows. Sen provar du att testköra på plattan. Gör detta varje gång du testkör.
    • Om din app hänger sig så fort du testkör den på plattan så skapa ett nytt Game Maker projekt och importera alla bilder, objekt ... Och prova köra den. (OBS importera parent objekten först!!! och rummen sist.)

onsdag 16 juli 2014

Game Maker Studio kör Android första gången.


  • Man måste ladda ner och installera:
    • Java JDK
    • Android SDK
      • När du kommer till Android SDK Manager, avsluta den,
        Öppna den igen men se till att du öppnar den som administratör.
        Lägg till:
        • Google Play Service
        • API 7
        • API 8
        • API 13
        • API 15
      • Innan du ska installerar så måste du trycka på varje huvud kategori i den vänstra listan och godkänna alla licenser. Sen kan du trycka på installera. (annars är installera gråmarkerad!)
    • Android NDK
  • I Game Maker:
    • Select File>Preferences>Web Server
    • Web Server Port: This is set to 51268 to 51280 by default. There is no need to change this unless these ports are already in use
    • IP Allowed List: Enter your local IP Address here as seen in this example: 192.168.1.1/24
  • På din android:
    • Alternativ 1:
      • http://www.youtube.com/watch?v=vUSRmtexmUo
        • Drivrutinen finns också i googles SDK:
          C:\Program Files (x86)\Android\android-sdk\extras\google\usb_driver
    • Alternativ 2:
      • Innan du ansluter din android måste du ha drivrutiner. Ja windows säger att han har dem men han bara säger så för att han tror han är något.
        Ladda ner något som heter "naked adb driver": http://forum.xda-developers.com/showthread.php?t=1766220
      • Jag zipade upp den.
      • Starta din android och gå in på Inställningar > Om surfplattan > och tryck på "Version" texten sju gånger. Plattan gratulerar dig att du nu är en utvecklare.
      • Gå tillbaka ett steg och tryck "Utvecklaralternativ" och se till att rutan för "USB-felsökning" är ikryssad.
      • Anslut android till din dator med usb kabeln. Windows installerar android, klar att användas säger den men tro det inte.
      • Gå in på kontrollpanelen > Enhetshanteraren och titta under oidentifierade saker. Du ser din android där. Högerklicka på den och välj uppdatera drivrutin. Säg att du vill välja själv och leta dig fram till den upp zipade drivrutinen och tryck ok. Grattis din android fungerar nu. (Om din android inte finns med under oidentifierade utan under "Android Device" behöver du inte uppdatera drivrutinen, du hade den redan av någon anledning.)
  • Om du får problem kolla länken: http://help.yoyogames.com/entries/23363366-Preparing-GameMaker-Studio-for-Android

En bugg i Game Maker när man använder WITH obj {}


  • När jag försökte med följande kod så fungerade det inte (temp_list är en ds_list data struktur):
     str=file_text_read_string(file);
     ds_list_read(temp_list,str);
     for (i=0; i<ds_list_size(temp_list); i+=6)
     {   
       with instance_create(real(temp_list[| i]),real(temp_list[| i+1]),obj_Ball)
      {
        speed=real(temp_list[| i+2]);
        direction=real(temp_list[| i+3]);
        image_xscale=real(temp_list[| i+4]);
        image_yscale=real(temp_list[| i+4]);
        image_blend=real(temp_list[| i+5]);
      }
    }
  • När jag försökte med följande kod så fungerade det bra:
    str=file_text_read_string(file);
     ds_list_read(temp_list,str);
     for (i=0; i<ds_list_size(temp_list); i+=6)
    {
       val[0]=real(temp_list[| i+2]);
       val[1]=real(temp_list[| i+3]);
       val[2]=real(temp_list[| i+4]);
       val[3]=real(temp_list[| i+5]);      
       with instance_create(real(temp_list[| i]),real(temp_list[| i+1]),obj_Ball)
      {
        speed=val[0];
        direction=val[1];
        image_xscale=val[2];
        image_yscale=val[2];
        image_blend=val[3];
      }
  • Slutsats:
    Det verkar som om Game Maker inte klarar av att "skicka med" data strukturer (ds_list ex) till dem andra objekten när man använder "with". Men den går bra med vanliga variabler och arrays.
    • Finns en work around: i with {} så använd other.temp_list[| i+2]. other blir den aktuella instansen man är i när man använder with.

tisdag 8 juli 2014

Kod snippets.


Tänk annorlunda.


Spine i game maker studio.


  • after exporting from Spine in notepad or any other text editor and remove the "size: <some numbers here>" line. It's the second line in the file.
  • Öppna atlas filen och ändra om game maker ger dig ett felmeddelande när du öppnar din spine animation. 
  • Det verkar som om spine 1.7 fungerar men inte 1.8 och framåt.
  • Om man vill ändra animationer i spine så måste man ha game maker studio pro.

måndag 7 juli 2014

Det här går ju bra.


  • Har kört igenom dem tre första tutorial som finns med i game maker studio. Allt fungerar. Inga konstiga buggar. Inga ouppdaterade tutorials. Visst går spelen långsammare men dem fungerar. Ska fortsätta igenom alla tutorials innan jag börjar försöka mig på egna projekt.

En funktion som jag vill spara. (eget talsystem loop)


  • Tänk att du behöver ett värde mellan 1 och 15. Men du har ett x värde som hela tiden ökar med 1. Hur ska du få talserien 1 - 15 med vilket x värde som helst. x börjar med 0.
  • (x mod max)+min
    • (0 mod 15)+1 = 1
      (1 mod 15)+1 = 2
      (2 mod 15)+1 = 3
      (3 mod 15)+1 = 4
      (4 mod 15)+1 = 5
      (5 mod 15)+1 = 6
      (6 mod 15)+1 = 7
      (7 mod 15)+1 = 8
      (8 mod 15)+1 = 9
      (9 mod 15)+1 = 10
      (10 mod 15)+1 = 11
      (11 mod 15)+1 = 12
      (12 mod 15)+1 = 13
      (13 mod 15)+1 = 14
      (14 mod 15)+1 = 15
      • Nu börjar din talserie om igen men x bara ökar.
        (15 mod 15)+1 = 1
        (16 mod 15)+1 = 2
        (17 mod 15)+1 = 3

lördag 5 juli 2014

Måste kolla lite alternativ.


  • Nu börjar jag bli trött på gamla tutorials som inte fungerar och buggar i cocos2dx-3
  • Ska undersöka GameMaker några dagar. Kanske är bättre.
    • Ok. Nr 1#. Använd INTE gamemaker studio i windows 8 eller 8.1. Buggar och åter buggar.
  • Provar just nu i Windows 7.
    • Fungerar bra. Men jag skulle vilja köra det på windows 8. Provade en annan dator med windows 8 och det fungerade bra. Det verkar som om game maker är lite känslig för vilket grafikkort man har.

torsdag 3 juli 2014

Spara användardata.


  • int best = UserDefault::getInstance()->getIntegerForKey("Best_Score");
    UserDefault::getInstance()->setIntegerForKey("Best_Score",best);
    char buffer[10];
    sprintf(buffer, "%04i", best);
    bestScore->setString("Best: " + std::string(buffer));
    UserDefault::getInstance()->flush();

Accelerator.

.h

  • void OnAcceleration(cocos2d::Acceleration *acc,cocos2d::Event *event);
.cpp
  • Device::setAccelerometerEnabled(true);
    auto listener2 = EventListenerAcceleration::create(CC_CALLBACK_2(HelloWorld::onAcceleration,this));
    _eventDispatcher->addEventListenerWithSceneGraphPriority(listener2,this);

    void HelloWorld::onAcceleration(cocos2d::Acceleration *acc,cocos2d::Event *event)
    {
    CCLOG("%f",acc->z);
    }

Sprite animation.


  • Gör din sprite och action men när du ska köra den skriv:
    mySprite->runAction(EaseElasticInOut::create(action,0.5));
    • Det finns många fler att välja på.

onsdag 2 juli 2014

Lägg till en ny Scen.


  • Kopiera HelloWorld.h och .cpp och namnge den nya scenen.
  • I F:\Cocos2dx\EgnaProgram\Cocos\MyCppGame\proj.android\jni\Android.mk lägg till
    • ../../Classes/NewScene.cpp

      vid:

      LOCAL_SRC_FILES := hellocpp/main.cpp \
      ../../Classes/AppDelegate.cpp \
      ../../Classes/HelloWorldScene.cpp \
      ../../Classes/NewScene.cpp
      • Glöm inte \ efter ../../Classes/HelloWorldScene.cpp den måste du lägga till.
  • Detta är bara till för att fixa Android. Dem andra systemen fixar detta själv.
  • För att byta till den nya scenen måste man i en knapp säga:
    auto scene=NewScene::createScene();
    Director::getInstance()->pushScene(scene);
    • #include "NewScene.h" måste includeras längst upp i .cpp filen.
  • För att få bort den nya scenen och gå tillbaka görs detta i den nya scenen i en knapp:
    • Director::getInstance()->popScene();
  • För att byta scenen till en annan och ersätta den aktuella gör detta:
    • auto scene=HelloWorld::createScene();
      Director::getInstance()->replaceScene(scene);
  • För att göra en snygg övergång gör följande:
    • Director::getInstance()->replaceScene(TransitionFlipX::create(2,scene));

Meny align.

instället för:
menu->setPosition(Point(origin.x,origin.y));
menu_item_1->setPosition(Point(visibleSize.width/2,(visibleSize.height/5)*4));
menu_item_2->setPosition(Point(visibleSize.width/2,(visibleSize.height/5)*3));
menu_item_3->setPosition(Point(visibleSize.width/2,(visibleSize.height/5)*2));
menu_item_4->setPosition(Point(visibleSize.width/2,(visibleSize.height/5)*1));

sätt:
menu->alignItemsVertically();

Bild meny.

auto menu_item_4 = MenuItemImage::create("CloseNormal.png","CloseSelected.png",CC_CALLBACK_1(HelloWorld::ImageButton,this));

Text Meny.

.h:

    void Play(Ref *pSender);
    void Highscore(Ref *pSender);
    void Settings(Ref *pSender);

.cpp

    // Menu
    auto menu_item_1 = MenuItemFont::create("Play",CC_CALLBACK_1(HelloWorld::Play,this));
    auto menu_item_2 = MenuItemFont::create("Highscore",CC_CALLBACK_1(HelloWorld::Highscore,this));
    auto menu_item_3 = MenuItemFont::create("Settings",CC_CALLBACK_1(HelloWorld::Settings,this));

    menu_item_1->setPosition(Point(visibleSize.width/2,(visibleSize.height/4)*3));
    menu_item_2->setPosition(Point(visibleSize.width/2,(visibleSize.height/4)*2));
    menu_item_3->setPosition(Point(visibleSize.width/2,(visibleSize.height/4)*1));

    auto *menu = Menu::create(menu_item_1,menu_item_2,menu_item_3,NULL);
    menu->setPosition(Point(origin.x,origin.y));
    this->addChild(menu);

void HelloWorld::Play(Ref *pSender)
{
CCLOG("Play");
}

void HelloWorld::Highscore(Ref *pSender)
{
CCLOG("Highscore");
}

void HelloWorld::Settings(Ref *pSender)
{
CCLOG("Settings");
}

Multi tryck på skärmen.


  • I .h filen:
    void onTouchesBegan(const std::vector<cocos2d::Touch *> &touches,cocos2d::Event * event);
    void onTouchesMoved(const std::vector<cocos2d::Touch *> &touches,cocos2d::Event * event);
    void onTouchesEnded(const std::vector<cocos2d::Touch *> &touches,cocos2d::Event * event);

  • I cpp filen:
    auto listener = EventListenerTouchAllAtOnce::create();
    listener->onTouchesBegan=CC_CALLBACK_2(HelloWorld::onTouchesBegan,this);
    listener->onTouchesMoved=CC_CALLBACK_2(HelloWorld::onTouchesMoved,this);
    listener->onTouchesEnded=CC_CALLBACK_2(HelloWorld::onTouchesEnded,this);
    _eventDispatcher->addEventListenerWithSceneGraphPriority(listener,this);

    void HelloWorld::onTouchesBegan(const std::vector<cocos2d::Touch *> &touches,cocos2d::Event * event)
    {
    CCLOG("MultiTouchesBegan x = %f, y = %f",touch->getLocation().x,touch->getLocation().y);
    }

    void HelloWorld::onTouchesMoved(const std::vector<cocos2d::Touch *> &touches,cocos2d::Event * event)
    {
    CCLOG("MultiTouchesMoved");
    }

    void HelloWorld::onTouchesEnded(const std::vector<cocos2d::Touch *> &touches,cocos2d::Event * event)
    {
    CCLOG("MultiTouchesEnded");
    }

Enkel tryck på skärmen. (Koordinater skickas till Eclipse)


  • bool onTouchBegan(cocos2d::Touch *touch,cocos2d::Event * event);
    void onTouchMoved(cocos2d::Touch *touch,cocos2d::Event * event);
    void onTouchEnded(cocos2d::Touch *touch,cocos2d::Event * event);
    • läggs i .h filen
  • Det här koden under skapar en "lyssnare". Han lyssnar efter tryckningar eller rörelser. I cpp filen skrivs alltså:
    auto listener = EventListenerTouchOneByOne::create();
    listener->setSwallowTouches(true);
    listener->onTouchBegan=CC_CALLBACK_2(HelloWorld::onTouchBegan,this);
    listener->onTouchMoved=CC_CALLBACK_2(HelloWorld::onTouchMoved,this);
    listener->onTouchEnded=CC_CALLBACK_2(HelloWorld::onTouchEnded,this);
    _eventDispatcher->addEventListenerWithSceneGraphPriority(listener,this);
  • Skapa en funktion med koden:
    bool HelloWorld::onTouchBegan(cocos2d::Touch *touch,cocos2d::Event *event)
    {
    // Raden under sänder tillbaka koordinaterna till Eclipse
    CCLOG("onTouchBegan x = %f, y = %f",touch->getLocation().x,touch->getLocation().y);
    return true;
    }

    void HelloWorld::onTouchMoved(cocos2d::Touch *touch,cocos2d::Event *event)
    {
    CCLOG("onTouchMoved x = %f, y = %f",touch->getLocation().x,touch->getLocation().y);
    }

    void HelloWorld::onTouchEnded(cocos2d::Touch *touch,cocos2d::Event *event)
    {
    CCLOG("onTouchEnded x = %f, y = %f",touch->getLocation().x,touch->getLocation().y);
    }
  • Starta appen och tryck någon stanns på skärmen så dyker koordinaterna upp i "LogCat" fönstret.
    • om inte lägg till:
      • #define COCOS2D_DEBUG 1
    • i .h filen längst upp.

Ljud.


  • // Ljudmotor
  • #include "SimpleAudioEngine.h"
  • // Ladda ljudet till minnet
  • CocosDenshion::SimpleAudioEngine::getInstance()->preloadEffect("audio/Collide.wav");
    • Notera / inte \
  • CocosDenshion::SimpleAudioEngine::getInstance()->playEffect("audio/Collide.wav");
    • Obs: plattan kanske inte hinner ladda in ljudet innan den försöker spela upp den. Måste hitta en lösning på det.
  • CocosDenshion::SimpleAudioEngine::getInstance()->setEffectsVolume(0.5);
    • 50% volym.
  • Alla funktioner måste deklareras i .h filen.
  • this->schedule(schedule_selector(HelloWorld::PlayEffect),5.0f);
    • Skapar ett schema som körs var 5e sekund.
  • BackgroundMusic:
  • CocosDenshion::SimpleAudioEngine::getInstance()->setBackgroundMusicVolume(0.5);
  • CocosDenshion::SimpleAudioEngine::getInstance()->preloadBackgroundMusic("audio/MainMusic.mp3");
  • CocosDenshion::SimpleAudioEngine::getInstance()->playBackgroundMusic("audio/MainMusic.mp3",true);
  • CocosDenshion::SimpleAudioEngine::getInstance()->pauseBackgroundMusic();
  • CocosDenshion::SimpleAudioEngine::getInstance()->resumeBackgroundMusic();

tisdag 1 juli 2014

Basic Cocos2dx-3


  • mySprite = Sprite::create("CloseNormal.png");
    • Skapar en sprite/bild
  • Size visibleSize = Director::getInstance()->getVisibleSize();
    Point origin = Director::getInstance()->getVisibleOrigin();
    mySprite->setPosition(Point((visibleSize.width / 2) + origin.x, (visibleSize.height / 2) + origin.y));
    • Flyttar bilden till mitten av skärmen
  • this->addChild(mySprite);
    • Lägger till bilden till scenen
  • auto action = MoveBy::create(3,Point((visibleSize.width/2),10));
    • Skapar en action som sedan kan användas för att flytta bilden från den nuvarande positionen till x antal pixlar åt något håll på 3 sekunder.
  • auto action = MoveTo::create(3,Point(100,300));
    • Action som flyttar bilden från nuvarande position till en exakt koordinat.
  • auto action = JumpBy::create(3,Point(100,0),50,3);
    • Action som hoppar bilden från aktuell position med x pixlar åt något håll. 50 är höjden och 3 är antal hopp.
  • auto action = JumpTo::create(3,Point(origin.x,origin.y),50,6);
    • Action som hoppar bilden från aktuell position till en ny position. I detta fall origin på skärmen.
  • Origin är längst ner till vänster på skärmen. Inte som en pc där den är längst upp till vänster.
  • ccBezierConfig bezier;
    bezier.controlPoint_1=Point(0,visibleSize.height/2);
    bezier.controlPoint_2=Point(300,-visibleSize.height/2);
    bezier.endPosition=Point(200,100); // flyttar sig x och y från nuvarande position
    auto action=BezierBy::create(3,bezier);
    • Action som flyttar bilden från en position med x pixlar åt något annat håll. Dock med en kurva som gör att den slingrar sig fram istället för går rakt bara.
  • ccBezierConfig bezier;
    bezier.controlPoint_1=Point(0,visibleSize.height/2);
    bezier.controlPoint_2=Point(300,-visibleSize.height/2);
    bezier.endPosition=Point(0,100); //flyttar sig sig till position x,y
    auto action=BezierTo::create(3,bezier);
    • Action som flyttar bilden från en position med x pixlar åt något annat håll. Dock med en kurva som gör att den slingrar sig fram istället för går rakt bara.
  • auto action=Place::create(Point(100,200));
    • Action som placerar bilden direkt på en position. Ingen animering.
  • auto action=ScaleBy::create(3,3,0.3);
    • Action som ändrar skalan på bilden under en viss tid. Under tre sekunder ökar x med 3ggr (300% större) och y minskar till 0.3 (60% försvinner alltså.)
  • ScaleTo
  • RotateBy
  • RotateTo
  • TintBy
    • Ändrar färgen på bilden. ex -255 tar bort all färg under en viss tid som du anger.
  • TintTo
  • FadeTo
    • Ändrar alpha värdet på bilden.
  • mySprite->setOpacity(0);
    • Ändrar bildens alpha direkt.
  • FadeIn
    • Från nuvarande alpha till full alpha (255).
  • FadeOut
    • Från nuvarnade alpha till 0 alpha.
  • Repeat
    • Repetera en Action x ggr.
  • RepeatForever
    • Repetera för alltid. Bra när man gör bakgrunds animationer som ska hålla på för evigt.
  • Secuence
    • En sekvens 'r en Action av flera Actions efter varandra.
      Avsluta alltid med en NULL så att sekvensen vet vart den sista action är.
  • SkewBy
    • Vrider bildens UV så man kan se baksidan på den.

måndag 30 juni 2014

Hittade en ny serie med tutorials för version 3.


Visual basic 2012 auto kopiera bilder och resurser.


  • När man kör både eclipse och vs2012 så måste man hela tiden se till att alla genvägar är rätt. Gör detta varje gång du lägger till bilder eller annat i ex resource mappen i ditt spel.
    • Dem har gjort det enkelt att göra så:
      • Eclipse
        • Dubbelklicka på "build_native.py" i project explorer
      • vs2012
        • Öppna progammet i "Win32" mappen i din spel mapp
        • Högerklicka på MyCppGame > Properties > Build Events > Post-Build Event
          • Efter "Command Line" skriv
            • xcopy /Y /E ..\Resources\*.* $(OutDir)
              • OBS: det är två punkter framför ..\Resources. Om du bara har en får du ett felmeddelande.
          • Nu kommer vs2012 att automatisk att kopiera alla dina resources till rätt mapp varje gång du kör spelet. (Detta behöver bara göras en gång sen sköter den sig.)

Basic


  • Vectors är som arrays men kan ändas dynamiskt i storlek.
  • Vec2 är en punkt (x,y). Påminner om apipoint. Men det verkar som dem rekomenderar att använda ccp istället för vec2. Så skriv ccp när du vill skicka en vec2 till en function. Hmm det verkar som om Point() är bättre så skriv det.
  • Jag provade och öppna MyCppGame i visual basic 2012 och där ser jag att man använder samma filer som när jag håller på i Eclipse. Så skriv en gång kör överallt gäller.
  • Se vilket värde en variabel har när du för musen över den i eclipse:
  • I Eclipse finns det 2 knappar till höger som heter "Resource" och "Debug".
    • Debug ska kunna användas för att se variabler och stoppa programmet när du testar programmet.
      • Fungerar inte. Men när jag kör vs2012 så fungerar det. Får nog köra den när jag ska kolla efter fel.
  • player->getContentSize().width ger sprite player png bild width. När man sätter positionen på den tar man hälften av den för att sätta den just vid kanten till vänster.
    • Så -> är som jag är van vid i vb5 som class.function. Så istället för punkt så en ->
  • Läser på lite om classer: http://www.cplusplus.com/doc/tutorial/classes/
  • Lärde mig att "using namespace" används som with ... end with i vb.

Vad är Director:: i cocos2dx


  • http://www.cocos2d-x.org/wiki/Director
    • Verkar vara en funktion som håller reda på scener. Låter bra. Det ser ut som om man lägger saker på ett lager och sen kan man visa det lagret genom att ge den till director. Börjar förstå hur själva bilden visas på mobilen.

söndag 29 juni 2014

Ny tutorial.



Vad är "auto" som står framför variablarna?


  • http://cocoadev.com/AutoRelease
    • Jag är van vid set Object = Nothing för att rensa ett object. Men här sköter man det genom att säga åt en variabel att när den inte används mer så "clearar" den sig automatisk.

CocoStudio finns bara på kinesiska.

Youtube räddar dagen.


Tutorial som misslyckades.


Början.

Den här bloggen kommer handla om när jag ska försöka lära mig göra spel till en Android (version 4.4.4) Nexus 7 med hjälp av spelmotorn cocos2d-x och använda språket c++ med hjälp av en laptop med windows 8. Detta är en logg över det jag gör och hittar. Jag kallar den en bLogg.

  • EDIT: Senare i denna blogg går jag över till att använda Game Maker Studio istället för Eclipse och cocos2d-x. Cocos2d-x hade för dålig dokumentation och tutorials som inte fungerade. Och Game Maker Studio har ett eget IDE så därför använder jag inte Eclipse.


Tillbehören:
  • Ladda ner Cocos2d-x (-x visar att jag kommer använda c++)
    • Cocos2d-x är bara ett bibliotek med en massa kod, text och annat som behövs för att skapa dina första program. En spelmotor. Istället för att skriva en massa vanlig kod själv för att exempel när läsplattan känner av dina fingertryck så är allt det redan skrivet och färdig att användas. Jag hade hoppats på att det var ett program med en fin meny som det stod klicka här för att skapa nytt projekt men så lätt är det inte.
    • http://www.cocos2d-x.org/download
      • Ladda ner Cocos2d-x (när jag var där fanns 3.2 alpha)
    • Nu måste du packa upp filen till en bra mapp på datorn. Jo det måste vara en bra mapp helt utan mellanslag. Ex "C:\Mina Egna Spel\Cocos2dx" duger inte men "C:\MinaEgnaSpel\Cocos2dx" går bra. Jag personligen använder en extern hårddisk så att jag slipper göra om det här om datorn kraschar. Jag använder "F:\Cocos2dx\cocos2d-x"
    • När allt väl är uppackat är det dags för resten. Jag använde http://cocos2d-x.org/wiki/How_to_run_cpp-tests_on_Android som hjälp men den berättar tyvärr inte allt men värt att försöka följa den.
  • Ladda ner JDK, ADT, SDK, NDK, Python och ANT
    • Gå hit: http://www.oracle.com/technetwork/java/javase/downloads/index.html
      • Ladda ner Java JDK och installera den.
    • Gå hit: http://developer.android.com/sdk/index.html
      • Ladda ner Eclipse with Android SDK for Windows
        • Det här är din IDE. Den som du använder för att köra och skriva din kod i. Den packas bara upp. Jag la den i "F:\Cocos2dx\cocos2d-x\adt"
    • Gå hit: https://developer.android.com/tools/sdk/ndk/index.html
      • Ladda ner "android-ndk-r9d-windows-x86.zip" eller 64 om du nu har ett 64 bitars operativsystem.
        • Det här är en packad fil med en massa kod. Jag packade upp den i "F:\Cocos2dx\cocos2d-x\ndk". Se till att du inte har en "F:\Cocos2dx\cocos2d-x\ndk\android-ndk-r9d-windows-x86". Gå in på android-ndk-r9d-windows-x86 mappen och flytta allt till "F:\Cocos2dx\cocos2d-x\ndk".
    • Gå till: https://www.python.org/download/releases/2.7.7/
      • Ladda ner Python 2.7.7 eller någon annan 2.7.x
        • Installera den på "C:\Python27". Den brukar föreslå den mappen använd den.
    • Gå till: http://ant.apache.org/bindownload.cgi
      • Ladda ner Apache Ant Binary (när jag var där fanns "apache-ant-1.9.4-bin.zip" men ta den senaste om det finns en ny)
        • Ännu en packad fil med en massa kod. Jag la den i "F:\Cocos2dx\cocos2d-x\Ant". Öppna mappen och se till att inte en "apache-ant-1.9.4-bin" mapp bara ligger där. I så fall gå in i den mappen och flytta allt tillbaka en mapp till "F:\Cocos2dx\cocos2d-x\Ant". Windows gillar att lägga till mappar när den packar upp zip filer.
  • Ställ in allt.
    • Nej det är inte bara att tuta och köra. Vi måste ställa in alla sökvägar så alla program hittar varandra. Gå till kontrollpanelen > system > avancerade inställningar > miljövariabler)
      • I listan som finns där hittar du något som heter "PATH". Du måste lägga till en sökväg till Python i den så här:
        • Path=C:\En genväg;C:\En annan genväg;c:\python27
          • Det finns kanske många genvägar här men lägg till ett ; och skriv den nya genvägen till python som är "c:\python27"
    • Gör en bat fil i "F:\Cocos2dx" som heter Setup.bat (Öppna anteckningar och spara den som "F:\Cocos2dx\setup.bat")
      • Det här ska finnas i filen på dem tre första raderna:
        • @echo off
        • F:\Cocos2dx\cocos2d-x\setup.py -n F:\Cocos2dx\cocos2d-x\ndk -a F:\Cocos2dx\cocos2d-x\adt\sdk -t F:\Cocos2dx\cocos2d-x\Ant\bin
        • pause
      • Du måste ändra genvägarna så att dem stämmer. Kom ihåg inga mellanslag får finnas i mapparna. Var noga med stora och små bokstäver också.
      • Spara den och dubbelklicka på setup.bat. Om du ser något "Not found" så är genvägen fel eller så ligger ex "F:\Cocos2dx\cocos2d-x\Ant\bin" i "F:\Cocos2dx\cocos2d-x\Ant\apache-ant-1.9.4-bin\bin". Flytta alla filer och mappar från "F:\Cocos2dx\cocos2d-x\Ant\apache-ant-1.9.4-bin\" till "F:\Cocos2dx\cocos2d-x\Ant".
    • Gör en till bat fil i "F:\Cocos2dx" som heter "New Project.bat"
      • Det här ska stå i den:
        • @echo off
        • F:\Cocos2dx\cocos2d-x\tools\cocos2d-console\bin\cocos.py new -l cpp
        • pause
      • Du måste ändra genvägarna så att dem stämmer.
      • Spara den och dubbelklicka på New Project.bat
        • Det här kommer att skapa ett hello world projekt i mappen "F:\Cocos2dx\cocos2d-x\tools\cocos2d-console\bin\MyCppGame"
          • Jag flyttade på den mappen till "F:\Cocos2dx\EgnaProgram\Cocos\MyCppGame"
    • Gå in på "F:\Cocos2dx\cocos2d-x\adt" och kör "SDK Manager". Här kan du ladda ner den typ av android system du vill bygga. Jag vill ha det senaste stabila 4.4.2. Kryssa i rutan och tryck på "Install 16 eller några package". Vänta ca 25 minuter tills allt är färdigt.
    • Gå in på "F:\Cocos2dx\cocos2d-x\adt\eclipse" håll musen över "eclipse" håll i höger musknapp och dra den lite neråt och släpp. Välj skapa genväg. Markera genvägen och tryck Ctrl och X för att klicka ut den. Gå till "F:\Cocos2dx" och högerklicka på ett vitt område och tryck "Klistra in".
    • Dubbelklicka nu på "eclipse" så att den startar. Den frågar vart du vill spara "Workspace". Jag tog "F:\Cocos2dx\EgnaProgram\Cocos\Eclipse". Kryssa för rutan att använda den här mappen som default. När allt startat gå in på Windows > Preferences > Android > NDK och skriv "F:\Cocos2dx\cocos2d-x\ndk" eller vart du nu sparade NDKn. Tryck på "Apply".
  • Grattis. Du är nu nästan klar. För att lägga in dit första projekt här måste du högerklicka på rutan "Project Explorer" och sen på importera. Tryck browse och leta dig fram till "F:\Cocos2dx\EgnaProgram\Cocos\MyCppGame\proj.android" och tryck ok. Du kommer troligen få en massa varningar men strunta i dem just nu.
  • För att cocos2dx ska fungera måste du ha det bilioteket här också. Som förut högerklicka på "Project Explorer" och välj importera. Browse och leta dig fram till "F:\Cocos2dx\EgnaProgram\Cocos\MyCppGame\cocos2d\cocos\platform\android\java". Tryck ok. Den börjar fixa och dona nu. Om du får ett fel så är det troligen ett mellanslag i genvägarna eller så är inte miljövariabeln PATH rätt inställd till "c:\python27". Se till att den är rätt och inga mellanslag i dina mappar.
  • Nu borde det finnas 2 projekt där ett "MyCppGame" och "libcocos2dx". Oroa dig inte för ! som finns i båda dem är till för att vi ska bli oroliga bara.
  • Starta första testet :-)
    • Alternativ 1:
      • http://www.youtube.com/watch?v=vUSRmtexmUo
        • Drivrutinen finns också i googles SDK:
          • C:\Program Files (x86)\Android\android-sdk\extras\google\usb_driver
    • Alternativ 2:
      • Innan du ansluter din nexus måste du ha drivrutiner. Ja vindows säger att han har dem men han bara säger så för att han tror han är något.
        Ladda ner något som heter "naked adb driver": http://forum.xda-developers.com/showthread.php?t=1766220
      • Jag zipade upp den och la den i "F:\Cocos2dx\Android\Nexus Driver" låt den bara ligga där.
    • Starta din nexus och gå in på Inställningar > Om surfplattan > och tryck på "Version" texten sju gånger. Plattan gratulerar dig att du nu är en utvecklare.
    • Gå tillbaka ett steg och tryck "Utvecklaralternativ" och se till att rutan för "USB-felsökning" är ikryssad.
    • Anslut nexus till din dator med usb kabeln. Windows installerar nexus, klar att användas säger den men tro det inte.
    • Gå in på kontrollpanelen > Enhetshanteraren och titta under oidentifierade saker. Du ser din nexus där. Högerklicka på den och välj uppdatera drivrutin. Säg att du vill välja själv och leta dig fram till "F:\Cocos2dx\Android\Nexus Driver" eller "C:\Program Files (x86)\Android\android-sdk\extras\google\usb_driver".
    •  och tryck ok. Grattis din nexus fungerar nu. (Om din nexus inte finns med under oidentifierade utan under "Android Device" behöver du inte uppdatera drivrutinen, du hade den redan av någon anledning.)
    • Gå in på eclipse, se också till att du har ljuset på din platta, och högerklicka på "MyCppGame" och välj "Run as" > "Android Application"
    • Ett enkelt program startar på din platta. Du är nu officiellt igång. Grattis.