Stranded Deep için hazırladığım trainerin güncelleme, uyumluluk ve sorun bildirimlerini bundan sonra bu konu altında toplayacağım.
Trainer şu anda 17 farklı özellik içeriyor ve ORGA Hub üzerinden kullanılabiliyor. 🏝️
Stranded Deep tarafında oyunun Unity ve Mono yapısından faydalanıyorum.
Trainerin büyük bölümü Mono Freeze sistemi üzerinden çalışırken bazı özelliklerde oyunun method davranışını değiştirmek için Mono Patch kullanıyorum.
Yani burada klasik pointer zincirlerine mümkün olduğunca az bağımlı, oyunun kendi C# runtime yapısını kullanan bir sistem var.
🟦 Neden Unity Mono Kullanıyorum?
Stranded Deep Unity tabanlı bir oyun ve Mono runtime kullanıyor.
Bu bizim trainer geliştirme tarafında oyunun:
Class
Field
Method
Runtime instance
yapılarına ulaşabilmemizi sağlıyor.
Normal bir trainerde örneğin oyuncunun açlık değerini bulmak için:
Bellekte değeri ara → pointer bul → offset çıkar.
şeklinde ilerleyebiliriz.
Mono tarafında ise uygun yapılarda doğrudan ilgili class ve field üzerinden hareket edebiliyoruz.
Bu nedenle Stranded Deep için mümkün olduğunca oyunun kendi managed yapısını kullanmayı tercih ettim.
🧊 Mono Freeze Nedir?
Stranded Deep trainerinde en fazla kullandığım yöntem Mono Freeze.
Mantığı basit.
Önce ORGA Hub Mono runtime üzerinden ilgili class ve field’ı çözüyor.
Sonra gerçek oyun instance’ına ulaşıyor.
Trainer ilgili değeri belirlediğimiz seviyede tutuyor.
Oyun değeri azaltmaya çalıştığında ORGA Hub tekrar istediğimiz değeri yazıyor.
Bu yöntem özellikle hayatta kalma oyunlarında sık bulunan:
Can
İhtiyaç değerleri
Oyuncu statları
gibi sürekli değişen sistemlerde oldukça kullanışlı.
🔍 Sabit Offset Yerine Runtime Çözüm
Mono kullanmanın benim için en önemli avantajlarından biri bu.
Diyelim bir değer eski oyun sürümünde:
Player + 0x128
adresinde.
Yeni güncellemede geliştirici sınıfa birkaç yeni field ekledi ve aynı değer artık:
Player + 0x138
oldu.
Trainer doğrudan 0x128 kullanıyorsa özellik bozulur.
Ama ilgili field’ın offset’ini Mono runtime üzerinden çözebiliyorsak yeni fiziksel konumu tekrar bulabiliriz.
Tabii bu traineri güncellemelere karşı tamamen korumuyor ama gereksiz sabit offset bağımlılığını azaltıyor.
🔧 Mono Patch
Her özellik bir değeri sürekli freeze ederek yapılamıyor.
Bazen asıl değiştirmemiz gereken şey oyunun bir değeri nasıl hesapladığı veya bir methodun nasıl çalıştığı oluyor.
Bu gibi durumlarda Mono Patch kullanıyorum.
Burada genel mantık:
Mono üzerinden ilgili methodu bul → JIT edilmiş native koduna ulaş → gerekli patch’i uygula
şeklinde.
Yani native kodu bellekte rastgele aramak yerine önce oyunun kendi metadata sistemi üzerinden hangi method üzerinde çalıştığımızı bulabiliyoruz.
Bu da hem geliştirme hem de hata ayıklama tarafını daha düzenli hale getiriyor.
🤔 Freeze Yerine Neden Bazen Patch Kullanıyorum?
Örneğin bir değer sürekli azalıyor olsun.
En kolay yöntem değeri sürekli maksimumda tutmak.
Ama oyun bu değer düştüğünde başka sistemleri de çalıştırıyor olabilir.
Mesela:
Görsel efekt
Karakter animasyonu
Hasar sistemi
Başka bir stat hesabı
aynı method içerisinden yönetiliyor olabilir.
Böyle bir durumda sadece değeri sonradan tekrar yükseltmek yerine onu azaltan davranışa müdahale etmek daha doğru olabilir.
Bu yüzden her özellik için otomatik olarak:
Freeze yapalım.
demiyorum.
Oyunun sistemi nasıl çalışıyorsa ona göre yöntem seçiyorum.
🎮 Hayatta Kalma Oyunlarında Trainer Testi Biraz Daha Farklı
Stranded Deep gibi hayatta kalma oyunlarında birçok sistem birbirine bağlı.
Bir oyuncu değeri:
Açlık
Susuzluk
Sağlık
Dayanıklılık
Çevresel etkiler
gibi başka sistemlerle bağlantılı olabilir.
Bu nedenle bir değeri değiştirip:
Sayı sabit kaldı, çalışıyor.
demek yeterli değil.
Oyunun geri kalanının da normal davranmaya devam ettiğini kontrol etmek gerekiyor.
🔄 Oyun Güncellemesi Geldiğinde Ne Oluyor?
Mono kullanmamız bazı güncellemelerde işimizi kolaylaştırsa da Stranded Deep traineri yine bozulabilir.
Geliştirici:
Class adını değiştirirse
Field adını değiştirirse
Bir değeri başka class’a taşırsa
Methodu yeniden yazarsa
Veri tipini değiştirirse
Sistemin çalışma mantığını değiştirirse
ilgili trainer özelliğini tekrar güncellemem gerekebilir.
Özellikle Mono Patch kullanan özelliklerde methodun yeni sürümdeki native kodunu yeniden kontrol etmek önemli.
🤔 17 Özelliğin Hepsi Birden Bozulur mu?
Şart değil.
Trainerin büyük bölümü Mono kullanıyor olsa da her özellik aynı class veya method üzerinde çalışmıyor.
Oyunun güncellemesinde sadece belirli bir survival sistemi değişmiş olabilir.
Bu durumda:
15 özellik çalışırken 2 özellik bozulabilir.
Tam tersi de mümkün.
Eğer birçok özellik aynı temel player instance’ına bağlıysa bu temel yapı değiştiğinde birden fazla özellik aynı anda etkilenebilir.
Bu yüzden hangi özelliklerin birlikte bozulduğu benim için önemli bir ipucu.
🔁 Sahne veya Save Değişimlerinde Ne Oluyor?
Unity oyunlarında önemli konulardan biri runtime instance’ların değişebilmesi.
ORGA Hub oyuncunun mevcut instance’ını bulmuş ve trainer düzgün çalışıyor olabilir.
Ama:
Save yükleyince
Oyun dünyasına yeniden girince
Karakter yeniden oluşturulunca
eski instance artık geçerli olmayabilir.
Bu nedenle trainerin gerektiğinde güncel nesneyi tekrar bulabilmesi gerekiyor.
Bir özellik:
Oyunu ilk açınca çalışıyor ama save yükleyince çalışmıyor.
şeklinde davranıyorsa bunu özellikle bildirmenizi isterim.
Bu tarz bilgiler problemin nerede olduğunu çok hızlı gösteriyor.
🧪 Güncelleme Sonrası Nasıl Test Ediyorum?
Yeni Stranded Deep sürümünde genel olarak 17 özelliği tek tek kontrol ediyorum.
Özellikle:
Özellik açılıyor mu?
Gerçekten etkisini gösteriyor mu?
Kapatınca oyun normale dönüyor mu?
Save yükledikten sonra çalışıyor mu?
Oyunu yeniden başlatınca tekrar çalışıyor mu?
Diğer özelliklerle birlikte kullanılabiliyor mu?
Oyunun başka sistemlerinde garip davranış oluşturuyor mu?
gibi şeylere bakıyorum.
Mono Patch kullanılan özelliklerde biraz daha dikkatli olmak gerekiyor çünkü doğrudan methodun çalışan koduna müdahale ediliyor.
🔁 Değer Değişiyor Ama Sonra Geri Dönüyorsa
Bu hata raporunda önemli bir ayrıntı.
Mesela trainer açılıyor ve değer:
25 → 100
oluyor.
Bir saniye sonra:
100 → 25
geri dönüyor.
Bu durumda özellik tamamen çalışmıyor değildir.
ORGA Hub doğru değere ulaşmış olabilir ama oyun gerçek değeri başka bir sistem üzerinden tekrar hesaplıyor olabilir.
Bu durumda mevcut Mono Freeze tanımını veya verinin gerçek kaynağını tekrar incelemem gerekir.
O yüzden:
Çalışmıyor.
yerine:
Değer değişiyor ama hemen geri dönüyor.
demek benim için çok daha faydalı.
💾 Save Yedeği Almak İyi Fikir
Stranded Deep tarafında bazı trainer seçenekleri save dosyasına yansıyabilecek değerleri etkileyebilir.
Özellikle:
Envanter
Kalıcı oyuncu değerleri
Kaynak miktarları
İlerlemeyle ilişkili sistemler
üzerinde işlem yaparken manuel save yedeği bulundurmanızı öneriyorum.
Traineri mümkün olduğunca güvenli hazırlamaya çalışıyorum ama mod ve trainer kullanırken kendi save yedeğinizi almak her zaman ekstra güvence.
⚠️ Aşırı Değerlerden Kaçının
Manuel değer değiştirebildiğiniz trainer özelliklerinde oyunun normal sınırlarını tamamen unutmayın.
Normalde:
0 - 100
arasında çalışan bir sisteme:
999999999
yazmak teknik olarak mümkün olabilir.
Ama oyun başka bir yerde bu değerin en fazla 100 olacağını varsayıyor olabilir.
Bu nedenle özellikle manuel sayı girdiğiniz özelliklerde makul değerler kullanmanızı öneriyorum.
Trainer oyunun koyduğu bazı sınırları kaldırabilir ama oyunun kendi kodunun nasıl yazıldığını değiştiremeyiz. 😄
🖥️ Ayrı Trainer EXE’si Yok
Stranded Deep traineri diğer ORGA Hub içerikleri gibi ayrı bir trainer programı olarak dağıtılmıyor.
ORGA Hub:
Oyunu algılıyor
İlgili trainer paketini yüklüyor
17 özelliği gösteriyor
Mono runtime bağlantısını kuruyor
Trainer işlemlerini yönetiyor
Hotkey ve özellik durumlarını takip ediyor
ve bütün kullanım tek uygulamadan gerçekleştiriliyor.
Kullanıcı tarafında klasik ORGA Hub arayüzü var.
Arka tarafta ise Stranded Deep’e uygun Mono sistemi çalışıyor.
🔐 Trainer Nasıl Paketleniyor?
Geliştirme sırasında kullandığım trainer tanımlarını doğrudan açık JSON şeklinde dağıtmıyorum.
Yayınlama aşamasında trainer tanımı:
paketleniyor → şifreleniyor → imzalanıyor
ve .bin haline getiriliyor.
ORGA Hub paketi kullanmadan önce doğruluyor ve ardından trainer runtime içerisinde gerekli tanımlar kullanılıyor.
Bu sayede farklı yöntemlerle hazırlanmış bütün trainerleri aynı dağıtım altyapısından yönetebiliyorum.
🐛 Sorun Bildirirken
Stranded Deep trainerinde bir problem yaşarsanız bu konu altından bildirebilirsiniz.
Mümkünse:
Stranded Deep oyun sürümü
Kullandığınız platform
Çalışmayan özelliğin adı
Daha önce çalışıyor muydu?
Sorun oyun güncellemesinden sonra mı başladı?
Özellik hiç tepki vermiyor mu?
Değer değişip geri mi dönüyor?
Save yükleyince mi bozuluyor?
Oyunu yeniden açınca durum değişiyor mu?
Başka mod kullanıyor musunuz?
Varsa ekran görüntüsü
bilgilerini ekleyin.
Özellikle hangi özelliklerin hâlâ çalıştığını belirtmeniz de işe yarıyor.
🔎 Sorunu Nasıl İnceliyorum?
Önce ilgili özelliğin hangi yöntemi kullandığına bakıyorum.
Eğer Mono Freeze ise:
Class hâlâ var mı?
Field adı aynı mı?
Doğru instance bulunuyor mu?
Veri tipi değişmiş mi?
kontrol ediyorum.
Eğer Mono Patch ise bunlara ek olarak:
Method aynı mı?
JIT edilen kod değişmiş mi?
Patch noktası hâlâ doğru mu?
Orijinal instruction yapısı aynı mı?
gibi kontroller gerekiyor.
Bu şekilde bütün traineri sıfırdan incelemek yerine gerçekten değişen bölüme odaklanabiliyorum.
📝 Güncellemeleri Burada Tutacağım
Trainer tarafında önemli bir değişiklik olduğunda bu konu altında paylaşacağım.
Örneğin:
🔄 Güncellendi
Yeni Stranded Deep sürümüyle uyumluluk sağlandı.
🐛 Düzeltildi
Yeni sürümde field yapısının değişmesi nedeniyle çalışmayan özellik güncellendi.
🔧 Değiştirildi
Bir özellik daha stabil Mono yöntemine geçirildi.
⚠️ Bilinen Sorun
Belirli özellik yeni oyun sürümünde geçici olarak uyumsuz.
gibi.
❤️ Kısaca
Stranded Deep traineri şu anda 17 özellik içeriyor ve ORGA Hub üzerinden kullanılabiliyor.
Teknik tarafta ağırlıklı olarak:
Mono Freeze
Mono Patch
Unity Mono runtime çözümleme
kullanıyorum.
Bu sayede mümkün olduğunca sabit pointer ve offsetlere bağımlı kalmadan oyunun kendi C# runtime yapısından faydalanabiliyorum.
Ama her trainerde olduğu gibi oyun güncellendiğinde sistemlerin tekrar kontrol edilmesi gerekiyor.
Yeni Stranded Deep sürümleri geldikçe 17 özelliği test edip önemli uyumluluk değişikliklerini bu başlıkta paylaşmaya devam edeceğim. 🏝️
Gringos