Istanbul Üniversitesi Bilfest 18

Selamlar,

28 Şubat 2018’de İstanbul Üniveristesinde Bilfest18 etkinliği kapsamında, yazdığım bir oyun projesini hep beraber Code Review ettik. Kullanılan teknolojiler Angular 5, SignalR 2.0 , Azure, Asp.Net Core, Html 5  ve Jquery idi.

Çok keyifli geçen bu inceleme esnasında, yaşadığım zorlukları adım adım inceledik. Öncelikle .Net Core üzerinde DBContext’imizi ve WebApi servislerimizi inceledik. Daha sonra Angular5 bir web uygalaması üzerinden, oynayacağımız oyunların kodlarını hep beraber inceledik. Angular üzerinde signalR kurulumu, bizi karşılayan menu, mobil sayfa ile web sayfası üzerindeki iletişim ve SignalR ile olan belli bir client’a göre iletişim, en başta baktığımız konular arasındadır.

Örnek SignalR ile bir client’a QrBarcode’u gönderme:

Mobile cihaz ile web application’ın birbiri ile iletişimi için bu proje kapsamında bir QrBarcode oluşturulmuştur. .Net Core üzerinde bu konu, detaylıca incelenmiştir. Ne zaman silinmesi gerektiği, nasıl bir servis ile çekilmesi gerektiği ve dönen stream bir sonuçtan nasıl image’in oluşturulacağı yine bu konular arasındandır. .Net Core üzerinde image işlemleri, yine bu esnada detaylıca incelenmiştir.

Oyunun içinde kullanılan kartların, var olan bir DB’den random olarak seçilmesi, eşleniğin oluşturulması ve performans amaçlı memory’de saklanış şekli, karşılaşılan bir diğer zorluklardır.

Örnek Deep Copy:

Daha sonra kartların ve oyun datalarının çekildiği .Net Core WebApi servisleri incelenmiştir.

Örnek WebApi ile tüm kategorilerin dönüldüğü kod örneği:

Angular 5 üzerinde CustomFilter ile kartların belli bir düzende sıralanması, CustomDirective ile de bir web sayfasının arka temasının seçilen oyuna göre dinamik değişmesi, Angular 5 tarafında incelenen birkaç konudan biridir.

Hafıza oyununda seçilen 2 kartın aynı olup olmadığının anlaşılması ve eşleşme sonucunun, mobile uygulamaya bildirilmesi, C# .Net Core tarafında incelenen konulardan birkaçıdır.

Mobile sayfaya bildirme: Bildirme sonucu olarak aşağıdaki sonuçlar geri dönülmektedir :

  • Başarılı yani kartlar eşleşdi.
  • Başarısız yani kartlar eşleşmedi.
  • Kartların hepsi açıldı. Oyunun yeniden başlaması gerekmektedir.(isReset=true)

Şeklinde bildirimler yapılmaktadır.

Oyunda performansı sağlamak için, aynı seçim ve dizileme sahip Random seçilen kart listesi, hem web hem mobile için ayrı ayrı çekilmez. Static dictionary bir List’de tutulurlar. İlgili liste 2 sayfa için de çekilince, temizlenir. Key olarak, tekil olan client’ın signalR connectionID’si kullanılmaktadır.

Son olarak oyunlardan biri olan savaş uçağı oyununda, tanklardan kaçıp, ateş eden hareket dinamikleri ve oyun motoru yüzeysel olarak incelenmiştir. Ortaya çıkan onca formül ile, programlamada matematiğin yeri bir kere daha vurgulanmıştır.

Örnek kod:

1 saat planlanan ancak 3 saat süren, ister sorulan sorular, ister ise seminere olan muhteşem katkılarından dolayı tüm katılımcıları kutlar, teker teker teşekkür ederim.

Geldik bir seminerin daha sonuna, yeni bir seminerde görüşmek üzere hoşçakalın.

 

Herkes Görsün:

Bunlar da hoşunuza gidebilir...

2 Cevaplar

  1. ahmet dedi ki:

    güzel yazı

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.