Pazar, Temmuz 15, 2007

Robocode and BattleCode

Bir çoğumuzda olduğu gibi benim de yazılım dünyasına hevesim bilgisiyar oyunlarıyla başladı. İlk bilgisayarım olan Commodore 64'ü aldığımdan bu yana hep takıldığım bir oyun mutlaka olmuştur. Fakat son bir yıldır oyunun yerini bloglar, wikiler ve RSS'ler almaya başladı. :)

Oyun olayını abarttığım dönem ise Ultima Online (UO) oynadığım yıllardır. Aslında MMRPOG'ciler ne demek istediğimi gayet iyi anlayacaklardır. Bir "RolePlaying" oyunu olan UO'nun en önemli ve en çok zaman alan kısmı ise argoda "skill kasma" diye tabir edilen, bilgisayarın başında anlamsızca saatlerinizi geçirdiğiniz kısımdır. Bu tip oyunlarda karakterinizin yetenekleri kuvvetli değilse hiç birşey yapamazsınız.

İşte o dönemde UO'da otomatik bir şekilde (unattended) karakter geliştirmenin yollarını ararken EasyUO isminde bir programın varlığını keşfettim. EasyUO kabaca UO'daki client-server arasındaki iletişimi simüle eden bir scripting programıydı. EasyUO kullanarak bir arkadaşımla birlikte öyle scriptler yazmıştık ki, scriptler oyunu bizden daha iyi oynar olmuşlardı. Gece biz uyurken karakterlerimiz otomatik olarak gelişiyordu. Bir nevi oyun robotları yazıyorduk.

Daha sonra farkettim ki çok kompleks bir oyun için işleri otomatikleştirebiliyorsak, iş dünyasında görece daha basit işler için otomatikleştirme çok daha kolay yapılabilirdi. İşte Apache Ant ve CruiseControl gibi Konfigürasyon Yönetimi araçlarına ilgim bu şekilde başladı.

Açıkçası oyun oynamak için yazılım yapmanın, yazılım mühendislerine çok şey katacağını düşünüyorum. Bu yüzden birkaç sene evvel takıldığım fakat geçenlerde iş yerinde bir arkadaşla konuşurken tekrar gündeme gelen iki konuyuı sizinle paylaşmak istedim.


Robocode
Robocode, yıllar önce IBM mühendislerinden Matthew Nelson tarafından başlatılan açık kaynak bir java oyunu. Şu aralar Flemming N. Larsen tarafından bakımı yapılan oyunda kendi yazdığınız robotları başkalarının robotları ile çarpıştırabiliyorsunuz. Oyunda bir numara olmak için hem Java bilginizi hem de AI, algoritma, vs. gibi bilgilerinizi devamlı geliştirmeniz gerekiyor. Epey bir hayran kitlesi bulunan Robocode'un çeşitli ülkelerde ligleri bile düzenlenmekte. Daha evvel duymadıysanız mutlaka bir deneyin derim. http://robocode.sourceforge.net/
Learning never stops with Robocode
If there was ever any doubt on the ability of Robocode to serve as a great teaching tool for Java programming, algorithm design, basic trigonometry, or even distributed computing principles, this article should settle it. Robocode naturally challenges the beginning robot designer to go "the extra mile" to create winning, advanced robots that reflect their mastery of the programming and algorithm design art. Far from being "just another game," Robocode delivers on its educational goals in the name of friendly competition. If only learning could always be this much fun!


BattleCode
BattleCode da MIT'de ders olarak okutulan java tabanlı, yarışma tadında bir oyun. Robocode'dan en büyük farkı BattleCode'da takım oyununun ön plana çıkması. Ayrıca BattleCode, Robocode'a göre çok daha karmaşık. Zaten oyunun spec'lerini inceledeğinizde ne demek istediğimi anlayacaksınız.



Sanırım MIT derslerde öğrencilere oyun oynatacak kadar cidiyetsiz bir üniversite. Ben zaten MIT'den daha adam çıktığını hiç duymadım :)

Bu blog'u da sevgili dostum Oktay Özgün'ün vakti zamanında benimle paylaştığı bir yazıyla kapatayım. Ne demişler, "En güzel oyun kendi yazdığınızdır"
Gaming and Learning
Unlike education acquired through textbooks, lectures, and classroom instruction, what takes place in massively multiplayer online games is what we call accidental learning. It's learning to be - a natural byproduct of adjusting to a new culture - as opposed to learning about. Where traditional learning is based on the execution of carefully graded challenges, accidental learning relies on failure. Virtual environments are safe platforms for trial and error. The chance of failure is high, but the cost is low and the lessons learned are immediate.

1 Yorum:

Anonymous Adsız dedi ki...

Mustafa Abi Merhabalar,

İnsanlarımızda bir türlü eğlenerek öğrenme kültürünü oluşmadı bence. Yani bir iş yapılıyorsa mutlaka canımız sıkkın olacak, boş boş yatıyorsak keyfimiz yerine gelecek. Halbuki kendmizi eğlendirecek işler yaparak hem öğrenip hem de eğlenebiliriz.

Rahatsız olduğum bir nokta da okullarda o kadar yapay zeka,makine öğrenmesi,uzman sistemler,robotik gibi dersler anlatırlar ama birisi kalkıp güzel bir oyun projesi yapacam dese "projeyi başlamadan bitirirler" .


Yazının sonundaki:

Virtual environments are safe platforms for trial and error. The chance of failure is high, but the cost is low and the lessons learned are immediate.

cümleleri çok hoşuma gitti açıkcası.


Selamlar...

9:01 ÖÖ  

Yorum Gönder

Kaydol: Kayıt Yorumları [Atom]

<< Ana Sayfa