Anasayfa Eğitseller Oyun Yapımı Blitz3D İlk Oyun

Blitz3D İlk Oyun PDF Yazdır e-Posta
Kullanıcı Değerlendirmesi: / 2
ZayıfEn iyi 
Eğitseller - Oyun Yapımı
Pazar, 18 Mart 2007 20:07
Artık şu oyun yapımı işine yavaş yavaş girelim değil mi :D.Şimdi oyunu yapmaya başlamadan önce size bir tane tavsiyede bulunacam.Arkadaşlar,oyun yapmaya başlamadan önce mutlaka oyunu nasıl yapacağınıza dair bilgileri, düşünceleri, öncelikle kağıt üzerine dökün.Yani oyunu yapmaya başlamadan önce, nasıl yapacağınıza dair planlar yapın.Bu size oyunu yapmaya başladıktan sonra kısa sürede oyunu bitirmenizde yardımcı olur.Bunu bir inşaat’a benzetebilirsiniz.Eğer biz yapacağımız inşaata dair planlar çizmezsek,inşaat yapımında bir çok sorunlar yaşarız,hatta o inşaatı bitiremeyiz.Bu nedenle oyununuzu yapmaya başlamadan önce mutlaka planlar yapın.Her neyse şimdi asıl konumuza geçelim.Öncelikle oyunumuzda kullanacağımız “resimleri,müzikleri” aşağıdaki linkten indirin.
 
 
Yapacağımız oyunun görüntüsü;
 
 
Gereken şeyleri indirdikten sonra, sıkıştırılmış(winrar) dosyasının içindeki her şeyi(resimleri,müzikleri) bilgisayarın “C” bölümüne atın.Eğer oyunu yapmadan önce, nasıl bir şey olduğunu merak ediyorsanız, aşağıdaki linkten oyunun yapılmış halini indirebilirsiniz.
 
 
Resimleri ve sesleri “c” bölümüne attığınıza göre, şimdi oyunumuzu yapmaya başlayalım.Öncelikle oyunumuzun nasıl olacağını bir düşünelim.Oyunumuz basit bir oyun olacak.30 saniye boyunca aşağıdan yukarıya doğru elmalar geçecek, ve biz elmaları vurmak için Mouse kullanıcaz.Vurunca da 10’ar puan alacaz.Şimdi biz bu oyunu kodlarla nasıl nasıl yapacağımıza karar verelim.Öncelikle oyunumuzun mutlaka bir tane ana döngüsü olmalı.Bu ana döngünün içinde, elmamızın haraketini ve vurunca da puanlamayı hesaplayacağız.Bu ana döngüyü bir fonksiyon içinde oluşturabiliriz(anadöngü fonk.).Elmayı vurunca puanlamayı ekranda gösterecek veya hesaplayacak kodu da bir fonksiyonun içine yazacağız(yazii fonk.).Elmayı vurduğunuzu bilgisayara algılatmak içinde çarpışmaları ayarlamamız gerekecek.Ve bu çarpışmalar sonucunda gerçekleşmesini istediğimiz olayları da(puanın artması gibi) hesaplayan bir tane fonksiyon yapacaz(carpisma fonk.).Ve son olarak oyunumuzun bitikten sonra neler olmasını istediğimizi sağlayan bir bitiş fonsiyonu yapacaz(bitis fonk.).Yani kısacası oyunumuzun toplam 4 tane fonksiyonu olacak.Ve oyunu biz bu 4 fonksiyonun içinde oluşturacaz.(anadongu,yazii,carpisma,bitis)….

Şimdi oyunumuzun kodlarını yazmaya başlayalım.Not=Aşağıdaki oyun kodların arasında sizlere anlatmadığımız kodlar da vardır.Bu kodların ne işe yaradığını yerinde açıklayacağız.
 

Graphics3D 900,600,16,2 ;ekranımızı ayarladık
SetBuffer BackBuffer()

Global elma=LoadImage ("c://elma.png") ;elma resmimizi yükledik
Global arkaplan=LoadImage("c://arkaplan.bmp");arkaplan resmimizi yükledik
Global hedef=LoadImage("c://hedef.png") ;hedef planımızı yükledik

Global ates=LoadSound("c://ates.wav");Mouse bastığımızda, çıkması gereken sesi yükledik
Global muzik=LoadSound("c://muzik.wav");arkaplanda sürekli çalmasını istediğimiz sesi yükledik
LoopSound muzik ;sürekli müziği çalmasını sağladık
PlaySound muzik ;müziği çalmaya başladık.

Global yazi=LoadFont("Arial",30,34,34) ;buradaki loadfont ile yazı tipimizi ayarladık.(kalınlığını vs.)
Global x_poz=0;elmamızın başlangıç x pozisyonunu belirttik
Global y_poz=0;elmamızın başlangıç y pozisyonunu belirttik
Global puan=0;puanımızın başlangıç puanını belirttik
Global oyun=MilliSecs() ;buradaki MilliSecs(),saniyeyi ifade eder.ve oyun başlar başlamaz saniye işlemeye başlar

HidePointer() ;buradaki HidePointer()’in görevi,Mousun simgesini saklamaktır.
anadongu() ;oyunumuzu başlattık (anadongu fonksiyonumuzu çağırdık)
bitis() ;oyunumuzu bitirdik. (bitiş fonksiyonumuzu çağırdık)





Function yazii() ;yazii() fonksiyonumuzu oluşturmaya başladık
SetFont yazi ;yazının, yukarda belirlediğimiz tipte yazmasını sölemiş olduk
Color 0,255,0 ;yazımızın rengini belirledik

Text 0,0, "PUAN = "+puan ;ekranın x=0,y=0 koordinatlarına, puanı yazmasını sağladık
End Function ;yazii fonk. bitirdik



Function anadongu();asıl oyun fonksiyonumuzu oluşturmaya başladık

While MilliSecs()<oyun+30000 ;döngünün 30 saniye süresince, devam etmesini sağladık
x_poz= Rnd (0,900) ;her döngü süresince elmanın x koordinatını, 0 ile 900 koordinatlarında rastgele seçmesini sağladık.Çünkü elma her seferinde aynı yerden çıksa, hiç hoş olmaz değil mi!
y_poz=768 ;elmanın y koordinatını belirledik.

While (y_poz>-50) ;elmanın y koordinatı -50’den büyükse, döngünün sürekli devam etmesini sağladık.Çünkü elma -50’den küçük olunca tepeye çıkmış olacaktır.Ve biz elmamızı başlangıç koordinatına getirmek için -50’den küçük olduğunda döngüden çıkmasını söyledik.
yazii() ;ekrana sürekli puan durumumuzu göstermesini sağlayan fonk. Çağırdık.
Flip
Cls
DrawImage arkaplan,0,0 ;ekrana hafızaya yüklediğimiz arkaplan resmimizi, x=0,y=0 koordinatlarına çizdirdik
DrawImage elma,x_poz,y_poz ;ekrana hafızaya yüklediğimiz elma resmimizi belirlenen koordinatlarına çizdirdik
y_poz=y_poz-10 ;her döngü seferinde elmanın y koordinatını -10’ar azaltmasını söledik.Böylece elmamız her döngü seferinde yukarı çıkar,aynı zamanda 768’den 10 çıkarır böylece her seferinde,10’ar azalarak devam eder,ta ki -50 oluncaya kadar.
carpisma() ;elmayı vurmamızı hesaplayan,ayarlayan, çarpışma fonksiyonunu çağırdık.
Wend
Wend


End Function ;ana döngümüzü bitirdik




Function carpisma() ;çarpışma fonksiyonumuzu oluşturmaya başladık
DrawImage hedef,MouseX(),MouseY() ;hafızaya yüklediğimiz hedef resmini, fare koordinatlarına çizmesini(göstermesini)sağladık
If MouseHit(1) And ImagesCollide (elma,x_poz,y_poz,0,hedef,MouseX(),MouseY(),0) Then ;farenin sol tuşu tıklandığında ve farenin koordinatlarının elmanın koordinatlarına eşit olduğunda aşağıdaki kodları devreye sokmasını sağladık.
PlaySound ates ;hafızaya yüklediğimiz ates sesini çalmasını sağladık
puan=puan+10 ;puanı 10’ar artırmasını sağladık
y_poz=-49 ;elmanın y koordinatını -49 yaptık.Böylece döngüden çıkarak tekrar yani bir koordinat rastgele seçilecek ve farklı yerden çıkmasını sağladık
End If
End Function ;çarpışma fonksiyonumuzu bitirdik.



Function bitis() ;bitiş fonksiyonumuzu oluşturmaya başladık
FreeSound muzik ;oyun bittiğinde,yani 30 sn.’nin sonrasında ana döngüden çıkıldığında müzik sesini hafızadan temizlemesini sağladık
FreeSound ates ;ates sesinin temizlemesini sağladık
Locate 250,300 ;ekrana x=250,y=300 koordinatlarına yazı yazacağımızı belirttik
Color 255,0,0 ;yazacağımız yazının rengini ayarladık.(kırmızı)
Print "SÜRE BITTI" ;yazımızı yazdık
Text 400,350,"Puaniniz = "+puan ;yine ekranın x=400,y=350 koordinatlarına puanımızı yazmasını sağladık.
WaitKey() ;klavyeden herhangi bir tuşa basılana kadar beklemesini sağladık
EndGraphics ;herhangi bir tuşa basılması durumunda oyunumuzu bitirdik.
End
End Function
;bitis fonksiyonumuzu bitirdik.

Şimdi oyunu çalıştırın ve sonuçları görün. :D
Evet arkadaşlar umarım sizlere bu zamana kadar bişeyler kazandırabilmişimdir.Yukardaki oyunu istediğiniz gibi geliştirebilirsiniz.Bu size kalmış bişey(örneğin; menü bölümü veya zorluk seviyesi bölümü ekleyebilirsiniz.Veya elmaların sadece aşağıdan değil, soldan ve sağdan gelmesini de ayarlayabilirsiniz.) Anlamadığınız bir yer olursa bana sorabilirsiniz.Aynı zamanda,daha blitz3D dersleri hazırlamicam.Yani bu son dersimizdi.Benim anlatabileceklerim bu kadar acıkçası,gerisi size kalmış.Hala öğrenmeniz gereken çok şey var.Biz sadece yüzeysel olarak anlattık.Size tavsiyem o motorun içindeki eğitseller bölümünü açarak anlatmadığımız yerleri öğrenmenizdir.Diğer bir tavsiyemde 3d’ye geçmeden önce,(bence) bu 2D olayını yalayıp yutun,ondan sonra 3D olayına girin…Belki ilerde online(internet üzerinden) başka kişilerle oynanabilen oyunların da nasıl yapıldığını anlatırım.Ama şu anlık bende bilmiyorum nasıl yapıldığını :D . Hadi kendinize iyi bakın. Kalın sağlıcakla…

MUSTAFA BAYRAKTAR
  Yorum yok.
Yorum ekle. (0 yorum)

 

OyunGelistirici.net - Türk Oyun Yapımcılarının Buluşma Noktası

Bu sitede yazılan tüm yazıların hakları yazarlarına aittir. İzin alınmadan yayınlanamaz.

Bu sitede Firefox kullanmanız önerilir. En az 1024 x 768 masaüstü çözünürlüğü tavsiye edilir.