20 Ağustos 2012 Pazartesi

Flash SWF Şifreleme

Hepimizin korkulu rüyası sizin yaptığınız swf dosyasının korsan bir şekilde çoğaltılması içerisindeki link veya grafik lerin değiştirilerek tekrar yayına verilmesidir.

Bunun için kullanılan programın adı swf decomplier dir. Swf dosyalarının fla uzantısının çıktısıdir. decomplierler ise tersi bir işlem yaparak swf dosyalarını tekrar fla dosyalarına dönüştürürler. Flash player  ın windows a eklenmesiyle birlikte kaynak kodlarını paylaşması gerektiği için macromedia tarafında zamanında yayınlanmış flash player kodları bu günkü decoomplier yazılımların bir anda türemesine sebep oldu.

Suç planlamak suç değildir. Eyleme dönüşene kadar. Decomplier üreten yazılım firmaları suçu planlıyorlar bu planlarını piyasaya sürüyorlar. Bu planları satan alan kullanıcılarsa suçu işliyorlar.

Amacımız gayet açık hazırladığımız swf dosyasının başka birileri tarafından tekrar fla dosyasına dönüşmesini istemiyoruz.  Flash oyun yapımı veya swf dosyalarını web de yayınlamak zorunda olduğunuz durumlarda swf şifreleme yazılımlarını kaçınılmaz olarak kullanmak zorundasınız.  Flash swf şifreleme yazılımları as2.0 veya as3.0 ayırmaksızın kodlarınızı decomplierler tarafından okunamayacak şekilde karıştırmak mantığıyla yapılmıştır. Decomplier in elde ettiği .fla uzantılı dosya çalışmaz sürekli olarak kod hataları verir veya sonsuz döngüye girer.

Flash swf şifreleme yazılımları içerisinde swf encrypt tavsiye ediyorum.Ancak secureSWF vb. onlarca yazılım daha mevcut.  Google da yapacağınız basit bir arama ile tüm yazılımlara ulaşabilirsiniz.


19 Ağustos 2012 Pazar

3D Flash - Shockwave Nedir ?

3D Flash olarak bildiğimiz aslında Flashtan tamemen bağımsız bir programı ve player ı olan shockwave dir. İki üründe Macromedia tarafından üretilmiş bugün Adobe firması tarafından geliştirilmektedir.

Shockwave player 3 boyutlu oyunlardan tanıyorsunuz, Flash Player dan daha gelişmiş bir yapıya sahiptir. Çünkü masa üstü uygulamalar için geliştirilmiştir. Adobe Director yazılımı kullanılarak hazırlanmaktadır. 3 boyutlu ve büyük boyuttaki dosyalarla çalışılan bu yazılım Flash ın masa üstü yazılımı gibi düşünebilirsiniz. Flash web üzerinde minimum boyutla vektörel animasyonlarda ne kadar başarılıysa Director de daha büyük boyutlardaki video, 3 boyutlu nesneler ve grafiklerle çalışırken o kadar başarılıdır.

Director Adobe tarafından geliştirilmesinin avantajlarından faydalanarak Flash la birlikte kullanıldığında ortaya mükemmel sonuçlar çıkabilmektedir

Shockwave dosyaları . .dcr uzantılı dır. Bunları oynatmak için Shockwave player gerekir ve bu player windows un içinde flash player ın aksine hazır bulunmaz. Bu da çok önemli bir dezavantaj. Shockwave player yüklemek için tarayıcılar kullanıcıdan onay isterler. Yani o noktaya kadar gelmiş bir kullanıcı shockwave player a değilde bulunduğu siteye güvenmiyorsa o player yüklemekten kaçınacak ve Shockwave ile hazırladığınız oyun veya uygulamayı göremeyecektir.

Flash player ın 440 milyon kullanıcı da yüklü olduğu açıklanırken Shockwave in 300 milyon kullanıcıya ulaştığı açıklanmış. Açıklamanın doğru olduğu varsaysak bile ki bu rakamlar klasik satış yöntemleri gereğince abartılmış olabilir. Yinede % 35 lik kullanıcı kaybı söz konusudur ki bu uygulamanızı üç kişiden biri sadece bu sebepten göremeyecek demektir.

Bu noktada shockwave ile oyun veya uygulama geliştirmeden önce yapacağınız işe değip değmeyeceğine emin olmalısınız. 3 boyutlu bir oyun için kesinlikle 2 boyutlu bir oyunla kıyaslandığında değecektir.

3D Flash için geliştirmiş henüz emekleme aşamasında olan ara yazılımlar var. Bunlarla ilgili incelemelerle sonraki makale yayınlanacaktır.

18 Ağustos 2012 Cumartesi

as3 nesneleri çoğaltmak ( duplicate )

Flash as3.0 da  bir çok yazılım dilinde olduğu gibi oop (object oriented programing ) kullanılıyor. Bir nesne yaparsınız. Örneğin masa yaptınız. Size ne zaman gerekse o masayı alır mutfağa veya yemek odasına koyarsınız. İkinci bir eviniz varsa onunda mutfağına aynı masayı koyabilirsiniz. Rengi dekorunuzla uyumsuzsa rengi değiştirirsiniz, yüksekse ayaklarını keser boyunuz kısaltabilirsiniz. Burada ki masa nesnemizdir.

Şimdi masa yerine bir oyun yaptığımızı düşünerek nesnelerimizi sayalım. Bir adet silah olsun bir tanede hedef.  Silahla her ateş edildiğinde mermi hedefe doğru hareket edecektir. Buradaki silahta hedefte mermi de nesnedir. ancak merminin oyunun oynadığı anda çoğaltılması gerekmektedir. Çünkü  ilk mermi hedefe varmadan ikincisi ateşlenebilir. Bu senaryoyu moviecliplerle yapmak imkansızdır. as3 burada yardımıza yetişiyor. İlk yapmamız gereken silah ateşlendiğinde bir mermi kopyalamak. Kopyalamak dedim çünkü önceden 1 mermi hazırlamalısınız en azından bir adet mermi nesneniz hazır olmalı.

İşte bu işlemin adı duplicate. as2.0 daki fonksiyon ismi duplicateMovieClip ti. as3.0 la birlikte bu fonksiyon kalktı ve yerini daha kolay bir fonksiyon aldı.

 Mermiyi oluşturmak için Mermi isminde bir movieclip hazırladığınızı varsayıyorum.
var kopyaMermi:mermi = new mermi();
kopyaMermi.x=175;
kopyaMermi.y=75;
addChild(kopyaMermi);

kodumuz bu kadar. Satırları inceleyelim.

// mermi isimli movieclip ten kopyaMermi isimli yeni bir tane tanımlıyoruz.
var kopyaMermi:mermi = new mermi();

///kopya mermizin sahne üzerinde nerede görüntüleneceğini belirliyoruz.
kopyaMermi.x=175; kopyaMermi.y =75;

//sahnemize kopya mermizi ekledik.
addChild(kopyaMermi );

Flash movieclip üzerinde değiştirmenize izin verdiği tüm özellikleri kopya üzerindede değiştirebilirsiniz.

Mermiyi yoketmek için de.
removeChild(kopyaMermi);

as3 basit hitTest

hitTest fonsiyonu basitçe iki nesnenin birbirine değip değmediğini test etmenize yarar.  Nesne başka bir nesnenin parçası olabilir. aynı katmanda bulunmasına gerek yoktur.  İşlem oldukça basittir. flash a her saniye bu iki nesne birbirine değiyor mu diye sorarsınız oda size kısa ve net evet veya hayır diye cevap verir.

Boş bir flash as3 belgesi açarak örneğimize başlıyoruz. 

Bi adet daire çizelim. Daireyi seçin ve  F8 tuşuna basarak bunu movie clip yapalım. Yine movieclip i seçin ve F3 tuşuna basın. "instance name" yazan kısma  top_mc yazın. 

Bu kez bir kare  çizelim. Kareyi seçin ve  yine F8 tuşuna basarak bunu da movie clip yapalım. Yine yaptığınız  movieclip i seçin ve F3 tuşuna basın. "instance name" yazan kısma  kale_mc yazın. 

İki nesne birbirine dokunduğunda anlamamız için bir adet dinamik text nesnesini de sahnemize ekleyin instance name i txt olsun.

Şimdi bir top bir de kalemiz var topu hareketlendirip kaleye değip değmediğini yani gol olup olmadığını test edeceğiz.

Kodları yazacağınız actions penceresini açmadan önce kodu nereye yazacağımızı seçiyoruz.. Timeline üzerinde sadece bir katman ve bir frame miz var. O frame bir kere tıklayıp seçili hale geldikten sonra F9 tuşuna basarak actions penceresini açabilirsiniz.

aşağıdaki kodları bu pencereye kopyalayın .



top_mc.addEventListener(Event.ENTER_FRAME, topKontrol);

function topKontrol(event:Event):void {
if (top_mc.hitTestObject(kale_mc)) {
   txt.text="GOOOOL !"
} else {
  top_mc.x+=5;
  txt.text="";
}
}

Şimdi neler yaptığımızı inceleyelim.


top_mc.addEventListener(Event.ENTER_FRAME, topKontrol);
burada oluşturduğumuz top_mc yi  her saniye düzenli olarak topKontrol fonsiyonunu çağırmasını sağlıyoruz.


function topKontrol(event:Event):void {
if (top_mc.hitTestObject(kale_mc)) {
   txt.text="GOOOOL !"
} else {
  top_mc.x+=5;
  txt.text="";
}
}
burada fonksiyonumuz var her çağrıldığında hitTest fonksiyonundan dönen doğru veya yanlış durumuna göre txt isimli text alanımıza GOOOL' yazıyor. Eğer hitTest gerçekleşmemişse top_mc nin x değerini artırarak sağa doğru ilerlemesini sağlıyor.
Örnek Swf Dosyası

Get Adobe Flash player

Flash oyun para kazandırır mı?

Oyun yapmak eğlencelidir ancak ciddi vaktinizi alır. Şimdi amacımız harcadığımız vakti paraya çevirmek.

Flash oyun yapıyorsanız para kazanmak için çok fazla alternatifiniz olduğunuz söyleyebilir.

1. Flash oyunlarınızın içerisine reklam alanları ekleyerek bu reklamlara tıklanması durumunda para kazanabilirsiniz.

Adsense reklamlarının da oyunlar içerisine eklenebildiğini düşünürseniz çok ciddi bir gelir kapısına dönüştürebilirsiniz. Ancak bu noktada oyunun Türkçe olması gelirinizi çok düşürecektir. Hatta kesinlikle harcadığınız emeğe değmez. Çünkü tık başına gelir oranı çok düşüktür ve bir oyunun popüler kalma süresini de hesaba katarsanız oyunu kesinlikle ingilizce hazırlamalısınız. İyi de biz oyunu hazırladık kendi sayfamızda oynuyoruz dilide ingiliz ce ama bu oyunu flash oyun sitelerine dağıtamadığınız  zaman bir anlamı yok.

Bu noktada yardıma ihtiyacımız var ve aracı siteler yardımıyla bir sponsor buluyoruz. Spıonsorumuza oyun içerisinde sponsor link intro, more games gibi link alanları ayırdıktan sonra oyun içerisindeki reklam alanlarını satmıyoruz. Yani plan şu sponsor oyunu sitesinde yayınlayacak böylece diğer siteler sponsorumuzun sitesinden oyunu kopyalarak oyunun dünyaya dağılması başlayacak. sizinde reklamlarınız tüm dünyada gösterime girecek. 

Sponsor bulmanız için önereceğim site : flashgamelicense.com

2. Oyunu komple satmak 

Oyununuz özgünse bir yerlerden oyunu komple veya grafikelrini kopyalamadıysanız. yukarıda sponsor bulan sitemiz flashgameliicense.com da oyunu satmak gibi bir seçeneğinizde var fla dosyasıyla birlikte satıp komple kurtuluyorsunuz. Siteyi inceleyerek detaylara erişebilirsiniz.

3. Bu işler zormuş beni uğraştırmayın biri benim adıma bu işleri yapsın.

  O zaman oyunun içerisine mochimedia.com gibi bir sitenin kodlarını ekliyorsunuz. Size bir api veriyorlar ve eklemek oldukça basit  Size bir de kontrol panel veriyor iddalı bir site dediğine göre 3000 den fazla flash siteye oyununuzu dağıtıyor size verdiği kontrol panelden siz hangi site üzerinde oyunun ne kadar oynandığını reklamlara kaç kere tıklandığını görebiliyorsunuz.

bu konuda tavsiye edebileceğim sitelerde :
mochimedia.com
kongregate.com




AS3 Drag ve Drop Örnekleri - AS3 startDrag(); AS3 stopDrag();


Basitçe sürükleyip bırakma ( Drag Drop ) örneğini inceleyeceğiz. Bir daire çizerek movie clip yapın instance name i daire_mc olsun. sahneye bir tanede kare çizin bunu movie clip yaparak instance name ini kare_mc olarak isimlendirin. şu an sahnenizde tek frame var o frame e aşağıdaki kodları ekleyin.

daire_mc.addEventListener(MouseEvent.MOUSE_DOWN, surukle);

kare_mc.addEventListener(MouseEvent.MOUSE_DOWN, surukle);

stage.addEventListener(MouseEvent.MOUSE_UP, birak); function

surukle(e:MouseEvent):void
{
       e.target.startDrag(false, new Rectangle(75,50,350,250));
}

function birak(e:MouseEvent):void
{
       stopDrag();
}

Şimdi bu satırların nasıl çalıştığını açıklama satırlarıyla anlatmay çalışalım. 

 // daire_mc isimli movie clip in mouse basıldığında surukle fonksiyonunu cağırmasını istedik.
daire_mc.addEventListener(MouseEvent.MOUSE_DOWN,surukle);

 // kare_mc isimli movie clip in mouse basıldığında surukle fonksiyonunu cagarmasını istedik
kare_mc.addEventListener(MouseEvent.MOUSE_DOWN, surukle);

//stage sahnenin tamamı gibi düşünebilirsiniz. Burada yaptığımız sahnein her hangi bir yerinde mouse bırakılırsa birak fonksiyonunu çağırmak.
stage.addEventListener(MouseEvent.MOUSE_UP, birak); function

//surukle fonksiyonu surukleme islemimizin yani startDrag() ın yapıldığı fonkiyon

surukle(e:MouseEvent):void
{
       e.target.startDrag(false, new Rectangle(75,50,350,250));
}

//birak fonksiyonu da stopDrag() yani bırakma isleminin yapıldığı fonksiyon. :startDrag işlemi başlamadıysa stopDrag işlemi yapılmaz yani bu fonksiyon için sadece stopDrag(); demek yeterlidir target belirtmeye gerek yok.

function birak(e:MouseEvent):void
{
       stopDrag();
}
Örnek swf dosyası

Flash Oyun Nasıl Yapılır ?

Flash oyun hazırlamak için neredeyse sadece flash programını öğrenmeniz yeterlidir.Profesyonel anlamda oyunlardan para kazanmayı düşünüyorsanız grafik programlarına da istediğiniz resimleri hazırlamak veya değiştirmek gereksinimi nedeniyle ihtiyaç duyarsınız. 3Dmax gibi bir 3d programına biraz hakimseniz veya Unity 3D tarzında bir oyun yapım programını biliyorsanız flash yapacağınız oyunlar kesinnlikle sıra dışı olacaktır.

Hemen karamsar olmayın, neşenizi yerine getircek bir haber verelim. Flash geliştiricisi Adobe firmasının artık türkçe destek veriyor. Tüm yardım dosyaları örneklerle Türkçe olarak açıklanmış bu işinizi kesinlikle kolaylaştıracak. Ne kadar profesyonel olsanızda her zaman göz atmanız gereken devasa yardım dosyaları tamamı Türkçe daha olsun !

Flash a genel olarak bir göz atalım.
Temel olarak 2 ana kategoriye ayırmak yanlış olmaz.
1. Script bölümü (action script) as1.0, as2.0, as3.0 gibi.
2.Grafik animasyonları hazırladığınız görsel bölümü


Script bölümüne yeni başlıyorsanız as3.0 öğrenmelisiniz. as2.0 bir önceki versiyon olduğundan daha az gelişmiştir ve daha kısıtlı bir script yapısına sahiptir.as1.0  çok eskilerde kaldı, bahsetmiyorum bile.

as3.0 da nesne mantığı neredeyse herşeydir. Bir ev yaparsınız. Artık bir eviniz vardır aynı evi defalarca kullanarak sehirler yapabilirsiniz. Evin duvarlarını farklı renge boyayıp kapısını açabilirsiniz bu hazırladığınız ev nesnesindeki kodunuzun başarısına bağlıdır.Şehir bittiginde sadece 1 ev resmi büyüklüğünde bir boyuta sahip olur. bunun sebebi aynı ev sınıfını defalarca kullanmış olmanızdır.

Peki nasıl olurda boyut büyümez 1 ev le bir şehir nasıl yapılabilir?
Bunun bedelini flash ın çalıştığı bilgisayardaki mikroişlemci ve ram öder. Bir kartanesi düşünün 1 piksel büyüklüğünde  beyaz bir nokta olsun. Şimdi şehre kar yağdıralım. yüzlerce hatta binlerce defa bu pikseli flasta çoğaltır sahnede hareketlendirdiğinizde.Oyunun çalıştığı bilgisayardaki mikro işlemci her kar tenesinin pozisyonunu hesaplayarak yerini sürekli değiştirmek zorundadır. Oyun yapımcılarının her animasyonun ne kadar işlemci kullandığını düzenli olarak kontrol etmesi gerekir.

Grafik animasyonların hazırlandığı flash ın görsel bölümüne gelince. İşin en kolay kısmı burasıdır. Dışarıdan bir resmi alabilir basitçe moviecliplerle hareketlendirebilir ses ekleyebilir şeklini büyüklüğünü değiştirebilir ve basit efektler verebilirsiniz. Konuyla ilgili google da arama yaparak yüzlerce anlatım bulabilirsiniz.

Bundan sonraki yazılarımızda as3.0 kullanarak oyun yazılımı hakkında örneklerle ipuçları veremeye çalışacağım. Grafiklerimizi daha çok script koduyla oluşturacağız.