1 Nisan, 2007 kaya tarafından
Gerek GUI’si gerekse de görüntünün yanında belki ondan daha da önemli olan ses olayındaki gelişmeleri aktarayım istedim. SDL_mixer denen güzeller güzeli kütüphanenin müzik için özel olarak ayrılmış müzik kanalı sayesinde gayet rahat bir şekilde rasgele müzik çalma gibi bir özellik eklendi. Bu sayede belli parçalar, rasgele bir sırayla çalınıyorlar. Bunun resimlerini koyamayacağım için ilk söylemek istedim. Şu an SVN’deki kodlar benim diskteki Mozart OGG dosyalarına göre ayarlılar, SVN’ye bu Mozart OGG’lerini, müzik paylaşımı gibi bir olaya karışmamak için yapmasam da, siz istediğiniz OGG dosyalarını (track01.ogg gibi isimlerle, kaynak kodda görebilirsiniz) kullanabilirsiniz. Semih şu sıralar müzikler üzerinde çalışıyor diye biliyorum. Onlar gelince yukarıya koyulacaktırlar.
Bununla birlikte kendimiz girdiğimiz hata raporlarından da bir iki hata giderdim. İlki bazı SDLWidget’ların eksik metodları (set / get), diğeri de SDLTextView denen ve önemli bir parçacık olan parçacığın girilen metni kendi boyutuna göre bölebilmesi ile ilgiliydi. İkisi de halloldu. Altta soldaki ekran görüntüsünde zaten görebiliyor olmanız lazım bir SDLTextView…
Son olarak, birimlerin detaylı bilgilerini ekrana yazdırma. Burası biraz uğraştırdı, çünkü her biri ayrı bir parçacık, ama zahmete değdi. Tabii bunun için SDLFont ve SDLLabel sınıflarını farklı boyutlarda yazı basacak şekilde ayarlamak gerekti. Bu durumda daha önce Sprite sınıfında imdadıma yetişen STL’in map sınıfı tekrar kurtardı beni. Yukarıdaki sağdaki ekran görüntüsünde de onu görebilirsiniz.
Yarın da uğraşacağım, bakalım daha neler olacak…
Programlama, Proje kategorisinde yayınlandı | » yorum bırak;
21 Mart, 2007 kaya tarafından
Bellek kaçakları, daha önce bahsettiğim gibi, önemli bir konu. Oyunun ana döngüsü içinde bir yerlerde saniyede 50K, yer yer 100K kadar bellek kaçıyordu. Bu da programın bellek kullanımını izlerken devamlı artış gösteriyor, hem benim sinirlerimi bozuyor, hem benim hem de valgrind’in gözünden kaçıyor, hem de valgrind o kadar kaçak engellediğimi söylese de bariz hala kaçtığını gösteriyordu.
İşin kötüsü, bu kaçak, oyunu başlatmadan, oyunun menüleri olduğu yerde değil de, yeni bir oyun başlatıldığında ortaya çıkıyordu. Ben de o yüzden SDLGUI ile ilgili değildir, bu olsa olsa diğer sınıflarla ilgilidir diye o sınıflara bakmıyordum. Biricik SDLLabel sınıfımda çıktı ve tamamen benim dikkatsizliğim yüzünden. SDLLabel’ın setText() denen bir metodu var. Bu metod içinde SDLLabel’ın taaa SDLWidget’tan gelen widget değişkenine yeni bir SDL_Surface değeri veriyorum. Ama widget’ın eskiden tuttuğu SDL_Surface’ı silmiyorum. Bunun gibi bir iki tane daha böyle görünmeye kaza olsa gerek ki, bir döngüye girmediği için göremiyoruz. Halbuki bu 4 satırlık koda da, yerini bulduktan sonra bir 10 dakika baktım ne oluyor, niye şişiyor diye (SDLFont denen sınıfa suç bile attım, günahını aldım) sonra bir anda jeton düştü.
Sonuç olarak, şimdilik öyle çok sıkıntı yapacak bir bellek kaçağı olayı kalmadı. Ben de bunun üzerine şu hata ve uyarı mesajlarını konsola değil de ekrana yazdıracak basit bir iki satır ekledim. Hemen sol üste doğru ekran görüntüsü için bir küçük resim var. Ona basabilir, ya da ekran görüntülerine bakabilirsiniz. Orada tek satır gözüküyor ama istediğiniz kadar satır gönderebilirsiniz. Hepsi sırayla, en fazla 5 satır gözükecek şekilde gözüküyorlar…
Programlama, Proje kategorisinde yayınlandı | » yorum bırak;
18 Mart, 2007 kaya tarafından
Az çok aşağıdaki ekran görüntüsü gibi hala. Ama inanılmaz değişiklikler oldu. İlki bellek kaçaklarını (memory leak) avlamak için yola çıktım; biraz kaba yazmışım kodları, neredeyse hiç bellek serbest bırakmıyordum. Bu sayede program hem biraz hızlandı, hem de 10 kata kadar bellek kaçaklarını önledim. Hala varlar, ama öyle yerlere sıkışmışlar ki, valgrind ile biraz daha vakit harcamam lazım.
Bellek kaçakları ile uğraşırken, kodu da baya bir elden geçirmiş oldum. En son olarak bu gece de Şule’nin yazdığı Ses sınıfını dahil ettim. Daha erken kaydettiğim “Efendim!” ve “Tamam!” seslerini OGG olarak kullandım. Sonuç gayet başarılı
Teşekkürler ve tebrikler
Sanırsam şimdilik bu kadar.
Programlama kategorisinde yayınlandı | » yorum bırak;
14 Mart, 2007 kaya tarafından
Bu akşam düzenleme gecesi. Bakalım gecenin sonunda bir şeyler çıkarabilecekmiyim… En son bıraktığımda durum aşağıdaki resim gibiydi…

Şimdi bu sınıflar arasındaki sorunları çözüp, kodu derli toplu hale getirmek lazım ki, elimizden geldiği kadar birim / bina / teknoloji girelim…
Hadi bakalım iş başına
Uncategorized kategorisinde yayınlandı | » yorum bırak;
12 Mart, 2007 kaya tarafından
Bir akşamın daha sonuna geldik… Her şeyden önce, proje dışında ilgilenenler, özellikle Linux kullanıyorlarsa, istedikleri zaman SVN’den kaynak kodları indirebilirler. Artık her akşam, daha doğrusu her sabaha karşı SVN’ye yüklüyorum. Bunun bir reklamını yapayım, sonra değineceğim diğer konulara…
svn checkout http://project1453.googlecode.com/svn/trunk/ project1453
Linux kullanıcıları, tek yapmanız gereken yukarıdaki kod ile SVN’den kodları indirip, daha sonra project1453 dizinine girip make denen komutu vermek…
Günün Ekran Görüntüsü
Gördüğünüz üzere günün ekran görüntüsü hemen solda. Bugün binalar, aynı birimler gibi harita var olma haklarını elde ettiler. Bu sayede binanın üzerine basabilir, bu sayede onu seçtiğinizi etrafındaki yeşil köşeciklerden anlayabilir, sonra da sağ tarafta menüsünü görebilirsiniz.
Elbette, kod şu an çok dağınık. Birimlerle uğraşırken “şimdilik çalışsın da” mantığıyla bir sürü sabit yüzünden bir süre sorun çıktı, ama derlenip düzenleniyor da bir yandan. En azından kod hızlı ilerliyor gibi. Devamlı değişiklik göstermesi ve yeni durumlara ayak uydurması hoşuma gidiyor. Yazarken en büyük amacım aynı kodu tekrar tekrar kullandırtmak. Bu yüzden güzel bir nesne hiyerarşisi izlemeye çalışıyorum.
Yarın da binadan adam çıkarsa diğer konulara eğilmeye başlayabilirim. İlki, kodu daha bir düzene sokmak (tip açısından, okunabilirliliği arttırmak için) diğeri de bütün birimlerin ne olacağına artık karar verip, bu birimleri yaratmaya başlamak. Ne de olsa önemli işler temel sınıflar üzerinden gidiyor: BaseObject ve BaseGraphicObject… O yüzden içim rahat.
Başlığı niye böyle yazdım hatırlamıyorum… Kafiyeli olmuş sanki ama…
Duyuru, Programlama, Proje kategorisinde yayınlandı | » yorum bırak;
11 Mart, 2007 kaya tarafından
Daha önce deneme sürümlerinde yaptığım birimlerin komutlarının çıktığı menüleri biraz geliştirerek yaptım. Bunun için SDLCommandButton diye, SDLGUI’nin diğer bileşenlerini temel alan bir parçacık yaptım. Bu sayede çok fazla olacak ve her birinin üzerindeki resim farklı olacak farklı bir tür düğme olayı için farklı bir yapı hazırlamış oldum. Bunu ayrı bir sınıf yapmak için bir nedenim daha vardı: fare üzerine geldiğinde komut ile ilgili bilgilerin gözükmesi… Mesela düğmenin hangi işleve yaradığını bildiren basit bir kelime ya da cümlenin, fare üzerinde dururken gözükmesi, ya da bir bina, birim ya da teknoloji yapılacaksa, bu nesnenin ne kadar yemek, ağaç ve odun gerektirdiğini bildirmem gerekiyordu.
Bunun için gene SDLScreen denen sınıf işimi gördü. Tek yapmam gereken SDL_MOUSEMOTION olayı için bu SDLScreen‘i açıp kapamam yeterli oldu. Üstelik bu SDLScreen olayları dinlemesine de gerek yok. Bu da işime geldi…

Burada SDLCommandButton‘un bir özelliği daha var. Arkada bir düğme var, geçişli renkli bir 48×48 kare. Onun üzerine farklı farklı resimler geleceği için bu resimleri bir resimde toplayıp SDL_Rect ile ilgili bölümlerini almak böylece tek resim yükleyip işi bitirmek istedim. Öyle de oldu sayılır.
Yukarıdaki ekran görüntüsünde birimin üzerine tıklandığında “Yürü”, “Dur” ve “Ev Yap” komutlarını görüyorsunuz. Ayrıca birimin artık bir sağlık çubuğu (SDLProgressBar) taşıdığını da fark etmişsinizdir. SDLGUI ile yapılanlar işimi çok kolaylaştırıyor. Gördüğünüz birçok şey SDLWidget, SDLLabel’larla yapılıyor.
Bu arada, evleri biraz çizdim. Hemen solda görebiliyorsunuz. Google SketchUp denen bir program var. Çok kolay ve eğlenceli bir program. Onunla kısa sürede böyle evler çıkarmak mümkün. Burada elbette Melih’ten ipuçları aldım. Melih’le bütün evleri yapana kadar şimdilik idare eder bu resimler beni.
Yarın, vakit olursa iki şeye bakacağım: binaların gösterimi ve üçüncü rapor. Üçüncü rapor için teknik detay yeteri kadar var. Daha önce çizilmiş UML’ler de var…
Programlama kategorisinde yayınlandı | » yorum bırak;
6 Mart, 2007 kaya tarafından
Öncelikle ekran görüntülerine bir iki tane ekledim. Sitenin tipini, fark edeceğiniz üzere değiştirdim. Şu anki grafikler benim yaptığım basit şeyler, onları daha sonra Melih güncelleyecek, o yüzden ekran görüntülerine aldanmayın çok. Şu an daha çok arkada çalışan kodlarla boğuşuyoruz.

Duyuru, Programlama, Proje kategorisinde yayınlandı | » yorum bırak;
6 Şubat, 2007 kaya tarafından
Alfabetik sırayla SDLButton, SDLCheckBox, SDLCombo, SDLComboOption, SDLLabel, SDLListView, SDLListViewItem, SDLScreen, SDLTextView ve son olarak SDLWidget gibi parçacıklarımız hazırdır… Geçmiş olsun. Elbette ki daha geliştirmeye açıklar ve hataları ileride çıkacaktır. Ama şimdilik diğer konulara da eğilebiliriz rahatça.
Bir ekran görüntüsü:

Programlama, Proje kategorisinde yayınlandı | » yorum bırak;
3 Şubat, 2007 kaya tarafından

SDL ile ilgili kullanacağımız hemen hemen bütün parçacıklar hazır… Kodları biraz daha düzenleyip SVN’ye göndereceğim. Bu yukarıda bir etiket (Label), bir combobox, bir checkbox, bir metin gösteren alan görüyorsunuz. Sağ alttaki düğme kendi başına kullanılabildiği gibi combobox, checkbox ve metin gösteren alanda da işime yaradı. Bu gecelik bu kadar yeter… Yarın kodlara biraz çeki düzen vermeli… Geçmiş olsun…
Programlama, Proje kategorisinde yayınlandı | » yorum bırak;
28 Ocak, 2007 kaya tarafından
Oyunda birimler sadece yürümeyecek elbette
Bu yüzden biraz daha değişiklikler oldu. Birden fazla komut vermek için gerekli kodlar yazıldı, önümüzü biraz daha iyi görüyoruz artık
Örnek bir ekran görüntüsü verelim, daha önce dediğim gibi grafiklerimiz gelene kadar şimdilik bu Warcraft II grafikleri ile deneme yapıyoruz, zaten bu görüntüler gerçek oyuna ait olmayacak, bizim oyun tamamen farklı bir tipte ve arayüzde olacak. Bu sadece birimleri test etmek için yazılmış bir demonun ekran görüntüleri…

Programlama, Proje kategorisinde yayınlandı | » yorum bırak;