06.17.2009

middleearth

Oyun dünyası yaratmak demek, çoğu zaman alternatif bir gerçeklik yaratmak demektir. Bu alternatif gerçeklikteki tarihsel, coğrafik, ve politik örgüde ne kadar çok detay ve tutarlılık varsa, o gerçeklik o kadar inandırıcı olur. Aklınızda bulundurmanız gereken en önemli nokta, bir alternatif gerçeklik yarattığınızda bunun, bir oyundan çok daha fazla üründe kullanılabileceğidir. Aynı alternatif gerçeklikte geçen beş farklı oyun, on kısa hikaye, dört çizgi roman ve iki film yapabilirsiniz mesela.

Dolayısıyla yarattığınız alternatif gerçekçiliğe efor yatırmaktan çekinmeyin. Yani burada oyun tasarımı bölümünde söylediğimin bir bakıma tersini söylüyorum. Oyun tasarımında özellikle kişisel projelerinizde oyuna mümkün olduğu kadar az oyun öğesi eklemenizi söylemiştim. Oyun dünyasını yaratırken ise ekleyebildiğiniz kadar detay eklemenizi söylüyorum.

Read more

Share
06.12.2009

CGH

Bir oyundaki oynanış öğelerinin tasarımı ve seçimi, o oyunun zevkli bir oyun olmasından, oyunun programlamanın ne kadar kolay veya zor olacağına kadar pekçok kritik sonuca etki eder. Bu yüzden şimdi oyun öğelerini nasıl tasarlayacağımıza daha da yakından bakalım.

Geçen yazıda oyun öğelerinin Kapalı olmasının öneminden bahsetmiştim. Bundan daha detaylı bahsetmek istiyorum. Kapalılık terimi küme matematiğinden gelen bir terim. Bir küme ve bir işlem ile ilgili. Bir işlem, bir kümeden bir veya birkaç elemanı alır ve sonucunda yeni bir eleman üretir. Eğer işlem sonucu, başladığımız kümenin her zaman üyesi ise bu işlem bu küme üzerinde kapalıdır.

Örneğin toplama işlemi gerçel sayılar kümesinde kapalıdır. Her iki gerçel sayının toplamı yine bir gerçel sayıdır.

Read more

Share
06.11.2009

tetris

Şimdi oyun yapmanın ilk aşaması olan oyun tasarımı konusuna yakından bakalım. Bir oyunu tasarlamak demek, oyunu oynayan kişiyin, oyundaki amacını, karşısına çıkan zorlukları ve o zorlukları aşmak için neler yapabildiğini tanımlamak demektir. Bu tanımlama eylemi genelde birkaç cümlelik çekirdek bir fikir olarak başlayıp, zaman içinde gelişerek, detaylı bir oyun tasarım dokümanına dönüşür.

Oyun tasarımının iki temel amacı vardır:
1- Oyunu yapacak kişilerin, oyunu ve tam olarak ne inşa ettiklerini anlamak
2- Oyun eğer profesyönel (yani satılacak) bir oyunsa, başta oyunu finanse edecek kişileri, sonrada oyunu oynamasını istediğiniz oyuncuları tavlayacak fikirleri ifade etmek.

Read more

Share
06.10.2009

gameBir insanın bir oyun yapabilmesi için edinmesi gereken bazı temel yetiler var. Önümüzdeki günlerde bu konuda bir dizi yazı yazarak, bu yetileri tanıtmaya çalışacağım. Bu işlere kalkışmadan önce bilmeniz gereken üç temel şey var:

  1. Kısa bir yol yok. Pekçok meslekte olduğundan daha fazla şey bilmek zorundasınız. Hele de tek başınıza oyun yapmaya kalkışıyorsanız. Eğer bir grup ile çalışıyorsanız bile, gruptaki diğer elemanlarla sağlıklı bir iletişim kurabilecek kadar aynı dili konuşmak zorundasınız.
  2. Kendinize zaman tanımalı ve hedeflerinizi yavaş yavaş artırmalısınız. Bu konulara çalışmaya başladıktan sonra ilk hedefiniz Gears of War 3’ü yapmak olmamalı. Bu gözlemlediğim kadarıyla en sık yapılan hata. Bugün satın alıp oynadığınız oyunların hemen hepsinin arkasında 20 – 30 kişiden başlayıp yüzlerce kişiye kadar ilerleyebilen rakamlarda tecrübeli mühendis ve sanatçılardan kurulu ekipler var. 
  3. Kendinize zaman tanır, hedeflerinizi yavaş ve bilinçli bir şekilde yönetir ve disiplinle çalışırsanız, çok iyi oyunlar yapabilecek seviyeye gelebilirsiniz. Ve bunu yaparken de çok çok iyi vakit geçirebilirsiniz.

Read more

Share
06.09.2009

natalGeçen hafta Vegas’taki E3 expo‘nun ardından hemen herkesin ortak fikri bu yılın bombasının Project Natal olduğu yönünde. Natal, bir kamera ve ileri bazı görsel/işitsel tanıma algoritmaları aracılığıyla oyuncunun hiçbir joystick benzeri alet kullanmadan oyunu oynamasını sağlıyor. Eğer izlemediyseniz youtube’de tanıtım videosunu izleyebilirsiniz.

Read more

Share

Akıllı işaretçiler arasında en güçlü özelliklere sahip olan boost::shared_ptr<>‘den bahsetmeye geldi sıra. Bu işaretçi sayesinde en zorlu bellek yönetim ve nesne ömrü problemlerini çözebiliyoruz.

Read more

Share
05.23.2009
fareadam

fantastik kurmaca dünyalarda yaşamayı seviyoruz

Bu herkesteki bitmek tükenmek bilmez oyun yapma isteği nereden geliyor. Bir bilgisayar oyunu yapmak neden bu kadar zevkli ve geliştirici. Neden biraz oyun oynayan hemen herkes, bir süre sonra “ya şu oyuna falanca özelliği koysalar ne güzel olurmuş” diye bir dürtü hissetmeye başlıyor.

 

Oyun geliştirme işinin profesyonel veya amatör olarak bu kadar populer olmasını anlamak çok da zor değil. Bir insan, bu heyecan ve isteği doğru kanalize edebilirse, hem amatör hem profesyönel olarak oyun yapımına girebilir ve çok mutlu bir hayat yaşayabilir.

Read more

Share

std::auto_ptr, geçen yazıda bahsettiğimiz boost::scoped_ptr’den bir adım daha yetenekli bir akıllı işaretçidir. Tıpkı scoped_ptr gibi auto_ptr de bir nesnenin sahibidir, ve kapsam dışına çıkılırken o nesnenin silinmesini sağlar.

 
void hede(){
    std::auto_ptr<T> p( new T() );
    p->hodo();
    …
}    // kapsamdan cikilirken T nesnesi silinir

Yine bu fonksiyonda ne olursa olsun (erken bir return ya da istisna) auto_ptr sayesinde temel istisna güvenliği (yani istisnalar tetiklendiği takdirde bellek sızdırmama garantisi) sağlanmış olur.

Ancak scoped_ptr’den farklı olarak auto_ptr, kopyalanabilir  ve atanabilir. kopyalama/atama durumlarında nesnenin sahipliği el değiştirir. Başka bir deyişle bir nesneye herhangi bir anda yalnız bir auto_ptr sahip olabilir. Bir auto_ptr bu şekilde sahiplik kaybettiğinde resetlenmiş olur.

Read more

Share

boost-library

boost::scoped_ptr en basit akıllı işaretçi türü. Yaptığı iş sadece bir tane nesneye işaret etmek ve o nesnenin tek sahibi olup, silinirken de nesneyi de kendisi ile beraber silmek. 

Read more

Share
05.20.2009

İşaretçiler(pointer), C++ dünyasına aslında C’den gelen bir kavram. C’ye de assembler’dan gelmişti. C++ programlarında pekçok hata bir kenarından işaretçiler ile ilgili oluyor. İşaretçilerle yapılan aritmetik işlemler, işaretçilerin sıfırlanmasının unutulması vs.

Yine C++ programlarında en sık yapılan hatalardan biri de bellek yönetimi hataları. Sistemden alınan ve iş bittikten sonra geri verilmeyen bellek, veya geri verilmiş belleğe bakmaya devam eden işaretçileri kullanmak vs.

İşte bu iki genel hata grubunun kesişiminde bulunan önemli bir bölümünü çözmek için akıllı işaretçiler (smart pointer) geliştirilmiş.

Read more

Share

Next Page »