oyun nasıl yapılır etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
oyun nasıl yapılır etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

10 Mayıs 2012 Perşembe

Yeni Başlayanlar İçin Oyun Programlama

http://cdn.int.xboxgaming.co.za/images/games/1397/7045.jpg


Merhaba Beyler,

Eğer bu başlığıa tesadüfen gelmediyseniz size anlatmak istediklerim var.Oyun yapmayı hiç bilmiyor,az biliyor,hevesli veya "bakıp çıkıcı"ysan sana hemen özet geçeyim.

Oyunlar "oyun motoru" denilen programlarda yapılırlar.Ek olarak fizik motoru,grafik motoru kullanılabilir(ama sene 2012 olduğu için artık oyun motorlarının içinde kendi fizik ve grafik motorları mevcut.).Eğer oyun motorları nasıl yapılır dersen,boşver.Çünkü eğer bu yazıyı okumaya devam edicek kadar "yeni" isen,2 boyutlu çok çok basit bir oyun motoru yazmana en az 3 sene daha var demektir.

23 Mart 2012 Cuma

Oyun Yapım-Yapımı En Pahalı 10 Oyun

 http://media.gtanet.com/images/4310-gta-iv-artwork.jpg


10. Killzone 2 (45 milyon Dolar)

Bilirsiniz yapım süresi uzadıkça maliyette artar. Killzone 2′nin durumu da aslında bundan ibaret. 20 milyon $ bütçeyle yapımına başlanan oyun için harcanan para, dört yıl içinde 40 milyon doları bulmuş.
9. Final Fantasy XII(48 milyon Dolar)

Playstation 2 için 2006′da piyasaya çıkan Final Fantasy XII, Japonya’dan çıkan en bütçeli oyunlardan biri olsa da, bu sene piyasaya çıkan XII’ün bütçesinin %50 daha fazla olduğu söyleniyor ancak resmi bir bilgi yok.
8. LA Noire (50 Milyon Dolar)

1 Mart 2012 Perşembe

Flash AS3-Motion Blur Efekti

Bir cismin yaptığı hareket ile yapay olarak blur(bulanıklık) etkisi alması, animasyonlarda sık kullanılan bir -gerçekçi hızlı obje görüntüsü- elde etme yöntemidir. Bu efekti oluşturmada temel mantık cismin blur değerinin hareket ivmesiyle orantılandırılmasıdır. Böylelikle cisim belirli bir zamanda ne kadar hızlanırsa yani ivmesi ne ise blur değeri de onu referans alarak oranlanır. Önce anlatmaya çalıştığımız şeyle ilgili örnekleri görelim;

http://www.flashdersleri.net/wp-content/uploads/2010/01/blur1.swf
http://www.flashdersleri.net/wp-content/uploads/2010/01/blur2.swf




Örneklerde de görüldüğü gibi cisimler ne kadar hızlanırlarsa o kadar motion blur etkisi alıyor ve daha gerçekçi animasyonlar oluşuyor ( Bu iki örnekte amacı daha iyi belirtmek için blur değerleri biraz abartılı verilmiş olabilir. Siz bunu ivme değerini küçülterek değiştirebilirsiniz.)
İlk örneği yapabilmek için sahneye “a_mc” isminde bir araç klibi koyuyoruz. Kullandığımız kodlar ise aynı satırdaki açıklamalarıyla birlikte şunlardır:



var blur = new BlurFilter();/*yeni bir blur filtresi oluşturduk*/
var drc:Number/*ivme değeri*/
var hdf:uint=470/*aracın ulaşacağı hedef x konumu*/
var ilk:Number=a_mc.x/*işlemi tekrarlamak için ilk konum değeri*/
 
stage.addEventListener(MouseEvent.MOUSE_UP,git)/*sahneye tıklama fonksiyonu çağırıldı*/
function git(e:MouseEvent){
a_mc.x=ilk/*ilk durumda a_mc'yi ilk konuma koyduk ki her seferinde buradan başlasın*/
a_mc.addEventListener(Event.ENTER_FRAME,ef)/*sürekli çalışacak fonksiyonu çağırıyoruz*/
}
function ef(e:Event){
drc=(hdf-a_mc.x)/10/*ivme, hedefle mevcut konum arasındaki uzaklıkla orantılı*/
a_mc.x +=drc/*her framede ivme değeri kadar x konum artışı*/
blur.blurX =drc*2/*x ekseni blur değeri ivme ile orantılı*/
blur.blurY =0/*blur y olmasın*/
a_mc.filters = [blur];/*a_mc'ye blur filtresi atanıyor*/
}
 
 

21 Ocak 2012 Cumartesi

Ders-10 Preloader[Ön Yükleyici] Yapımı

Bu dersimizde, yapacagimiz çalismalara,örneklere veya oyunlara nasil "yüklenme miktarini" gösterebilecegimizi ögrenecegiz.Tabi öncelikle “scene” konusunu ögrenmemiz gerekir gerekir.

Scene’nin Türkçesi “sahne”demektir.Eger istersek biz yapacagimiz çalismayi(oyunu), birkaç sahneden olusturabiliriz.Örnegin, oyunumuzun yüklenme miktarini gösteren bir sahne,oyunun menüsünün oldugu bir sahne,oyunun kendisinin oldugu bir sahne ve oyunun bitimi esnasinda gösterilecek olan bir sahne olarak, toplam 4 sahneden olusturabiliriz oyunlarimizi. Öncelikle sahne(scene) bölümüne nasil ulasacagimizi belirteyim:Shift+F2” tuslarina basarak veya “Window-Other Panels-Scene”ye tiklayarak scene bölümüne ulasip çalismalarimizdaki sahneleri görebiliriz.Asagidaki resmi inceleyin.



Ders-9 Oyunumuza Mouse Kontrolü Ekliyelim

Bu dersimizde de, bir önceki dersteki örnegi degistirecegiz.Topun kontrolünü bu sefer fareyle degil de, klavye ile saglayacagiz.Böylece, klavyeyle kontrol etmeyi nasil yapacagimizi ögrenmis olacagiz.Simdi öncelikle eski kodlarimizdaki fareyle ilgili kodlari silelim(asagidaki kirmizi yaziyla yazilmis kisimlari).

stage.addEventListener(Event.ENTER_FRAME,oyun);

Mouse.hide();

function oyun(event:Event):void{

nokta.x=mouseX;
nokta.y=mouseY;


if(nokta.hitTestObject(ust_duvar) || nokta.hitTestObject(alt_duvar)){
nokta.x=13;
nokta.y=177;
}
}




Sonra asagidaki mavi yaziyla yazilmis yeni kodlari yazin.

Ders-8 İlk Oyunumuzu Yapalım


Simdi kisaca bir oyun denemesi yapalim.Denememiz söyle olacak:Bizim bir tane kirmizi renkli, Instance Name’si “nokta” olan bir tane dairemiz olacak.Ve biz, fare yardimiyla bu topu hareket ettirebilecegiz.2 tane de siyah renkli duvarimiz olacak (insance name’leri “ust_duvar” ve “alt_duvar” olan) ve bu duvarlarin arasinda bir yol olacak.Biz, kirmizi topla bu yoldan geçerken, eger duvarlardan birine temas edersek, topumuz tekrar ilk basladigi koordinatlara geri gidecek ve tekrar bastan baslamak zorunda kalacagiz.Bu çalismanin bitmis halinin "resmini",“.fla” dosyasinin download linkini ve "online denemek" isteyenler için gerekli adresi asagiya ekledim.

Örnegin bitmis hali



Online deneyin
http://megaswf.com/serve/1956083

Ders-7 Flash'ta Ses Kullanımı

Bu dersimizde de, oyunlarda sikça kullanabileceginiz ses ekleme olayini anlatacagim.Yani Flash CS4'de nasil ses eklenir? Bu soruya cevap verecegim.


Flash CS4'de Sesler



20 Ocak 2012 Cuma

Ders-6 AS3 Değişkenler

Degiskenler


Nitekim programlamada ve haliyle oyun programlamasinda da, degisken vazgeçilmez bir unsurdur. Simdi, kisaca Action Script’teki degiskenler konusuna bir göz atalim.

Degiskenlerimizin yapisi :var degiskenin_ismi: degiskenin_tipi= degiskenin degeri” seklindedir.Degiskenimizi tanimlarken bu kalibi kullaniriz.Bu konuya baslamadan önce, size az sonra gösterecegim örnekleri çalistirdiginiz zaman, sonuçlar “OUTPUT” penceresinde gösterilecektir.Bu nedenle output penceresini öncelikle açmak gerekir.Bunun için, “F2” tusunu veya “Window-Output” kismini tiklamaniz gerekir.Simdi degisken tiplerine bir bakalim:

int

Bu degisken tipi,"pozitif (+)","negatif (-)" ve "0" rakamlari için kullanilir.Ancak ondalik degere sahip rakamlar için kullanilamaz.Kullanilirlarsa ondalik degerini otomatik olarak siler.


Örnek: Actions panelini açin ve asagidaki kodlari yazin:

var sayi:int= 4.3;
trace(sayi);


Ardindan “Crtl+Enter” yapinca sonuç olarak “4” çikacaktir.Noktadan sonraki 3 rakami otomatik olarak silinmistir. “trace ();fonksiyonun görevi,içine yazilan degerleri output penceresine yansitmaktir.






uint

Bu degisken tipi,sadece “pozitif (+)” ve “0” rakamlari için kullanilir.”Negatif (-)” rakamlar kullanilamaz.Kullanilirlarsa hata verir.Ayni zamanda ondalik degere sahip rakamlar için kullanilamaz.Kullanilirlarsa ondalik degerini “int” de oldugu gibi otomatik olarak siler.

Örnek: Actions panelini açin ve asagidaki kodlari yazin:

var sayi:uint= 4.3;
trace(sayi);


Ardindan “Crtl+Enter” yapinca sonuç olarak “4” çikacaktir.Noktadan sonraki 3 rakami otomatik olarak silinmistir. Ardindan 4.3 degerini silin ve yerine -5 yazin ve tekrar çalistirin. -5 sonucunu vermedigini görüceksiniz.


Number

Bu degisken tipi tüm rakamlar için kullanilabilir (pozitif (+),negatif(-),ondalikli ve 0).

Örnek: Actions panelini açin ve asagidaki kodlari yazin:

var sayi:Number= 4.3;
trace(sayi);


Ardindan “Crtl+Enter” yapinca sonuç olarak “4.3” çikacaktir.Ayni sekilde bütün pozitif ve negatif rakamlarini deneyebilirsiniz.Istediginiz sonucu verdigini göreceksiniz.




[size=large]String[/size]

Bu degisken tipi: Yazilarin ve harflerin kullanilmasi gerektiginde kullanilir.

Örnek: Actions panelini açin ve asagidaki kodlari yazin:

var yazi:String="merhaba oyun yapimcilari";
trace(yazi);


Ardindan “Crtl+Enter” yapinca sonuç olarak OUTPUT penceresinde “merhaba oyun yapimcilari” yazisinin yazdigini göreceksiniz.




Boolean

Bu degisken oyunlarin programlanmasinda sikça kullanilir.Bu degisken tipi 0,1 mantiksal degere göre deger alir.Yani toplam 2 deger alabilir.Bunlardan biri “true” digeri de “false”dir.

Örnek: Actions panelini açin ve asagidaki kodlari yazin:


var durum:Boolean=true;

if(durum){
trace("degiskenin degeri true'dur");

}else if(durum==false){
trace("degiskenin degeri false'dir");
}




Ardindan “Crtl+Enter” yapinca sonuç olarak OUTPUT penceresinde “degiskenin degeri true'dur” yazisinin oldugunu göreceksiniz.Sonra durum degiskenin degerini "false" yapin ve tekrar çalistirin.Bu sefer de output penceresinde “degiskenin degeri false'dir” yazisinin yazdigini göreceksiniz.



Array

Türkçesi Diziler’dir.Birçok degisken tanimlamamiz gereken bir durum oldugunda,bu kargasayi önlemek için, dizileri kullanabiliriz.Öncelikle dizi’yi su sekilde tanimlariz:
var degiskenin_ismi: Array=new Array(); ”. Bu dizimiz içine sonsuz miktarda deger alabilir.Eger dizi’yi sinirli miktarda deger almasini istiyorsak bunu, “ new Array(5); ” kismindaki parantezin içine alacagi deger sayisini belirtebiliriz.Örnegin ben 6 dedim.Yanlis duymadiginiz 6 dedim. “Ama bunun içinde 5 yaziyor?” diyorsaniz eger,size cevabim su olacaktir: “Dizilerde deger alimi 0’dan baslar (0,1,2,3,4,5 = toplam 6 tane).O nedenle parantezin içine yazilan sayi daima gerçekte bir fazlasidir.100 yazilmissa aslinda 101’dir gibi.” Simdi bu dizilerin ne ise yaradigini size karsilastirmali olarak göstereyim, örneklendireyim:

Örnegin bize, 5 ve 5’in katlarini barindiran, toplam 100 tane degisken olsun,her bir degisken, 5’in katlarindan olan bir sayiyi barindirsin ve bunlara istedigimiz zaman ulasip,içerigindeki rakamlari degistirebilelim.Bunu nasil yapabiliriz? Bunu 2 sekilde yapabiliriz:

1-)100 tane ayri ayri degiskenler tanimlayip, içerigine 5 ve 5’in katlari olan bir rakam degeri vererek yapabiliriz.

var ornek_1:int=5;
var ornek_2:int=10;
var ornek_3:int=15;
var ornek_4:int=20;
var ornek_5:int=25;
var ornek_6:int=30;
var ornek_7:int=35;
var ornek_8:int=40;
var ornek_9:int=45;
var ornek_10:int=50;
var ornek_11:int=55;
var ornek_12:int=60;
var ornek_13:int=65;
var ornek_14:int=70;
.
.
.

var ornek_99:int=495;
var ornek_100:int=500;


trace(ornek_9); // Sonuç 45 çikar;
trace(ornek_99); // Sonuç 495 çikar;



Böyle böyle toplam 100 tane degisken tanimlamamiz gerekirdi.Bu da, “fazladan emek+zaman kaybi ve kod karmasasi” demektir.Ya bizden 5’in katlari olarak 100 tane rakam degil de, 6.000 tane rakam istenseydi? Bu mantikla 6.000 tane degisken tanimlamak gerekecekti. :D


2-) Oysa biz, bir tane dizi degiskeni belirleyerek, ve bunu for() döngüsüyle destekleyerek, o kadar kod karmasasindan kurtulabiliriz:

var ornek:Array=new Array(99);


for(var i:uint=0;i<=100;i++){

ornek=i*5;
}


trace(ornek[9]); //Sonuç 45 çikar;
trace(ornek[99]); // Sonuç 495 çikar;



Yukaridaki kodla istegimizi gerçeklestiririz. 6.000 tane istenmesi durumunda,yukaridaki for döngüsündeki “i<=100” kodunu “i<=6000” seklinde degistirerek bu istegi gerçeklestirmis olurduk.


Ders-5 Nesneye Yönelik AS3


Hareket


yesil_kutu.x=… Bu kodla nesnenin x düzlemdeki (yatay) koordinatidir
yesil_kutu.y=… Bu kodla nesnenin y düzlemdeki (dikey) koordinatidir

Örnek: Önceki dersimizdeki gibi bir sey çizin ve instance name’sini de yazmayi unutmayin. Ben instance name’sinin “yesil_kutu” oldugunu farz ediyorum.Actions panelini açin (kod yazdigimiz bölüm).Bir önceki derste yazdigimiz kodlarin aynisini yazin ve “Crtl+Enter” diyerek örnegi görebilirsiniz.Ayni sekilde “yesil_kutu.x++;” kodunun asagisina “yesil_kutu.y++” yazarak da deneyebilirsiniz.Yani söyle olabilir:


function hareket(event:Event):void{

yesil_kutu.x++;
yesil_kutu.y++;
}


--> Yukaridaki kodu yazdigimiz zaman,nesnemizin asagi ve sag tarafa dogru ilerledigini görürsünüz.


Ders-4 AS3'e Giriş


 ActionScript 3.0 'a Giriş
Biz bir nesneyi(Movie Clip'i) programlarken o nesnelerin "instance name" bölümüne bir isim vermemiz gerekir.Bu ismi vermek için sag taraftaki Properties panelindeki "Instance Name" kutucuguna bir isim yazabilirsiniz.Ben "yesil_kutu" ismini yazdim.



Ders-3 Flash'a başlıyoruz


Ders-2 Flash ile İlgili Sık Sorulan Sorular

Program çok yaygın kullanıldığı için doğru bilgiye ulaşmak zor.Şimdi Flash ile ilgili merak edilen sorulara tek tek cevap vericeğim.

1-Flash 3d destekler mi?
Doğrudan olmasada evet,flash'a ekliyeceğiniz eklentilerle 3d uygulamalar yapabilirsiniz ama kalitesi tartışılır.
2-3d sağlayan eklentiler nelerdir?
away3d,flare3d,molehill,papervision3d,sandy3d olarak sayılabilir.
3-Flash ile online oyun yapılabilir mi?
Evet PHP ile flash bir servera bağlanabilir ama hızı inanılmaz düşük olur.

Ders-1 Flash Nedir?

Herşeyden önce birşeye açıklık getirmeliyiz.Flash nedir?Flash kelimesini çok sık duyduğumuz için bir anlam karmaşası vardır.Flash,oyun,video,animasyon,çizim yapımına yarıyan bir görselleştirme yazılımıdır.Görsel başarısı nedeniyle hem tasarımcılar hemde yazılımcılar tarafından aktif olarak kullanılmaktadır.En son sürümü şu an itibari ile Flash Professional CS5 dir.Program ActionScript dilini kullanır.Genel anlamda basit bir dildir.En son sürümü ActionScript 3.0 dır.



Yukarıda ise Flashtan bir görüntü mevcuttur.