Taramalı tüfekli bir oyun - #Devlog 2

Son blogdan bu yana 21 gün geçmiş! 21 gün!  Tabi bu süreçte mojitomu yudumlayıp yatımla Cayman adalarına gezmeye gitmedim.(gözler yaşlı)

Hemen araya sıkıştırayım; Önceki blogu okumadıysanız, şuradan bir göz atmak isteyebilirsiniz.

Özet

Yaklaşık 2 haftalık bir süreç boyunca düşmanların spawn olma sistemleri ile uğraşmak durumunda kaldım, son bir haftadır da diğer sistemleri rayına oturtmaya çalışıyorum. Ancak görünen o ki, düşman spawn sisteminde yaptığım bazı değişiklikler sistemi kararsız hale getirdi. Bu nedenle büyük ihtimalle bu sistemi önümüzdeki günlerde refactor edeceğim. 

 

2.Hafta (ilk blogun kaldığı yerden devam eder)

Oyunun tek mekaniği düşmanları yoketmek. Bunun için de düşmanların tamamen rastgele spawn olması çok mantıksız bir yoldu. Diğer bir yol da, genelde geliştiriciler tarafından tercih edilen "elle girme" yöntemi, hemen yanlış anlamayın, buradaki konsept nasıl bir düzenle spawn olacağının TEK TEK VE EL İLE EDİTÖRDEN yazılması. Bu noktada birçok değişken var.

  1. Düşmanların tipi
  2. Düşmanların sayısı(tek seferde kaç tane spawn olacak)
  3. Spawnlar arasında ne kadar bekleme olacak
  4. Waveler arasında ne kadar bekleme olacak
  5. İlerleyen dalgalarda(wavelerde) zorluğun dengeli bir şekilde artması

Özellikle son maddenin altını çizme sebebim, bunun genelde gamedesigner ve testerlar tarafından yapılan uzuun bir süreç olması, çünkü çok ince ayarlamalar ile(finetuning) tüm düşmanlar için ve tüm haritalar için bunun yapılması gerekiyor. Benim ise malum ne o kadar zamanım ne de param olmadığı için her programcının en hakiki dürtüsü olan otomatize etme isteğine uyarak otomatize etmem gerektiğine karar vermem ile sonuçlandı bu süreç.

Geçtiğimiz haftalarda bir paylaşım yaparak spawn algoritmamı paylaşmıştım, çalışma prensibini soran bir arkadaşımıza da bir video ile durumu açıklamıştım. Ancak burada da belirtip videoyu ekleyeyim.

Sistem Sinüs dalgası üzerine dağılım yaparak zorluk seviyelerinin her dalgada artmasını ve otomatik dengelenmesini sağlıyor. Bu sayede dengeli bir rastgelelik ile tüm spawn dalgaları ayarlanabiliyor.

Bu sistemi çözmem yaklaşık 1.5 hafta sürdü. Çünkü düzgün bir spawn algoritması yazmak için iteratif olarak birçok formülizasyon yapmalıydım.

Hafta 3(En azından yarısı)

Algoritmik bir süreç ve kodda birçok iterasyondan sonra

  • Pooling sistemi
  • Spawn algoritması
  • Düşman sürülerinin düzenini kontrol edebileceğiniz bir editör

yazıp çalışır hale getirdim. Sonuç ise gifte(~0MB) gördüğünüz gibi oldu.

Hafta 4

Bu hafta genel olarak, bir takım cilalamalar yapmaya harcandı.

  • Düşmanların öyle laps diye spawn olmaması için gökten düşme efekti ekledim.(Ki bu sistemi sapıttırdı, videonun sonlarında görünüyor)
  • Silahlara mermi limiti ekledim ve silah seviyelerini gösteren bir arayüz yaptım.
  • Sonunda oyuncuya sağlık ve can tamlanması sistemi ekledim.
  • Yeni dalga geldiğinde onu gösteren bir arayüz ve arka sistemlerini yaptım.
  • Ve biraz da, silah spawn sistemiyle uğraştım. Şu an onunla uğraşmaya devam ediyorum 🙂

Buraya kadar okuyup takip ettiğiniz için teşekkür ederim, Önümüzdeki haftalarda görüşmek üzere!

BeğenFavori PaylaşYorum yap
Önceki yorumları gör 9 / 15
  • lterlemez :) :\ :( @lterlemez

    Grafikler çok tatlı, kırmızıları öldürmek daha uzun sürecek değil mi?

  • Onur Eryilmaz @onurery

    Bu düşmanların Spawn olurken sapıtmasının nedeni poolda yeterli düşman kalmaması ve yeni yaratılan düşmanların aktif olma fonksiyonunun çalışmaması mı acaba, yoksa başka bir sorun muydu?

    • Mert @merpheus

      Aktif olma fonksiyonu yoktu hocam daha önceki implementasyonumda, sadece objeyi aktif edip sonra komponent ve değerleri aktif ettikten sonra tek tek aynı loopun içinde sıfırlıyordum. Çok kötü bir kod yazım şekli olduğunu biliyorum, zaten prototip üretmek için öyle yapmıştım.

      Şimdiki sefer de ise birden çok sınıfım var ve her düşman artık bir sınıf ile türetiliyor. Bunların base sınıfında da abstract olarak OnWarmUp, OnSpawn ve OnDespawn metodları var. Bu sayede sorun şimdilik çözülmüş gibi duruyor.

      Tabi düşmanların gökten spawn olup yere düştükten sonra sekmesi ve sonra hareket etmesi olayını önceden fiziklerle çözüyordum, şimdi bir Tween kütüphanesi kullanıyorum, daha mutluyum. 🙂

      Nitekim aynı zamanda animatörde ölme animasyonu çağrıldıktan sonra modellerin base riginde de bir sapıtma oluyordu. Bu üstteki yeni modellerin animasyonunu büyük ihtimal blenderdan yapıp daha dikkatli olacağım böylece o sorunun da çözülmesini umuyorum 🙂

  • lterlemez :) :\ :( @lterlemez

    Görünür alan dışında türetilmeleri mümkün değil mi?

  • lterlemez :) :\ :( @lterlemez

    Youtube videonuz da, oyun/yazılım yapmanın o kadar kolay olmadığını; büyüklerimizin ön gördüğü gibi orta eğitimde sadece algoritma vermekle (hele problem çözme konusu da pas geçilerek) olmayacağının, yeri geldiğinde matematik, fizik, kimya (çok güzel bir örnek verilebilir, Oxygen Not Included) vd konuların da gerektiğine çok güzel bir örnek teşkil etmiş.

Taramalı tüfekli bir oyun - #Devlog 1

Selamlar TS Ahalisi,

Uzunca bir süredir bu bloglardan yapmadığımı biliyorum, sonunda şeytanın bacağını kırıp bir tane yapmaya karar verdim. Sizlere bu yazıda, unity öğrenen kardeşimle beraber geliştirdiğimiz ufak bir oyundan bahsetmek istiyorum. Öncelikle sizden geri bildirim almaktan mutluluk duyacağımı belirtmek isterim 🙂

Yıllar yıllar önce Anonim Savaş adında küpler ve silindirlerden oluşan bir shooter oyunu yapma girişimim olmuştu. Nitekim buradaki TS'cilerden de güzel geri bildirimler almıştım. O zamandan beri, oyun geliştirme konusundaki bilgi eksikliklerim nedeniyle yapamadığım bir takım şeyleri de kullanarak bir top-down shooter oyunu yapmak hep içimde ukte idi.

Bundan yola çıkarak, çok değil 2 haftasonu(4 gün) de geldiğim noktada, henüz oyunun adı bile belli değil olmasından dolayı "taramalı tüfekli bir oyun" adıyla blog başlığı atmama rağmen oyun türünden bahsetmeden ilerlemek istemiyorum.

Oyunun Türü

Bu oyun, seviye atlayarak yeni eşyalar açtığınız ve öldürdüğünüz bilimum iblis,zombi gibi yaratıklardan düşen paralarla da o eşyaları geliştirdiğiniz, dalga(wave) halinde düşmanların geldiği ve bölümdeki en yüksek skorları yaparak bitirmeye çalıştığınız üstten bakışlı 3 boyutlu bir shooter oyunu. Platformu mobil. Şimdi, oyunun türü hakkında bilgi verdiğime göre geliştirme esnasında yaptıklarımdan bahsedebilirim.

Geçtiğimiz haftalarda, geliştirmeye başladığımız bu oyunda ateş etme mekanikleri, düşmanların hasar alması ve geri tepme gibi bir takım temel sistemleri bitirdim. Sadece haftasonu izin günlerimde geliştirdiğim bir proje olmasından da dolayı 2 hafta kadar bir zamanda bu çıktı ortaya.

İlk gün prototipi

Cuma akşamı işten sonra yarım saatte çıkardığım ufak prototipin ardından, bu projeyi yapmakta karar kıldım ve 2 hafta önce hafta sonu geliştirmeye başladım.

İlk hafta sonun ardından

Vuruş hissi bu oyundaki en önemli şey, çünkü başka bir mekanik yok(henüz, planlanan şeyler var ama onlar ilerleyen dönemde :P) Bu nedenle ilk olarak kameranın titremesi, ateş edince karakterin ve silahın geri tepmesi animasyonu(recoil) ve post efektler ile beraber karakterin yürüme animasyonu ve gittiği yöne dönmesi gibi temel sistemleri bitirmiştim.

5.günün şafağında Unity'e bakış(İkinc hafta sonu)

Geçtiğimiz hafta sonu da düşmanların size doğru yönelme yapay zekası, ateş edince ses çıkması ve muzzle flash denen, silahın namlusundaki patlama efekti, karakterin ateş ederken düşmanlara kilitlenmesi ve o yakında düşman varsa onlara bakması, yoksa gittiği yöne bakmasının yanında düşmanların vurulunca geri tepme animasyonlarını yapmaya çalıştım. Geri tepmeyi fizik bazlı da yapabilirdim ama işleri çok karmaşıklaştırmak istemedim.

Sonuç

Şu an ki durumda, son video da gördüğünüz vaziyette bu sadece yaratık öldürdüğünüz fetiş oyunu. İlerleyen haftalarda geri sekme ve düşmanların spawn olması ve karakterin hasar alabilmesi gibi konulara eğileceğim.

Bu konseptteki devloglar paylaşmak ve geri bildirim almak benim için oldukça önemli, bu nedenle fikirlerinizi ve önerilerinizi belirtirseniz sevinirim 🙂

Oyun oynanabilir bir noktaya gelip "oynanış ve vuruş hissi" olarak sınıfı geçer halde olunca Google Play ve App Store'a koymak ve Youtube kanalımda da geliştirme sürecini anlatarak geliştiricilere oyun geliştirme süreçleri hakkında bilgi vermek niyetindeyim. Bunu da belirtmek istedim.

Bu noktaya kadar okuduğunuz için teşekkür ediyor ve yazımı sonlandırıyorum efenim 🙂

BeğenFavori PaylaşYorum yap

Eski hard diskinizi bağlayınca yaşanan "Erişim reddedildi" probleminin çözümü[Windows 10]

Merhabalar, bu yazıda eğer eski HDD'nizi bağlayıp Users gibi erişim izni gerektiren klasörlere erişmeye çalışıyorsanız karşılaşabileceğiniz "Erişim reddedildi" hatasını nasıl çözdüğümden bahsetmek istiyorum.

Hızlıca başlarsak, geçtiğimiz yaz ayları içerisinde Amerika'dayken, Amazon'dan Samsung 860 EVO bir ssd almıştım. Lakin düne kadar ki birkaç ay zarfında kendi evimde olmadığım için gerekli ekipmanlara sahip olmamamdan da kaynaklı olarak ssd'yi laptopuma bağlayamamıştım. Dün ise artık durum canıma tak etti ve laptopa bağlı olan 1 tb'lık seagate'in 5400 rpmlik çöp harddiskini söküp söz konusu ssd ile değiştirdim. SSD'yi sipariş ettiğimde eski dosyalara erişmem gerektiğini bildiğim için bir de USB 3.0 to SATA çevirici almıştım. Bu sayede, HDD'deki dosyalarımı yeni kurulumuma aktarabilecektim.(Disk cloning yapmak istemedim hem storage yetersizdi hemde çok çöp dosya vardı sadece işime yarayacakları almak istiyordum.) Sonrasında HDD'yi pc'ye bağladım ve aktarım için Desktop'ımdaki dosyalara erişmeyi denedim lakin erişim reddedildi uyarısına denk geldim.

 

Normalde, bu uyarıyı aşmak için "Changing ownership" yani sahipliği değiştirme yapmanız gerekiyor. Bunun için söz konusu klasöre sağ tık->Özellikler->Güvenlik->Gelişmiş kısmını izleyip oradan birkaç menüye daha zıplayarak açılan penceredeki "sahiplik değiştir" e basıp sonrasında kendi kullanıcı adınızı değiştirmeniz vs. gerekiyor, lakin sorun şu ki, bu işlem bu klasör, içindeki dosyalar ve tüm alt klasörlere uygulanıyor. Eğer sizinde benim gibi 200 gblık parça pinçik dosyalarınız varsa taşımanız gereken, Windows abimiz bir noktadan sonra "işlem sırasında hata oluştu" gibi durumlarla işlemi kesiyor ve sahipliği değiştiremediğiniz için dosyalara da erişim kazanamıyorsunuz. Bu durumda dikkatimi çeken bir şey oldu, çünkü dosyaların "sahibi" olan kullanının SYSTEM adında bir kullanıcı olduğunu fark ettim, normalde Windows 10'da admin hesabını görünür yapıp ondan giriş yaparak belli başlı bazı şeyleri değiştirebilirsiniz yada cmd'yi yönetici olarak çalıştırarakta daha küçük problemleri çözmeniz mümkün. Maalesef, sistem kullanıcısı ise ADMINISTRATOR kullanıcısının da üstünde olduğu için, sistemin tüm yetkilerini elinde tutuyor ve admin yetkisiyle klasöre erişmeye çalışsanız bile erişemiyorsunuz.

 

 (Sahiplik değiştirme paneli)

 

 

Bu noktada, araştırmalarım sonucu, Microsoft'taki abilerimizin hazırladığı ve uzaktan komut çalıştırmayı sağlayan(bizim case'imiz için lokal sistem kullanıcısına erişip onun üzerinde komut çalıştırarak) bir tool ile karşılaştım. PSEXEC adındaki bu toolu kullanarak, bekleme sorunu olmadan( dosyaları kopyalama süresini saymazsak) dosyalara erişmeniz ve kendi drive'ınıza kopyalamanız mümkün. Bu toolu buraya tıklayarak indirebilirsiniz.

 

Sonrasında ise komut istemini Yönetici olarak başlatmanız lazım, yoksa çalışmayacaktır. Bunu yaptıktan sonra toolu indirdiğiniz klasöre komut istemine cd komutlarıyla giderek, psexec -i -s CMD komutunu çalıştırmalısınız. Sonrasında ayrı bir pencere açılacak ve bu komut isteminde SYSTEM kullanıcısı olarak istediğinizi yapabileceksiniz. Bu noktada xcopy komutu ile hedef diskten kendi diskinize dosya kopyalamanız mümkün olacaktır.

Şahsen kullandığım komut (dosya yollarını abstract edersek), xcopy "D:/ISTEDIGINIZ_DOSYA_YOLU" "C:/BENIM_SUPER_DOSYA_YOLUM" /h /s /e idi.

Burada /h /s ve /e parametreleri dosyaları, klasörleri ve alt klasörlerin hepsini kopyalamasını belirtmek için gerekli aksi taktirde, sadece hedef klasörün içindeki dosyalar kopyalanır ve altklasör ve dosyaları kopyalamamış olursunuz. Bu sayede geçtiğimiz 6 saattir patates harddiskimdeki parça pinçik milyon tane dosyayı kopyalayabildim. Umarım bu sorunu yaşayanlar için bir çözüm olmuştur diyerek yazımın sonuna geliyorum.

İyi çalışmalar!

 

 

BeğenFavori PaylaşYorum yap

Project Anisotropy - Indie oyun günlüğü#1

Selamlar Teknoseyir ahalisi, yukarıda gördüğünüz video bir kısa film ama konsept olarak çok beğendiğim ve oyunda bulunmasını istediğim kesitlerden biri oldu. Ama önce gelin, şu projeler hakkında biraz konuşalım.

Evden kaçış oyunu ne oldu kardeş ?
Sizi şuraya alalım:
https://teknoseyir.com/durum/881008

Ne ola ki bu "Project Anisotropy" ?

Anisotropy bir tps macera oyunu. Bir adamın karısını bulma macerasını konu alıyor temelde ama öyle göründüğü kadar üstün körü bir şey değil. Güzel bir senaryosu var (en azından şimdiye kadar aldığım dönüşler böyle 😛 ) Kılıç,kargı,balta gibi silahlar kullanıyoruz. Böyle rpg tarzı karakter oluşturma filan yok. Bir adamın ailesini koruma hikayesini anlatmak istiyorum. Oyun low poly dediğimiz üstteki videodaki tarzda grafikler barındırıyor. Birçok konseptten düzenlediğim referans resimler, aşağıdakiler bu arada onu söyleyeyim. Henüz erken bir aşamadayım.

Low poly tarzıyla alakalı oyunda planladığım gece yolculuğu sahnelerinden biri.

Oyunun özellikleri ve detayları

Oyun temelinde steampunk fütürüstik bir gelecekte başlayıp bir kaza sonucu farklı bir boyuta düşen karınızı kurtarmanızı konu alıyor. Gittiğiniz boyutun ise sonrasında orta dünya vari, büyüler ejderhalar kötü büyücüler filan olan bir yer olduğunu keşfede keşfede öğreniyorsunuz. -Spoiler verdim pardon 😛 - Bu süreçte, karınızı ararken farklı farklı bölgelerden geçiyor, yeri geliyor NPC lerden yan görev alıp onları yapıyorsunuz ve bunlar oyunun sonunu etkileyebiliyor çünkü bu npclerin kendi hikayeleri ve bu görevlerin kendi derinlikleri var. Lakin böyle çok fazla görev yapamayacağım için, 5-6 tane npc den görev alınmasını planlıyorum. Tabi bu süreçte karımızın kötü büyücü tarafından kaçırıldığını filan öğrenip oraya doğru yola koyuluyor, yolda düşmanları yaratıkları vs. kese kese ilerliyoruz. Sinematik bir atmosfer ve oynanışta var keza. Ne bir farcry gibi kes biç bitir şeklinde ne de bir to the moon hikayesi kafasında. Ortamlar ise karlı, ormanlık,çöl, kayalı taşlı ve bu büyücünün volkanik dağının olduğu daha karanlık atmosferdeki oldukça hoş görünecek ortamlardan geçiyoruz,çevre sürekli değişiyor. Tabi düşmanlar ve bizim özelliklerimizde. Hikayeyi saymıyorum bile ( piyuu :p )

Buzlu bir bölüme ait hazır bir assetten ilham almak adına konsept çalışma

Oyun müzikleri

Elimde bestelediğim bir melodi vardı, birkaç arkadaşımla temas kurarak bunu keman, piyano(bölümlere göre faklı yorumlamalarla) kaydettik. Oyunun yapısı biraz dramatik ve duygusal olacağı için müzikler de yer yer epikleşme veya sci-fi ya kaysa da genelde daha orta çağ+duygusal ilerliyor. Hikayenin de etkisiyle, sizi biraz üzebiliriz, yani umarım. 😀

Yine çöle ait bölümlere uyan bir konsept tasarım

Ee, iyi güzelde bu sefer oynayabilecez mi aga ?

Hedefim o. Daha sağlam ve metodolojik çalışmam gerekli. Lakin bu proje aslında daha büyük bir proje ama daha rahat buluyorum nispeten. Çünkü bu proje hususunda,daha öncesinde sizlerle paylaştığım bir low poly oyun projesi konusunda(bkz: puzzle oyunu ve low poly projesi hakkındaki blog) ön araştırma aşamasında olduğumu söylemiştim. 100'den fazla konsept tasarım videosu ve low poly art videoları izledim, konsept artları inceledim farklı kaynaklardan, benzer projeleri inceledim keza, oyuncularla da oyun geliştiricilerle de konuştum ve bu projeyi netleştirebildim sonunda. Oyun için videolu geliştirme blogları yapmayı hedefliyorum youtube da belli bir zamanlamaya oturtarak ki önceki proje de olduğu gibi araya bir şeyler girince "naptım la ben" gibi bir sıkıntı yaşamayayım.

Çölden geçerken görebileceğiniz bir çevrenin konsepti - bende piramitler yok 😛 -

Nereye çıkacak, ne zaman çıkacak, hadi yapta oynayalım!

Bu oyun, uzun vadeli ve planlı bir proje önce bunu söylemek istiyorum, icabında stüdyo açma devlet desteği almaya kadar gidebilecek ölçüde planlı. En erken 2 yıllık bir geliştirme süreci görünüyor oyunun çıkması için. Bununla beraber oyun, bu sefer "knk, ben bi oyun yaptım androide; baksana az" kafasıyla mobile hazırlanmış bir proje değil. Nintendo Switch, Playstation&Xbox ve pc'ye çıkmak niyetindeyim. Oyunun planlamasını ve görevlerimi trello da ayarlıyorum bu sefer. Ve herkese açık yaptım. İsteyenler aşağıdaki linkten takip edebilirler yapılacakları ve yapılanları. Olay yerini ziyaret etmek için dokunun.

Kara büyücünün zindan konseptlerinden biri

Teknik yapı nasıl aga, sen kaldırabilecek misin bunu ? Bu bak şakaya gelmez, dediğin iş sağlam iş ama sen nasıl halledecen bunu ? Ar yu kola ?

Abiler, şimdi durum şöyle. Bu sefer gerçekten düzgün bir şeyler çıkarmak istiyorum ortaya. Hem hikaye, oynanış, sunum vs. olarak kaliteli olsun; hemde altyapı olarak mümkün olduğunca buglardan arınmış, teknik olarak düzgün ve profesyönel bir proje yapısına sahip olsun.

->Yazılım kanadı

Bu bağlamda, oop yapısını daha iyi kullanmaya, SOLID prensiplerini uygulamaya, unit testleri, entegrasyon teslerini vs yazmaya çalışacağım.

->Grafik tasarım kanadı

Blender kullanıyorum,bazılarınız biliyor. Şimdiye kadar hep rendera göre iş yaptım ve poligon sayısı, iç içe geçen vertex var mı yok mu, meshin kaplamaları bake edilebilir mi gibi şeyleri sürekli olarak bir projeye entegre etmedim, denemelerim oldu bunları keşfetmek için, lakin sonuç olarak modelleme anlamında da low poly atmosferinde etkisiyle model çizimi daha kolay olacak ama özgün, animasyonları olan, renk paleti ve ortam geçişleri uyumlu çizilip kaplanmış, modelleme olarak daha düzgün ve performanslı modeller üretmeye uğraşacağım.

->Animasyon kanadı

Modelleme yapabiliyorum ama yapmamın çok zor olduğu bir şey varsa akışkan karakter animasyonları. Hele böyle kritik mekanikleri dövüş olan bir oyunda karakter dövüş animasyonlarını yapmam, oyun için istediğim akıcı darksouls/bloodborne vari dövüş sistemini ortaya çıkarmama engel teşkil ettiği için. Animasyonları asset store dan outsource edeceğim.

Bu bölüm, level design, seslendirme, senaryo, sinematik sistemleri, karakter ve dövüş sistemleri olarak gider de gider. Sonraki günlüklerde anlatırım onları da 😀

Oyundaki farklı bölgelerde sonbahar mevsimine şahit olabileceğiz. Bu da ona ait bir konsept.

Diyor, ve bu uzuun blogu burada noktalıyorum. Bu proje hakkında düşüncelerinizi belirtirseniz sevinirim.

BeğenFavori PaylaşYorum yap
  • K98 @mask

    yeraltı canavarı 2 🙂 stv klasigi az mı izledik

  • Lütfi Dereli @ltfdre

    Umarım ne kısa zamanda istediğin şeyleri, sana çok fazla vakit kaybettirmeden tamamlar servise hazır hale getirirsin. Takipteyim. Kolay gelsin

  • K98 @mask

    Çok güzele benziyor anlattıklarınız.

  • Onur Eryilmaz @onurery

    Oyun burada anlatılanlara bakınca fena durmuyor tabii ama bazı kafama takılan soru şu;
    Mesela oyunun çıktığında benzer mekanikler sunan oyunlardan farkı ne olacak? Yani selling point'i ne olacak?
    Yaklaşık 15 gün kadar sonra iş yoğunluğum azalacak, ve muhtemelen 3-5 gün kafamı dinledikten sonra oyun yapım işi ile ilgili bir şeyler yapmaya devam edeceğim. Yani daha doğrusu şöyle ben de aynı sizin gibi yaklaşık 2-2.5 senedir oyun yapım işleri ile ilgileniyorum. İyi kötü, 4 tane oyun projem var(prototipleri saymazsam). Kodlama ağırlıklı çalışıyorum, ama 2 sene önceki projemde bölümlerde kullanmak üzere Blender ile çevre asset'leri de yapmışlığım var. Gerçi 2 senedir kullanmadığımdan biraz körelmişimdir Blender konusunda fakat 1-2 haftada eski seviyeme gelirim tahminen. Yani eğer isterseniz gönüllü olarak işin bir ucundan tutabilirim.

    • Mert @merpheus

      Teşekkür ederim 🙂 Oyunun niş kısmı kendine özgü hikayesi ve atmosferi olacak temelde. Gönüllü olma konusunda ise, oyun şu an henüz çok erken aşamalarında olduğu için önce bir düzene oturtacak noktaya getirmem gerekiyor bununla beraber gönüllü değil maaşlı olarak insanlarla çalışmak istiyorum bu projede üstte bahsettiğim gibi bir stüdyo kurunca. Şimdilik bir yardım için erken, ama daha sonrası için bu gönderideki yorumunuz durursa sizinle haberleşiriz 🙂

    • Onur Eryilmaz @onurery

      @mertkirimgeri Tamamdır hocam, o dönemde konuşuruz 🙂

Unity'de ScriptableObject kullanırken veri kaydetmek

Selamlar Teknoseyir ahalisi,

Bugün, şipşak bir proje için kod yazarken scriptable objeleri kullanıyordum. Bu kullanım esnasında, özel editör penceresi (Custom Inspector) yazarak, scriptable object'in özelliklerini buradan değiştirip içerisindeki listeye direkt erişmemeye çalıştım. (Kodun karışmaması ve OOP yapısına daha uyduğunu düşündüğüm için) Ancak şunu gördüm ki, scriptable obje'nin içinde, listeyi manipüle eden metodları çağırıp onlar aracılığıyla listeyi düzenlediğimde veriler kaydolmuyorlardı.

Unity'de scriptable object'e direkt olarak erişmek için kullandığım yöntem

Scriptable Object'in metoduna erişerek veri ekleme yöntemi

Bunun sonrasında, listeyi public yapıp, Custom Inspector kodum üzerinden direkt olarak listeye erişip düzenledim. Böyle deneyince kaydoldu ama üstte bahsettiğim sebeplerden ötürü, bu yöntemi kullanmak istemiyordum. Sonrasında biraz araştırıp, birkaç farklı yere sorduktan sonra listeye [SerializeField] attribute'ü eklemem gerektiğini öğrendim.

Bunun sonucunda Scriptable Object'in içindeki metod a erişerek onun üzerinden listeyi değiştirmeyi başardım. Eğer olur da benzer bir kayıt sorunuyla karşılaşırsanız, bu kısa blog umarım işinizi görür ve sorununuzu çözer. #Unity

BeğenFavori PaylaşYorum yap

Evden Kaçış oyunu, projeler ve çıkış tarihleri

Selamlar Teknoseyir ahalisi,

#Unity ile geliştirdiğim şimdilik adı "Gizemli evden kaçış" olan oyunumla alakalı bir gelişme paylaşmak istiyorum. Vizelerden dolayı bir iki hafta ara vermem gerekmişti geliştirme sürecine, sonrasında ise markette olan başka bir oyunuma güncelleme yapma ihtiyacı doğdu, bundan dolayı son iki haftadır da onu sıfırdan tekrar yapmakla uğraşıyordum. Bu çalışmalar dün bitti, Play store da güncelleme yerini alırken App Store için de onaylanmasını bekliyorum.

Şimdi ise tekrardan perspektifimizi bu kaçış oyununa çevirdiğimizde, daha öncesinde 29 Nisan tarihine bir beta sürümü için çıkış tarihi olarak lanse etmiştim.(Bkz: Olay yerine gitmek için tıklayın/dokunun.) Şunun şurasında 29 nisana 5 gün kalmasına rağmen, o gönderiden sonra projeyi ilk kez şu an açabiliyorum 😀 Ondan dolayı beta için bir erteleme daha vermem gerekiyor. Ama bu sefer -başıma bir iş gelmezse- beta da olsa, tamamlayacağım sürümü sizlerle buluşturacağım ve tarih olarak 21 Mayıs'ı veriyorum. Bu dediğim gibi son erteleme olacak, umuyorum ki. Bitmezse, adıma ban kampanyası düzenlemenize razıyım, kendimi sıkıştırmak adına 😀

Evden kaçış oyununda bulduğunuz kaset çaları kullanma mekaniğinden bir görüntü (GIF)

"Diğer proje" varmış ?

Bununla beraber, genelde birkaç adım sonrasını hesaplayarak haraket ettiğimden dolayı, bu projenin ardından çalışmayı düşündüğüm bir projeden bahsetmek istiyorum bu gönderide ki kapaktaki resimde onunla alakalı. "Önce elindekini bitir la" diyenleriniz olabilir, haklısınız da. Ki öyle de yapacağım ancak dediğim gibi bir projeyi tamamlayınca acayip bir tatmin olma hissi sardığı için bünyeyi, yeni proje belirleme/geliştirme süreci oldukça uzayabiliyor ki bu da vakit kaybetmek demek. Bunu istemediğim için planlama yapıyorum.

Fikirleriniz Önemli

Bu gönderiyi yazmamdaki ana amaçlardan biri de, bu bahsettiğim diğer proje konusunda sizden bazı fikir ve görüşler almak. GGJ 2018'de iki gün içinde geliştirdiğim bir oyun vardı, bu oyun low poly dediğimiz sanat dizaynına sahip bir platform oyunuydu. Yaparken grafiklerin şahsen tatlı olduğunu düşünmemden ve hoşuma gitmesinden sonra "kardeş ben buna sonradan tam bir oyun yapmalıyım kesin" gibi bir ukte oluşmuştu.

Hafif Journey'i andıracak gibi bir proje olacakmış gibi geliyor bana bu ancak, bu sanat dizaynı ile alakalı ne düşünüyorsunuz onu merak ediyorum. Bunun yanı sıra, oyun mekaniklerine de karar vermiş değilim, bu oyunla alakalı istediğim iki temel şey var aklımda:

  • 1- Tatlı low poly grafikler olacak ve oyun dünyasını kullanıcı keşfedebilecek. Sabit bir platformla sınırlamak istemiyorum kullanıcıyı.
  • 2- Oyunun sağlam bir senaryosu ve dramatik bir olay örgüsü olmasını istiyorum.

Açıkçası bunlar dışında daha netleşmiş bir şey yok aklımda ama sizden "şu tarz bir oyuna benzer bir şeyler yapabilirsin", " TPS bakış açısı kullan, puzzle mekanikleri olsun, açık dünya olsun" gibi (bu dediklerim farazi) öneriler beklemekteyim arkadaşlar. Çünkü bu projeyi, diğer projelerimin aksine STEAM'e çıkarmayı düşünüyorum. Sağlam bir şeyler yapabileceğime inanıyorum. Yorumlarınızı bekliyor son bir ekran görüntüsüyle yazımı sonlandırıyorum. Teşekkürler şimdiden. #Unity #Oyungeliştirme

BeğenFavori PaylaşYorum yap
  • kizilsakal @kizilsakal

    Grafikler hoş acele etme böyle amatçr geliştiricilerin bencr en büyük şansı onları bekleyen zorlayan bir kitle yok o sebeble sabırla geliştir tamam demeden asla çıkarma. Hikayende detaylara dikkat et eğer yapabilirsen pyuncular buldukları eşyalarla detayları parça parça öğrensin oyun sürecini dinç tutar bence. Mekanikleri basit tut bence birde çok uatalık istesede hiç yazısız konuşmasız oyunun kendini oynarken anlatan oyunlar varya littlenigtmare gibi bence efsaneler 🙂

    • Mert @merpheus

      Yorumunuz ve önerileriniz için teşekkür ederim öncelikle 🙂 Bunları değerlendireceğim, şahsen oyun oynarken hikayenin direkt araya girmesi daha çok sevdiğim bir konsept ama oyunun türüne bağlı tabi, bu nedenle düşüneceğim bu dediğinizi. Little nightmare'ı da inceleyeceğim. Bunun yanında acele etmeme konusunda, 3 yıl geliştirip en son hiç bir yere varmayıp en son çöpe giden bir projem vardı. Ondan beridir, kendimi biraz sıkıştırmayı deneyip nispeten daha başarılı sonuçlar elde ediyorum. Tabi yazıda, beta olacağından bahsettim, sinematik sekanslar hazır olmayabilir kaçış oyunu için o sürece kadar. Ancak bulmaca ve oynanış kısımlarını bitiririm en kötü ihtimalle, bari onları bitirebileyim diye belirttim bunu 🙂

    • kizilsakal @kizilsakal

      @mertkirimgeri akıl vermek değil şahsi fikirlerimiz tabiki yanlış da olabilir bunlar 🙂 başarılı olman ve bizimde gururla oynanamamız dileğiyle 🙂

  • James Gosling @emrek

    Neyseki Deadline'ı 1 den fazla kaçırarak gerçek bir yazılımcı olduğunu kanıtladın. 😝 Projelerinde başarılar diliyorum 😄

  • Cemre. @hcemreyilmaz

    Silicon Valley'de bir cümle kurulmuştu. Beta release etmek ile ilgili.
    "Bir yazılım ne kadar bug'sız çıkıyorsa o kadar geç çıkmış demektir." diye 🙂
    Çalışmalarınızda kolaylıklar dilerim.

Unity Photon Multiplayer/Networking tecrübelerim

Merhabalar Teknoseyir takipçileri,

Şu sıralar, Android markette iki yıl süredir bulunan bir oyunumda Google Play Oyunlar(GPG)  kullanan multiplayer kısımlarında bazı sorunlar olmasının yanı sıra ios marketine de açılmak istediğimden ve GPG'nin iOS desteği olmadığı için farklı multiplayer servislerine olan arayışlarım başlamış oldu. Bu süreçte, daha önce #LegendsofSoccer projemde kendim server yazmıştım ancak projeyi basitleştirip sonrada beklediğim ilgili görmeyince iptal ettiğim için, server kiralama gereksinimi duymadım. Nodejs ve socket.io ile bir sunucu yazmayı ve digitalocean'dan bir server kiralayıp orada koşturmayı düşünürken, ücretsiz alternatifleri araştırmaya koyuldum ve bunun ile ilgili de bir gönderi(bkz.) yazmış ve alternatifleri sormuştum. O sırada da Firebase'in Realtime database servislerini kullanmayı denemiş ama ortada match-making yani eşleştirmeyi yapacak bir üçüncü entity olmadığı için sorun olmuştu. Sizlere ve networkingle uğraşan birkaç kişiye danıştıktan sonra firebase'in sadece veritabanı hizmeti ile bu işin olmayacağına karar verdim ve kullandığım motor olan #Unity 'nin UNET multiplayer altyapısını denemeye karar verdim. Ancak kaynaklar oldukça yetersiz ve bir takım eksiklikler ve örnek kıtlığı olduğunu gördüm. Ayrıca benim geliştirdiğim oyun daha ziyade Turn-based ama gerçek zamanlı oynanan bir oyundu. Bu noktada arayışlarıma devam ederken, Exit Games'in Photon çözümüne denk geldim. Unet ile aynı sınırlamalara sahipti ücretsiz paketinde bu çözümde. Bunun yanında Asset Store'dan indirip incelediğimde oldukça tatmin edici sayıda örnek demoları olduğunu gördüm. Bunlardan biri de taş kağıt makas oyunuydu ve bu oyun tam istediğim şeyi yapıyordu. Bunu örnek alarak yaklaşık iki gün gibi bir süreçte olayı kaparak, kendi sistemimi yazdım ve uyguladım. Şu an da multiplayer backendini tamamladığım için arayüzü tasarlamakla uğraşıyorum. Sonuç olarak şunu söyleyebilirim ki, UNET'in üzerinden 2 yılı aşkın süre geçmiş olmasına rağmen, Photon çok ama çok daha kolay, güçlü ve stabil bir çözüm sunuyor. Bu nedenle orta çaplı projelerinizde Photon kullanmanızı öneriyorum. Ancak surviv.io gibi anlık 5-10k oyuncunuz olursa tabiki kendi sunucunuzu yazmanız ve soket ile haberleşmeniz sizin için daha mantıklı bir çözüm olacaktır diyor ve yazımı sonlandırıyorum.

BeğenFavori PaylaşYorum yap
Önceki yorumları gör 4 / 45

“Gizemli Evden Kaçış” oyunu alfa testleri

Selamlar Teknoseyirci dostlar!

Bu blogda şu birkaç aydır üzerinde çalıştığım ve geliştirmesi devam eden, yakın zamanda alfa testlerine başlamak istediğim bir oyundan bahsedeceğim. Bunun yanında aramızdan alfa testi için gönüllüler aramaktayım. Oyundan biraz bahsederek bilgi vermeye başlayayım.

Oyunun genel yapısı

Oyun genel olarak bulmaca/evden kaçış türünde bir proje. Gerilim atmosferinin yanında ara sahneler ile oyunu daha ilginç hale getirmek niyetindeyim. Oyunda odaların anahtarlarını bularak, çeşitli eşyalar kullanarak, bulmaca şifrelerini bulup çözerek ilerlemeye çalışıyorsunuz. Bunun yanında oyuncuyu sıkmamak için oyun mekaniklerinin çeşitliliğini bol tutmaya çalıştım.

Sahnelerden görüntüler:

Testler

Oyunu Ios ve Android platformlarına çıkarmak niyetindeyim ancak alfa/beta testlerini Play store desteklediği için Android cihazlar ile test yapabileceğiz. Final sürüm iki platformda da yayınlanacak 🙂

Bu noktada, oyunun yakında yayınlayacağım alfa testlerinde kimler yer almak ister ? Yorumlarda yazarsanız sevinirim 🙂

BeğenFavori PaylaşYorum yap
Önceki yorumları gör 11 / 19

Sheep it Render Farm ile ücretsiz render alın!

(Sitedeki alınmış örnek renderlardan bir görüntü)

Selamlar Teknoseyirciler,

Bugün sizlere bir zaman evvel keşfettiğim ve çok güzel bulduğum bir sistemden bahsedeceğim. Bazılarınızın bildiği üzere şu sıralar bir "Room Escape" tarzı oyun üzerinde çalışıyorum ki 3d çizimler ve renderlerı içeriyor. Bu sahneleri Blenderda çizmekle beraber bazı sahnelerde benim laptop'ımda zaman zaman 1.5 saat civarında renderlayabiliyorum. Ki bazı yerlerde 10-15 snlik ve her karede 30 fps lik bir animasyon koyma düşüncem var ki bu hesapla 1.5*30*15=675 saat sadece bir yerde araya girecek bir cutscene için, bunlardan bir kaç tane olması ve zaten oyunda yaklaşık 500 civarıda ayrı kare olması nedeniyle oyunun bir noktasına kadar geliştirdikten sonra  bu işi benim makinemin kaldırmasının imkansıza yakın olduğunu fark etmek zor olmadı. Bu bağlamda üç beş kuruşa render farm var mı diye ararken blender gibi ücretsiz ve açık kaynak (open source) dağıtılan bir yazılımın büyük ve ponçik komünitesinin bu konuyu da düşünerek bir sistem yaptıklarını keşfettim. Bu sistemin adı "SheepIt Render Farm".

Sistemin Yapısı

Bu site sizlerin ücretsiz olarak render almanızı sağlıyor. Şimdiye kadar 50 milyondan fazla render alınan bu sistemde ağdaki makinelere render aldırılıyor. Bu makineler ise yine sizler gibi benim gibi komünitedeki insanlar. Ve sizde aynı şekilde sheep it client'ını kurup render almak için bilgisayarınızı açık bırakabiliyorsunuz. Tabi bu durumda "kardeş o zaman ben hep buradan aldırırım renderı neden bende client'ı alayım" diyebilirsiniz.Bu durumda puanlama sistemi ile engelleniyor. Ki özgür bir komünite olduğu için yine projenizi yükleyebiliyorsunuz ama projeler sistem tarafından kullanıcıların puanlarına göre sıraya konuluyor ve sizden daha yüksek puanlı birileri proje yüklediği takdirde sıra bekleseniz bile önünüze geçip renderı alınıyor. Yine de uzun süre de olsa bekleyip yine render aldırabiliyorsunuz yasaklar yok yani. Gayet adaletli ve paylaşımcı bir sistem kurulmuş.

Ödül Mekanizması

Sistemde puan kazanmaksa render client'ını cihazınıza kurup açık bırakarak gerçekleşiyor. Tıpki bitcoin client'ı gibi. Ancak ciddi bir farkla, burada güçsüz makinada düşük puanlar kazanmak gibi bir dezavantaj yok. Birkaç saat render alınca sistem otomatik olarak size puan ödülleri veriyor, achievement şeklinde ki örneğin ben gece yatarken açık bırakırsam sabaha "10 saat açık bıraktın kardeş sana 10 bin puan ödül yolladık" şeklinde bir ödül geliyor onun yanında render aldığım frame başına da puan geliyor tabiki. Bunun  yanında siz render aldırdığınızda ise puan kaybediyorsunuz. Yani sürekli render almaya abanırsanızda - puanlara düşerek sıranın sonunu boylayabilirsiniz.

Güvenlik

"Peki güvenli mi aga ? " diyenleri duyar gibiyim. Şöyle ki, siz bir render alıyorsanız aldığınız render clientta küçük bir resim olarak görülüyor. Kurallarda çıplaklık, yasa dışı içerik gibi şeylerin renderının yasak olduğu söyleniyor. Bunun yanında hoşunuza gitmeyen bir şeyin renderı alındıysa o renderı iptal edip kullanıcıyı engelleyebiliyorsunuz. Ayrıca client renderer'ını her açılışta indiriyor ve sisteminizi test ediyor, yanlış hatırlamıyorsam. Beraberinde sistem distributed network şeklinde olduğundan örneğin difuse layerını biri renderlarken modelinizin reflection layerını başkası renderlayabiliyor ancak verilerin şifreli aktarılıp aktarılmadığına dair bir şey bulamadım.

Kısacası, ücretsiz hızlı render almak isteyen ve Blender kullanan arkadaşların sheep it i deneyip aramıza katılmasını öneririm. Sıkça sorulan sorular için buraya tıklayın.

Siteye erişmek için:
https://www.sheepit-renderfarm.com/

 

BeğenFavori PaylaşYorum yap

Blender'da saydam arkaplan ile render almak

Selamlar, Blender ile alakalı bugün öğrendiğim bir şeyi sizlerle paylaşmak istiyorum. Belki birinin işine yarar. Bir süredir geliştirdiğim bir oyunda "Unblock me" puzzle'ının mekaniklerini mini game olarak kullanmaya karar vermiştim, bu bağlamda benim oyunumda bloklar konsepte bağlı olarak metalikti ve altın külçeleri gibi gözükmesi gerekiyordu, stok vektör sitelerine baktığımda ücretsiz olarak "metal külçe" tarzı üstten bakış olarak çizilmiş bir şey bulamadım, bende Blender kullanarak kendim yapmaya karar verdim.

Bunun sonucunda, textures.com'dan birkaç texture kullanarak modellediğim basit külçe modelini kaplayıp renderladım. Ancak arkaplanı remove etmeme rağmen siyah görünüyordu. Sonrasında biraz araştırma yaparak arkaplanı transparan yapıp sadece render alınan objeyi gösterebileceğimiz bir seçenek olduğunu öğrendim.

Eğer arkaplanı transparan renderlar almak istiyorsanız; Resimlerdeki adımları izleyip sarılı olan sonuçtaki gibi saydam arkaplan elde edebilirsiniz,iyi çalışmalar 😉

Adım 1- Render->Output yolunu izliyoruz.

Adım 2- Render->Filmic yolunu izliyoruz.

Sonuç:

Edit: Sevgili wordpress beyciğim resim yüklendiğinde transparan yerleri beyaz yapmış, ancak beyaz kısımlar aslında transparan oluyor çıktı aldığınızda, o kısımlara bakarak mukayese edebilirsiniz.
#HaberinizOlsun #Blender #gamedevelopment #OyunGeliştirme

BeğenFavori PaylaşYorum yap