Jump to content
Araştır
  • Diğer seçenekler ...
Sonuçları bul ...
Sonuçları bul ...
trcod3r

Server yazilimi geliştirme

Önerilen Mesajlar

Herkese merhabalar,

Öncelikle kendimden bahsedeyim, 28 yaşında bir yazılım mimarıyım. Büyüklü küçüklü oldukça fazla projede çalıştım ve gençlik aşkım olan bu oyuna ve community'e bir hediye vermek istiyorum :)

Uzun zamandır yapmak istediğim bir proje aslında bu. Bütün sistemi baştan aşağıya yazmak. Yakın zamanda .net core'un gelmesi ile bir kere yazdığımızda artık bütün platformlarda sunucu cayır cayır çalışabilir. Database için PostgreSQL ve EFCore kullanılabilir vs lisans problemleri yaşanmaması açısından.

Konu ile alakalı ilgisi olan ve geçmişten bu konu ile alakalı arkadaşlar varsa katılmalarını isterim. Client tarafından reverse engineer edilmiş tüm paketlere, türlerine varsa paket şifreleme/çözme methodlarına ihtiyaç olacak. Bu tarz zaman harcayacak konularda destek olursa çok hızlı ilerleyebiliriz diye düşünüyorum.

Çok performanslı bir sunucu kurabileceğimizi düşünüyorum tamamen async ve multithreaded. .netcore'un tcp server'ı tamamen aynı altyapıyı kullanıyor C++ ile, dolayısıyla bir performans problemi yaşanmayacaktır.

Sunucunun bütün parçaları tek executable üzerinden çalıştırılacak, ebenezer, game server, login server vs. Çünkü artık ayrı olmalarına hiç gerek yok, bilgisayarlar çok gelişti :) Ve ayrı olmaları da yüksek yük olduğunda aslında oldukça dezavantaj yaratıyor.

Sunucu için tabii ki ilk olarak 1299 versiyonunu geliştirmek istiyorum. Ancak ilerleyen dönemde verilen parametreye göre versiyon da seçtirilebilir sunucu tarafında.

Bu arada çalışma tamamen open source olacak, github üzerinden yürüyecek.

Biraz dağınık yazmış olabilirim kusura bakmayın ama, eğer bu yola baş koyacak arkadaşlar bulabilirsem gerçekten yapmak istediğim bir çalışma. Buradan yazabilirsiniz, pm de atabilirsiniz. Nasıl isterseniz artık :)

Görüşmek üzere, sevgiler!

İletiyi paylaş


Link to post
Sitelerde Paylaş

Ben herhangi bir opensource projeye destek vermek isterim. Bahsi gecen stack'de gundelik kullandigim tech-stackler zaten. Ancak bazi konulara katilmiyorum.

Alıntı
Uzun zamandır yapmak istediğim bir proje aslında bu. Bütün sistemi baştan aşağıya yazmak. Yakın zamanda .net core'un gelmesi ile bir kere yazdığımızda artık bütün platformlarda sunucu cayır cayır çalışabilir. Database için PostgreSQL ve EFCore kullanılabilir vs lisans problemleri yaşanmaması açısından.


EFCore veya herhangi bir ORM bence performans hedeflenen bir projede kesinlikle tercih sebebi olmamali. DB Access katmani uzerindeki yuk az olursa sistem uzerinde daha esnek davranilabilinir. Bunlarin disinda oyunun nosql ile boostlanabilecek bir suru data source'u var. Tech-stack secilirken akilda tutulabilinir.

Alıntı
Çok performanslı bir sunucu kurabileceğimizi düşünüyorum tamamen async ve multithreaded. .netcore'un tcp server'ı tamamen aynı altyapıyı kullanıyor C++ ile, dolayısıyla bir performans problemi yaşanmayacaktır.


Kismen dogru. Ancak, .net gercekten high level featurelari ile insani buyuleyen bir ortam. Ancak bu featurelar bazen ekstrem iterationlar ile calisip sisteminizi yavaslatabiliyor. LINQ bence bunlardan biri. Open source proje olacaksa dokumantasyon, coding conventionlar ve PR'lar tertemiz olmali yoksa performans baya buyuk bir sorun olacaktir. Bununla beraber daha once .netcore ile yapilmis realtime 7k ~ 8k aktif tcp socket'e hizmet eden bir sunucu uzerinde daha once calismistim. Eger duzenli olunursa mumkun.

Alıntı
Sunucunun bütün parçaları tek executable üzerinden çalıştırılacak, ebenezer, game server, login server vs. Çünkü artık ayrı olmalarına hiç gerek yok, bilgisayarlar çok gelişti Ve ayrı olmaları da yüksek yük olduğunda aslında oldukça dezavantaj yaratıyor.


Ben buna katilmiyorum. Gameserver ve AIServer ayni yerde olmasi mantikli olabilir ancak login server ve gameserver ayri yerde hatta mumkun ise ayri serverlarda yasamasi gameserverdan gereksiz login load'unu decouple etmis olmayi saglar. Ayni zamanda herhangi bir yuk de getirmez.

Gercekten duzgun bir community kurabilirsek ben destek vermek isterim.

İletiyi paylaş


Link to post
Sitelerde Paylaş

.net core ile değilde benim kendi yapmak istediğim bir proje vardı.

Clang-formatter/C++CoreChecker/CMake kullanarak projeyi, işletim sistemi/compiler/build-system bağımsız geliştirmek.

Bağımlı kütüphane olarak pek bilmesemde sadece BOOST kütüphanesini kullanmak isterim(Threading,Test vs..)

Yazılan bütün kodların test'inin yazılması, ve gerekirse CI(Continus Integration) ile testlerin otomatik koşturulmasını sağlamak.

Login sunucusu, Game sunucusu, AI sunucusu ayrı olmasını isterim.Microservis mantığı ile bakacak olursak scale etmemiz daha düzgün olur.

Projeyi dockerize edip otomatik scale edilmesini sağlarsak daha iyi olur.Örneğin; kullanıcı girişlerinin yoğun olduğu zaman login serveri scale eder.CSW olduğu zaman game serveri vs..

Clang-formatter kullanırsak eğer kodların yazımında belli bir standart oturtmuş oluruz.

Proje sadece USKO'daki packetleri/dinleyip sunucuya implemente etme olayından daha çok, optimizasyon/performans, yapay zeka uygulaması, istatistikleri kullanıp bdw,jr,chaos gibi eventlerde match-making, yani kısacası bilgisayar bilimlerinin her alanını kullanmak :)

Veri tabanı olarak ise PostgreSQL kullanmak isterim.Bu konuda pek tecrübem yok.Sadece CRUD işlemlerini biliyorum :)

Güvenlik önlemi olarak ise sunucu tarafında hiç bir zaman cliente güvenmeyerek her kontrolü sağlamak.

Bir çok client/server toolu yazmak.Örnek vermek gerekirse; bir görev eklediğimizde bunun hem server/hemde client tarafını tek bir tool ile yapabilmek.Bunun gibi bir çok şey..

Tabii bunları yazdığım için bunların hepsini %100 biliyorum demiyorum,fakat bir ekip çıkarsa elimden geleni yaparım:) @ OzkanOzdemir ve @ PENTAGRAM ın dediği gibi zor olsada communitynin oluşması için elimden geleni yaparım.

İletiyi paylaş


Link to post
Sitelerde Paylaş
Admin

Sunucunun bütün parçaları tek executable üzerinden çalıştırılacak, ebenezer, game server, login server vs. Çünkü artık ayrı olmalarına hiç gerek yok, bilgisayarlar çok gelişti :) Ve ayrı olmaları da yüksek yük olduğunda aslında oldukça dezavantaj yaratıyor.



@ sharkdeed bahsettiği gibi LoginServer birleştirmek mantıklı bir düşünce değil.
Oyunun kendi yapısı LoginServer ayrı bir sunucuda tutuyor. Diğer GameServer sunucuları ise ayrı yerde duruyor. GameServer ve AIServer birleştirilmesi gerekiyor zaten ayrı tutulması mantıklı değil.

Bir başka husus bu ortama vereceğiniz açık kaynak projelerin size herhangi bir yararı olmayacaktır daha da sinirinizi bozan bir durum olacaktır. Bu duruma bir örnek twostars feyz olarak alınabilinir. İlk başladığı zamandan proje indirilip kendi sıfatı altında paylaşanlar ve satanlar tarafından b*k edildi. Bu milleti dolandırılma konusuna daha da çok itecek bir husus olacaktır.

Çünkü bu ortamdaki insanlar düzgün değil halen ki görüyorsunuz dosyalarını düzelttirmek için buraya gelen para kazanmak için her şeyi yapabilen insanlar var. Public yerine projenin Private ilerlemesi ve proje içerisine alacağınız kişileri ilk önce hem insanlık adına tanımanız hem de bilgi açısında nasıl bir yerde olduğunu bilmeniz gerekiyor. Public olarak projeye başladığınızda benim gibi belli bir kesim katılmak istemeyecektir. Hem verdiği emeğin çoluk çocuğun elinde oyuncak olmasını istemeyecektir hem de dolandırılma konularına destek olmak istemeyecektir. Diğer bir kabul eden kesim ise bir süre sonra pişman olacaktır buna emin olabilirsiniz.

İletiyi paylaş


Link to post
Sitelerde Paylaş

Open source olmamak kaydıyla böyle bir oluşumu desteklerim. Şu anda @ OzkanOzdemir ile beraber hali hazırda yürüttüğümüz bir proje mevcut. Sunucu tarafı bitti sayılır, üzerine çalışılacak çok bir kısmı kaldığını düşünmüyorum. Dosyalar 4 yıllık aktif geliştirme geçmişi olan, stabilitesi ve performansı yüksek dosyalar. Anlatılacak çok şeyi var, planlama aşamasında izah ederim yeri geldiğinde. 2013'ten beri geliştirmesini ben üstleniyorum. Veritabanı motorunu postgresql'e geçirmek gibi planlarım var fakat henüz öncelik sıralamamda alt sıralarda. Amaç günün sonunda cross-platform desteği de sağlamak.

Projenin istemci tarafına başlamayı düşünüyoruz, eğer isterseniz istemci üzerinde beraber çalışabiliriz.

Projeyi bootstrap etmek adına yazdığım homegrown kütüphaneler ile hızlı bir development sürecine başlayabiliriz. İstemci tarafında gerçekleştirmek istediğim, high-level design'ı kafamda oturmuş bir çok konsept var. Bunları hep beraber tartışıp faz 1 için hedeflerimizi belirleyip işe koyulabiliriz.

Şahsi fikrim, .net core veya diğer high-level geliştirme ortamları, real time performans gerektiren bu tür uygulamalarda optimizasyona çok müsait değil. Mesele bir uygulamanın 7-8k bağlantıyı kabul edebilmesi değil. Bu bağlantılardan gelen trafiğin boyutu, sıklığı ve verileri handle eden fonksiyonların kompleksiteleri, harcadıkları cpu cycle'ları önemli. Low level detayları programcıdan soyutlayan .net,java ailesi dillerde native performansı yakalamak çok mümkün değil.

İstemci tarafında bu açıdan biraz daha rahat olacağımızı düşünüyorum, "right tool for the job" konsepti ile rahatlıkla ilerleyebiliriz.

@ sharkdeed, @ trcod3r

Skype adresim imzamda mevcut. Eklerseniz daha detaylı tartışabiliriz.

İletiyi paylaş


Link to post
Sitelerde Paylaş

Selam dostlar tekrardan, ilginiz çok memnun etti beni. Böyle donanımlı arkadaşlarla karşılaşacağımı umuyor ama pek tahmin etmiyordum :) Bu yüzden biraz yüzeysel bir mesaj yazmıştım ama su an heyecanlandım gerçekten.

Öncelikle Game Server, AI, Ebenezer ve Login server'ın aynı thread üzerinden çalışmasını kastetmemiştim, ayrı assemblyler halinde ama aynı process tarafından yürütülen, dolayısıyla memory'i paylaşan -ve bu sayede serialization, deserialization kayıplarını/gecikmelerini yok eden- bir sistem düşünmüştüm. Tabii ki login server'ı ayırabiliriz gibi duruyor, sonuçta sürekli bir iletişimi yok diğerleri ile.

ORM'den bahsetmemin sebebi tamamen hızlı ilerlemek idi, sürekli db işlemleri yapmayız diye düşündüğüm için böyle bir öneri sundum. Ancak belirtmem lazım, oturup leak olan source'u detaylı incelemedim. Dolayısı ile farazi konuşuyorum yani.

Micro service mimarisi ile ilerlemek de mantıklı ancak bence günümüzdeki cihazlarla bu proje için ayrı sunucular ve bunlar arasında iletişim kurmak çok da gerekli değil. Tek sunucu üzerinde çok rahat koşturulabilir diye düşünüyorum. Tabii ki docker ile deploy etmek falan işin fantezisi ama mükemmel olur tabii ki :)

Zaten oturup grup halinde kod yazacaksak baya git kullanarak branching ve PR ile falan çalışmamız lazım. Birbirimizin kodunu review etmemiz lazım. Bunları bol bol tartışırız tabii ki, beni çok memnun eder :)

NetCore'un socket performansı hakkında bir makale: https://www.ageofascent.com/2016/02/18/asp-net-core-exeeds-1-15-million-requests-12-6-gbps/

Hakikaten native yazılmış bir C++ performansı beklememek gerekir, sonuçta bazı overheadler var ancak ben göz ardı edilebileceğini düşünüyorum. Maintain etmesi çok çok kolay olacağından ve .net core'un sınırlarını zorlamak istediğimden ötürü böyle bir düşünce oluşmuştu bende :)

@ PENTAGRAM, tarafından da böyle bir bilgi gelmiş. Dostum sıfırdan mı girişmiştiniz sunucu tarafına, yoksa twostars'ın paylaştığının üzerine mi kurdunuz? Client için geliştirme yapmak da çok güzel olur ama şu an arkadaşların gazı ile ben sunucu yazma olayına bayağı bir kanım kaynadı. Ona da destek verebiliriz, en azından şahsi olarak destek verebilirim.

Bu arada sizi mi kıracağız Open Source yapmayız bu kadar ağız yandıysa :)

İletiyi paylaş


Link to post
Sitelerde Paylaş

Selam dostlar tekrardan, ilginiz çok memnun etti beni. Böyle donanımlı arkadaşlarla karşılaşacağımı umuyor ama pek tahmin etmiyordum :) Bu yüzden biraz yüzeysel bir mesaj yazmıştım ama su an heyecanlandım gerçekten.



Öncelikle Game Server, AI, Ebenezer ve Login server'ın aynı thread üzerinden çalışmasını kastetmemiştim, ayrı assemblyler halinde ama aynı process tarafından yürütülen, dolayısıyla memory'i paylaşan -ve bu sayede serialization, deserialization kayıplarını/gecikmelerini yok eden- bir sistem düşünmüştüm. Tabii ki login server'ı ayırabiliriz gibi duruyor, sonuçta sürekli bir iletişimi yok diğerleri ile.

ORM'den bahsetmemin sebebi tamamen hızlı ilerlemek idi, sürekli db işlemleri yapmayız diye düşündüğüm için böyle bir öneri sundum. Ancak belirtmem lazım, oturup leak olan source'u detaylı incelemedim. Dolayısı ile farazi konuşuyorum yani.

Micro service mimarisi ile ilerlemek de mantıklı ancak bence günümüzdeki cihazlarla bu proje için ayrı sunucular ve bunlar arasında iletişim kurmak çok da gerekli değil. Tek sunucu üzerinde çok rahat koşturulabilir diye düşünüyorum. Tabii ki docker ile deploy etmek falan işin fantezisi ama mükemmel olur tabii ki :)

Zaten oturup grup halinde kod yazacaksak baya git kullanarak branching ve PR ile falan çalışmamız lazım. Birbirimizin kodunu review etmemiz lazım. Bunları bol bol tartışırız tabii ki, beni çok memnun eder :)

NetCore'un socket performansı hakkında bir makale: https://www.ageofascent.com/2016/02/18/asp-net-core-exeeds-1-15-million-requests-12-6-gbps/

Hakikaten native yazılmış bir C++ performansı beklememek gerekir, sonuçta bazı overheadler var ancak ben göz ardı edilebileceğini düşünüyorum. Maintain etmesi çok çok kolay olacağından ve .net core'un sınırlarını zorlamak istediğimden ötürü böyle bir düşünce oluşmuştu bende :)

@ PENTAGRAM, tarafından da böyle bir bilgi gelmiş. Dostum sıfırdan mı girişmiştiniz sunucu tarafına, yoksa twostars'ın paylaştığının üzerine mi kurdunuz? Client için geliştirme yapmak da çok güzel olur ama şu an arkadaşların gazı ile ben sunucu yazma olayına bayağı bir kanım kaynadı. Ona da destek verebiliriz, en azından şahsi olarak destek verebilirim.

Bu arada sizi mi kıracağız Open Source yapmayız bu kadar ağız yandıysa :)

Projenin tabanı twostars'ın open source paylaşmış olduğu proje, fakat şu anki halinin uzaktan yakından alakası yok diyebilirim, üzerine çok fazla kod girişi oldu. Bu kaynak kodlarından branchleyip 1299'a uyarlamıştım. Sonrasında 1453 ve 1534 takip etti geliştirme sürecini. Şu an v22xx desteği üzerinde çalışıyorum, diğer versiyonlara tam destek hala devam ediyor. Hatta şu anki altyapı, runtime esnasında versiyon değiştirmeye ve aynı anda farklı sürüm istemcilerin bir arada oynayabilmesine olanak tanıyor. Gameserver/aiserver performans açısından birleşik vaziyette.

Loginserver / Gameserver olayına gelecek olursak, aralarında çok fazla irtibat gereken bir durum yok (oyundaki oyuncuyu disconnect etme özelliği hariç). Bizim projemizde de şu anda ayrı durumdalar.

Sunucu tarafı ile alakalı bir proje benim için tekerleği baştan icat etmek olacağından çok sıcak bakmıyorum, fakat destek verebilirim vaktim oldukça.

İletiyi paylaş


Link to post
Sitelerde Paylaş
Alıntı
Projenin tabanı twostars'ın open source paylaşmış olduğu proje, fakat şu anki halinin uzaktan yakından alakası yok diyebilirim, üzerine çok fazla kod girişi oldu. Bu kaynak kodlarından branchleyip 1299'a uyarlamıştım. Sonrasında 1453 ve 1534 takip etti geliştirme sürecini. Şu an v22xx desteği üzerinde çalışıyorum, diğer versiyonlara tam destek hala devam ediyor. Hatta şu anki altyapı, runtime esnasında versiyon değiştirmeye ve aynı anda farklı sürüm istemcilerin bir arada oynayabilmesine olanak tanıyor. Gameserver/aiserver performans açısından birleşik vaziyette.

Loginserver / Gameserver olayına gelecek olursak, aralarında çok fazla irtibat gereken bir durum yok (oyundaki oyuncuyu disconnect etme özelliği hariç). Bizim projemizde de şu anda ayrı durumdalar.

Sunucu tarafı ile alakalı bir proje benim için tekerleği baştan icat etmek olacağından çok sıcak bakmıyorum, fakat destek verebilirim vaktim oldukça.


Tabii ki dostum, senin için oturup baştan bu projeye girişmek hakikaten uğraşılacak iş değil :) Yapacak olursak, muhtemen senin düştüğün ve bizim de düşeceğimiz bir sürü pitfall olacak, bunlarda desteğin olsa bile bizim için muhteşem olur.

Bilmiyorum diğer arkadaşlar sizin projenin durumunu biliyorlar mıydı, veya bilmiyorlarsa hala bu proje için çalışmak isterler mi?

Herkesin fikrini almak isterim bu konuda, ben hala çok istekliyim. Geri dönüşlerinize göre ne yapacağımıza karar verelim derim arkadaşlar.

İletiyi paylaş


Link to post
Sitelerde Paylaş
Alıntı
Projenin tabanı twostars'ın open source paylaşmış olduğu proje, fakat şu anki halinin uzaktan yakından alakası yok diyebilirim, üzerine çok fazla kod girişi oldu. Bu kaynak kodlarından branchleyip 1299'a uyarlamıştım. Sonrasında 1453 ve 1534 takip etti geliştirme sürecini. Şu an v22xx desteği üzerinde çalışıyorum, diğer versiyonlara tam destek hala devam ediyor. Hatta şu anki altyapı, runtime esnasında versiyon değiştirmeye ve aynı anda farklı sürüm istemcilerin bir arada oynayabilmesine olanak tanıyor. Gameserver/aiserver performans açısından birleşik vaziyette.

Loginserver / Gameserver olayına gelecek olursak, aralarında çok fazla irtibat gereken bir durum yok (oyundaki oyuncuyu disconnect etme özelliği hariç). Bizim projemizde de şu anda ayrı durumdalar.

Sunucu tarafı ile alakalı bir proje benim için tekerleği baştan icat etmek olacağından çok sıcak bakmıyorum, fakat destek verebilirim vaktim oldukça.


OpenGL/DirectX gibi grafik kütüphaneleri hakkında ve oyun programlama süreçleri hakkında hiç bir bilgim yok.Ancak size ayak bağı olurum :D

İletiyi paylaş


Link to post
Sitelerde Paylaş

Arkadaşlar size PM atamıyorum post sayısı yeterli olmadığı için, bir skype toplantısı yapalım diyorum müsait bir zaman belirleyip hala istekli iseniz.

@ sharkdeed, @ infiltrate

@ PENTAGRAM, dostum sen de müsait olursan ilk toplantımızda bulunabilirsen harika olur diye düşünüyorum :)

İletiyi paylaş


Link to post
Sitelerde Paylaş

×
×
  • Yeni Oluştur...