[KO-YARDIM ÖZEL] KNIGHT ONLINE YÜK TESTİ v1.0 - Geliştirdigin Oyun Ne Kadar Oyuncu Kaldiriyor Buyur TesT Progami Ücretsiz.

KY Uzman Üye
Coder
KAYIT
26 Ağu 2026
Mesajlar
88
Tepki puanı
364
Web
osmanbilgin.dev
KNIGHT ONLINE YÜK TESTİ v1.0
5000 bot, gerçek oyuncu gibi giriş yapar — sunucun açılışa hazır mı, açmadan öğren!
Edit by Osman Bilgin

6_canli_test.png


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

Bu program ne işe yarar?

Sunucunu açtın, beta günü geldi, herkes aynı anda giriş yapmaya çalışıyor… Sunucu çöker mi? Donar mı? Oyuncular düşer mi? Login ekranında takılır mı?
Bunu açılış günü oyuncularla değil, önceden bu programla öğreniyorsun.

  • Binlerce bot GERÇEK OYUNCU GİBİ girer: LoginServer'a ID/şifre yazar → hesap otomatik açılır → ulus seçer → karakter oluşturur → oyuna girer.
  • İki test türü var:
    • giris — botlar girer, doğdukları yerde dolaşır, arada sohbet eder (login / karakter seçimi / kalabalık testi).
    • exp — botlar haritadaki canavar noktalarına dağılır, canavar keser, EXP kasar, ölürse yeniden doğar (savaş / NPC / AI yükü).
  • Canlı sayaçlar: kaç bot girdi, kaç karakter açıldı, oyunda kaç kişi var, kopan var mı, saldırı ve EXP sayısı, giriş süresi.
  • Sunucu izleme: GameServer / LoginServer işlemci ve bellek kullanımı canlı; süreç çökerse anında "ÇÖKTÜ" yazar.
  • Rapor: her 5 saniyenin kaydı sonuc\rapor.txt dosyasına yazılır.
  • Temizlik: test bitince tek düğmeyle bot hesaplarını tüm tablolardan siler.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

İndir

>> KO_Yuk_Testi_v1.0.zip (11,8 MB) <<
İçinde: KO_Yuk_Testi.exe (kurulum yok, Python gerekmez) · BENIOKU.txt · kaynak kodu (kaynak\ klasörü)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

Gereksinimler (önce bunu oku!)

  1. Sunucunda otomatik hesap açma (AutoRegister / otologin) AÇIK olmalı.
    Botlar var olmayan bir ID ile girer, hesap LoginServer'da kendiliğinden açılır. Kapalıysa botlar ls_giris_red_2 (hesap yok) hatası alır.
  2. Şifresiz 2369+ protokol. Paket çerçevesi:
    Kod:
    AA 55 | uzunluk | gövde | 55 AA
    2369 tabanlı sunucuda test edildi. Paket şifrelemesi (1.298 JvCryption / AES) kullanan sunucularda çalışmaz.
  3. Windows. Exe tek başına çalışır.
  4. Veritabanı bağlantısı yalnız EXP testindeki canavar noktalarını çekmek ve test hesaplarını silmek için gerekir. Giriş testi için gerekmez. MSSQL için "ODBC Driver 17 for SQL Server" kurulu olmalı.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

Ekranı tanıyalım

0_genel.png

  1. Sekmeler — Sunucu & Botlar, Karakter, EXP Testi, Veritabanı, Gelişmiş. Ayarlar sekmelere bölünmüş.
  2. BAŞLAT — testi başlatır. Ayarlar otomatik kaydedilir.
  3. Durdur — testi yarıda keser, tüm botların bağlantısını koparır.
  4. Ayarları kaydet — ayarları exe'nin yanındaki ayarlar.json dosyasına yazar; programı tekrar açınca aynı ayarlar gelir.
  5. Rapor klasörü — sonuc klasörünü açar (rapor.txt burada).
  6. Test hesaplarını sil — bot hesaplarını ve karakterlerini veritabanındaki TÜM tablolardan siler. Önce kaç satır silineceğini gösterir, onay ister.
  7. Canlı durum — sayaçlar, 5 saniyede bir güncellenir.
  8. Sunucu satırı — izlenen sunucu süreçlerinin işlemci % ve belleği (sunucu bu bilgisayardaysa).
  9. Günlük — ne olduğu yazı olarak akar.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

1. Sekme: Sunucu & Botlar

1_sunucu_botlar.png

  1. LoginServer IP — LoginServer'ın adresi. Program sunucuyla aynı bilgisayardaysa 127.0.0.1.
  2. LoginServer port — çoğu sunucuda 15100. LogInServer.ini içindeki PORT.
  3. GameServer IP — GameServer'ın adresi.
  4. GameServer port — çoğu sunucuda 15001. GameServer.ini içinde yazar.
  5. İzlenecek süreçler — işlemcisi/belleği izlenecek programların adı, virgülle: GameServer,LogInServer,Ebenezer,AIServer,Aujard. Görev Yöneticisi'nde ne yazıyorsa o (.exe olmadan).
  6. Test türü — giris: girip dolaşır · exp: canavar keser (önce EXP sekmesini doldur).
  7. Bot sayısı — kaç bot girecek. Varsayılan 5000.
  8. Oyunda kalma (sn) — her bot oyunda kaç saniye kalıp çıkacak. 600 = 10 dakika.
  9. Hesap öneki — bot hesaplarının başı. "yuk" yazarsan hesaplar yuk0001, yuk0002 … yuk5000 olur. Karakter adı da aynısı. Gerçek oyuncu adlarıyla çakışmayacak bir şey seç.
  10. Hesap şifresi — botların şifresi. Hesaplar ilk girişte bu şifreyle açılır.
  11. Süreç (çekirdek) — botlar bu kadar parçaya bölünüp ayrı çekirdeklerde çalışır. Yaklaşık 500 bot / süreç: 5000 bot için 10.

İpucu: Botları sunucuyla aynı bilgisayarda çalıştırırsan işlemciyi paylaşırlar. Asıl ölçüm için botları ikinci bir bilgisayardan çalıştırmak daha doğru sonuç verir (IP'lere sunucunun dış IP'sini yaz).

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

2. Sekme: Karakter

2_karakter.png

Bot hesabında karakter yoksa bot kendisi oluşturur. Bu sekme o karakterin nasıl olacağını belirler.

  1. Ulus — karisik (yarısı Karus, yarısı El Morad), karus ya da elmorad.
  2. Karus ırk — 1 Arch Tuarek (savaşçı), 2 Tuarek (rogue / rahip), 3 Wrinkle Tuarek (büyücü).
  3. Karus sınıf — 101 savaşçı, 102 rogue, 103 büyücü, 104 rahip.
  4. El Morad ırk — 11 Barbar (savaşçı), 12 El Morad erkek, 13 El Morad kadın.
  5. El Morad sınıf — 201 savaşçı, 202 rogue, 203 büyücü, 204 rahip.
  6. Statlar — STR, HP, DEX, INT, MP sırasıyla. Sunucu kuralı: toplam 300, her biri en az 50. Varsayılan: 65,65,60,50,60.

Neden savaşçı? EXP testinde botlar normal saldırıyla vuruyor. Yayla normal saldırı çoğu sunucuda reddedilir, büyücü/rahip de yakın dövüşte zayıf kalır. Irk ve sınıf uyumsuzsa sunucu karakteri oluşturmaz; günlükte secim_… hatası görürsün.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

3. Sekme: EXP Testi

3_exp.png

  1. Bölge (zone) — botların EXP kasacağı harita. 21 = Moradon. Yeni karakterler nerede doğuyorsa orası olmalı; başka yerde doğan bot kasmaz, dolaşır.
  2. Spot tablosu — canavar doğma noktaları tablosu. Sürüme göre K_NPCPOS ya da K_NPCPOS2369. Yanlış yazarsan program veritabanındaki doğru adları önerir.
  3. Canavar tablosu — K_MONSTER ya da K_MONSTER2369.
  4. En yüksek canavar seviyesi — botlar 1. seviye yeni karakter. 10 yazarsan yalnız Worm, Bandicoot, Kecoon gibi düşük canavarlara gider. Yüksek yazarsan sürekli ölürler (bu da bir test!).
  5. Saldırı gecikmesi — iki vuruş arası (×10 ms). 120 = 1,2 sn. Sunucu silahın hızından daha sık vuruşu reddeder.
  6. Canavar noktalarını çek — veritabanından noktaları alır (spotlar.json oluşur), günlükte kaç nokta ve canavar bulunduğunu yazar. EXP testinden önce bir kez bas.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

4. Sekme: Veritabanı

4_veritabani.png

  1. ODBC sürücüsü — genelde ODBC Driver 17 for SQL Server. Bilgisayarında hangisi kuruluysa (ODBC Data Sources → Drivers).
  2. SQL sunucusu — . (nokta) = bu bilgisayar. Uzaktaysa IP ya da IP\SQLEXPRESS.
  3. Veritabanı adı — oyun veritabanının adı (TB_USER, USERDATA tablolarının olduğu).
  4. Kullanıcı — boş bırakırsan Windows kimliğiyle bağlanır. SQL kullanıcısıyla bağlanacaksan sa vb.
  5. Şifre — SQL kullanıcısının şifresi.
  6. Bağlantıyı dene — günlükte "Veritabanı bağlantısı TAMAM (… tablo)" yazmalı.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

5. Sekme: Gelişmiş (protokol)

5_gelismis.png

Sunucun standart 2369 ise burayı ellemene gerek yok. Kendi LoginServer'ını değiştirdiysen buradan uyarlarsın:

  1. Sunucu listesi opcode — 245 (0xF5).
  2. Liste isteğine u16 ekle — 2369 istemcisi listeyi isterken sonuna 2 bayt ekler: evet.
  3. Giriş opcode — 243 (0xF3), ID/şifre paketi.
  4. Giriş sonucu bayt konumu — cevapta sonuç baytının yeri. 2369: 3 (opcode + u16 + sonuç). 1 = başarılı.
  5. Haber opcode — 246 (0xF6).
  6. Özel imza paketi gönder — kendi sunucuna özel bir giriş paketi eklediysen. Normalde hayır.
  7. İmza opcode — o özel paketin opcode'u.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

Adım adım: ilk testin

  1. Zip'i aç, KO_Yuk_Testi.exe'yi çalıştır.
  2. Sunucu & Botlar sekmesine IP/portları yaz. İlk sefer için Bot sayısı: 50, Oyunda kalma: 60 yap.
  3. BAŞLAT. "OYUNDA 50" ve "Kopma 0" görüyorsan akış senin sunucunda çalışıyor demektir.
  4. Sonra bot sayısını 500 → 2000 → 5000 diye artır. Her seferinde sunucu satırındaki işlemci/belleği izle.
  5. EXP testi için: Veritabanı → bağlantıyı dene → EXP Testi → canavar noktalarını çek → Test türü exp → BAŞLAT.
  6. Bitince Test hesaplarını sil (sıralama sayfalarında bot görünmesin).

7_bitti.png


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

Sayaçları nasıl okurum?

  • Login girişi — LoginServer'da ID/şifresi kabul edilen bot sayısı.
  • Yeni karakter — sıfırdan karakter oluşturan bot. Testi ikinci kez çalıştırırsan karakterler zaten var olduğu için 0 görünür, normal.
  • OYUNDA — oyuna giren bot. Bot sayısına eşit olmalı.
  • Kopma — oyundayken bağlantısı kopan bot. 0 olmalı! 0 değilse sunucu oyuncu düşürüyor demektir.
  • Ölüm — EXP testinde ölüp kasabada yeniden doğan bot.
  • Saldırı / EXP — gönderilen vuruş ve alınan EXP. EXP artıyorsa savaş sistemi çalışıyor.
  • Giriş sn p50 / p95 — ID/şifre yazılmasından oyuna girene kadar geçen süre. p50 = botların yarısı bu sürede girdi, p95 = %95'i bu sürede girdi. Yüksekse karakter seçimi / veritabanı yavaştır.
  • Botlara KB/s — sunucudan botlara akan veri. Kalabalıkta çok yükselirse bant genişliğine dikkat.
  • hata— en sık görülenler:
    • ls_giris_red_2 — hesap yok → otomatik hesap açma kapalı.
    • ls_giris_red_3 — şifre yanlış (hesap daha önce başka şifreyle açılmış).
    • gs_surum_cevapsiz — GameServer cevap vermedi → sunucu dolu olabilir (aşağıya bak).
    • ls_baglanamadi / gs_baglanamadi — IP/port yanlış ya da güvenlik duvarı kapalı.
    • secim_… — karakter seçilemedi (ırk/sınıf uyumsuz, ad kuralı vb.).

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

Bizim sonuçlarımız (KoMobilPvP)

Sunucu: 2369 tabanlı, 16 çekirdek / 32 GB, bot ve sunucu aynı makinede.

Giriş testi: 5000 bot aynı anda → hepsi 9 saniyede LoginServer'dan geçti, 4998'i oyunda (p50 48 sn, p95 79 sn), 10 dakika, kopma 0.

EXP testi: 4998 bot Moradon'daki 74 canavar noktasına dağıldı, 15 dakikada 1,6 milyon saldırı, 11 bin EXP, kopma 0.

Sunucu: GameServer işlemci %6-8, bellek 1,54 GB sabit (sızıntı yok), çökme yok.

Testin bize gösterdikleri (sizde de kontrol edin):
  • Oyuncu sınırı: sunucu kodunda
    Kod:
    shared/globals.h  →  #define MAX_USER 5000
    5000 dolunca yeni gelen oyuncu hiçbir uyarı almadan "bağlanıyor" ekranında bekliyor. Biz de test sırasında oyuna giremedik. Botların 2'si gs_surum_cevapsiz aldı. MAX_USER'ı büyütmeden önce dikkat: sunucu botları / NPC'ler 5001–9999 kimlik aralığını kullanıyor olabilir (NPC_BAND 10000).
  • Karakter seçimi sırası: veritabanı istekleri tek sırada (~50 / saniye). 5000 kişi aynı saniyede gelirse sonuncusu 1-2 dakika bekler.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

Bir bot tam olarak ne yapıyor? (meraklısına)

Kod:
LoginServer
  0xF5  sunucu listesi
  0xF3  ID / şifre            (hesap otomatik açılır)
  0xF6  haber                 → bağlantıyı kapatır
GameServer
  0x2B  sürüm kontrolü
  0x01  hesap girişi          (cevap: ulus, 0 = yeni hesap)
  0x05  ulus seç              (yeni hesapsa)
  0x0C  karakter listesi
  0x02  karakter oluştur      (ad = hesap adı, statlar toplam 300)
  0x04  karakter seç          (cevaptan doğum konumu)
  0x0D  oyuna gir 1 → 0x0E oyuncu bilgisi (kendi kimliği) → 0x0D oyuna gir 2
Oyunda
  0x06  yürüme (saniyede bir)          0x10  sohbet
  0x1C  bölgedeki NPC'ler → 0x1D NPC ayrıntısı (konum, tür)
  0x0A  NPC giriş/çıkış   0x0B NPC hareketi   0x11 ölüm
  0x08  normal saldırı (silah gecikmesiyle)   0x1A EXP
  0x12  öldüyse yeniden doğ
  0x42  sıkıştırılmış (LZF) paketler açılır

Kaynak kodu zip'in içinde (kaynak\ klasörü, Python). Kendi sürümüne uyarlamak isteyen ortak.py içindeki game_server işlevine baksın. Exe'yi yeniden üretmek için derle.bat.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

Sık sorulanlar

S: Botlar girmiyor, "ls_giris_red_2" yazıyor.
C: Sunucunda otomatik hesap açma kapalı. LoginServer'da AutoRegister'ı aç.

S: "OYUNDA" 4998'de kaldı, 2 bot giremedi.
C: Muhtemelen MAX_USER sınırına (5000) değdin. Sunucuda o sırada başka kim varsa (sen, GM'ler) onlar da sayılır.

S: EXP testinde "Saldırı" artıyor ama "EXP" 0.
C: Botlar canavara ulaşamıyor ya da sunucu saldırıyı reddediyor. Sınıfı savaşçı yap, "Saldırı gecikmesi"ni 150'ye çıkar, canavar seviyesini düşür.

S: Antivirüs exe'yi şüpheli buldu.
C: Exe, Python + PyInstaller ile paketlendi; bu tür exe'ler bazen yanlış alarm verir. Kaynak kodu zip'in içinde, istersen kendin derle (derle.bat).

S: Canlı sunucumda deneyebilir miyim?
C: İçeride gerçek oyuncu yokken dene. 5000 bot oyuncuları etkiler.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

UYARI: Yalnız KENDİ sunucunda ve test ortamında kullan. Başkasının sunucusuna karşı kullanmak saldırıdır.

Takıldığınız yeri konuya yazın, yardımcı olalım. Öğrenmek isteyen herkese açık!

KO Yük Testi v1.0 — Edit by Osman Bilgin​


gg
 
KY Uzman Üye
Yardımsever
KAYIT
21 May 2025
Mesajlar
330
Çözümler
2
Tepki puanı
308
Web
www.youtube.com
KNIGHT ONLINE YÜK TESTİ v1.0
5000 bot, gerçek oyuncu gibi giriş yapar — sunucun açılışa hazır mı, açmadan öğren!
Edit by Osman Bilgin

Ekli dosyayı görüntüle 22497

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

Bu program ne işe yarar?

Sunucunu açtın, beta günü geldi, herkes aynı anda giriş yapmaya çalışıyor… Sunucu çöker mi? Donar mı? Oyuncular düşer mi? Login ekranında takılır mı?
Bunu açılış günü oyuncularla değil, önceden bu programla öğreniyorsun.

  • Binlerce bot GERÇEK OYUNCU GİBİ girer: LoginServer'a ID/şifre yazar → hesap otomatik açılır → ulus seçer → karakter oluşturur → oyuna girer.
  • İki test türü var:
    • giris — botlar girer, doğdukları yerde dolaşır, arada sohbet eder (login / karakter seçimi / kalabalık testi).
    • exp — botlar haritadaki canavar noktalarına dağılır, canavar keser, EXP kasar, ölürse yeniden doğar (savaş / NPC / AI yükü).
  • Canlı sayaçlar: kaç bot girdi, kaç karakter açıldı, oyunda kaç kişi var, kopan var mı, saldırı ve EXP sayısı, giriş süresi.
  • Sunucu izleme: GameServer / LoginServer işlemci ve bellek kullanımı canlı; süreç çökerse anında "ÇÖKTÜ" yazar.
  • Rapor: her 5 saniyenin kaydı sonuc\rapor.txt dosyasına yazılır.
  • Temizlik: test bitince tek düğmeyle bot hesaplarını tüm tablolardan siler.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

İndir

>> KO_Yuk_Testi_v1.0.zip (11,8 MB) <<
İçinde: KO_Yuk_Testi.exe (kurulum yok, Python gerekmez) · BENIOKU.txt · kaynak kodu (kaynak\ klasörü)
*** Gizli metin: alıntı yapılamaz. ***



━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

Gereksinimler (önce bunu oku!)

  1. Sunucunda otomatik hesap açma (AutoRegister / otologin) AÇIK olmalı.
    Botlar var olmayan bir ID ile girer, hesap LoginServer'da kendiliğinden açılır. Kapalıysa botlar ls_giris_red_2 (hesap yok) hatası alır.
  2. Şifresiz 2369+ protokol. Paket çerçevesi:
    Kod:
    AA 55 | uzunluk | gövde | 55 AA
    2369 tabanlı sunucuda test edildi. Paket şifrelemesi (1.298 JvCryption / AES) kullanan sunucularda çalışmaz.
  3. Windows. Exe tek başına çalışır.
  4. Veritabanı bağlantısı yalnız EXP testindeki canavar noktalarını çekmek ve test hesaplarını silmek için gerekir. Giriş testi için gerekmez. MSSQL için "ODBC Driver 17 for SQL Server" kurulu olmalı.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

Ekranı tanıyalım


  1. Sekmeler — Sunucu & Botlar, Karakter, EXP Testi, Veritabanı, Gelişmiş. Ayarlar sekmelere bölünmüş.
  2. BAŞLAT — testi başlatır. Ayarlar otomatik kaydedilir.
  3. Durdur — testi yarıda keser, tüm botların bağlantısını koparır.
  4. Ayarları kaydet — ayarları exe'nin yanındaki ayarlar.json dosyasına yazar; programı tekrar açınca aynı ayarlar gelir.
  5. Rapor klasörü — sonuc klasörünü açar (rapor.txt burada).
  6. Test hesaplarını sil — bot hesaplarını ve karakterlerini veritabanındaki TÜM tablolardan siler. Önce kaç satır silineceğini gösterir, onay ister.
  7. Canlı durum — sayaçlar, 5 saniyede bir güncellenir.
  8. Sunucu satırı — izlenen sunucu süreçlerinin işlemci % ve belleği (sunucu bu bilgisayardaysa).
  9. Günlük — ne olduğu yazı olarak akar.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

1. Sekme: Sunucu & Botlar


  1. LoginServer IP — LoginServer'ın adresi. Program sunucuyla aynı bilgisayardaysa 127.0.0.1.
  2. LoginServer port — çoğu sunucuda 15100. LogInServer.ini içindeki PORT.
  3. GameServer IP — GameServer'ın adresi.
  4. GameServer port — çoğu sunucuda 15001. GameServer.ini içinde yazar.
  5. İzlenecek süreçler — işlemcisi/belleği izlenecek programların adı, virgülle: GameServer,LogInServer,Ebenezer,AIServer,Aujard. Görev Yöneticisi'nde ne yazıyorsa o (.exe olmadan).
  6. Test türü — giris: girip dolaşır · exp: canavar keser (önce EXP sekmesini doldur).
  7. Bot sayısı — kaç bot girecek. Varsayılan 5000.
  8. Oyunda kalma (sn) — her bot oyunda kaç saniye kalıp çıkacak. 600 = 10 dakika.
  9. Hesap öneki — bot hesaplarının başı. "yuk" yazarsan hesaplar yuk0001, yuk0002 … yuk5000 olur. Karakter adı da aynısı. Gerçek oyuncu adlarıyla çakışmayacak bir şey seç.
  10. Hesap şifresi — botların şifresi. Hesaplar ilk girişte bu şifreyle açılır.
  11. Süreç (çekirdek) — botlar bu kadar parçaya bölünüp ayrı çekirdeklerde çalışır. Yaklaşık 500 bot / süreç: 5000 bot için 10.



━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

2. Sekme: Karakter


Bot hesabında karakter yoksa bot kendisi oluşturur. Bu sekme o karakterin nasıl olacağını belirler.

  1. Ulus — karisik (yarısı Karus, yarısı El Morad), karus ya da elmorad.
  2. Karus ırk — 1 Arch Tuarek (savaşçı), 2 Tuarek (rogue / rahip), 3 Wrinkle Tuarek (büyücü).
  3. Karus sınıf — 101 savaşçı, 102 rogue, 103 büyücü, 104 rahip.
  4. El Morad ırk — 11 Barbar (savaşçı), 12 El Morad erkek, 13 El Morad kadın.
  5. El Morad sınıf — 201 savaşçı, 202 rogue, 203 büyücü, 204 rahip.
  6. Statlar — STR, HP, DEX, INT, MP sırasıyla. Sunucu kuralı: toplam 300, her biri en az 50. Varsayılan: 65,65,60,50,60.



━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

3. Sekme: EXP Testi


  1. Bölge (zone) — botların EXP kasacağı harita. 21 = Moradon. Yeni karakterler nerede doğuyorsa orası olmalı; başka yerde doğan bot kasmaz, dolaşır.
  2. Spot tablosu — canavar doğma noktaları tablosu. Sürüme göre K_NPCPOS ya da K_NPCPOS2369. Yanlış yazarsan program veritabanındaki doğru adları önerir.
  3. Canavar tablosu — K_MONSTER ya da K_MONSTER2369.
  4. En yüksek canavar seviyesi — botlar 1. seviye yeni karakter. 10 yazarsan yalnız Worm, Bandicoot, Kecoon gibi düşük canavarlara gider. Yüksek yazarsan sürekli ölürler (bu da bir test!).
  5. Saldırı gecikmesi — iki vuruş arası (×10 ms). 120 = 1,2 sn. Sunucu silahın hızından daha sık vuruşu reddeder.
  6. Canavar noktalarını çek — veritabanından noktaları alır (spotlar.json oluşur), günlükte kaç nokta ve canavar bulunduğunu yazar. EXP testinden önce bir kez bas.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

4. Sekme: Veritabanı


  1. ODBC sürücüsü — genelde ODBC Driver 17 for SQL Server. Bilgisayarında hangisi kuruluysa (ODBC Data Sources → Drivers).
  2. SQL sunucusu — . (nokta) = bu bilgisayar. Uzaktaysa IP ya da IP\SQLEXPRESS.
  3. Veritabanı adı — oyun veritabanının adı (TB_USER, USERDATA tablolarının olduğu).
  4. Kullanıcı — boş bırakırsan Windows kimliğiyle bağlanır. SQL kullanıcısıyla bağlanacaksan sa vb.
  5. Şifre — SQL kullanıcısının şifresi.
  6. Bağlantıyı dene — günlükte "Veritabanı bağlantısı TAMAM (… tablo)" yazmalı.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

5. Sekme: Gelişmiş (protokol)


Sunucun standart 2369 ise burayı ellemene gerek yok. Kendi LoginServer'ını değiştirdiysen buradan uyarlarsın:

  1. Sunucu listesi opcode — 245 (0xF5).
  2. Liste isteğine u16 ekle — 2369 istemcisi listeyi isterken sonuna 2 bayt ekler: evet.
  3. Giriş opcode — 243 (0xF3), ID/şifre paketi.
  4. Giriş sonucu bayt konumu — cevapta sonuç baytının yeri. 2369: 3 (opcode + u16 + sonuç). 1 = başarılı.
  5. Haber opcode — 246 (0xF6).
  6. Özel imza paketi gönder — kendi sunucuna özel bir giriş paketi eklediysen. Normalde hayır.
  7. İmza opcode — o özel paketin opcode'u.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

Adım adım: ilk testin

  1. Zip'i aç, KO_Yuk_Testi.exe'yi çalıştır.
  2. Sunucu & Botlar sekmesine IP/portları yaz. İlk sefer için Bot sayısı: 50, Oyunda kalma: 60 yap.
  3. BAŞLAT. "OYUNDA 50" ve "Kopma 0" görüyorsan akış senin sunucunda çalışıyor demektir.
  4. Sonra bot sayısını 500 → 2000 → 5000 diye artır. Her seferinde sunucu satırındaki işlemci/belleği izle.
  5. EXP testi için: Veritabanı → bağlantıyı dene → EXP Testi → canavar noktalarını çek → Test türü exp → BAŞLAT.
  6. Bitince Test hesaplarını sil (sıralama sayfalarında bot görünmesin).

Ekli dosyayı görüntüle 22504

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

Sayaçları nasıl okurum?

  • Login girişi — LoginServer'da ID/şifresi kabul edilen bot sayısı.
  • Yeni karakter — sıfırdan karakter oluşturan bot. Testi ikinci kez çalıştırırsan karakterler zaten var olduğu için 0 görünür, normal.
  • OYUNDA — oyuna giren bot. Bot sayısına eşit olmalı.
  • Kopma — oyundayken bağlantısı kopan bot. 0 olmalı! 0 değilse sunucu oyuncu düşürüyor demektir.
  • Ölüm — EXP testinde ölüp kasabada yeniden doğan bot.
  • Saldırı / EXP — gönderilen vuruş ve alınan EXP. EXP artıyorsa savaş sistemi çalışıyor.
  • Giriş sn p50 / p95 — ID/şifre yazılmasından oyuna girene kadar geçen süre. p50 = botların yarısı bu sürede girdi, p95 = %95'i bu sürede girdi. Yüksekse karakter seçimi / veritabanı yavaştır.
  • Botlara KB/s — sunucudan botlara akan veri. Kalabalıkta çok yükselirse bant genişliğine dikkat.
  • hata— en sık görülenler:
    • ls_giris_red_2 — hesap yok → otomatik hesap açma kapalı.
    • ls_giris_red_3 — şifre yanlış (hesap daha önce başka şifreyle açılmış).
    • gs_surum_cevapsiz — GameServer cevap vermedi → sunucu dolu olabilir (aşağıya bak).
    • ls_baglanamadi / gs_baglanamadi — IP/port yanlış ya da güvenlik duvarı kapalı.
    • secim_… — karakter seçilemedi (ırk/sınıf uyumsuz, ad kuralı vb.).

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

Bizim sonuçlarımız (KoMobilPvP)



Testin bize gösterdikleri (sizde de kontrol edin):
  • Oyuncu sınırı: sunucu kodunda
    Kod:
    shared/globals.h  →  #define MAX_USER 5000
    5000 dolunca yeni gelen oyuncu hiçbir uyarı almadan "bağlanıyor" ekranında bekliyor. Biz de test sırasında oyuna giremedik. Botların 2'si gs_surum_cevapsiz aldı. MAX_USER'ı büyütmeden önce dikkat: sunucu botları / NPC'ler 5001–9999 kimlik aralığını kullanıyor olabilir (NPC_BAND 10000).
  • Karakter seçimi sırası: veritabanı istekleri tek sırada (~50 / saniye). 5000 kişi aynı saniyede gelirse sonuncusu 1-2 dakika bekler.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

Bir bot tam olarak ne yapıyor? (meraklısına)

Kod:
LoginServer
  0xF5  sunucu listesi
  0xF3  ID / şifre            (hesap otomatik açılır)
  0xF6  haber                 → bağlantıyı kapatır
GameServer
  0x2B  sürüm kontrolü
  0x01  hesap girişi          (cevap: ulus, 0 = yeni hesap)
  0x05  ulus seç              (yeni hesapsa)
  0x0C  karakter listesi
  0x02  karakter oluştur      (ad = hesap adı, statlar toplam 300)
  0x04  karakter seç          (cevaptan doğum konumu)
  0x0D  oyuna gir 1 → 0x0E oyuncu bilgisi (kendi kimliği) → 0x0D oyuna gir 2
Oyunda
  0x06  yürüme (saniyede bir)          0x10  sohbet
  0x1C  bölgedeki NPC'ler → 0x1D NPC ayrıntısı (konum, tür)
  0x0A  NPC giriş/çıkış   0x0B NPC hareketi   0x11 ölüm
  0x08  normal saldırı (silah gecikmesiyle)   0x1A EXP
  0x12  öldüyse yeniden doğ
  0x42  sıkıştırılmış (LZF) paketler açılır

Kaynak kodu zip'in içinde (kaynak\ klasörü, Python). Kendi sürümüne uyarlamak isteyen ortak.py içindeki game_server işlevine baksın. Exe'yi yeniden üretmek için derle.bat.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

Sık sorulanlar

S: Botlar girmiyor, "ls_giris_red_2" yazıyor.
C: Sunucunda otomatik hesap açma kapalı. LoginServer'da AutoRegister'ı aç.

S: "OYUNDA" 4998'de kaldı, 2 bot giremedi.
C: Muhtemelen MAX_USER sınırına (5000) değdin. Sunucuda o sırada başka kim varsa (sen, GM'ler) onlar da sayılır.

S: EXP testinde "Saldırı" artıyor ama "EXP" 0.
C: Botlar canavara ulaşamıyor ya da sunucu saldırıyı reddediyor. Sınıfı savaşçı yap, "Saldırı gecikmesi"ni 150'ye çıkar, canavar seviyesini düşür.

S: Antivirüs exe'yi şüpheli buldu.
C: Exe, Python + PyInstaller ile paketlendi; bu tür exe'ler bazen yanlış alarm verir. Kaynak kodu zip'in içinde, istersen kendin derle (derle.bat).

S: Canlı sunucumda deneyebilir miyim?
C: İçeride gerçek oyuncu yokken dene. 5000 bot oyuncuları etkiler.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

UYARI: Yalnız KENDİ sunucunda ve test ortamında kullan. Başkasının sunucusuna karşı kullanmak saldırıdır.

Takıldığınız yeri konuya yazın, yardımcı olalım. Öğrenmek isteyen herkese açık!

KO Yük Testi v1.0 — Edit by Osman Bilgin​


*** Gizli metin: alıntı yapılamaz. ***
gg
İşe yarar eline sağlık
 
KY Kıdemli Üye
KAYIT
26 Tem 2024
Mesajlar
251
Tepki puanı
72
Konum
Çin
KNIGHT ONLINE YÜK TESTİ v1.0
5000 bot, gerçek oyuncu gibi giriş yapar — sunucun açılışa hazır mı, açmadan öğren!
Edit by Osman Bilgin

Ekli dosyayı görüntüle 22497

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

Bu program ne işe yarar?

Sunucunu açtın, beta günü geldi, herkes aynı anda giriş yapmaya çalışıyor… Sunucu çöker mi? Donar mı? Oyuncular düşer mi? Login ekranında takılır mı?
Bunu açılış günü oyuncularla değil, önceden bu programla öğreniyorsun.

  • Binlerce bot GERÇEK OYUNCU GİBİ girer: LoginServer'a ID/şifre yazar → hesap otomatik açılır → ulus seçer → karakter oluşturur → oyuna girer.
  • İki test türü var:
    • giris — botlar girer, doğdukları yerde dolaşır, arada sohbet eder (login / karakter seçimi / kalabalık testi).
    • exp — botlar haritadaki canavar noktalarına dağılır, canavar keser, EXP kasar, ölürse yeniden doğar (savaş / NPC / AI yükü).
  • Canlı sayaçlar: kaç bot girdi, kaç karakter açıldı, oyunda kaç kişi var, kopan var mı, saldırı ve EXP sayısı, giriş süresi.
  • Sunucu izleme: GameServer / LoginServer işlemci ve bellek kullanımı canlı; süreç çökerse anında "ÇÖKTÜ" yazar.
  • Rapor: her 5 saniyenin kaydı sonuc\rapor.txt dosyasına yazılır.
  • Temizlik: test bitince tek düğmeyle bot hesaplarını tüm tablolardan siler.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

İndir

>> KO_Yuk_Testi_v1.0.zip (11,8 MB) <<
İçinde: KO_Yuk_Testi.exe (kurulum yok, Python gerekmez) · BENIOKU.txt · kaynak kodu (kaynak\ klasörü)
*** Gizli metin: alıntı yapılamaz. ***



━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

Gereksinimler (önce bunu oku!)

  1. Sunucunda otomatik hesap açma (AutoRegister / otologin) AÇIK olmalı.
    Botlar var olmayan bir ID ile girer, hesap LoginServer'da kendiliğinden açılır. Kapalıysa botlar ls_giris_red_2 (hesap yok) hatası alır.
  2. Şifresiz 2369+ protokol. Paket çerçevesi:
    Kod:
    AA 55 | uzunluk | gövde | 55 AA
    2369 tabanlı sunucuda test edildi. Paket şifrelemesi (1.298 JvCryption / AES) kullanan sunucularda çalışmaz.
  3. Windows. Exe tek başına çalışır.
  4. Veritabanı bağlantısı yalnız EXP testindeki canavar noktalarını çekmek ve test hesaplarını silmek için gerekir. Giriş testi için gerekmez. MSSQL için "ODBC Driver 17 for SQL Server" kurulu olmalı.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

Ekranı tanıyalım


  1. Sekmeler — Sunucu & Botlar, Karakter, EXP Testi, Veritabanı, Gelişmiş. Ayarlar sekmelere bölünmüş.
  2. BAŞLAT — testi başlatır. Ayarlar otomatik kaydedilir.
  3. Durdur — testi yarıda keser, tüm botların bağlantısını koparır.
  4. Ayarları kaydet — ayarları exe'nin yanındaki ayarlar.json dosyasına yazar; programı tekrar açınca aynı ayarlar gelir.
  5. Rapor klasörü — sonuc klasörünü açar (rapor.txt burada).
  6. Test hesaplarını sil — bot hesaplarını ve karakterlerini veritabanındaki TÜM tablolardan siler. Önce kaç satır silineceğini gösterir, onay ister.
  7. Canlı durum — sayaçlar, 5 saniyede bir güncellenir.
  8. Sunucu satırı — izlenen sunucu süreçlerinin işlemci % ve belleği (sunucu bu bilgisayardaysa).
  9. Günlük — ne olduğu yazı olarak akar.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

1. Sekme: Sunucu & Botlar


  1. LoginServer IP — LoginServer'ın adresi. Program sunucuyla aynı bilgisayardaysa 127.0.0.1.
  2. LoginServer port — çoğu sunucuda 15100. LogInServer.ini içindeki PORT.
  3. GameServer IP — GameServer'ın adresi.
  4. GameServer port — çoğu sunucuda 15001. GameServer.ini içinde yazar.
  5. İzlenecek süreçler — işlemcisi/belleği izlenecek programların adı, virgülle: GameServer,LogInServer,Ebenezer,AIServer,Aujard. Görev Yöneticisi'nde ne yazıyorsa o (.exe olmadan).
  6. Test türü — giris: girip dolaşır · exp: canavar keser (önce EXP sekmesini doldur).
  7. Bot sayısı — kaç bot girecek. Varsayılan 5000.
  8. Oyunda kalma (sn) — her bot oyunda kaç saniye kalıp çıkacak. 600 = 10 dakika.
  9. Hesap öneki — bot hesaplarının başı. "yuk" yazarsan hesaplar yuk0001, yuk0002 … yuk5000 olur. Karakter adı da aynısı. Gerçek oyuncu adlarıyla çakışmayacak bir şey seç.
  10. Hesap şifresi — botların şifresi. Hesaplar ilk girişte bu şifreyle açılır.
  11. Süreç (çekirdek) — botlar bu kadar parçaya bölünüp ayrı çekirdeklerde çalışır. Yaklaşık 500 bot / süreç: 5000 bot için 10.



━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

2. Sekme: Karakter


Bot hesabında karakter yoksa bot kendisi oluşturur. Bu sekme o karakterin nasıl olacağını belirler.

  1. Ulus — karisik (yarısı Karus, yarısı El Morad), karus ya da elmorad.
  2. Karus ırk — 1 Arch Tuarek (savaşçı), 2 Tuarek (rogue / rahip), 3 Wrinkle Tuarek (büyücü).
  3. Karus sınıf — 101 savaşçı, 102 rogue, 103 büyücü, 104 rahip.
  4. El Morad ırk — 11 Barbar (savaşçı), 12 El Morad erkek, 13 El Morad kadın.
  5. El Morad sınıf — 201 savaşçı, 202 rogue, 203 büyücü, 204 rahip.
  6. Statlar — STR, HP, DEX, INT, MP sırasıyla. Sunucu kuralı: toplam 300, her biri en az 50. Varsayılan: 65,65,60,50,60.



━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

3. Sekme: EXP Testi


  1. Bölge (zone) — botların EXP kasacağı harita. 21 = Moradon. Yeni karakterler nerede doğuyorsa orası olmalı; başka yerde doğan bot kasmaz, dolaşır.
  2. Spot tablosu — canavar doğma noktaları tablosu. Sürüme göre K_NPCPOS ya da K_NPCPOS2369. Yanlış yazarsan program veritabanındaki doğru adları önerir.
  3. Canavar tablosu — K_MONSTER ya da K_MONSTER2369.
  4. En yüksek canavar seviyesi — botlar 1. seviye yeni karakter. 10 yazarsan yalnız Worm, Bandicoot, Kecoon gibi düşük canavarlara gider. Yüksek yazarsan sürekli ölürler (bu da bir test!).
  5. Saldırı gecikmesi — iki vuruş arası (×10 ms). 120 = 1,2 sn. Sunucu silahın hızından daha sık vuruşu reddeder.
  6. Canavar noktalarını çek — veritabanından noktaları alır (spotlar.json oluşur), günlükte kaç nokta ve canavar bulunduğunu yazar. EXP testinden önce bir kez bas.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

4. Sekme: Veritabanı


  1. ODBC sürücüsü — genelde ODBC Driver 17 for SQL Server. Bilgisayarında hangisi kuruluysa (ODBC Data Sources → Drivers).
  2. SQL sunucusu — . (nokta) = bu bilgisayar. Uzaktaysa IP ya da IP\SQLEXPRESS.
  3. Veritabanı adı — oyun veritabanının adı (TB_USER, USERDATA tablolarının olduğu).
  4. Kullanıcı — boş bırakırsan Windows kimliğiyle bağlanır. SQL kullanıcısıyla bağlanacaksan sa vb.
  5. Şifre — SQL kullanıcısının şifresi.
  6. Bağlantıyı dene — günlükte "Veritabanı bağlantısı TAMAM (… tablo)" yazmalı.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

5. Sekme: Gelişmiş (protokol)


Sunucun standart 2369 ise burayı ellemene gerek yok. Kendi LoginServer'ını değiştirdiysen buradan uyarlarsın:

  1. Sunucu listesi opcode — 245 (0xF5).
  2. Liste isteğine u16 ekle — 2369 istemcisi listeyi isterken sonuna 2 bayt ekler: evet.
  3. Giriş opcode — 243 (0xF3), ID/şifre paketi.
  4. Giriş sonucu bayt konumu — cevapta sonuç baytının yeri. 2369: 3 (opcode + u16 + sonuç). 1 = başarılı.
  5. Haber opcode — 246 (0xF6).
  6. Özel imza paketi gönder — kendi sunucuna özel bir giriş paketi eklediysen. Normalde hayır.
  7. İmza opcode — o özel paketin opcode'u.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

Adım adım: ilk testin

  1. Zip'i aç, KO_Yuk_Testi.exe'yi çalıştır.
  2. Sunucu & Botlar sekmesine IP/portları yaz. İlk sefer için Bot sayısı: 50, Oyunda kalma: 60 yap.
  3. BAŞLAT. "OYUNDA 50" ve "Kopma 0" görüyorsan akış senin sunucunda çalışıyor demektir.
  4. Sonra bot sayısını 500 → 2000 → 5000 diye artır. Her seferinde sunucu satırındaki işlemci/belleği izle.
  5. EXP testi için: Veritabanı → bağlantıyı dene → EXP Testi → canavar noktalarını çek → Test türü exp → BAŞLAT.
  6. Bitince Test hesaplarını sil (sıralama sayfalarında bot görünmesin).

Ekli dosyayı görüntüle 22504

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

Sayaçları nasıl okurum?

  • Login girişi — LoginServer'da ID/şifresi kabul edilen bot sayısı.
  • Yeni karakter — sıfırdan karakter oluşturan bot. Testi ikinci kez çalıştırırsan karakterler zaten var olduğu için 0 görünür, normal.
  • OYUNDA — oyuna giren bot. Bot sayısına eşit olmalı.
  • Kopma — oyundayken bağlantısı kopan bot. 0 olmalı! 0 değilse sunucu oyuncu düşürüyor demektir.
  • Ölüm — EXP testinde ölüp kasabada yeniden doğan bot.
  • Saldırı / EXP — gönderilen vuruş ve alınan EXP. EXP artıyorsa savaş sistemi çalışıyor.
  • Giriş sn p50 / p95 — ID/şifre yazılmasından oyuna girene kadar geçen süre. p50 = botların yarısı bu sürede girdi, p95 = %95'i bu sürede girdi. Yüksekse karakter seçimi / veritabanı yavaştır.
  • Botlara KB/s — sunucudan botlara akan veri. Kalabalıkta çok yükselirse bant genişliğine dikkat.
  • hata— en sık görülenler:
    • ls_giris_red_2 — hesap yok → otomatik hesap açma kapalı.
    • ls_giris_red_3 — şifre yanlış (hesap daha önce başka şifreyle açılmış).
    • gs_surum_cevapsiz — GameServer cevap vermedi → sunucu dolu olabilir (aşağıya bak).
    • ls_baglanamadi / gs_baglanamadi — IP/port yanlış ya da güvenlik duvarı kapalı.
    • secim_… — karakter seçilemedi (ırk/sınıf uyumsuz, ad kuralı vb.).

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

Bizim sonuçlarımız (KoMobilPvP)



Testin bize gösterdikleri (sizde de kontrol edin):
  • Oyuncu sınırı: sunucu kodunda
    Kod:
    shared/globals.h  →  #define MAX_USER 5000
    5000 dolunca yeni gelen oyuncu hiçbir uyarı almadan "bağlanıyor" ekranında bekliyor. Biz de test sırasında oyuna giremedik. Botların 2'si gs_surum_cevapsiz aldı. MAX_USER'ı büyütmeden önce dikkat: sunucu botları / NPC'ler 5001–9999 kimlik aralığını kullanıyor olabilir (NPC_BAND 10000).
  • Karakter seçimi sırası: veritabanı istekleri tek sırada (~50 / saniye). 5000 kişi aynı saniyede gelirse sonuncusu 1-2 dakika bekler.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

Bir bot tam olarak ne yapıyor? (meraklısına)

Kod:
LoginServer
  0xF5  sunucu listesi
  0xF3  ID / şifre            (hesap otomatik açılır)
  0xF6  haber                 → bağlantıyı kapatır
GameServer
  0x2B  sürüm kontrolü
  0x01  hesap girişi          (cevap: ulus, 0 = yeni hesap)
  0x05  ulus seç              (yeni hesapsa)
  0x0C  karakter listesi
  0x02  karakter oluştur      (ad = hesap adı, statlar toplam 300)
  0x04  karakter seç          (cevaptan doğum konumu)
  0x0D  oyuna gir 1 → 0x0E oyuncu bilgisi (kendi kimliği) → 0x0D oyuna gir 2
Oyunda
  0x06  yürüme (saniyede bir)          0x10  sohbet
  0x1C  bölgedeki NPC'ler → 0x1D NPC ayrıntısı (konum, tür)
  0x0A  NPC giriş/çıkış   0x0B NPC hareketi   0x11 ölüm
  0x08  normal saldırı (silah gecikmesiyle)   0x1A EXP
  0x12  öldüyse yeniden doğ
  0x42  sıkıştırılmış (LZF) paketler açılır

Kaynak kodu zip'in içinde (kaynak\ klasörü, Python). Kendi sürümüne uyarlamak isteyen ortak.py içindeki game_server işlevine baksın. Exe'yi yeniden üretmek için derle.bat.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

Sık sorulanlar

S: Botlar girmiyor, "ls_giris_red_2" yazıyor.
C: Sunucunda otomatik hesap açma kapalı. LoginServer'da AutoRegister'ı aç.

S: "OYUNDA" 4998'de kaldı, 2 bot giremedi.
C: Muhtemelen MAX_USER sınırına (5000) değdin. Sunucuda o sırada başka kim varsa (sen, GM'ler) onlar da sayılır.

S: EXP testinde "Saldırı" artıyor ama "EXP" 0.
C: Botlar canavara ulaşamıyor ya da sunucu saldırıyı reddediyor. Sınıfı savaşçı yap, "Saldırı gecikmesi"ni 150'ye çıkar, canavar seviyesini düşür.

S: Antivirüs exe'yi şüpheli buldu.
C: Exe, Python + PyInstaller ile paketlendi; bu tür exe'ler bazen yanlış alarm verir. Kaynak kodu zip'in içinde, istersen kendin derle (derle.bat).

S: Canlı sunucumda deneyebilir miyim?
C: İçeride gerçek oyuncu yokken dene. 5000 bot oyuncuları etkiler.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

UYARI: Yalnız KENDİ sunucunda ve test ortamında kullan. Başkasının sunucusuna karşı kullanmak saldırıdır.

Takıldığınız yeri konuya yazın, yardımcı olalım. Öğrenmek isteyen herkese açık!

KO Yük Testi v1.0 — Edit by Osman Bilgin​


*** Gizli metin: alıntı yapılamaz. ***
gg
tesekkurler
 
KY Üye
KAYIT
8 Kas 2025
Mesajlar
52
Tepki puanı
3
KNIGHT ONLINE YÜK TESTİ v1.0
5000 bot, gerçek oyuncu gibi giriş yapar — sunucun açılışa hazır mı, açmadan öğren!
Edit by Osman Bilgin

Ekli dosyayı görüntüle 22497

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

Bu program ne işe yarar?

Sunucunu açtın, beta günü geldi, herkes aynı anda giriş yapmaya çalışıyor… Sunucu çöker mi? Donar mı? Oyuncular düşer mi? Login ekranında takılır mı?
Bunu açılış günü oyuncularla değil, önceden bu programla öğreniyorsun.

  • Binlerce bot GERÇEK OYUNCU GİBİ girer: LoginServer'a ID/şifre yazar → hesap otomatik açılır → ulus seçer → karakter oluşturur → oyuna girer.
  • İki test türü var:
    • giris — botlar girer, doğdukları yerde dolaşır, arada sohbet eder (login / karakter seçimi / kalabalık testi).
    • exp — botlar haritadaki canavar noktalarına dağılır, canavar keser, EXP kasar, ölürse yeniden doğar (savaş / NPC / AI yükü).
  • Canlı sayaçlar: kaç bot girdi, kaç karakter açıldı, oyunda kaç kişi var, kopan var mı, saldırı ve EXP sayısı, giriş süresi.
  • Sunucu izleme: GameServer / LoginServer işlemci ve bellek kullanımı canlı; süreç çökerse anında "ÇÖKTÜ" yazar.
  • Rapor: her 5 saniyenin kaydı sonuc\rapor.txt dosyasına yazılır.
  • Temizlik: test bitince tek düğmeyle bot hesaplarını tüm tablolardan siler.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

İndir

>> KO_Yuk_Testi_v1.0.zip (11,8 MB) <<
İçinde: KO_Yuk_Testi.exe (kurulum yok, Python gerekmez) · BENIOKU.txt · kaynak kodu (kaynak\ klasörü)
*** Gizli metin: alıntı yapılamaz. ***



━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

Gereksinimler (önce bunu oku!)

  1. Sunucunda otomatik hesap açma (AutoRegister / otologin) AÇIK olmalı.
    Botlar var olmayan bir ID ile girer, hesap LoginServer'da kendiliğinden açılır. Kapalıysa botlar ls_giris_red_2 (hesap yok) hatası alır.
  2. Şifresiz 2369+ protokol. Paket çerçevesi:
    Kod:
    AA 55 | uzunluk | gövde | 55 AA
    2369 tabanlı sunucuda test edildi. Paket şifrelemesi (1.298 JvCryption / AES) kullanan sunucularda çalışmaz.
  3. Windows. Exe tek başına çalışır.
  4. Veritabanı bağlantısı yalnız EXP testindeki canavar noktalarını çekmek ve test hesaplarını silmek için gerekir. Giriş testi için gerekmez. MSSQL için "ODBC Driver 17 for SQL Server" kurulu olmalı.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

Ekranı tanıyalım


  1. Sekmeler — Sunucu & Botlar, Karakter, EXP Testi, Veritabanı, Gelişmiş. Ayarlar sekmelere bölünmüş.
  2. BAŞLAT — testi başlatır. Ayarlar otomatik kaydedilir.
  3. Durdur — testi yarıda keser, tüm botların bağlantısını koparır.
  4. Ayarları kaydet — ayarları exe'nin yanındaki ayarlar.json dosyasına yazar; programı tekrar açınca aynı ayarlar gelir.
  5. Rapor klasörü — sonuc klasörünü açar (rapor.txt burada).
  6. Test hesaplarını sil — bot hesaplarını ve karakterlerini veritabanındaki TÜM tablolardan siler. Önce kaç satır silineceğini gösterir, onay ister.
  7. Canlı durum — sayaçlar, 5 saniyede bir güncellenir.
  8. Sunucu satırı — izlenen sunucu süreçlerinin işlemci % ve belleği (sunucu bu bilgisayardaysa).
  9. Günlük — ne olduğu yazı olarak akar.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

1. Sekme: Sunucu & Botlar


  1. LoginServer IP — LoginServer'ın adresi. Program sunucuyla aynı bilgisayardaysa 127.0.0.1.
  2. LoginServer port — çoğu sunucuda 15100. LogInServer.ini içindeki PORT.
  3. GameServer IP — GameServer'ın adresi.
  4. GameServer port — çoğu sunucuda 15001. GameServer.ini içinde yazar.
  5. İzlenecek süreçler — işlemcisi/belleği izlenecek programların adı, virgülle: GameServer,LogInServer,Ebenezer,AIServer,Aujard. Görev Yöneticisi'nde ne yazıyorsa o (.exe olmadan).
  6. Test türü — giris: girip dolaşır · exp: canavar keser (önce EXP sekmesini doldur).
  7. Bot sayısı — kaç bot girecek. Varsayılan 5000.
  8. Oyunda kalma (sn) — her bot oyunda kaç saniye kalıp çıkacak. 600 = 10 dakika.
  9. Hesap öneki — bot hesaplarının başı. "yuk" yazarsan hesaplar yuk0001, yuk0002 … yuk5000 olur. Karakter adı da aynısı. Gerçek oyuncu adlarıyla çakışmayacak bir şey seç.
  10. Hesap şifresi — botların şifresi. Hesaplar ilk girişte bu şifreyle açılır.
  11. Süreç (çekirdek) — botlar bu kadar parçaya bölünüp ayrı çekirdeklerde çalışır. Yaklaşık 500 bot / süreç: 5000 bot için 10.



━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

2. Sekme: Karakter


Bot hesabında karakter yoksa bot kendisi oluşturur. Bu sekme o karakterin nasıl olacağını belirler.

  1. Ulus — karisik (yarısı Karus, yarısı El Morad), karus ya da elmorad.
  2. Karus ırk — 1 Arch Tuarek (savaşçı), 2 Tuarek (rogue / rahip), 3 Wrinkle Tuarek (büyücü).
  3. Karus sınıf — 101 savaşçı, 102 rogue, 103 büyücü, 104 rahip.
  4. El Morad ırk — 11 Barbar (savaşçı), 12 El Morad erkek, 13 El Morad kadın.
  5. El Morad sınıf — 201 savaşçı, 202 rogue, 203 büyücü, 204 rahip.
  6. Statlar — STR, HP, DEX, INT, MP sırasıyla. Sunucu kuralı: toplam 300, her biri en az 50. Varsayılan: 65,65,60,50,60.



━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

3. Sekme: EXP Testi


  1. Bölge (zone) — botların EXP kasacağı harita. 21 = Moradon. Yeni karakterler nerede doğuyorsa orası olmalı; başka yerde doğan bot kasmaz, dolaşır.
  2. Spot tablosu — canavar doğma noktaları tablosu. Sürüme göre K_NPCPOS ya da K_NPCPOS2369. Yanlış yazarsan program veritabanındaki doğru adları önerir.
  3. Canavar tablosu — K_MONSTER ya da K_MONSTER2369.
  4. En yüksek canavar seviyesi — botlar 1. seviye yeni karakter. 10 yazarsan yalnız Worm, Bandicoot, Kecoon gibi düşük canavarlara gider. Yüksek yazarsan sürekli ölürler (bu da bir test!).
  5. Saldırı gecikmesi — iki vuruş arası (×10 ms). 120 = 1,2 sn. Sunucu silahın hızından daha sık vuruşu reddeder.
  6. Canavar noktalarını çek — veritabanından noktaları alır (spotlar.json oluşur), günlükte kaç nokta ve canavar bulunduğunu yazar. EXP testinden önce bir kez bas.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

4. Sekme: Veritabanı


  1. ODBC sürücüsü — genelde ODBC Driver 17 for SQL Server. Bilgisayarında hangisi kuruluysa (ODBC Data Sources → Drivers).
  2. SQL sunucusu — . (nokta) = bu bilgisayar. Uzaktaysa IP ya da IP\SQLEXPRESS.
  3. Veritabanı adı — oyun veritabanının adı (TB_USER, USERDATA tablolarının olduğu).
  4. Kullanıcı — boş bırakırsan Windows kimliğiyle bağlanır. SQL kullanıcısıyla bağlanacaksan sa vb.
  5. Şifre — SQL kullanıcısının şifresi.
  6. Bağlantıyı dene — günlükte "Veritabanı bağlantısı TAMAM (… tablo)" yazmalı.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

5. Sekme: Gelişmiş (protokol)


Sunucun standart 2369 ise burayı ellemene gerek yok. Kendi LoginServer'ını değiştirdiysen buradan uyarlarsın:

  1. Sunucu listesi opcode — 245 (0xF5).
  2. Liste isteğine u16 ekle — 2369 istemcisi listeyi isterken sonuna 2 bayt ekler: evet.
  3. Giriş opcode — 243 (0xF3), ID/şifre paketi.
  4. Giriş sonucu bayt konumu — cevapta sonuç baytının yeri. 2369: 3 (opcode + u16 + sonuç). 1 = başarılı.
  5. Haber opcode — 246 (0xF6).
  6. Özel imza paketi gönder — kendi sunucuna özel bir giriş paketi eklediysen. Normalde hayır.
  7. İmza opcode — o özel paketin opcode'u.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

Adım adım: ilk testin

  1. Zip'i aç, KO_Yuk_Testi.exe'yi çalıştır.
  2. Sunucu & Botlar sekmesine IP/portları yaz. İlk sefer için Bot sayısı: 50, Oyunda kalma: 60 yap.
  3. BAŞLAT. "OYUNDA 50" ve "Kopma 0" görüyorsan akış senin sunucunda çalışıyor demektir.
  4. Sonra bot sayısını 500 → 2000 → 5000 diye artır. Her seferinde sunucu satırındaki işlemci/belleği izle.
  5. EXP testi için: Veritabanı → bağlantıyı dene → EXP Testi → canavar noktalarını çek → Test türü exp → BAŞLAT.
  6. Bitince Test hesaplarını sil (sıralama sayfalarında bot görünmesin).

Ekli dosyayı görüntüle 22504

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

Sayaçları nasıl okurum?

  • Login girişi — LoginServer'da ID/şifresi kabul edilen bot sayısı.
  • Yeni karakter — sıfırdan karakter oluşturan bot. Testi ikinci kez çalıştırırsan karakterler zaten var olduğu için 0 görünür, normal.
  • OYUNDA — oyuna giren bot. Bot sayısına eşit olmalı.
  • Kopma — oyundayken bağlantısı kopan bot. 0 olmalı! 0 değilse sunucu oyuncu düşürüyor demektir.
  • Ölüm — EXP testinde ölüp kasabada yeniden doğan bot.
  • Saldırı / EXP — gönderilen vuruş ve alınan EXP. EXP artıyorsa savaş sistemi çalışıyor.
  • Giriş sn p50 / p95 — ID/şifre yazılmasından oyuna girene kadar geçen süre. p50 = botların yarısı bu sürede girdi, p95 = %95'i bu sürede girdi. Yüksekse karakter seçimi / veritabanı yavaştır.
  • Botlara KB/s — sunucudan botlara akan veri. Kalabalıkta çok yükselirse bant genişliğine dikkat.
  • hata— en sık görülenler:
    • ls_giris_red_2 — hesap yok → otomatik hesap açma kapalı.
    • ls_giris_red_3 — şifre yanlış (hesap daha önce başka şifreyle açılmış).
    • gs_surum_cevapsiz — GameServer cevap vermedi → sunucu dolu olabilir (aşağıya bak).
    • ls_baglanamadi / gs_baglanamadi — IP/port yanlış ya da güvenlik duvarı kapalı.
    • secim_… — karakter seçilemedi (ırk/sınıf uyumsuz, ad kuralı vb.).

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

Bizim sonuçlarımız (KoMobilPvP)



Testin bize gösterdikleri (sizde de kontrol edin):
  • Oyuncu sınırı: sunucu kodunda
    Kod:
    shared/globals.h  →  #define MAX_USER 5000
    5000 dolunca yeni gelen oyuncu hiçbir uyarı almadan "bağlanıyor" ekranında bekliyor. Biz de test sırasında oyuna giremedik. Botların 2'si gs_surum_cevapsiz aldı. MAX_USER'ı büyütmeden önce dikkat: sunucu botları / NPC'ler 5001–9999 kimlik aralığını kullanıyor olabilir (NPC_BAND 10000).
  • Karakter seçimi sırası: veritabanı istekleri tek sırada (~50 / saniye). 5000 kişi aynı saniyede gelirse sonuncusu 1-2 dakika bekler.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

Bir bot tam olarak ne yapıyor? (meraklısına)

Kod:
LoginServer
  0xF5  sunucu listesi
  0xF3  ID / şifre            (hesap otomatik açılır)
  0xF6  haber                 → bağlantıyı kapatır
GameServer
  0x2B  sürüm kontrolü
  0x01  hesap girişi          (cevap: ulus, 0 = yeni hesap)
  0x05  ulus seç              (yeni hesapsa)
  0x0C  karakter listesi
  0x02  karakter oluştur      (ad = hesap adı, statlar toplam 300)
  0x04  karakter seç          (cevaptan doğum konumu)
  0x0D  oyuna gir 1 → 0x0E oyuncu bilgisi (kendi kimliği) → 0x0D oyuna gir 2
Oyunda
  0x06  yürüme (saniyede bir)          0x10  sohbet
  0x1C  bölgedeki NPC'ler → 0x1D NPC ayrıntısı (konum, tür)
  0x0A  NPC giriş/çıkış   0x0B NPC hareketi   0x11 ölüm
  0x08  normal saldırı (silah gecikmesiyle)   0x1A EXP
  0x12  öldüyse yeniden doğ
  0x42  sıkıştırılmış (LZF) paketler açılır

Kaynak kodu zip'in içinde (kaynak\ klasörü, Python). Kendi sürümüne uyarlamak isteyen ortak.py içindeki game_server işlevine baksın. Exe'yi yeniden üretmek için derle.bat.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

Sık sorulanlar

S: Botlar girmiyor, "ls_giris_red_2" yazıyor.
C: Sunucunda otomatik hesap açma kapalı. LoginServer'da AutoRegister'ı aç.

S: "OYUNDA" 4998'de kaldı, 2 bot giremedi.
C: Muhtemelen MAX_USER sınırına (5000) değdin. Sunucuda o sırada başka kim varsa (sen, GM'ler) onlar da sayılır.

S: EXP testinde "Saldırı" artıyor ama "EXP" 0.
C: Botlar canavara ulaşamıyor ya da sunucu saldırıyı reddediyor. Sınıfı savaşçı yap, "Saldırı gecikmesi"ni 150'ye çıkar, canavar seviyesini düşür.

S: Antivirüs exe'yi şüpheli buldu.
C: Exe, Python + PyInstaller ile paketlendi; bu tür exe'ler bazen yanlış alarm verir. Kaynak kodu zip'in içinde, istersen kendin derle (derle.bat).

S: Canlı sunucumda deneyebilir miyim?
C: İçeride gerçek oyuncu yokken dene. 5000 bot oyuncuları etkiler.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

UYARI: Yalnız KENDİ sunucunda ve test ortamında kullan. Başkasının sunucusuna karşı kullanmak saldırıdır.

Takıldığınız yeri konuya yazın, yardımcı olalım. Öğrenmek isteyen herkese açık!

KO Yük Testi v1.0 — Edit by Osman Bilgin​


*** Gizli metin: alıntı yapılamaz. ***
gg
thanks
 
Üst Alt