Bu proje şu anda nihai projem konumunda – tabii daha iyisi gelene kadar 😄
Klasikleşmiş “Vampir Köylü” oyununun web üzerinde oynanabilen bir versiyonu bu.
Öncelikle oyunun nasıl oynandığını biraz anlatayım, sonra aşağıdaki “İncele” butonuna tıklayarak projenin çalışır haline göz atabilirsin.
Orijinal versiyonunda bir sürü farklı rol var ama biz bu sürümde işleri basit tuttuk: sadece 2 rol var — Köylü ve Kurt.
Bu da demek oluyor ki oyun, iki farklı takımdan oluşuyor:
🧑 Köylüler vs 🐺 Kurtlar.
Oyunu oynayabilmek için en az 2 kişi gerekiyor ama tavsiyem en az 3 kişiyle oynamanız. 5 ve üzeri oyuncuyla ise oyun gerçekten keyifli hale geliyor.
Kurtlar her gece kendi aralarında oylama yaparak bir kişiyi seçerler. Seçilen kişi, sabahı göremez.
Ama dikkat: İlk gece kurtlar kimseyi öldüremez.
Kurtların amacı, kimliklerini gizleyerek tüm köylüleri tek tek yok etmek.
Köylüler geceleri sadece uyur. Sabah olunca, kim kurt olabilir diye tartışılır. Sonrasında ise herkes, şüphelendiği bir kişiye oy verir ve en çok oy alan oyuncu asılır.
Buradaki twist şu: Oylamaya kurtlar da katılır ve onlar, kimlerin kurt olduğunu zaten biliyor. Ama köylüler hiçbir şey bilmeden tahmin yürütmek zorunda. Bu da sabahki tartışmaları hem komik hem de kafa karıştırıcı hale getiriyor 😄
Kurtlar kendilerini çok iyi gizleyebilirse, köylüler istemeden kendi takım arkadaşlarını asabilir. Bu durumda kurtlar ciddi bir avantaj kazanır ve oyun bambaşka bir yöne evrilebilir.
Oyunun amacı karşı takımın tamamını yok etmek. Kurtlar sinsilikle, köylüler ise sezgiyle bu savaşı kazanmaya çalışıyor.
Oynaması basit, kafa yorması keyifli, arkadaş ortamı için şahane bir oyun oldu
Şimdi biraz da perde arkasına bakalım. Bu proje bir Node.js uygulaması. Temel yapı Express.js çatısı üzerine kurulu. Arka planda sunucu ile istemci arasında kesintisiz iletişim için Socket.io kullanıldı.
Oyunun gerçek zamanlı çalışabilmesi için Socket.io büyük bir rol oynuyor. Örneğin biri odaya katıldığında, bu durum anında diğer oyunculara yansıyor.
Veri tarafında Firebase kullandım. Firebase’in pek çok hizmeti var ama biz bu projede Realtime Database özelliğini tercih ettik. Bu sistem sayesinde veriler anlık olarak güncelleniyor ve değişiklikler tüm oyunculara aynı anda yansıyor.
Mesela bir oyuncu odaya katıldığında, bu olay sunucuya gönderiliyor ve diğer tüm oyuncuların ekranında anında görünür hale geliyor. Bu özelliği, oyunun neredeyse her yerinde kullandım.
Bu proje şu anda açık kaynak olarak geliştiriliyor. İlk başta sadece kendim için kapalı kaynaklı bir şekilde yazmaya başlamıştım. Ama sonrasında "neden başkaları da katkı sağlamasın?" dedim ve GitHub üzerinden herkesin erişebileceği hale getirdim.
Projeye aşağıdaki bağlantıdan ulaşabilirsin:
🔗 GitHub - KurtAdam
GitHub’daki kurulum adımlarını izleyerek projeyi kendi bilgisayarına kurabilir, sonrasında istediğin gibi geliştirme yapabilir ve hatta projeye katkıda bulunabilirsin.
Projeyi canlı olarak görmek istersen, aşağıdaki “İncele” butonuna tıklayabilirsin. Oyun hazır ve seni bekliyor 😊