Reklam
AA 55 | uzunluk | gövde | 55 AA
İ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).
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.
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.
shared/globals.h → #define MAX_USER 5000
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
İşe yarar eline sağlıkKNIGHT 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!)
- 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.- Şifresiz 2369+ protokol. Paket çerçevesi:
2369 tabanlı sunucuda test edildi. Paket şifrelemesi (1.298 JvCryption / AES) kullanan sunucularda çalışmaz.Kod:AA 55 | uzunluk | gövde | 55 AA- Windows. Exe tek başına çalışır.
- 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
- Sekmeler — Sunucu & Botlar, Karakter, EXP Testi, Veritabanı, Gelişmiş. Ayarlar sekmelere bölünmüş.
- BAŞLAT — testi başlatır. Ayarlar otomatik kaydedilir.
- Durdur — testi yarıda keser, tüm botların bağlantısını koparır.
- Ayarları kaydet — ayarları exe'nin yanındaki ayarlar.json dosyasına yazar; programı tekrar açınca aynı ayarlar gelir.
- Rapor klasörü — sonuc klasörünü açar (rapor.txt burada).
- 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.
- Canlı durum — sayaçlar, 5 saniyede bir güncellenir.
- Sunucu satırı — izlenen sunucu süreçlerinin işlemci % ve belleği (sunucu bu bilgisayardaysa).
- Günlük — ne olduğu yazı olarak akar.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. Sekme: Sunucu & Botlar
- LoginServer IP — LoginServer'ın adresi. Program sunucuyla aynı bilgisayardaysa 127.0.0.1.
- LoginServer port — çoğu sunucuda 15100. LogInServer.ini içindeki PORT.
- GameServer IP — GameServer'ın adresi.
- GameServer port — çoğu sunucuda 15001. GameServer.ini içinde yazar.
- İ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).
- Test türü — giris: girip dolaşır · exp: canavar keser (önce EXP sekmesini doldur).
- Bot sayısı — kaç bot girecek. Varsayılan 5000.
- Oyunda kalma (sn) — her bot oyunda kaç saniye kalıp çıkacak. 600 = 10 dakika.
- 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ç.
- Hesap şifresi — botların şifresi. Hesaplar ilk girişte bu şifreyle açılır.
- 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.
- Ulus — karisik (yarısı Karus, yarısı El Morad), karus ya da elmorad.
- Karus ırk — 1 Arch Tuarek (savaşçı), 2 Tuarek (rogue / rahip), 3 Wrinkle Tuarek (büyücü).
- Karus sınıf — 101 savaşçı, 102 rogue, 103 büyücü, 104 rahip.
- El Morad ırk — 11 Barbar (savaşçı), 12 El Morad erkek, 13 El Morad kadın.
- El Morad sınıf — 201 savaşçı, 202 rogue, 203 büyücü, 204 rahip.
- 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
- 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.
- 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.
- Canavar tablosu — K_MONSTER ya da K_MONSTER2369.
- 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!).
- Saldırı gecikmesi — iki vuruş arası (×10 ms). 120 = 1,2 sn. Sunucu silahın hızından daha sık vuruşu reddeder.
- 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ı
- ODBC sürücüsü — genelde ODBC Driver 17 for SQL Server. Bilgisayarında hangisi kuruluysa (ODBC Data Sources → Drivers).
- SQL sunucusu — . (nokta) = bu bilgisayar. Uzaktaysa IP ya da IP\SQLEXPRESS.
- Veritabanı adı — oyun veritabanının adı (TB_USER, USERDATA tablolarının olduğu).
- Kullanıcı — boş bırakırsan Windows kimliğiyle bağlanır. SQL kullanıcısıyla bağlanacaksan sa vb.
- Şifre — SQL kullanıcısının şifresi.
- 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:
- Sunucu listesi opcode — 245 (0xF5).
- Liste isteğine u16 ekle — 2369 istemcisi listeyi isterken sonuna 2 bayt ekler: evet.
- Giriş opcode — 243 (0xF3), ID/şifre paketi.
- Giriş sonucu bayt konumu — cevapta sonuç baytının yeri. 2369: 3 (opcode + u16 + sonuç). 1 = başarılı.
- Haber opcode — 246 (0xF6).
- Özel imza paketi gönder — kendi sunucuna özel bir giriş paketi eklediysen. Normalde hayır.
- İmza opcode — o özel paketin opcode'u.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Adım adım: ilk testin
- Zip'i aç, KO_Yuk_Testi.exe'yi çalıştır.
- Sunucu & Botlar sekmesine IP/portları yaz. İlk sefer için Bot sayısı: 50, Oyunda kalma: 60 yap.
- BAŞLAT. "OYUNDA 50" ve "Kopma 0" görüyorsan akış senin sunucunda çalışıyor demektir.
- Sonra bot sayısını 500 → 2000 → 5000 diye artır. Her seferinde sunucu satırındaki işlemci/belleği izle.
- EXP testi için: Veritabanı → bağlantıyı dene → EXP Testi → canavar noktalarını çek → Test türü exp → BAŞLAT.
- Bitince Test hesaplarını sil (sıralama sayfalarında bot görünmesin).
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
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).Kod:shared/globals.h → #define MAX_USER 5000- 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
tesekkurlerKNIGHT 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!)
- 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.- Şifresiz 2369+ protokol. Paket çerçevesi:
2369 tabanlı sunucuda test edildi. Paket şifrelemesi (1.298 JvCryption / AES) kullanan sunucularda çalışmaz.Kod:AA 55 | uzunluk | gövde | 55 AA- Windows. Exe tek başına çalışır.
- 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
- Sekmeler — Sunucu & Botlar, Karakter, EXP Testi, Veritabanı, Gelişmiş. Ayarlar sekmelere bölünmüş.
- BAŞLAT — testi başlatır. Ayarlar otomatik kaydedilir.
- Durdur — testi yarıda keser, tüm botların bağlantısını koparır.
- Ayarları kaydet — ayarları exe'nin yanındaki ayarlar.json dosyasına yazar; programı tekrar açınca aynı ayarlar gelir.
- Rapor klasörü — sonuc klasörünü açar (rapor.txt burada).
- 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.
- Canlı durum — sayaçlar, 5 saniyede bir güncellenir.
- Sunucu satırı — izlenen sunucu süreçlerinin işlemci % ve belleği (sunucu bu bilgisayardaysa).
- Günlük — ne olduğu yazı olarak akar.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. Sekme: Sunucu & Botlar
- LoginServer IP — LoginServer'ın adresi. Program sunucuyla aynı bilgisayardaysa 127.0.0.1.
- LoginServer port — çoğu sunucuda 15100. LogInServer.ini içindeki PORT.
- GameServer IP — GameServer'ın adresi.
- GameServer port — çoğu sunucuda 15001. GameServer.ini içinde yazar.
- İ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).
- Test türü — giris: girip dolaşır · exp: canavar keser (önce EXP sekmesini doldur).
- Bot sayısı — kaç bot girecek. Varsayılan 5000.
- Oyunda kalma (sn) — her bot oyunda kaç saniye kalıp çıkacak. 600 = 10 dakika.
- 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ç.
- Hesap şifresi — botların şifresi. Hesaplar ilk girişte bu şifreyle açılır.
- 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.
- Ulus — karisik (yarısı Karus, yarısı El Morad), karus ya da elmorad.
- Karus ırk — 1 Arch Tuarek (savaşçı), 2 Tuarek (rogue / rahip), 3 Wrinkle Tuarek (büyücü).
- Karus sınıf — 101 savaşçı, 102 rogue, 103 büyücü, 104 rahip.
- El Morad ırk — 11 Barbar (savaşçı), 12 El Morad erkek, 13 El Morad kadın.
- El Morad sınıf — 201 savaşçı, 202 rogue, 203 büyücü, 204 rahip.
- 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
- 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.
- 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.
- Canavar tablosu — K_MONSTER ya da K_MONSTER2369.
- 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!).
- Saldırı gecikmesi — iki vuruş arası (×10 ms). 120 = 1,2 sn. Sunucu silahın hızından daha sık vuruşu reddeder.
- 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ı
- ODBC sürücüsü — genelde ODBC Driver 17 for SQL Server. Bilgisayarında hangisi kuruluysa (ODBC Data Sources → Drivers).
- SQL sunucusu — . (nokta) = bu bilgisayar. Uzaktaysa IP ya da IP\SQLEXPRESS.
- Veritabanı adı — oyun veritabanının adı (TB_USER, USERDATA tablolarının olduğu).
- Kullanıcı — boş bırakırsan Windows kimliğiyle bağlanır. SQL kullanıcısıyla bağlanacaksan sa vb.
- Şifre — SQL kullanıcısının şifresi.
- 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:
- Sunucu listesi opcode — 245 (0xF5).
- Liste isteğine u16 ekle — 2369 istemcisi listeyi isterken sonuna 2 bayt ekler: evet.
- Giriş opcode — 243 (0xF3), ID/şifre paketi.
- Giriş sonucu bayt konumu — cevapta sonuç baytının yeri. 2369: 3 (opcode + u16 + sonuç). 1 = başarılı.
- Haber opcode — 246 (0xF6).
- Özel imza paketi gönder — kendi sunucuna özel bir giriş paketi eklediysen. Normalde hayır.
- İmza opcode — o özel paketin opcode'u.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Adım adım: ilk testin
- Zip'i aç, KO_Yuk_Testi.exe'yi çalıştır.
- Sunucu & Botlar sekmesine IP/portları yaz. İlk sefer için Bot sayısı: 50, Oyunda kalma: 60 yap.
- BAŞLAT. "OYUNDA 50" ve "Kopma 0" görüyorsan akış senin sunucunda çalışıyor demektir.
- Sonra bot sayısını 500 → 2000 → 5000 diye artır. Her seferinde sunucu satırındaki işlemci/belleği izle.
- EXP testi için: Veritabanı → bağlantıyı dene → EXP Testi → canavar noktalarını çek → Test türü exp → BAŞLAT.
- Bitince Test hesaplarını sil (sıralama sayfalarında bot görünmesin).
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
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).Kod:shared/globals.h → #define MAX_USER 5000- 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
thanksKNIGHT 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!)
- 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.- Şifresiz 2369+ protokol. Paket çerçevesi:
2369 tabanlı sunucuda test edildi. Paket şifrelemesi (1.298 JvCryption / AES) kullanan sunucularda çalışmaz.Kod:AA 55 | uzunluk | gövde | 55 AA- Windows. Exe tek başına çalışır.
- 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
- Sekmeler — Sunucu & Botlar, Karakter, EXP Testi, Veritabanı, Gelişmiş. Ayarlar sekmelere bölünmüş.
- BAŞLAT — testi başlatır. Ayarlar otomatik kaydedilir.
- Durdur — testi yarıda keser, tüm botların bağlantısını koparır.
- Ayarları kaydet — ayarları exe'nin yanındaki ayarlar.json dosyasına yazar; programı tekrar açınca aynı ayarlar gelir.
- Rapor klasörü — sonuc klasörünü açar (rapor.txt burada).
- 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.
- Canlı durum — sayaçlar, 5 saniyede bir güncellenir.
- Sunucu satırı — izlenen sunucu süreçlerinin işlemci % ve belleği (sunucu bu bilgisayardaysa).
- Günlük — ne olduğu yazı olarak akar.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. Sekme: Sunucu & Botlar
- LoginServer IP — LoginServer'ın adresi. Program sunucuyla aynı bilgisayardaysa 127.0.0.1.
- LoginServer port — çoğu sunucuda 15100. LogInServer.ini içindeki PORT.
- GameServer IP — GameServer'ın adresi.
- GameServer port — çoğu sunucuda 15001. GameServer.ini içinde yazar.
- İ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).
- Test türü — giris: girip dolaşır · exp: canavar keser (önce EXP sekmesini doldur).
- Bot sayısı — kaç bot girecek. Varsayılan 5000.
- Oyunda kalma (sn) — her bot oyunda kaç saniye kalıp çıkacak. 600 = 10 dakika.
- 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ç.
- Hesap şifresi — botların şifresi. Hesaplar ilk girişte bu şifreyle açılır.
- 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.
- Ulus — karisik (yarısı Karus, yarısı El Morad), karus ya da elmorad.
- Karus ırk — 1 Arch Tuarek (savaşçı), 2 Tuarek (rogue / rahip), 3 Wrinkle Tuarek (büyücü).
- Karus sınıf — 101 savaşçı, 102 rogue, 103 büyücü, 104 rahip.
- El Morad ırk — 11 Barbar (savaşçı), 12 El Morad erkek, 13 El Morad kadın.
- El Morad sınıf — 201 savaşçı, 202 rogue, 203 büyücü, 204 rahip.
- 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
- 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.
- 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.
- Canavar tablosu — K_MONSTER ya da K_MONSTER2369.
- 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!).
- Saldırı gecikmesi — iki vuruş arası (×10 ms). 120 = 1,2 sn. Sunucu silahın hızından daha sık vuruşu reddeder.
- 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ı
- ODBC sürücüsü — genelde ODBC Driver 17 for SQL Server. Bilgisayarında hangisi kuruluysa (ODBC Data Sources → Drivers).
- SQL sunucusu — . (nokta) = bu bilgisayar. Uzaktaysa IP ya da IP\SQLEXPRESS.
- Veritabanı adı — oyun veritabanının adı (TB_USER, USERDATA tablolarının olduğu).
- Kullanıcı — boş bırakırsan Windows kimliğiyle bağlanır. SQL kullanıcısıyla bağlanacaksan sa vb.
- Şifre — SQL kullanıcısının şifresi.
- 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:
- Sunucu listesi opcode — 245 (0xF5).
- Liste isteğine u16 ekle — 2369 istemcisi listeyi isterken sonuna 2 bayt ekler: evet.
- Giriş opcode — 243 (0xF3), ID/şifre paketi.
- Giriş sonucu bayt konumu — cevapta sonuç baytının yeri. 2369: 3 (opcode + u16 + sonuç). 1 = başarılı.
- Haber opcode — 246 (0xF6).
- Özel imza paketi gönder — kendi sunucuna özel bir giriş paketi eklediysen. Normalde hayır.
- İmza opcode — o özel paketin opcode'u.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Adım adım: ilk testin
- Zip'i aç, KO_Yuk_Testi.exe'yi çalıştır.
- Sunucu & Botlar sekmesine IP/portları yaz. İlk sefer için Bot sayısı: 50, Oyunda kalma: 60 yap.
- BAŞLAT. "OYUNDA 50" ve "Kopma 0" görüyorsan akış senin sunucunda çalışıyor demektir.
- Sonra bot sayısını 500 → 2000 → 5000 diye artır. Her seferinde sunucu satırındaki işlemci/belleği izle.
- EXP testi için: Veritabanı → bağlantıyı dene → EXP Testi → canavar noktalarını çek → Test türü exp → BAŞLAT.
- Bitince Test hesaplarını sil (sıralama sayfalarında bot görünmesin).
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
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).Kod:shared/globals.h → #define MAX_USER 5000- 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
KNIGHT ONLINE 负载测试 v1.0
5000 个机器人将以真实玩家的身份登录——在服务器正式上线之前,即可了解其是否已准备就绪!
由奥斯曼·比尔金编辑
Ekli dosyayı görüntüle 22497
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
这个程序是用来做什么的?
服务器已经上线,测试日也到了,所有人都在同时尝试登录……服务器会崩溃吗?会卡住吗?玩家会掉线吗?会卡在登录界面吗?
你会事先通过这个项目了解到这一点,而不是在开幕日从球员那里了解到。
- 成千上万的机器人像真正的玩家一样登录:它们在登录服务器中输入 ID/密码 → 自动创建一个帐户 → 选择国家 → 创建角色 → 加入游戏。
- 测试分为两种类型:
- 登录— 机器人登录,在其出生点附近徘徊,偶尔聊天(登录/角色选择/人群测试)。
- 经验值— 机器人会分散到地图上的怪物所在位置,杀死怪物,获得经验值,如果死亡则会重生(战斗/NPC/AI 有效载荷)。
- 实时计数器:登录的机器人数量、创建的角色数量、游戏中的人数、任何断线情况、攻击和经验计数、登录时间。
- 服务器监控:游戏服务器/登录服务器 CPU 和内存使用情况实时显示;如果进程崩溃,将立即显示“CRASHED”。
- 报告:每隔 5 秒将记录写入result\report.txt文件。
- 清理:测试完成后,只需按一下按钮即可从所有表中删除机器人帐户。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
下载
>> KO_Yuk_Testi_v1.0.zip (11.8 MB) <<
内容:KO_Yuk_Testi.exe(无需安装,无需 Python)· README.txt · 源代码(source\ 文件夹)
***隐藏文本:无法引用。***
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
要求(请先阅读此部分!)
- 您的服务器必须启用自动账号创建(自动注册/自动登录)功能。否则
,机器人将使用不存在的 ID 登录,系统会在登录服务器中自动创建账号。如果此功能被禁用,机器人将收到ls_giris_red_2(账号未找到)错误。- 未加密的 2369+ 协议。数据包帧:
已在基于 2369 的服务器上测试。在采用数据包加密(1.298 JvCryption / AES)的服务器上无法工作。Kod:AA 55 | length | body | 55 AA- Windows.exe独立运行。
- 数据库连接仅在经验值测试中用于提取怪物点数和删除测试账号时需要,登录测试不需要。对于 MSSQL 数据库,必须安装“ODBC Driver 17 for SQL Server”。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
让我们来了解一下屏幕。
- 标签页——服务器与机器人、角色、经验测试、数据库、高级。设置也分为多个标签页。
- 开始——启动测试。设置将自动保存。
- 停止——这将中断测试并断开所有机器人的连接。
- 保存设置——它会将设置写入可执行文件旁边的settings.json文件中;当您重新打开程序时,相同的设置将会出现。
- 报告文件夹—打开结果文件夹(report.txt 文件位于此处)。
- 删除测试账号——此操作会从数据库的所有表中删除机器人账号和角色。它会先显示要删除的行数,然后要求确认。
- 实时状态——计数器每 5 秒更新一次。
- 服务器行— 受监控服务器进程的处理器百分比和内存(如果服务器在此计算机上)。
- 日记——发生的事情就这么记录下来。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. 标签页:服务器和机器人
- 登录服务器 IP — 登录服务器的地址。如果程序与服务器位于同一台计算机上,则地址为 127.0.0.1。
- 登录服务器端口——大多数服务器上为15100。端口号在 LogInServer.ini 文件中指定。
- 游戏服务器 IP 地址— 游戏服务器的地址。
- 游戏服务器端口——大多数服务器上为15001。这写在 GameServer.ini 文件中。
- 要监控的进程——正在监控其处理器/内存的程序名称,以逗号分隔:GameServer、LogInServer、Ebenezer、AIServer、Aujard。任务管理器中显示的任何内容(不带 .exe)。
- 测试类型—登录:进入并探索 ·经验:击杀怪物(先填满经验标签页)。
- 机器人数量——允许进入的机器人数量。默认值为5000。
- 游戏时间(秒) ——每个机器人退出游戏前将在游戏中停留的秒数。600 = 10 分钟。
- 账号前缀——机器人账号的名称。如果您输入“yuk”,账号将变为yuk0001、yuk0002……yuk5000。角色名称也遵循同样的规则。请选择不会与真实玩家名称冲突的名称。
- 账户密码——机器人使用的密码。账户在首次登录时使用此密码创建。
- 进程(核心) ——机器人被分成许多部分,并在不同的核心中运行。每个进程大约有 500 个机器人:5000 个机器人对应 10 个核心。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
第二标签页:角色
如果机器人账号没有角色,机器人将自动创建一个。此选项卡用于设置该角色的外观。
- 民族——混血(一半是卡鲁斯人,一半是埃尔莫拉德人),卡鲁斯人或埃尔莫拉德人。
- 卡鲁斯种族——1 大帝图阿雷克(战士),2 图阿雷克(盗贼/牧师),3 皱纹图阿雷克(法师)。
- Karus 职业——101 战士,102 盗贼,103 法师,104 牧师。
- El Morad 种族— 11 名野蛮人(战士)、12 名 El Morad 男性、13 名 El Morad 女性。
- El Morad 职业——201 战士,202 盗贼,203 法师,204 牧师。
- 属性值——分别为力量(STR)、生命值(HP)、敏捷(DEX)、智力(INT)和魔法值(MP)。服务器规则:总值300,每项至少50。默认值:65、65、60、50、60。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
表 3:经验测试
- 区域——机器人刷经验值的地图。21 = 莫拉顿。新角色应该在这里生成;在其他地方生成的机器人不会刷经验值,它们只会四处游荡。
- 怪物刷新点表——怪物刷新点列表。根据版本不同,可能是K_NPCPOS或K_NPCPOS2369。如果输入错误,程序会从数据库中提示正确的名称。
- 怪物画作— K_MONSTER或K_MONSTER2369。
- 最高怪物等级——机器人相当于1级新角色。如果你输入10,它们只会攻击低级怪物,例如蠕虫、袋狸和浣熊。如果你输入更高的等级,它们会不断死亡(这也是一种测试!)。
- 攻击延迟——两次命中之间的时间间隔(×10毫秒)。120 = 1.2秒。服务器拒绝命中的频率高于武器的飞行速度。
- 提取怪物点数——从数据库中检索点数(生成spots.json 文件),并将找到的点数和怪物数量写入日志。在经验值测试前按一次。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
4. 选项卡:数据库
- ODBC 驱动程序——通常是 SQL Server 的 ODBC 驱动程序 17。具体是安装在您计算机上的版本(ODBC 数据源 → 驱动程序)。
- SQL 服务器— .(点)= 这台计算机。如果是远程计算机,请使用 IP 地址或IP\SQLEXPRESS。
- 数据库名称— 游戏数据库的名称(包含 TB_USER 和 USERDATA 表)。
- 用户——留空,将使用 Windows ID 连接。如果要使用 SQL 用户连接,请使用“sa ”等。
- 密码——SQL 用户的密码。
- 尝试连接——日志应该显示“数据库连接正常(…表)”。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
标签页 5:高级(协议)
如果您的服务器默认端口为 2369,则无需在此处进行任何更改。如果您已更改登录服务器,则可以从此处进行调整:
- 服务器列表操作码— 245 (0xF5)。
- 将 u16 添加到列表请求— 客户端 2369 在请求列表时向末尾添加 2 个字节:是。
- 输入操作码— 243 (0xF3),ID/密码数据包。
- 输入结果字节位置— 结果字节在响应中的位置。2369:3(操作码 + u16 + 结果)。1 = 成功。
- 新闻操作码— 246 (0xF6)。
- 发送自定义签名包——如果您已向服务器添加了自定义登录包。通常情况下不需要。
- 签名操作码是该特定数据包的操作码。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
循序渐进:第一次测试
- 解压缩文件并运行KO_Yuk_Testi.exe 。
- 在“服务器和机器人”选项卡中输入 IP 地址/端口。首次设置时,请将机器人数量设置为 50,并将游戏最长持续时间设置为 60 秒。
- 开始。如果您看到“IN GAME 50”和“Disconnection 0”,则表示您的服务器上正在运行流媒体。
- 然后逐步增加机器人数量,从500 → 2000 → 5000。每次增加后,监控服务器行的 CPU/内存使用情况。
- 对于 EXP 测试:数据库→ 尝试连接 → EXP 测试→ 拉取怪物点数 → 测试类型exp → 开始。
- 完成后,删除测试帐户(这样机器人就不会出现在排名页面上)。
如何读取仪表数据?
- 登录条目数——登录服务器上接受其 ID/密码的机器人数量。
- 新角色——一个可以从零开始创建角色的机器人。如果您再次运行测试,您会看到结果为 0,因为角色已经存在,这是正常现象。
- 游戏中— 已加入游戏的机器人。数量必须与机器人总数相等。
- 断线——游戏中机器人断开连接的情况。正常情况下应该为 0!如果不是 0,则表示服务器正在断开玩家连接。
- 死亡— 在经验值测试中死亡的机器人会在城镇中重生。
- 攻击/经验值——攻击次数和获得的经验值。如果经验值在增加,则战斗系统处于激活状态。
- 进入游戏时间(p50/p95) ——从输入ID/密码到登录游戏所经过的时间。p50表示一半的机器人在此时间内登录,p95表示95%的机器人在此时间内登录。数值越高,表示角色选择/数据库加载速度越慢。
- 机器人速度(KB/s) ——指从服务器到机器人的数据流量。高峰时段如果速度过高,请注意带宽问题。
- 错误——最常见的错误:
- ls_giris_red_2 — 无帐户 → 自动创建帐户已禁用。
- ls_giris_red_3 — 密码错误(该帐户之前使用不同的密码登录过)。
- gs_surum_cevapsiz — 游戏服务器未响应 →服务器可能已满(见下文)。
- ls_connectionfailed / gs_connectionfailed — IP/端口错误或防火墙已禁用。
- selection_… — 无法选择角色(种族/职业不兼容、名称规则等)。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
我们的结果(KoMobilPvP)
以下是测试结果(你也检查一下自己的测试结果):
- 玩家数量限制:在服务器代码
中,一旦达到 5000 人上限,新玩家就会在“连接中”界面等待,且没有任何警告。我们在测试期间也无法加入游戏。两个机器人收到了gs_surum_unanswered 错误。在增加 MAX_USER 之前,请注意:服务器机器人/NPC 可能正在使用 5001-9999 的 ID 范围(NPC_BAND 为 10000)。Kod:shared/globals.h → #define MAX_USER 5000- 角色选择顺序:数据库请求以单队列形式发送(约 50 次/秒)。如果 5000 人同时访问,最后一个人将等待 1-2 分钟。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
机器人究竟是做什么的?(供好奇者参考)
Kod:登录服务器 0xF5 服务器列表 0xF3 ID/密码(账户自动打开) 0xF6 新闻 → 关闭连接 游戏服务器 0x2B 版本控制 0x01 账户登录(答案:nation,0 = 新账户) 0x05 选择国家/地区(如果是新帐户) 0x0C 字符列表 创建 0x02 角色(名称 = 账号名称,属性总和 300) 选择 0x04 个字符(从答案中选择出生地) 0x0D 进入游戏 1 → 0x0E 玩家信息(您的 ID) → 0x0D 进入游戏 2 在游戏中 0x06 行走(每秒一次) 0x10 聊天 区域 0x1C 中的 NPC → 区域 0x1D 中的 NPC 详细信息(位置、类型) 0x0A NPC 进入/离开 0x0B NPC 移动 0x11 死亡 0x08 普通攻击(带武器延迟) 0x1A 经验值 如果 0x12 死了,它就重生了。 解包 0x42 压缩 (LZF) 数据包 源代码位于压缩文件([B]source\[/B]文件夹,Python)内。想要将其适配到自己版本的用户应该查看[B]common.py[/B]中的[I]game_server[/I]函数。要重新生成可执行文件,[B]请使用 compile.bat[/B]。 [CENTER][COLOR=#555555]━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━[/COLOR][/CENTER] [SIZE=5][B][COLOR=#f2c14e]常见问题解答[/COLOR][/B][/SIZE] [B]问:机器人无法登录,显示“ls_giris_red_2”。[/B] C:您的服务器已禁用自动创建帐户功能。请在 LoginServer 中启用自动注册。 [B]问:“游戏”卡在 4998,2 个机器人无法加入。[/B] C:您可能已达到 MAX_USER 限制(5000)。当时服务器上的任何其他用户(包括您和 GM)也会计入在内。 [B]问:在经验值测试中,“攻击力”在增加,但“经验值”为0。[/B] C:机器人无法攻击到怪物,或者服务器拒绝了攻击。请将职业改为战士,将“攻击延迟”增加到150,并降低怪物等级。 [B]问:杀毒软件发现 .exe 文件可疑。[/B] C:该可执行文件与 Python 和 PyInstaller 打包在一起;这类可执行文件有时会发出误报。源代码包含在压缩包内,您可以根据需要自行编译([B]compile.bat[/B])。 [B]问:我可以在我的正式服务器上测试吗?[/B] C:请在没有真人玩家的情况下尝试。5000个机器人玩家会影响结果。 [CENTER][COLOR=#555555]━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━[/COLOR] [COLOR=#ff6b6b][B]警告:[/B]仅限在您自己的服务器和测试环境中使用。将其用于攻击他人的服务器属于攻击行为。[/COLOR] [SIZE=3][B]如果你遇到任何问题,请在评论区留言,我们会帮助你。欢迎所有想学习的人![/B][/SIZE] [SIZE=2][I]KO负载测试v1.0 — 由奥斯曼·比尔金编辑[/I][/SIZE][/CENTER] ***隐藏文本:无法引用。*** gg [/QUOTE] thk