2 Oyunum Daha Şimdi Google Play’de: Mini Football ve Whack ’em AR

Yayınlandı: 04 Şubat 2016 yasirkula tarafından Diğer, Oyun Tasarımı, UNITY 3D içinde
Etiketler:, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,

Tekrar merhabalar,

Birkaç gün önce 2 yeni oyunumu daha Google Play‘e koydum ve bu oyunları sizlerle paylaşmak istedim. Eğer oyunlar ilginizi çekerse onlara birer şans vererek destek olmanız çok makbule geçer 🙂

İlk oyunum Mini Football. Bir önceki Unity NavMesh dersimde yapımını anlattığım basit futbol oyununun biraz daha geliştirilmiş ve Android’e uyarlanmış hali. Oyundaki amacımız topu rakipten önce 60 saniye boyunca ayağımızda tutmak ve bu esnada sahadaki engellere karşı da dikkatli olmak. Bu oyunda ilk defa Unity Ads kullandım, nasıl sonuç vereceğini bekleyip göreceğiz.

Link: https://play.google.com/store/apps/details?id=com.yasirkula.MiniFootball

Mini Football 1

İkinci oyunum ise Whack ’em Augmented Reality. İsminden anlaşılacağı üzere artırılmış gerçeklik (augmented reality) üzerine yaptığım bir çalışma. Oyunu Qualcomm Vuforia‘nın Unity pluginini kullanarak geliştirdim ve bu AR teknolojisinden fazlasıyla da memnun kaldım; bence bu alanda büyük bir potansiyel var. Oyundaki amacımız, karşımıza gelen kuru kafalara nişan alıp ateş ederek elimizden geldiğince onları geri püskürtmek.

Link: https://play.google.com/store/apps/details?id=com.yasirkula.whackem

Whack 'em

yorum
  1. yakup dedi ki:

    Hocam 2. oyunda potansiyel var var olmasına ama indirip oynadım çok fazla enerji tüketiyor ve telefonun ısınmasına sebep oluyor.Performans sorunları dışında gayet başarılı.

  2. İbrahim Yılmaz dedi ki:

    http://i.hizliresim.com/YroaE6.png

    Abi ilgilenirsen sevinirim sorunu çözemedim bir türlü;
    abi Vuforia olayını yapmaya çalıştım da bi türlü beceremedim. Kamera açılmıyor arka plan siyah kalıyor,2 sorun var. Console ekranın da yazan var bir de Inspector kısmında “Web Cam behaviour” altında kırmızı ve sarı ünlem var. olmayan ingilizcemle araştırdım ama çözemedim.

    Console da ki hata;

    Failed to load ‘Assets/Plugins/QCARWrapper.dll’, expected 64 bit architecture (IMAGE_FILE_MACHINE_AMD64), but was IMAGE_FILE_MACHINE_I386. You must recompile your plugin for 64 bit architecture.
    Vuforia.WebCamAbstractBehaviour:CheckNativePluginSupport()
    Vuforia.WebCamAbstractBehaviour:CheckNativePluginSupport()
    Vuforia.EditorClasses.WebCamEditor:OnInspectorGUI()
    UnityEditor.DockArea:OnGUI()

    • yasirkula dedi ki:

      Bilgisayarın webcam’i ile ben de aynı hatayı alıyorum, o yüzden bilgisayarda test edemiyorum. Ancak telefonda sıkıntısız çalışıyor.

  3. cenker dedi ki:

    şunu farkettim partikül efektlerimi nasıl pool ediceğimi bilmiyorum androidte partikül efektleri şak diye çıkartmak ve destroy etmek acayip yoruyor fakat benimde bir tane efektim yok 3 4 taneçeşit ama hepsinde aynı componenetler var bir ses birde partikül sistem(şuriken)

    boş objeleri pool etsem sonradan add component yapsam çok kasar diye düşündüm ben başka bir yerde 2dpoligon collideri sonradan ekliyordum oyuna cpu çok kullanıyordu belki model olduğu için kasıyordur belkide tüm componentleri sonradan eklemek yoruyordur

    bu farklı efektleri nasıl androidte kullanıcam çözemedim aynı poolda durduramıyorum hepsi için ayrı ayrı script oluşturmakta çok saçma geliyor

    • cenker dedi ki:

      hazır yazmışken başka soruda sormak istedim siz android te plugin vasıtası ile mi google play high score yaptınız

      • cenker dedi ki:

        spam yaptım özürdilerim sorumun cevabını buldum sanırım partikül efekti şöyle bi karıştırdım ki simulation space world yapınca partikül efektin yeri değiştiği halde eski partiküller yer değiştirmiyor sorunum aslında tam olarak buydu pool felan istemiyordum sadece sanki birden fazla partikül varmış hissivermekti şimdi ise sadece partiküllün yerini değiştiricem ama ikinci sorumu yanıtlarsanız sevinirim xml ile kendiniz mi yazdınız yoksa asset storeden in app purschase gibi şeyler mi satın aldınız

    • yasirkula dedi ki:

      EDIT: Pool sorununuzu zaten çözmüşsünüz ama bu cevap yine de burada kalsın.

      GGJ16’da basit bir generic pool script yazmıştım. O belki işinize yarar: https://github.com/yasirkula/UnityGenericPool/blob/master/PoolScript.cs

      Örneğin şu şekil bir kullanım yapabilirsiniz:

      public ParticleSystem partikulPrefab1, partikulPrefab2;
      PoolScript<ParticleSystem> particles1, particles2;
      
      void Awake()
      {
      	// 2 partikül efekti için 2 ayrı pool oluştur
      	particles1 = new PoolScript<ParticleSystem>();
      	particles2 = new PoolScript<ParticleSystem>();
      	
      	// Pool'ların her birini 2'şer adet partikül ile donat
      	particles1.Populate( partikulPrefab1, 2 );
      	particles2.Populate( partikulPrefab2, 2 );
      }
      
      public Transform Partikul1Al()
      {
      	return particles1.Pop().transform;
      }
      
      public Transform Partikul2Al()
      {
      	return particles2.Pop().transform;
      }
      
      public void Partikul1GeriKoy( Transform partikul )
      {
      	particles1.Push( partikul.GetComponent<ParticleSystem>() );
      }
      
      public void Partikul2GeriKoy( Transform partikul )
      {
      	particles2.Push( partikul.GetComponent<ParticleSystem>() );
      }
      
  4. Taha koksal dedi ki:

    Yasir hocam unity ads reklamları nasıl konulacağı hakkında bizi bilgilendirirseniz sevinirim.

    • yasirkula dedi ki:

      Açıkçası Unity 5’in son sürümleri ile çok kolaylaştırmışlar: önce Window-Services’taki Ads’i aktifleştirip orada istenen birkaç basit bilgiyi dolduruyoruz. Ardından şu kod ile reklam gösterebiliyoruz:

      if( Advertisement.IsReady() )
      Advertisement.Show();
      
      • kaco1322 dedi ki:

        Hocam çok saolun reklamı ekledim (videolu) olan ama kazançlar neye göre hesaplanıyor tıklamayamı ,izlemeyemi anlamadım?

      • yasirkula dedi ki:

        Şu an için ben de bilmiyorum. Unity Ads’ten para kazanmaya başlarsam öğreneceğim hayırlısıyla 🙂

  5. vedat dedi ki:

    Selam hocam https://app.box.com/s/9354cf7fdbda92f573b6 bu dosyaları indiremiyorum yeni bir link verebilirmisin. app.box problem çıkarıyor indirmelerde şimdiden sağol

  6. Hasan Aktaş dedi ki:

    Yasir Hocam Google Play’de Uygulama İçi Satımla İlgili bir Ders Yapma Şansınız Var mı? Hiç Türkçe Kaynak Yok Çünkü. Misal Uygulamızda Reklam Var. Reklamları Satın Almayla Kapatmasını Nasıl Sağlayabiliriz?

  7. cenker dedi ki:

    kendim kodladım anlamadıysanız yine yazarım

    direkt olarak posisyona transform.position ile ulaşmak ile gamObject.transform.position farkı nedir

    if (Vector3.Distance (transform.position, currentStep.position) > 0.1f) {
    transform.position = Vector3.MoveTowards (transform.position, currentStep.position, speed);

    iki nokta arasında gidip gelmesi için basit bir kod yazdım ama NullReferenceException: Object reference not set to an instance of an object veriyor

    currentstep(yani gidilicek nokta) step1(ilk yani doğulan pozisyon) veya step2(gidilicek pozisyon) olabiliyor

    başka bir fonksiyon yaptım change diye gidilicek noktaya varılınca step2 den step1e atıyor currentstepi

    skype’den anlatabilirim

    https://www.dropbox.com/sh/jztuhgtv1zw22zl/AAB0AgwJezGmb6yov1OBeL4La?dl=0

    • cenker dedi ki:

      sonsuz koşu yaptım bölümler ve pointlerden oluşuyor bölümleri rasgele birinini aktif edip kapatıyorum sonra ilerletiyorum tekrar herhangi birini açıp kapıyorum bölümler sadece pointleri yani transformları tutuyor o pointlerde enabled olunca bir kereliğine çalışıp ne pointi ise onu create ediyor sonsuz koşu mantığını duymuştum kendi sistemimi yaptım

  8. cenker dedi ki:

    birdler kıpırdıyorlar 2 nokta arasında step1 step2 hangisine gideceğini ise başka bir nokta yaptım(transform) currentstep diye currentstepi step1 veya step2 yapıyorum change fonksiyonu ile
    birdde ona göre hareket etmesi gerek ama transform gameobject olayını tam kavrayamadım hata veriyor

    • cenker dedi ki:

      getnumbers ile transformları alıyor birdpoint bird’e aktarıyor transformların yerlerini zaten step1 birdpointin componentinin eklendiği gameobjectin transformu step2 ise aynı gameobjectin boş bir childi

      • cenker dedi ki:

        çıldırdım tek istediğim konumlarını almaktı bende gittim transformları almak yerine vector3 aldım şuanda yapmak istediğim şey oluyor . transform unity3d temporary cache alakalı birşeydi hatırladığım kadarıyla geçeci tutuyor benim kodtada transform yollanıyor parametre olarak ama bir daha çalışmadan o parametrenin gönderilmesi mümkün değil . kafam yandı olayı çözdüm ama nasıl yaptığımı bende bilmiyorum konumları istiyordum transform yerine vector3leri referans aldım transform alınca sectionlar aktif edilince eski kuşlar oluşturulan yeni sectiona doğru gidiyordu . section poiintleri tutan bir gameobject boş.

        sonuç olarak konum lazımsa direk vector3 yani transform.position yollucaz veya onun vector3 halini vector3 konum transform.position yazıp konumu yollucaz parametre olarak eğer bunu yapmayıp transformu yollarsak pcnin temporarry sindeki şeyi yolluyoruz sanırım oda ne oluyosa işte

        anlamadım ama yaptım

      • yasirkula dedi ki:

        Ben sıkıntıyı tam olarak anlayamadım hâlâ ama sorunu çözmüşsünüz zaten, önemli olan o 🙂

  9. cenker dedi ki:

    peki static veya dynamic batching yapmayı biliyormusunuz spriterenderer ve gui için özellikle çünkü batches ve setpasscall numaraları artıyor her obje için playdeyken ctrl + d yapın artışı görürsünüz spritepackeri kullandım atlas yaptım felan fakat değişim olmadı

    • yasirkula dedi ki:

      Static batching, vertex sayısı düşük objelerin static kutucuğunu işaretleyerek oluyor ancak ben hiç yapmadım. Dynamic batching ise aynı materyali paylaşan objeler arasında gerçek zamanlı olarak gerçekleşiyor. Dynamic batching’i kısıtlayan faktörler şurada yazıyor: http://docs.unity3d.com/Manual/DrawCallBatching.html

      Unity 5 ile benim UI’daki draw call sayım düştü; yani UI Unity 4’e göre daha bir optimize edilmiş durumda. Sprite Packer için sprite’larınızın Packing Tag’lerinin aynı olduğunu varsayıyorum. Sprite’ın çözünürlüğü çok yüksekse belki bu dynamic batching’i engelliyordur.

  10. Burak dedi ki:

    Hocam benim bi projem var açıkçası programlama dili bilmem projeme gelirsek videolar ile bir bulmaca mi dersiniz macera mi versiniz ondan yapacam android üzerine videolar tamamen gerçek olacak Aslinda fazla bise yok ama ben böyle bir projenin örneğini tanitan görmedim unity var game maker var hangisi ya da hangileri ile nasil yapabilirim

    • yasirkula dedi ki:

      Projede 3 boyutlu dijital bir içerik olmayacağını varsayarsak Game Maker daha uygun olabilir. Nasıl yapılır kısmında yardımcı olamayacağım.

  11. İmfa dedi ki:

    Yasir kardeşim unity C# dersleri vermeyi düşünüyor musun? İnternette turkce kaynak yok malesef 😦 mantığını bilmediğimiz şeyi öğrenmiş olamayız, eğer boyle bir projen olursa inşallah +yakın takipteyim

    • yasirkula dedi ki:

      Unityscript ile C# gerçekten de birbiriyle neredeyse aynı. Bence şu dersimi okuyup birkaç script üzerinde kendi başınıza alıştırma yapın: https://yasirkula.com/2013/08/21/unityde-javascript-unityscript-ile-cin-birbirinden-farklari/

      • İmfa dedi ki:

        Hocam yazılarınızı zaten okumaya çalışıyorum heves ve istekle. Okumuştum bunu da 🙂 Hic başlamamış değilim şuanda bitmek üzere olan 2D bir oyunum var elhamdülillah . Ben kendimi daha da geliştirmek istiyorum. Yazdığım kodların mantılarını öğrenmek istiyorum. Bildiğim birkaç kod var onlarla yapıyorum sürekli geri kalanları da deneme yanılma ile yapıyorum ama aşırı vakit kaybı ve mantığı anlamama gibi sorunlar çıkıyor. Eğer vaktin olursa Unity C# dersleri yapmanızı çok isterim

      • yasirkula dedi ki:

        Yakın zamanda olacağını düşünmüyorum ama görelim mevlam neyler 🙂

  12. ikinci oyun ilgimi çekti ve biraz araştırma yaptım herşey güzel çalışıyor. fakat baştaki yüzey seçme yerini nasıl yaptınız ?

  13. bce dedi ki:

    hocam pooling sistemini açıklayan bir ders yazarsanız memnun olurum

    • yasirkula dedi ki:

      Instantiate ve Destroy komutları, fazlaca kullanıldıkları vakit oyunu takıldırabilen komutlar. Eğer bir objeden sürekli Instantiate ve Destroy ediyorsanız (örneğin bir kurşun objesi) haliyle oyunun performansı düşebilir.

      Pooling pattern’de şöyle bir yöntem uygulanıyor: o objeden oyunun başında birkaç adet oluşturuluyor (yine Instantiate ile); ardından ne zaman bir kurşun objesine ihtiyaç duyulsa bu pool’da yer alan “kullanıma hazır” bir kurşun objesi kullanılıyor. Bu kurşun objesi ile işimiz bittiğinde ise kurşun objesini Destroy etmek yerine deaktif edip pool’a geri atıyoruz. Bu sayede kurşunlar için sadece oyunun başında Instantiate kullandığımız ve hiç Destroy kullanmadığımız için oyun daha iyi performans sergiliyor.

      Bazen pool’daki objelerin sayısı anlık ihtiyacı karşılamaya yetmeyebiliyor, bu durumda ise mecburen kurşun objesinden yeni bir tane daha Instantiate ediliyor (oyun esnasında). Bu kurşunla işimiz bitince onu da yine havuza atıyoruz (Destroy etmiyoruz).

      Pooling ile ilgili Unity’nin video dersi: https://unity3d.com/learn/tutorials/modules/beginner/live-training-archive/object-pooling
      Kendi yazdığım generic bir pooling scripti: https://github.com/yasirkula/UnityGenericPool

  14. emrahatalay dedi ki:

    Güzel bir oyun olmuş gerçekten. inşallah en yakın zamanda bende bu alanda çalışmalarıma başlayacağım 🙂

    http://atalayemrah.com

  15. brend dedi ki:

    Merhaba bir sorum olacaktı. korku oyunu yaptım unity 4 free versiyonla ama pc de oynanıyor. bu projeyi android yapmak için pro versiyon mu gerekiyor yoksa free versiyonlada androide çıkara bilirmiyim?

  16. mrgames dedi ki:

    vuforiaya para vermeden bize verdiği lisansla direk oyun yayımlayabiliyormuyuz

  17. mrgames dedi ki:

    hocam birde vuforianın kamerası telefonda veya pc de çok karanlık çıkıyor dolayısıyla nesne rahat tanımlanamıyor bunun bi çözümü varmıdır

    • yasirkula dedi ki:

      Telefonun flaşını açmaya yarayan bir kod vardır büyük olasılıkla (belki setFlashTorchMode), onun dışında sebebini ben de bilemiyorum.

  18. muhay games dedi ki:

    hocam 2 tane büyük sorum olacak voforiadan aldığımız sdk dan kaynaklandığı söylenilen bir sorun var hocam.Ekran karanlık yani apk ya çıkarttığım uygulamam telefondayken çok karanlık oluyor.
    hocam 2.sorum nesne tanımlama sisteminin yerine misalen insanın elini algılattırmayı yapabilirmiyiz.

    • yasirkula dedi ki:

      Karanlık kamera görüntüsü ile ilgili şöyle 2 çözüm önermişler:

      – Assets/Plugins/Android klasöründeki AndroidManifest.xml’de şu değişikliği/eklemeyi yapmak:

      <uses-sdk android:minSdkVersion="17" android:targetSdkVersion="22" />

      – Player Settings’teki “Other Settings” altında yer alan “Auto Graphics API” seçeneğini kapatıp listeden “OpenGLES3″ü silmek.

      Vuforia ile eli algılamak ise benim bildiğim kadarıyla mümkün değil.

  19. DD dedi ki:

    Vuforia kullanarak app yapsam yayınlarken lisans konusunda sıkıntı oluyor mu?

  20. MuhammeT dedi ki:

    2. oyun neden kaldırıldı?

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Connecting to %s