Skip to content
 
 

Repository files navigation

Web Tabanlı Programlama Dönem Projesi

Bursa Teknik Üniversitesi, Bilgisayar Mühendisliği Bölümü.

Geliştiriciler: Mustafa Mert ve Efe Aslan.

Projenin Amacı ve Hedefi (Challenge)

Projenin temel amacı, son yıllarda yapılmış olan oyun geliştirme yarışmalarından seçtiğimiz bir oyunun temel mekaniklerini HTML5 ve JavaScript ile "canvas" kullanarak geliştirmektir.

Oyunun Zorluğu ve Hedefi: Oyuncunun temel hedefi, mermilerini idareli kullanarak düşmanları yok etmek ve engelleri aşmaktır. Geri tepme (recoil) mekaniği sayesinde oyuncular, silah ateşlendiğinde oluşan itici gücü platformlar arası geçişte stratejik bir avantaj olarak kullanmalıdır.

Bağlantılar

Oyun Kontrolleri

  • Nişan Alma ve Ateş Etme: Farenin (crosshair) konumu ile hedeflenir ve fare tıklaması ile ateş edilir.
  • Hareket ve Zıplama: Karakter sağa/sola koşabilir ve yerdeyken zıplayabilir.

Oyun İçi Görüntüler

![Oyun İçi Görüntü 1]( image

) ![Oyun İçi Görüntü 2](image

)

Oyun Mekanikleri ve Teknik Tasarım

1. Karakter Hareket ve Fizik Dinamikleri

Oyunun fizik motoru, gerçek dünya dinamiklerinin oyuna uyarlanmasıyla oluşturulmuştur.

  • İvmelenme ve Sürtünme: Karakterin hareketi anlık duruşlar yerine sürtünme katsayısı (friction: 0.125) ile sönümlenir.
  • Yerçekimi: Sürekli uygulanan dikey ivme (gravity: 0.1), karakterin boşlukta düşmesini sağlar.
  • Zıplama: Karakter sadece yerdeyken (isOnGround) tetiklenen bir dikey hız (-5.0) değişimi ile zıplar.
  • DeltaTime (Kare Bağımsız Hız): Karakterin hızı her karede deltaTime ile çarpılarak güncellenir; böylece donanım performansından bağımsız sabit bir oyun hızı sunulur.

2. Savaş Mekanikleri ve Varlıklar

  • Vektörel Geri Tepme (Recoil): Silah ateşlendiğinde, merminin çıkış açısının tam tersi yönünde karaktere bir itme kuvveti (impulse: 7.0) uygulanır.
  • Düşmanlar (Enemies): Temas edildiğinde karakteri öldüren ve vurulduğunda animasyonunu tamamlayarak bellekten silinen sınıflardır.
  • Tuzaklar (Spikes): Mermilerden etkilenmeyen, ancak temas anında bölümü başa döndüren statik engellerdir.
  • AABB Collision (Çarpışma Testi): Tüm objeler arasındaki etkileşim, dikdörtgen sınırlayıcı kutuların kesişimini kontrol eden bir algoritma ile yönetilir.
  • Görsel ve Animasyon Sistemi: Karakter animasyonları tek bir görsel üzerinden kare kare okunur (Sprite Sheet). Hareket yönüne göre context.scale(-1, 1) komutu kullanılarak varlıklar aynalanır.

Grup Üyelerinin Rol Dağılımı

Mustafa Mert Oyunun temel omurgasından, performansından ve fizik kurallarından sorumludur.

  • requestAnimationFrame kullanarak ana oyun döngüsünün (gameLoop) kurulması ve deltaTime optimizasyonunun yazılması.
  • Karakterin yerçekimi, zıplama ve sürtünme dinamiklerinin matematiksel olarak koda dökülmesi.
  • Karakterin platformlarda durabilmesini ve dikenlere (Spike) çarptığında ölmesini sağlayan Eksen Hizalı Çarpışma (AABB Collision Detection) algoritmasının yazılması.
  • Karakter ilerledikçe platformların ve engellerin geriye doğru akmasını sağlayan kaydırma (offset) mantığının ayarlanması.

Efe Aslan Oyunun içindeki aktörlerin, savaş mekaniklerinin ve görselliğin kodlanmasından sorumludur.

  • Düşman (Enemy), Mermi (Bullet) ve Silah (Rifle) gibi oyun objelerinin Nesne Yönelimli Programlama (OOP) mantığıyla bağımsız sınıflar olarak yazılması.
  • Fare (crosshair) açısına göre trigonometrik hesaplamalarla (Math.cos / Math.sin) mermi yönünün belirlenmesi ve Geri Tepme (Recoil) fiziğinin uygulanması.
  • Sprite Sheet görsellerinin parçalanarak kare kare oynatılması ve karakterin yönüne göre görsellerin aynalanması (context.scale).
  • Ses efektlerinin eklenmesi ve mermi sistemi yönetimi.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages