Auth mekanizmasını launcher tarafında VIETNAM protokolü üzerinden çözdüm. Launcher, VIETNAM protokolüne bir ticket gönderiyor ve bu doğrulama sonrasında oyun istemcisine gerekli yetkilendirme sağlanıyor. Bu nedenle oyun içerisinde ayrıca bir login mekanizmasına ihtiyaç duymuyorum.
Oyunun temel işleyişi ise büyük ölçüde server tarafında gerçekleşiyor. Goley, yıllar önce kendi wiki sayfalarında mimariyi “client + web” şeklinde ifade etmiş. Buradaki “web” ifadesinin doğrudan web tabanlı bir oyun anlamına gelmediğini, server/backend tarafındaki yapıyı ifade etmek için kullanıldığını varsayıyorum. Zira Goley hiçbir dönem web tabanlı bir oyun olarak yayımlanmadı ve oyun istemcisi üzerinden çalışan klasik client-server mimarisine sahipti.
P2P/NPC, mağaza, transfer, görevler, maç tahminleri ve benzeri birçok sistemi içeren, tamamen çalışır durumdaki sunucu altyapısını uygun bir ücret karşılığında satışa sunmayı düşünüyorum. İsteğe bağlı olarak site altyapısı, launcher/patch sistemleri ve mevcut geliştirmeler de ek ücret karşılığında dahil edilebilir.
Amacım, mevcut geliştirmelerimi başka projelerde kullanılabilecek şekilde, şeffaf ve karşılıklı olarak belirlenen şartlar çerçevesinde değerlendirmek. Bunun etik bir davranış olup olmadığı konusunda en doğru değerlendirmeyi, bu proje üzerinde daha önce çalışmış kişiler yapabilir. Ortaya çıkarılan yapının arkasında uzun, zor ve yorucu bir geliştirme süreci bulunuyor.
Ciddi olarak ilgilenecek arkadaşlarla iletişim kurabiliriz. (Buradan iletişim mümkünse buradan, değilse Discord üzerinden mesajlarınızı iletebilirsiniz: scylland)
Üstadım Merhaba, yazdıklarını okudum ama launcher kısmında bazı noktalara katılmıyorum. Kendi log'larımla açıklayayım:
1. Launcher sadece patch check yapıyor.
uintptr hocam launcher'ın gönderdiği bütün HTTP request'leri listeliyor:
Kod:
GET /chagu/Real_Server_Patch/PatchInfo.bin?p=...
GET /chagu/Real_Server_Patch/HashV2.VLL?p=...
GET /chagu/Real_Server_Patch/Goley.exe?p=...
GET /chagu/Real_Server_Patch/LauncherRestarter.exe?p=...
Bunların hiçbiri bir auth ya da ticket request'i değil.
2. Launcher'dan client'a parameter aktarılmıyor.
Client'ta Netmarble'ın NMRunParam modülü var, yani launcher'dan client'a parameter geçmek için bir kanal teknik olarak mevcut. Bu modülün export'larını hook'layıp 83 ayrı game session'da izledim. Sonuç:
Kod:
NMRunParamDLL_Load : 0 call
NMRunParamDLL_GetParam : 0 call
NMRunParamDLL_ExistsParam : 0 call
NMRunParamDLL_GetParamCount : 0 call
Launcher client'a bir ticket veriyor olsaydı, client'ın bunu bu kanaldan okuması gerekirdi. Client tek bir parameter bile istemiyor.
3. Login, client'ın kendi login ekranından yapılıyor.
Oyunu launcher olmadan açıyorum. Client, login server'a kendisi bağlanıyor ve username'i in-game login ekranından gönderiyor:
Kod:
[AUTH] CONNECT from 127.0.0.1:64686
[AUTH] 127.0.0.1:64686 login username: admin
4. Vietnam bir protocol değil, bir service region.
Client'ın kendi LoginServerList tablosunda region'lar ayrı ayrı tanımlı: Kore, Turkey QA, Turkey REAL, Turkey MENA QA, Global QA, Global REAL, Vietnam QA, Vietnam REAL ve Indonesia QA. Her region'ın kendi login server'ı var. "VIETNAM protokolü" diye bir yapıya rastlamadım.
5. Maçlar server-side değil, P2P.
Account, card, shop ve mission sistemleri server-side. Ama maçlar client'lar arasında P2P olarak oynanıyor ve game logic client'ta çalışıyor. Bu yüzden oyunun büyük ölçüde server-side çalıştığını söylemek doğru değil.
Eğer kendi launcher'ını ve web tarafında bir auth sistemi kurup ticket'ı client'a bu şekilde aktarıyorsan, bu gayet okey. Ancak bu senin eklediğin bir sistem ya da Vietnam build'ine özgü bir akış olur; orijinal TR launcher'ının davranışı değil. TR client'ta launcher'dan gelen bir auth akışı bulunmuyor.
Satış tarafında ise eğer haddime değil lakin kendi özeleştiri mi yapacağım bu noktada, Bu kadar bilgiye AI olmadan sahip isen bu projeyi community private server'a dönüştürüp güzel bir ortam yaratmak yerine köklü bir şirketin hakları olan bir oyunun server'ını ücret karşılığında satmak hem hukuki hem de etik açıdan problemli. Bu yüzden bu kısma katılmıyorum.