21x13 saha üzerinde 20'li zar (d20) mekanikli, tur bazlı futbol taktik ve strateji oyunu. Masaüstü kutu oyunu derinliğini, rol yapma oyunlarının zar heyecanını ve modern futbol taktiklerini tek bir dijital platformda birleştirir.
- Oyunun Amacı ve Konsept
- Öne Çıkan Özellikler
- Temel Oyun Mekanikleri
- Özgür Yazılım ve Ücretsiz Kullanım İlkesi
- Bilgi Güvenliği ve Zafiyet Yönetimi (SAST)
- 2026 Türkiye Mevzuatı ve KVKK Uyumluluğu
- Teknoloji Yığını
- Proje Mimarisi
- Kurulum ve Yerel Çalıştırma
- Katkıda Bulunma (Contributing)
- Öneri, İstek ve İletişim
- Lisans
Kafadan Taktik, futbolun taktik zekasını masaüstü strateji oyunlarıyla birleştiren tur bazlı bir futbol simülasyonudur:
- Masaüstü Oyun Hissi: Kartlar, piyonlar ve zarların fiziksel deneyimini modern web teknolojileriyle buluşturur.
- Rastlantısallık ile Taktik Dengesi: En iyi taktiği kursanız bile sahada şans ve risk faktörünü (d20) yönetmeniz gerekir.
- Eşzamanlı Planlama: Taraflar hamlelerini planlar, ardından çözümleme fazında zarlar atılarak hareketler ve ikili mücadeleler netleşir.
- Taktiksel Derinlik: 21 hücre boyuna, 13 hücre enine ızgara saha üzerinde hassas pozisyon alma, pas kanallarını kapatma ve kademe anlayışı.
- Zengin Oyuncu Rolleri: Pivot Forvet, Sahte 9, Çizgiye İnen Kanat, Libero Kaleci, Ağır Pasör Stoper gibi 19+ farklı futbolcu rolü.
- Dinamik Zar Çözümlemesi: Aksiyon zorluğu + oyuncu niteliği + zar sonucu hesaplamaları ile gerçekçi futbol anları.
- Yerel ve Çevrim İçi Mod: İster aynı ekranda arkadaşınızla karşılıklı, ister Firestore üzerinden çevrim içi lobi ile oynama imkanı.
- Gizlilik ve Güvenlik Odaklı: Sıfır iz sürücü, 2026 Türkiye KVKK regülasyonlarına tam uyumlu ve sıfır bağımlılık zafiyeti.
Saha X: 0..20 ve Y: 0..12 koordinatlarında 273 kareden oluşur:
Y^
12 ┌───────────────────┬───────────────────┐
│ Sol Kanat (0,12) │ Orta Saha │ Sağ Forvet
│ │ │
6 ├[KALE BEYAZ]───────┼──────(10,6)───────┼───────[KALE SİYAH]┤
│ │ (Başlama) │
0 └───────────────────┴───────────────────┘
0 ───────────────── 10 ──────────────── 20 ──> X
- X (0-20): Hücum ve savunma derinliği (Kale çizgileri: X=0 ve X=20).
- Y (0-12): Saha genişliği (Merkez çizgisi: Y=6).
Tüm kritik aksiyonlarda (Şut, Pas, Müdahale, Top Çalma) d20 zarı atılır. Atılan zar ve oyuncu niteliği toplanarak aksiyonun başarı derecesi belirlenir:
| Zar Aralığı | Başarı Seviyesi | Etki / Sonuç |
|---|---|---|
| 1 - 5 | 🔴 Zayıf (Weak) | Hatalı pas, top kaybı, auta giden şut veya faul riski. |
| 6 - 10 | 🟡 Orta (Medium) | Hedefe yakın ancak rakip tarafından bloklanabilir hamle. |
| 11 - 15 | 🟢 İyi (Good) | İsabetli pas, tehlikeli şut, başarılı top kapma. |
| 16 - 20 | 🟣 Mükemmel (Excellent) | 90'a giden şut, savunmayı yaran ara pası, kusursuz müdahale. |
Her oyuncunun 1 ile 20 arasında değişen 6 temel niteliği bulunur:
- Hız (HIZ): Bir turda kat edebileceği maksimum hücre mesafesi.
- Güç (GÜÇ): Omuz omuza mücadeleler ve kafa toplarındaki direnç.
- Teknik (TEK): Top saklama ve çalım atma başarısı.
- Pas (PAS): Uzun/kısa pasların hedefe ulaşma hassasiyeti.
- Şut (ŞUT): Kaleye vurulan şutların isabeti ve gol olma olasılığı.
- Savunma (SAV): Rakip atağı kesme, top kapma ve yer tutma yeteneği.
- HAREKET ET (MOVE): Oyuncunun hız değerine bağlı olarak boş bir kareye ilerlemesi.
- PAS AT (PASS): Topa sahip oyuncunun takım arkadaşına topu aktarması (d20 + Pas vs Mesafe & Rakipler).
- ŞUT ÇEK (SHOOT): Belirli menzilden kaleye yönelen vuruş (d20 + Şut vs Kaleci Kurtarışı).
- TOP SÜR (DRIBBLE): Rakibin baskı bölgesinde topu kontrol ederek ilerleme.
- MÜDAHALE ET (TACKLE): Rakip oyuncunun ayağındaki topa hamle yapma (d20 + Savunma).
- BEKLE (WAIT): Pozisyonunu ve dengesini koruma.
- İnisiyatif (Kura): Karşılıklı d20 atışı ile oyuna başlama hakkı belirlenir.
- Kadro Seçimi (Draft): Havuzdan dengeli 11 oyuncu seçimi yapılır.
- Saha Yerleşimi (Placement): Oyuncular taktik formasyona göre sahaya dizilir.
- Taktik Planlama: Her iki takım o tur yapacağı hamleleri gizlice planlar.
- Çözümleme (Resolution): Zarlar atılır, hamleler sırayla gerçekleşir ve sonuçlar kütüğe (Game Log) yazılır.
- Skor & Kutlama: Gol olduğunda kutlama animasyonu tetiklenir ve santra ile devam edilir.
Bu proje "Free & Open-First" (Özgür ve Ücretsiz Öncelikli) mimari ilkeleriyle geliştirilmiştir:
- Sıfır Lisans Maliyeti: MIT Lisansı altında herkes tarafından incelenebilir, çatallanabilir ve çalıştırılabilir.
- Ücretli Servis Bağımsızlığı: Harici ücretli API'ler, paralı veritabanı eklentileri veya zorunlu ödeme duvarları (paywall) içermez.
- Yerel-Öncelikli (Local-First): Oyunun tüm temel mekanikleri tek bir tarayıcı sekmesinde, internet bağlantısı olmadan veya tamamen ücretsiz bulut katmanlarıyla (Firebase Spark/Free tier) çalışabilir.
Proje geliştirilirken Statik Uygulama Güvenliği Testleri (SAST) ve güvenli kodlama standartları uygulanmıştır:
npm auditSıfır Zafiyet Politikası: Tüm üretim ve geliştirme bağımlılıkları düzenli olarak taranır; zafiyet barındıran paketler süratle güncellenir veya yamalanır.- Uygulanan Yamalar & Overrides:
qskütüphanesindeki array-limit bypass zafiyeti içinpackage.jsonoverrides mekanizmasıyla güvenli sürüme sabitlenmiştir (^6.16.0).source-map-jskütüphanesindeki DoS / indexed source-map section offsets (#8) zafiyeti^1.2.2sürümüne yükseltilerek giderilmiştir.@grpc/grpc-jskütüphanesi güvenli^1.14.0sürümüne kilitlenmiştir.
- HTML & Metin Sanitizasyonu: Kullanıcı girdileri, oyuncu adları ve sohbet alanları doğrudan DOM'a basılmaz; React'in sanal DOM kaçış mekanizmalarıyla işlenir.
- Sır İfşası Engelleme: İstemci tarafında hiçbir gizli API anahtarı veya yetkilendirme sırrı tutulmaz; tüm yapılandırmalar genel (public) veya çevre değişkeni (
VITE_) düzeyinde güvenli şekilde ayrıştırılmıştır. - Katı Tip Denetimi:
tsc --noEmitile derleme öncesi tip güvenliği kontrol edilir, tanımsız durum erişimleri engellenir.
Kafadan Taktik, 6698 sayılı Kişisel Verilerin Korunması Kanunu (KVKK), 2026 güncel Kurul ilke kararları ve 5651 sayılı Kanun uyarınca tasarlanmıştır:
- Veri Minimizasyonu İlkesi (KVKK Madde 4):
- Uygulama kullanıcıdan T.C. Kimlik Numarası, telefon, kesin konum veya hassas nitelikli kişisel veri talep etmez.
- Kullanıcı profilleri takma ad (rumuz) ve oyuncu avatarı seçimlerinden ibarettir.
- Yerel Depolama (LocalStorage) ve Çerez Yönetimi:
- Profil tercihleri ve oyun durumu kullanıcının kendi cihazında (
localStorage) saklanır; merkezi bir sunucuda profil çıkarma veya üçüncü taraf reklam hedeflemesi amacıyla işlenmez.
- Profil tercihleri ve oyun durumu kullanıcının kendi cihazında (
- Açık Rıza ve Şeffaflık:
- İletişim veya geri bildirim kanalları üzerinden paylaşılan bilgiler yalnızca ilgili talebin yanıtlanması amacıyla kullanılır; ticari elektronik ileti gönderimi için izinsiz kullanılmaz (6563 sayılı ETK uyumlu).
- Fikri ve Sınai Haklar (5846 Sayılı FSEK):
- Projedeki tüm kodlar, kurallar ve taktik motoru özgün olarak tasarlanmış olup açık kaynak (MIT) lisanslıdır. Gerçek kulüp markaları veya lisanslı sporcu telifleri kullanılmamaktadır.
| Katman | Teknoloji / Kütüphane | Açıklama |
|---|---|---|
| Arayüz & Çatı | React 19 + TypeScript 5.8 | Modern, hızlı ve tip güvenli bileşen mimarisi |
| Derleyici & Sunucu | Vite 6.4 | Hızlı HMR ve optimize edilmiş üretim derlemesi |
| Stil & Tasarım | Tailwind CSS v4 | Sıfır CSS şişkinliği, modern tasarım |
| İkon Seti | Lucide React | Hafif ve erişilebilir SVG ikonlar |
| Animasyon | Motion (Framer Motion v12) | Akıcı zar atışları ve aksiyon geçişleri |
| Çok Oyunculu / DB | Firebase Firestore (İsteğe bağlı) | Çevrim içi oda eşleşmesi ve gerçek zamanlı senkronizasyon |
kafadan-taktik/
├── src/
│ ├── components/ # UI ve Oyun Bileşenleri
│ │ ├── Pitch.tsx # 21x13 Taktik saha render motoru
│ │ ├── DiceRollEffect.tsx # 3D/2D d20 zar animasyonu bileşeni
│ │ ├── PlayerCard.tsx # Futbolcu nitelik ve rol kartı
│ │ ├── SquadDraftScreen.tsx # 11 seçimi ve kadro mühendisliği
│ │ ├── OnlineLobby.tsx # Çevrim içi maç odaları ve eşleşme
│ │ ├── RulesModal.tsx # Detaylı oyun kuralları kılavuzu
│ │ └── ProfileModal.tsx # Kullanıcı takma adı ve tercihler
│ ├── data/ # Varsayılan oyuncu havuzu, roller ve formasyonlar
│ ├── utils/ # Taktik hesaplama, zar simülatörü ve yardımcı fonksiyonlar
│ ├── types.ts # Katı TypeScript arayüzleri ve oyun tipleri
│ ├── App.tsx # Ana oyun döngüsü ve faz yönetimi
│ ├── main.tsx # Uygulama başlangıç noktası
│ └── index.css # Tailwind CSS entegrasyonu
├── package.json # Bağımlılıklar, scriptler ve güvenlik overrides
├── tsconfig.json # TypeScript derleme ayarları
└── vite.config.ts # Vite konfigürasyonu
Projeyi yerel ortamınızda çalıştırmak için Node.js (v18+) ve npm gereklidir.
git clone https://github.com/kullanici-adi/kafadan-taktik.git
cd kafadan-taktiknpm installnpm run devUygulama varsayılan olarak http://localhost:3000 adresinde çalışmaya başlayacaktır.
# Tip kontrolü (SAST kontrolü)
npm run lint
# Üretim için derleme
npm run buildHer türlü katkıya açığız! Lütfen aşağıdaki adımları izleyin:
- Bu depoyu çatallayın (Fork).
- Yeni bir özellik dalı açın (
git checkout -b feature/harika-taktik). - Değişikliklerinizi yapın ve güvenlik kontrollerini çalıştırın (
npm run lint && npm audit). - Değişikliklerinizi işleyin (
git commit -m 'feat: Yeni pivot forvet varyasyonu eklendi'). - Dalınızı uzak depoya gönderin (
git push origin feature/harika-taktik). - Bir Pull Request (PR) açın.
Görüşleriniz, yeni kural önerileriniz veya hata bildirimleriniz için doğrudan iletişime geçebilirsiniz:
- E-Posta: ersin@ozbucak.com.tr
- Konu Başlığı Örneği:
[Kafadan Taktik] Kural Önerisi / Hata Bildirimi
Bu proje MIT Lisansı kapsamında açık kaynak ve özgür yazılım olarak sunulmaktadır. Ticari veya kişisel amaçlarla özgürce incelenebilir, değiştirilebilir ve dağıtılabilir.