artık bu blog'a daha fazla yazı eklemeyeceğim, onun yerine başka bir blog başlattım. Bu blogdaki tüm yazılar orada da var. Aslında devamı gibi. Yeni blogum artık hem ingilizce hem de türkçe olacak. Çok az post olmasından dolayı şu an için ingilizcesine ulaşılamıyor ama zaman içerisinde o da çalışır hale gelicektir. Hemen gitmek için;
Sonradan gelen düzenleme;
Sürekli güncellemeydi, spamdi derken blog'umu tekrar blogspot'a taşımış bulunmaktayım.
29 Eylül 2009 Salı
5 Eylül 2009 Cumartesi
Yol Bulma (Path Finding)
İnternette path finding ile ilgili bir makale okudum, önemli birkaç konuya değiniyordu, bu yüzden ben de bu makaleyi biraz özetleyerek türkçe olarak aktarmaya karar verdim. Umarım yardımcı olur. Bu makalenin orjinalini bu adreste bulabilirsiniz.
Oyunlarda hala yol bulma ile ilgili ciddi problemler bulunmaktadır, aşağıdaki video'da çeşitli oyunlardaki çeşitli hatalar gösterilmiştir.
Video'da görüldüğü gibi, bir çok oyundaki yol bulma algoritmaları her durumda doğru sonuç vermemektedir. Ancak bu sorunların çoğu, yol bulma işleminin way-point'ler ile hesaplanmasından kaynaklanmaktadır.
(Waypoint, gezilebilinen alanları tanımlamak için konan noktalardır. Buna 'yol noktaları' diyebiliriz.)
Waypoint'ler Neden Yol Bulmak için Uygun Değildir ?
Aşağıda tipik bir waypoint örneği bulunmakta.

[World of Warcraft'daki Stormwind City]

[Waypointlerin konulmuş hali]
Gezilebilir alanları (yolları) way-pointlerle belirtebildiğimiz gibi konveks poligonlarla da ifade edebiliriz. Bu AI'a yol hakkında daha fazla bilgi ve daha düzgün karar verme olanağı verir. Bu şekildeki geometriler "navigation mesh" olarak adlandırılmıştır.

1. Bazı alanlarda, çok yüksek miktarda waypoint kullanmamız gerekebilir.
Geniş, açık alanlarda, AI'ın düzgün bir hareket yakalaması için çok fazla poligon gerekebilir.
Aşağıdaki resim, World of Warcraft'taki "Halaa" ismindeki kasabadan. NPC'lerin açık kısımlarda rahatça hareket etmesi isteniyor.

Açık alanlar için çok fazla waypoint koymamız gerekiyor. Ancak bu sayı bile yeterli değil, waypointlerimizi daha da arttırmazsak, karakterlerimiz hareket ederken zig-zaglar çizerek ilerleyecektir.

Diğer yandan, navigation mesh ile tanımlama yaparsak, çok daha az poligon kullanarak işimizi bitirmiş oluruz.

Bu sayede daha az arama yaparak, yol bulma işleminin hızını da arttırabilirisiniz.
2. Karakterler ilerlerken zig-zaglar çizerek ilerleyebilir.
Waypoint'ler belirlediğiniz zaman, karakteriniz bu waypointlerin üzerinde hareket edecektir. Bu yüzden, büyük ihtimalle seçtiğiniz herhangi iki nokta arasında, düzgün waypointler bulunmayacağından, karakteriniz zig-zaglar çizerek hareket edecektir.
Karakterimizin A'dan B'ye gittiğiniz düşünelim.

Burada da sarı ile gösterilmiş olan yol, A'dan B'ye giden en ideal waypoint'leri göstermektedir.

Bu noktalar ile daha yumuşak olarak bir eğri oluşturmayı da düşünebilirsiniz, fakat waypointler etrafındaki objelerle ilgili bir bilgi barındırmadığından, eğrinin istenmeyen bir noktadan geçip geçmeyeceğini hesaplamanız zor olabilir.
Ancak, navigation mesh kullansaydık, en doğru yolu bulmamız daha kolay olacaktı. Aşağıda ise aynı işlemin navigation mesh ile yapılmış hali bulunmakta.

Bu durumda ise, karakterlerin dolaşabileceği alanın tümünü bildiğimizden dolayı, hesapladığımız yolu istediğimiz gibi yumuşatabiliriz. Aynı şekilde, aşağıdaki resimde, kırmızı olarak işaretlenen yol waypoint kullanıldığında ortaya çıkarken, mavi ile gösterilen yol ise navigation mesh kullandığımızda oluşturuluyor. (Tabii ki mavi olan yol programcının kullandığı algoritmaya göre değişir.)

3. Waypointler kullandığımızda yolu, dinamik olarak değişen çevreye göre, değiştirmemiz daha zordur.
Eğer çevre dinamik olarak değişiyorsa ve sizin o bölgede yeterli sayıda waypointiniz yoksa, yol bulma işlemi başarısız olabilir. Aşağıdaki resimde yol üzerinde bir kutu olduğunu düşünelim. Bu durumda çok az waypoint bulunduğundan, karakter kutunun yanından düzgün bir şekilde dolaşamayacaktır.

Ancak, navigation mesh kullanırsak, çevre hakkında da bilgi sahibi olduğumuzdan, çeşitli yöntemlerle daha uygun bir yol bulabiliriz.

4. Waypoint'ler farklı hareket tipleri olan karakterler için düzgün sonuç vermez.
Genişliği, yüksekliği, dönüş şekli ve bunun gibi bir çok parametrenin değiştiği durumlarda waypoint sistemi düzgün çalışmayabilir. Örnek olarak, aşağıdaki resimde bir panzer ile bir kişinin olduğunu düşünelim. Kişi, kum torbalarının yanından kolaylıkla yürüken, bir panzer bunu yapamaz.

Kırmızı çizgi kişinin, mavi çizgi ise panzerin yolunu göstermektedir.

Waypoint'lerin düzgün çalışması için farklı waypoint grupları belirtebilirsiniz. Ancak bu işlem çok vakit isteyebilir. Bunların yanında waypointleri birleştirip panzerin nerede dolaşabileceğini hesaplayabilirsiniz ki, bu durumda waypointlerinizle bir navigation mesh oluşturmuş olursunuz.

Yukarıdaki resimde gördüğünüz gibi, gezilebilinen alanların köşeleri belirli. Bu durumda, her farklı karakteriniz için bir yarıçap belirtebilirsiniz. Örnek olarak bir kişinin yarıçapı 1m, panzerin ise 5m olarak belirlenebilir.

Aynı zamanda farklı tipte karakterler için farklı hareket stilleri belirtebilirsiniz. Örnek olarak bir motorsiklet köşeleri daha yuvarlak alırken, bir insan köşeli dönüşler yapabilir.

Yukarıdaki resimde, motorsiklet kırmızı yolu izleyebilirken, sarı yolu izleyemez.
5. Waypointler karakterlerinizin, yol bulma dışındaki işlemleri için yeterli veri barındırmaz.
Bazı zamanlarda, yol bulma için kullanılan verilerin, AI'a nasıl davranacağını veya hareket edeceğini hesaplamada yardım etmesi gerekir. Örnek olarak bir karakterin belirli bir yola değilde, bir düşmana göre yer değiştirdiğini düşünelim. Bir canavar tarafından kovalanan köylü, kendine göre bir algoritmayla kaçmaya başlayacaktır. Eğer siz waypoint kullandıysanız, karakteriniz bu waypointleri kullanarak sağa sola koşamaz veya atlayamaz. Bu durum navigation mesh ile giderilebilir. Yani her nokta için, o noktanın uygun olup olmadığını hesaplayabilirsiniz. Bu işi, fizik motorunuz da sizin yerinize yapabilir, ancak navigation mesh kullanarak daha az sistem kaynağı tüketen bir AI sistemi yazabilirsiniz.

Hala ikna olmayanlar, makalenin orjinalinde yer alan soru/cevap kısmını inceleyebilirsiniz. http://www.ai-blog.net/archives/000152.html
Oyunlarda hala yol bulma ile ilgili ciddi problemler bulunmaktadır, aşağıdaki video'da çeşitli oyunlardaki çeşitli hatalar gösterilmiştir.
Video'da görüldüğü gibi, bir çok oyundaki yol bulma algoritmaları her durumda doğru sonuç vermemektedir. Ancak bu sorunların çoğu, yol bulma işleminin way-point'ler ile hesaplanmasından kaynaklanmaktadır.
(Waypoint, gezilebilinen alanları tanımlamak için konan noktalardır. Buna 'yol noktaları' diyebiliriz.)
Waypoint'ler Neden Yol Bulmak için Uygun Değildir ?
Aşağıda tipik bir waypoint örneği bulunmakta.
[World of Warcraft'daki Stormwind City]
[Waypointlerin konulmuş hali]
Gezilebilir alanları (yolları) way-pointlerle belirtebildiğimiz gibi konveks poligonlarla da ifade edebiliriz. Bu AI'a yol hakkında daha fazla bilgi ve daha düzgün karar verme olanağı verir. Bu şekildeki geometriler "navigation mesh" olarak adlandırılmıştır.
1. Bazı alanlarda, çok yüksek miktarda waypoint kullanmamız gerekebilir.
Geniş, açık alanlarda, AI'ın düzgün bir hareket yakalaması için çok fazla poligon gerekebilir.
Aşağıdaki resim, World of Warcraft'taki "Halaa" ismindeki kasabadan. NPC'lerin açık kısımlarda rahatça hareket etmesi isteniyor.
Açık alanlar için çok fazla waypoint koymamız gerekiyor. Ancak bu sayı bile yeterli değil, waypointlerimizi daha da arttırmazsak, karakterlerimiz hareket ederken zig-zaglar çizerek ilerleyecektir.
Diğer yandan, navigation mesh ile tanımlama yaparsak, çok daha az poligon kullanarak işimizi bitirmiş oluruz.
Bu sayede daha az arama yaparak, yol bulma işleminin hızını da arttırabilirisiniz.
2. Karakterler ilerlerken zig-zaglar çizerek ilerleyebilir.
Waypoint'ler belirlediğiniz zaman, karakteriniz bu waypointlerin üzerinde hareket edecektir. Bu yüzden, büyük ihtimalle seçtiğiniz herhangi iki nokta arasında, düzgün waypointler bulunmayacağından, karakteriniz zig-zaglar çizerek hareket edecektir.
Karakterimizin A'dan B'ye gittiğiniz düşünelim.
Burada da sarı ile gösterilmiş olan yol, A'dan B'ye giden en ideal waypoint'leri göstermektedir.
Bu noktalar ile daha yumuşak olarak bir eğri oluşturmayı da düşünebilirsiniz, fakat waypointler etrafındaki objelerle ilgili bir bilgi barındırmadığından, eğrinin istenmeyen bir noktadan geçip geçmeyeceğini hesaplamanız zor olabilir.
Ancak, navigation mesh kullansaydık, en doğru yolu bulmamız daha kolay olacaktı. Aşağıda ise aynı işlemin navigation mesh ile yapılmış hali bulunmakta.
Bu durumda ise, karakterlerin dolaşabileceği alanın tümünü bildiğimizden dolayı, hesapladığımız yolu istediğimiz gibi yumuşatabiliriz. Aynı şekilde, aşağıdaki resimde, kırmızı olarak işaretlenen yol waypoint kullanıldığında ortaya çıkarken, mavi ile gösterilen yol ise navigation mesh kullandığımızda oluşturuluyor. (Tabii ki mavi olan yol programcının kullandığı algoritmaya göre değişir.)
3. Waypointler kullandığımızda yolu, dinamik olarak değişen çevreye göre, değiştirmemiz daha zordur.
Eğer çevre dinamik olarak değişiyorsa ve sizin o bölgede yeterli sayıda waypointiniz yoksa, yol bulma işlemi başarısız olabilir. Aşağıdaki resimde yol üzerinde bir kutu olduğunu düşünelim. Bu durumda çok az waypoint bulunduğundan, karakter kutunun yanından düzgün bir şekilde dolaşamayacaktır.
Ancak, navigation mesh kullanırsak, çevre hakkında da bilgi sahibi olduğumuzdan, çeşitli yöntemlerle daha uygun bir yol bulabiliriz.
4. Waypoint'ler farklı hareket tipleri olan karakterler için düzgün sonuç vermez.
Genişliği, yüksekliği, dönüş şekli ve bunun gibi bir çok parametrenin değiştiği durumlarda waypoint sistemi düzgün çalışmayabilir. Örnek olarak, aşağıdaki resimde bir panzer ile bir kişinin olduğunu düşünelim. Kişi, kum torbalarının yanından kolaylıkla yürüken, bir panzer bunu yapamaz.
Kırmızı çizgi kişinin, mavi çizgi ise panzerin yolunu göstermektedir.
Waypoint'lerin düzgün çalışması için farklı waypoint grupları belirtebilirsiniz. Ancak bu işlem çok vakit isteyebilir. Bunların yanında waypointleri birleştirip panzerin nerede dolaşabileceğini hesaplayabilirsiniz ki, bu durumda waypointlerinizle bir navigation mesh oluşturmuş olursunuz.
Yukarıdaki resimde gördüğünüz gibi, gezilebilinen alanların köşeleri belirli. Bu durumda, her farklı karakteriniz için bir yarıçap belirtebilirsiniz. Örnek olarak bir kişinin yarıçapı 1m, panzerin ise 5m olarak belirlenebilir.
Aynı zamanda farklı tipte karakterler için farklı hareket stilleri belirtebilirsiniz. Örnek olarak bir motorsiklet köşeleri daha yuvarlak alırken, bir insan köşeli dönüşler yapabilir.
Yukarıdaki resimde, motorsiklet kırmızı yolu izleyebilirken, sarı yolu izleyemez.
5. Waypointler karakterlerinizin, yol bulma dışındaki işlemleri için yeterli veri barındırmaz.
Bazı zamanlarda, yol bulma için kullanılan verilerin, AI'a nasıl davranacağını veya hareket edeceğini hesaplamada yardım etmesi gerekir. Örnek olarak bir karakterin belirli bir yola değilde, bir düşmana göre yer değiştirdiğini düşünelim. Bir canavar tarafından kovalanan köylü, kendine göre bir algoritmayla kaçmaya başlayacaktır. Eğer siz waypoint kullandıysanız, karakteriniz bu waypointleri kullanarak sağa sola koşamaz veya atlayamaz. Bu durum navigation mesh ile giderilebilir. Yani her nokta için, o noktanın uygun olup olmadığını hesaplayabilirsiniz. Bu işi, fizik motorunuz da sizin yerinize yapabilir, ancak navigation mesh kullanarak daha az sistem kaynağı tüketen bir AI sistemi yazabilirsiniz.
Hala ikna olmayanlar, makalenin orjinalinde yer alan soru/cevap kısmını inceleyebilirsiniz. http://www.ai-blog.net/archives/000152.html
29 Ağustos 2009 Cumartesi
Video Oyunları Orkestrası - Video Games Orchestra
GDnet'in facebook sayfasında karşılaştım, böyle bir orkestra varmış. Youtube sayfalarını da inceledim, eski oyunları oynamışlığınız varsa kesinlikle bir ara ziyaret etmelisiniz. Hepsini izlemek isterseniz http://www.youtube.com/user/VGOOnline#play/all adresine tıklayınız. Bende birkaç tane seçtim sizin için, iyi seyirler :)
Super Mario Medley (5/8/2009 @ IGC East '09)
Donkey Kong Medley (3/5/2009 @ BPC) Laptop hoparlörleri ile dinliyorsanız pek bişey duyamayabilirsiniz.
Super Mario Galaxy: Wind Garden (5/8/2009 @ IGC East '09)
Chrono Trigger Medley (5/8/2009 @ IGC East '09)
Linkler
Anasayfa:
http://www.vgo-online.org/
Youtube Sayfası:
http://www.youtube.com/user/VGOOnline#play/all
Super Mario Medley (5/8/2009 @ IGC East '09)
Donkey Kong Medley (3/5/2009 @ BPC) Laptop hoparlörleri ile dinliyorsanız pek bişey duyamayabilirsiniz.
Super Mario Galaxy: Wind Garden (5/8/2009 @ IGC East '09)
Chrono Trigger Medley (5/8/2009 @ IGC East '09)
Linkler
Anasayfa:
http://www.vgo-online.org/
Youtube Sayfası:
http://www.youtube.com/user/VGOOnline#play/all
9 Ağustos 2009 Pazar
Bilgisayarın IP'sinden Bağlandığı Ülke Nasıl Bulunur ?
Web sitenize giren kullanıcıların hangi ülkeden bağlandığını öğrenmek isteyebilirsiniz, böylelikle onlara uygun bir sayfa veya karşılama metni gösterebilirsiniz. Bu yazıda, geo ip veritabanı kullanarak, bunu nasıl yapılacağını anlatacağım.
Öncelikle işe veritabanı için gerekli csv dosyasını indirmekle başlıyoruz. Csv dosyasını http://www.maxmind.com/download/geoip/database/GeoIPCountryCSV.zip adresinden indirebilirsiniz.
İndirme işlemi tamamlandıktan sonra, bu dosyayı uygun bir veritabanına aktarmamız gerekiyor. Herhangi bir veritabanı oluşturun, ya da hali hazırdaki bir veritabanını kullanın. Daha sonra bu veritabanında bir tablo yaratın. Bu tablonun ismi 'geoip' olabilir. Uygun bir tablo oluşturmak için, aşağıdaki kodu çalıştırabilirsiniz.
CREATE TABLE IF NOT EXISTS `geoip` (
`start_ip` char(15) NOT NULL,
`end_ip` char(15) NOT NULL,
`start` int(10) unsigned NOT NULL,
`end` int(10) unsigned NOT NULL,
`cc` char(2) NOT NULL,
`cn` varchar(50) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Şimdi bu tabloya, indirdiğimiz csv'deki verileri yükleyeceğiz. Bunun için, indirdiğiniz csv dosyasının yerini bilmeniz gerekiyor. Aşağıdaki SQL sorgusunu
çalıştırdığınızda csv dosyası veritabanına yüklenecektir.
LOAD DATA LOCAL INFILE [dosyanın yolu] INTO TABLE [tablo adı] FIELDS TERMINATED BY [kolon ayıracı] ENCLOSED BY [kapatma işareti] LINES TERMINATED BY [satır ayıracı];
Yukarıdaki koddan tam anlaşılmayabilir. Ben kendi durumum için doldurduğumda aşağıdaki sonucu elde ediyorum.
LOAD DATA LOCAL INFILE 'c:\\GeoIPCountryWhois.csv' INTO TABLE geoip FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';
Tablomuz hazır olduğuna göre, küçük bir php script'i ile ip'lerin hangi ülkeye ait olduğunu bulabilirsiniz.
<?php
$pth = "localhost";
$user = "root";
$psw = "123456";
$dbname = "country";
$con = mysql_connect($pth,$user,$psw);
if (!$con)
{
die("Veritabanı bağlantısı sağlanamıyor: " . mysql_error());
}
mysql_select_db($dbname, $con);
// IPden Ülke kodunu ve ismini array olarak döndüren fonksiyon.
function getCountry($ip) {
$ip = explode(".",$ip);
$result = 16777216 * $ip[0] + 65536 * $ip[1] + 256 * $ip[2] + $ip[3];
$sql = "SELECT cc, cn FROM geoip WHERE ".$result." BETWEEN start AND end";
$result = mysql_query($sql);
$country[0] = mysql_result($result,0,"cc");
$country[1] = mysql_result($result,0,"cn");
if(empty($ccode)) $ccode = "default";
return $country;
}
$myip = $_SERVER['REMOTE_ADDR'];
$myip = "85.100.153.122"; // eğer localhostta çalıştırısanızi 127.0.0.1 döneceğinden, herhangi bir ülke bulunmayacaktır.
// O yüzden örnek olarak bir ip adresi yazıyorum buraya, scripti kullanırken silmeyi unutmayın.
echo "IP Address = <b>".$myip."</b><br>n";
$code = getCountry($myip);
echo "Code = <b>".$code[0]."</b><br>n";
echo "Country = <b>".$code[1]."</b><br>n";
?>
Öncelikle işe veritabanı için gerekli csv dosyasını indirmekle başlıyoruz. Csv dosyasını http://www.maxmind.com/download/geoip/database/GeoIPCountryCSV.zip adresinden indirebilirsiniz.
İndirme işlemi tamamlandıktan sonra, bu dosyayı uygun bir veritabanına aktarmamız gerekiyor. Herhangi bir veritabanı oluşturun, ya da hali hazırdaki bir veritabanını kullanın. Daha sonra bu veritabanında bir tablo yaratın. Bu tablonun ismi 'geoip' olabilir. Uygun bir tablo oluşturmak için, aşağıdaki kodu çalıştırabilirsiniz.
CREATE TABLE IF NOT EXISTS `geoip` (
`start_ip` char(15) NOT NULL,
`end_ip` char(15) NOT NULL,
`start` int(10) unsigned NOT NULL,
`end` int(10) unsigned NOT NULL,
`cc` char(2) NOT NULL,
`cn` varchar(50) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Şimdi bu tabloya, indirdiğimiz csv'deki verileri yükleyeceğiz. Bunun için, indirdiğiniz csv dosyasının yerini bilmeniz gerekiyor. Aşağıdaki SQL sorgusunu
çalıştırdığınızda csv dosyası veritabanına yüklenecektir.
LOAD DATA LOCAL INFILE [dosyanın yolu] INTO TABLE [tablo adı] FIELDS TERMINATED BY [kolon ayıracı] ENCLOSED BY [kapatma işareti] LINES TERMINATED BY [satır ayıracı];
Yukarıdaki koddan tam anlaşılmayabilir. Ben kendi durumum için doldurduğumda aşağıdaki sonucu elde ediyorum.
LOAD DATA LOCAL INFILE 'c:\\GeoIPCountryWhois.csv' INTO TABLE geoip FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';
Tablomuz hazır olduğuna göre, küçük bir php script'i ile ip'lerin hangi ülkeye ait olduğunu bulabilirsiniz.
<?php
$pth = "localhost";
$user = "root";
$psw = "123456";
$dbname = "country";
$con = mysql_connect($pth,$user,$psw);
if (!$con)
{
die("Veritabanı bağlantısı sağlanamıyor: " . mysql_error());
}
mysql_select_db($dbname, $con);
// IPden Ülke kodunu ve ismini array olarak döndüren fonksiyon.
function getCountry($ip) {
$ip = explode(".",$ip);
$result = 16777216 * $ip[0] + 65536 * $ip[1] + 256 * $ip[2] + $ip[3];
$sql = "SELECT cc, cn FROM geoip WHERE ".$result." BETWEEN start AND end";
$result = mysql_query($sql);
$country[0] = mysql_result($result,0,"cc");
$country[1] = mysql_result($result,0,"cn");
if(empty($ccode)) $ccode = "default";
return $country;
}
$myip = $_SERVER['REMOTE_ADDR'];
$myip = "85.100.153.122"; // eğer localhostta çalıştırısanızi 127.0.0.1 döneceğinden, herhangi bir ülke bulunmayacaktır.
// O yüzden örnek olarak bir ip adresi yazıyorum buraya, scripti kullanırken silmeyi unutmayın.
echo "IP Address = <b>".$myip."</b><br>n";
$code = getCountry($myip);
echo "Code = <b>".$code[0]."</b><br>n";
echo "Country = <b>".$code[1]."</b><br>n";
?>
27 Temmuz 2009 Pazartesi
3G Şakası
Bugün Avea 3G fiyatlarını açıkladı. Ancak bu fiyatlar dünya standartlarının çok üstünde. Ayrıca kotasız bir tarifede yok. Ücretlendirmeler şöyle;
Diğer operatörlerde fiyatların çok oynamayacağını düşünüyorum. 3 gün sonra tüm operatörler tarifelerini açıklamış olacaklar.
Güncelleme:
Turkcell'inde fiyatlarıda çok farklı değil, işte fiyatlar.
- Görüntülü Konuşma ücreti her yöne dakikası 10 kuruş/1 kontör olacak.
- Cepten TV izlemek abonelik ücretine dahil olacak ve fiyatlar 5 TL'den başlayacak.
- Belirli bir video, film seçip indirmenin ücreti ise 3,5 TL.
- Cep telefonu için 100 MB kotalı bağlantı 8 TL
- 2GB Kotalı bağlantı ise 35 TL.
- Bilgisayar bağlantıları içinse 3G internet hızının maliyeti, 2GB 35 TL. 6GB 55 TL.
Diğer operatörlerde fiyatların çok oynamayacağını düşünüyorum. 3 gün sonra tüm operatörler tarifelerini açıklamış olacaklar.
Güncelleme:
Turkcell'inde fiyatlarıda çok farklı değil, işte fiyatlar.
- 1 GB internet bağlantısı aylık 29TL, 4 GB 39TL, 8GB ise 69 TL.
- Haftalık kullanmak isterseniz, 1 GB internet 19 TL.
- Cepten internete girmek isterseniz, 100 MB 9 TL / 65 Kontör
23 Temmuz 2009 Perşembe
Ogre ile Küçük Bir Deneme
Önceki yazıda ogre ile uğraştığımdan bahsetmiştim. Deneme amaçlı bir oyun yazmaya çalıştım. Her projede kullanabileceğim bir kod oluşturmak istedim, ancak yeniden yazılması gerekiyor.
Kısaca anlatmam gerekirse, 3000x3000 lik bir düzlemde kamera, ağaçlar, kutular, çimler ve zombiler rastgele yerleştiriliyor. Daha sonra sizden oyundaki zombileri öldürmeniz isteniyor :). Oyunda Ogre'nin haricinde NxOgre eklentisini kullandım.
Linkler
NxOgre:
http://www.nxogre.org/
NxOgre Forum:
http://www.ogre3d.org/addonforums/viewforum.php?f=6
Kısaca anlatmam gerekirse, 3000x3000 lik bir düzlemde kamera, ağaçlar, kutular, çimler ve zombiler rastgele yerleştiriliyor. Daha sonra sizden oyundaki zombileri öldürmeniz isteniyor :). Oyunda Ogre'nin haricinde NxOgre eklentisini kullandım.
Linkler
NxOgre:
http://www.nxogre.org/
NxOgre Forum:
http://www.ogre3d.org/addonforums/viewforum.php?f=6
6 Temmuz 2009 Pazartesi
Ogre
Son günlerde OGRE (Object-Oriented Graphics Rendering Engine) ile uğraşmaya başladım. Kendim için ufak bir oyun projesine giriştim ve internetteki açık kaynak kodlu oyun motorlarını incelemeye başladım. Her ne kadar OGRE bir oyun motoru olmasada, özelliklerinin çok fazla olması dikkatimi çekti.
Biraz uğraştıktan sonra birşeyler oluşmaya başladı. Bir iki ekran görüntüsü veriyorum.
Siz de incelemek isteyebilirsiniz. Linkler aşağıda.
Linkler
Ogre Anasayfası:
http://www.ogre3d.org/
Ogre'nin Özellikleri:
http://www.ogre3d.org/about/features
Biraz uğraştıktan sonra birşeyler oluşmaya başladı. Bir iki ekran görüntüsü veriyorum.
Siz de incelemek isteyebilirsiniz. Linkler aşağıda.
Linkler
Ogre Anasayfası:
http://www.ogre3d.org/
Ogre'nin Özellikleri:
http://www.ogre3d.org/about/features
Kaydol:
Kayıtlar (Atom)


