PC'de Forza Horizon için gerçek tetik tepkisi.
Frenleri hisset. Motoru hisset. Kurulum karmaşası yok.
Steam profilim: https://steamcommunity.com/id/teccno/
CS:GO eşyası ile destek olmak için :D : https://steamcommunity.com/tradeoffer/new/?partner=291638630&token=Xyg4vITU
💛 Bu projenin ilerlemesini sağlamak için bana Forza Horizon 6 hediye ederek sponsor olan Jared (jmac122)'e çok teşekkürler.
- Ne işe yarar
- Kurulum
- Oyun içi kurulum
- Steam Haptics'i Etkinleştirme
- Çalıştırın
- Steam ile Otomatik Başlatma
- Hissi Ayarlama
- Sorun Giderme
- Teşekkürler
Forza Horizon araba telemetrisini UDP üzerinden gönderir, ancak Steam Input DualSense'in adaptif tetiklerini kullanmaz. Bu küçük uygulama aradaki boşluğu doldurur:
- Sol tetik (fren) - bastıkça daha sert itme uygular. Lastikler kaydığında ABS gibi titrer. El freni çekildiğinde ekstra direnç gösterir.
- Sağ tetik (gaz) - yumuşak kademeli direnç. Vites geçişlerinde vuruntu (darbe) hissi. Devir sınırında (rev limiter) titreme.
┌──────────────────┐ UDP 5300 ┌──────────────────┐ HID write ┌─────────────┐
│ Forza Horizon │ ──────────────► │ Bu uygulama │ ──────────────► │ DualSense │
│ (Data Out) │ telemetrisi │ (sadece tetik │ sadece tetik │ kontrolcü │
│ └───────────────┘ 324 byte │ bitleri) │ └─────────────┘
└──────────────────┘ ▲
│
┌──────────────────┐ HID write │
│ Steam Input │ ──────────────────────►│
│ (titreşim bitl.)│ titreşim + tuşlar │
└──────────────────┘
Hem uygulama hem de Steam aynı kontrolcüye yazar - ancak farklı byte'lara dokunurlar:
- Steam, titreşim motorlarını (rumble) ve tuş eşlemelerini yönetir.
- Bu uygulama ise yalnızca adaptif tetik bitlerini değiştirir (
valid_flag0içindeki0x04ve0x08bitleri). - HID cihazı bloklamayan (non-blocking) modda açılır, böylece yazma işlemleri kontrolcüyü beklemeden anında gerçekleşir. Sıraya girme veya Steam'i engelleme durumu olmaz.
Bu yüzden ikisini aynı anda çalıştırabilirsiniz ve hiçbir şey birbirini bozmaz.
Gereksinimler: Windows 10/11 veya Linux ve bir DualSense kontrolcüsü (USB veya Bluetooth).
- En son sürüme (latest release) gidin.
win_start.bat(Windows) veyalinux_start.sh(Linux) dosyasını indirin.- Dosyayı boş bir klasöre koyun.
- Önemli: Öncelikle
uvaracını manuel olarak kurmanızı şiddetle tavsiye ederiz. PowerShell'i açıp şu komutu çalıştırın:powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
- Bunu yapmazsanız,
win_start.bataracıuv'yi otomatik olarak kurmaya çalışacaktır. Ancak Windows, PowerShell'de "Execution Policy" (Çalıştırma Politikası) hatası vererek bu otomatik kurulumu engelleyebilir. - Eğer Çalıştırma Politikası hatası alırsanız: Klasörde Shift + Sağ Tık yapın, "PowerShell penceresini burada açın" seçeneğine tıklayın,
Set-ExecutionPolicy RemoteSigned -scope CurrentUseryapıştırıp Enter'a basın, ardındanYyazıp tekrar Enter'a basın.
- Bunu yapmazsanız,
win_start.bat(veyalinux_start.sh) dosyasına çift tıklayarak çalıştırın.
Başlatıcı (launcher) uygulamanın indirilmesini, ortamın hazırlanmasını ve çalıştırılmasını otomatik halleder. Sonraki açılışlarda güncellemeleri de denetler.
Note
Her sürüme deneysel bir seçenek olarak ayrıca tek dosyalık bir Windows .exe de eklenmiştir. Uygulamayı çalıştırmanın önerilen yolu yine win_start.bat'tır — kendini günceller ve her Windows sürümünde aynı şekilde çalışır.
Linux ekstraları:
libhidapipaketini kurun (sudo apt install libhidapi-hidraw0/sudo pacman -S hidapi/sudo dnf install hidapi) veapp/packaging/linux/70-dualsense.rulesdosyasındaki udev kuralını ekleyin. Ardından kontrolcüyü bir kez çıkarıp geri takın.
Oyunu Xbox Uygulaması veya Microsoft Store üzerinden oynuyorsanız, oyunun kontrolcünüzü Xbox kumandası olarak tanıması için bir araca ihtiyacınız olacak. Seçeneklerden biri SISR (Steam Input System Redirector) — Steam Input'u sistem seviyesine yönlendirip gerçek bir Xbox kontrolcüsü taklit eder, böylece Windows Mağazası uygulamaları ve hile korumalı (anti-cheat) oyunlarda bile çalışır.
SISR kontrolcüyü Steam Input üzerinden yönlendirdiği için, Steam fiziksel DualSense'i özel olarak ele geçirip bu uygulamanın bağlanmasını engelleyebilir. Bunu önlemek için programları tam olarak şu sırayla başlatmalısınız:
- İlk olarak BU UYGULAMAYI başlatın (
win_start.bat) ve tetiklerdeki kısa titreşim sinyalini bekleyin. - İkinci olarak SISR'ı (ve Steam'i) başlatın.
- Son olarak Forza Horizon'ı başlatın.
(Not: Oyun esnasında kontrolcünüzün bağlantısı kesilirse, SISR'ı kapatın, bu uygulamayı yeniden başlatın ve ardından SISR'ı tekrar açın. SISR kurulumu ve taklit seçenekleri için SISR README sayfasına bakın.)
Manuel kurulum (geliştiriciler için)
git clone https://github.com/HamzaYslmn/Forza-Horizon-DualSense-Python
cd Forza-Horizon-DualSense-Python/src
uv sync
uv run main.pyuv kurmak için: pip install uv veya astral.sh/uv.
Forza Horizon'da, Ayarlar → HUD ve Oynanış (Settings → HUD and Gameplay) bölümünü açıp en alta kaydırın:
| Ayar | Değer |
|---|---|
| Telemetriyi Etkinleştir (Data Out) | AÇIK (ON) |
| Telemetri IP Adresi | 127.0.0.1 |
| Telemetri Bağlantı Noktası | 5300 |
Note
Bazı Forza sürümlerinde IP adresi olarak 127.0.0.1 yazmak çalışmayabilir. Eğer uygulama telemetri verisi almıyorsa, IP adresi yerine ::1 (IPv6 loopback) yazmayı deneyin.
Steam, DualSense kontrolcünüzdeki sol ve sağ titreşim motorlarını titretebilir. Bunları etkinleştirmek için:
- Kütüphanenizde Forza Horizon'a sağ tıklayın → Özellikler.
- Kontrolcü → Ek Ayarlar bölümüne gidin.
- DualSense titreşimi seçeneğinin AÇIK olduğundan emin olun.
- Ayarlar → Gelişmiş Kontroller bölümünü açın.
- Titreşim seçeneğini bulun ve etkinleştirin.
En iyi sonuç için resmi PlayStation® Aksesuarları yazılımını kurun:
- İndir: PlayStation® Aksesuarları
Bu, Windows için DualSense belleniminizin güncel olmasını sağlar.
ℹ️ Adaptif Tetikler Hakkında: Steam bu oyun için DualSense adaptif tetiklerini desteklemez. Bu uygulamanın yaptığı şey tam olarak budur - Steam'in sağladığı titreşimin (rumble) üzerine gerçekçi tetik geri bildirimlerini (fren direnci, motor tepkisi, ABS titreşimleri, vites darbeleri, devir sınırı uyarısı) ekler.
win_start.bat (Windows) veya linux_start.sh (Linux) dosyasına çift tıklayın.
Tetiklerde kısa bir titreşim hissedeceksiniz - bu çalıştığı anlamına gelir. Şimdi Forza Horizon'ı başlatıp sürmeye başlayabilirsiniz.
Başlatıcıyı Forza Horizon'dan önce açın. Eğer HidHide kullanıyorsanız
python.exedosyasına izin verin (allowlist).
Oyuna başlarken tetiklerin otomatik açılmasını istiyorsanız, Steam'e önce bu başlatıcıyı çalıştırmasını söyleyebilirsiniz.
⚠️ Uyarı: Bu yöntemle otomatik başlatmak bazen uygulama ile ilgili sorunlara yol açabilir. En kararlı deneyim için, dosyaya çift tıklayarak manuel çalıştırmanız önerilir.
-
Steam'de, Forza Horizon'a sağ tıklayın → Özellikler.
-
Genel sekmesinde Başlatma Seçenekleri'ni bulun.
-
Tercihinize göre aşağıdaki komutlardan birini yapıştırın (
win_start.batdosyanızın gerçek yolunu yazmayı unutmayın):-
Seçenek A: Steam Arayüzü ve Oynama Süresi Takibini Korumak (Önerilen) Bu seçenek, komutu
cmd.exe /cile sararak Steam'in süreci izlemesini sağlar, böylece Steam Arayüzü (Shift+Tab) ve Oynama Süresi Takibi aktif kalır ve konsol penceresi işlem bitince otomatik kapanır:"C:\Windows\System32\cmd.exe" /c ""C:\Yolunuz\Forza-Horizon-DualSense-Python\win_start.bat" %command%" -
Seçenek B: Daha Basit Yöntem Doğrudan çalıştırma yöntemi (Steam arayüzü ve oynama süresi takibi çalışmayabilir):
"C:\Yolunuz\Forza-Horizon-DualSense-Python\win_start.bat" %command%
-
Bu kadar. Oyna düğmesine bastığınızda önce başlatıcı çalışır, ardından oyun açılır.
Gelişmiş - Python betiğini doğrudan çalıştırma (BAT dosyası olmadan)
Eğer repoyu klonladıysanız ve uv kullanıyorsanız, Başlatma Seçenekleri'ne şunu yapıştırın:
cmd /c "start /MIN /D C:\Yolunuz\Forza-Horizon-DualSense-Python\src uv run main.py" && %command%
Her efekt (fren gücü, ABS titreşimi, vites darbesi, devir sınırlayıcı vb.) dosya düzenlemeye gerek kalmadan uygulama içerisindeki Ayarlar sayfasından ayarlanabilir veya kapatılabilir. Değişiklikler bir sonraki açılışta geçerli olur.
⚠️ Devir sınırlandırma efekti sabit bir RPM değerine göre değil,rpm / max_rpmoranına göre tetiklenir. Farklı arabalar farklı oranlarda devir sınırına ulaştığından araba bazlı ufak ayarlamalar gerekebilir.
| Belirti | Çözüm |
|---|---|
DualSense gamepad interface not found |
Kontrolcü bağlı değil ya da HidHide onu gizliyor - python.exe dosyasına izin verin. |
No UDP packets yet |
Forza'nın Data Out ayarı kapalı, IP/port yanlış, Windows Güvenlik Duvarı engelliyor ya da IP adresini 127.0.0.1 yerine ::1 yapmayı deneyin. |
Windows Defender / SmartScreen win_start.bat dosyasını engelliyor |
1. Mavi "Windows bilgisayarınızı korudu" ekranında "Ek bilgi" seçeneğine tıklayın. 2. Altta çıkan "Yine de çalıştır" butonuna basın. (Betik yalnızca gerekli bağımlılıkları indirir.) |
| Tetikler çok güçsüz | brake_max_force / throttle_max_force değerini yükseltin veya ilgili curve değerini düşürün. |
| Tetikler duvar gibi çok sert | brake_max_force / throttle_max_force değerini düşürün veya ilgili curve değerini yükseltin. |
| Tetikler hafif basışta bile çok sert | Başlangıç gücünü (baseline force) düşürün veya curve değerini yükseltin. |
| Vites geçişlerinde titreşim yok | Araba 3 km/s hızdan hızlı gitmeli ve geçerli vitesler arasında geçiş yapmalıdır. |
| Açılış titreşiminden sonra konsol ekranı boş kalıyor | TUI arayüzünü atlamak için terminalden cd src && uv run main.py --headless komutu ile çalıştırın. |
src/
├── main.py # Giriş noktası
└── modules/
├── settings.py # 👈 düzenleyeceğiniz dosya
├── dualsense/
│ ├── main.py # HID katmanı
│ └── adaptive_trigger.py # genel efekt ilkelleri
└── forzahorizon/
├── udp_listener.py # UDP ayrıştırıcı
└── effects.py # Forza'ya özel Controller + animasyonlar
DSX (DualSenseX) desteğini entegre ettik. DSX limitasyonları sebebiyle 1:1 aynı deneyimi yakalayamayabilirsiniz, ama elimden geleni yaptım. Şu anda uyarlanabilir tetik efektlerinin daha düşük hassasiyete sahip bir sürümü tam olarak desteklenmektedir.
HamzaYslmn tarafından geliştirildi.
- Jared (jmac122) - bu projenin devam edebilmesi için bana Forza Horizon 6 hediye etti. Teşekkürler Jared!
- BeaudinSan - inanılmaz cömert desteğiniz için çok teşekkür ederim! Benim için gerçekten çok değerli.
- McLarenF1God - Forza Horizon 6 DLC'leri için teşekkürler!
- Griever - DSX ve DLC'ler için teşekkürler!
- PlusMinusZer0 - Puding için teşekkürler!
- dotcom - Kek için teşekkürler!
- wallbangz - Kek için teşekkürler!
- BambinoPinguino - Çay için teşekkürler!
- Ereldun - Kahve için teşekkürler!
- Clevens克林 - Şeker için teşekkürler!
- 海 拔 88 - Şeker için teşekkürler!
Ayrıca bu projeyi sessizce destekleyen anonim sponsorlara ve takdirleri, nazik sözleri ve sosyal medyadaki paylaşımlarıyla bu yolculuk boyunca beni motive eden herkese yürekten teşekkür ederim.
Daha sürükleyici bir yarış deneyimi için geliştirildi



