Sosyal açıldı! Bir göz at → Hemen gir →

GELİŞTİRİYORUM 0dan knight mobile

farkedermi

KY Kıdemli Üye
KY Üye
KAYIT
13 Eyl 2025
Mesajlar
81
Tepki puanı
22
Merhaba arkadaşlar. Mobile versiyon için kolları sıvayan arkadaşlardan birisi de benim.

Bu kısımdan sonrası EDİT:

Bu bağlamda bir süre değişik girişimlerim oldu fakat sonraları insanların benden çok daha hızlı ve aktif bir şekilde ilerleyerek sunucuların sayısının artmaya başladığını fark ettim. Daha önce yarım bıraktığım projemden devam etmemeyi tercih ettim. Kendi sunucu dosyasını yaz, kendi istemci projeni oluştur, veritabanına yeni bir soluk getir ve tamamını test et derken süreç inanılmaz sancılı olmaya başlamıştı. Ben de yol, yordam ve yöntemimi güncelledim bunun yerine. Sadece istemci kaynağı(client source) yazma şeklinde ilerliyorum şu an. Yani bunca zahmete girmeseydim kesinlikle çok fazla ilerleme kaydedebilirdim ama hala geç sayılmam. Daha önce yorum yapmış teknolojiler konusunda bana yol göstermiş, fikir vermiş herkese çok teşekkür ederim. Videolar ile burayı geliştirme günlüğü olarak tutacağım.

Sohbet, muhabbet, tanışma, geliştirme günlükleri v.s için Discord kanalı sabit linki:

 
Son düzenleme:

rapix

KY Kıdemli Üye
KAYIT
11 Ocak 2021
Mesajlar
94
Tepki puanı
5
ben sıfırdan başlamak isterdim zamanım olsa :) ama belki işine yarar tavsiye verebilirim protobuff yerine MessagePack kullanmanı tavsiye edebilrim unity tarafında 2 3 senedir kullanıyoruz oldukça başarılı performansda çok daha iyi ,
database tarafındada kesinlikle postgresql +dapper çok fark eder garbage collector tarafında c# için oldukca buyuk cekıncelerim var onu iyi analiz etmek lazım gelişmelerden bizi ahberder et kolaylıkalr dilerim :)
 

farkedermi

KY Kıdemli Üye
KY Üye
KAYIT
13 Eyl 2025
Mesajlar
81
Tepki puanı
22
SQL server nokta atışı veride (tek satır okuma) içlerinde en iyisi diye biliyorum umarım yanılmıyorumdur Protobuf Tan yüksek performans beklemiyordum zaten. Deneyeceğim mutlaka messagepack i. Netcore için zaten serverler i böleceğimden sorun çıkarmaz diye ümit ediyorum. Sadece küçük testler için tek server ile yazmaya başladım.
 

rapix

KY Kıdemli Üye
KAYIT
11 Ocak 2021
Mesajlar
94
Tepki puanı
5
postgre cok daha performanslı , .net core da sorun yokta ram sorun yapacak user sayısı arttıgında ramden silme x bi zamanda yaptıgı için dipsose da kullansan hert türlü ram şişmesi yapacak 1 2 k userda cok sorun olmaya bilri ama user cogaldıgında tcp işlemlerinde özellikle ram sorun yapar 10 20 k user kaldırmaz ama 1 2 k da cokta sorun cıkarmaz oda teknık olarak cozulur kubernets cakarsın micro servisle cozersn
 

bluemansiiz

KY Saygın Üye
Yardımsever
KAYIT
13 May 2022
Mesajlar
425
Çözümler
4
Tepki puanı
219
Merhaba arkadaşlar. Mobile versiyon için kolları sıvayan arkadaşlardan birisi de benim. Ben kolları baya yukarı sıvadım yalnız. Serveri 0dan yazmaya başlamak gibi bir çılgınlık yaptım. Meraklısı veya araştırmak isteyen olur diye kısa bir bilgi geçeyim.

Server:
.NetCore Asenkron mimaride protobuf haberleşme ile geliştiriliyor. Henüz bir anticheat yazılmadı. Önbellekleme ihtiyacı olursa redis tercih etmeyi düşünüyorum.
Client:
Unity C#
Database:
SQL

Performans noktalarındaki araştırmaları yapmak isterseniz siz de bahsettiğim içerikleri araştırabilirsiniz. Server paketlerinin %70-80 civarını taşıdım yazdığım servera.
Şu an client için elimde UI ve Karakter animasyon paketleri olmadığından daha çok server ağırlıklı çalışıyorum. Yakın zamanda bir kaç görsel de paylaşacağım orjinal assetlerin kullanılmadığı. Merak ettikleriniz sormak istedikleriniz varsa çekinmeden sorabilirsiniz.

Selamlar Hocam;

Öncelikle gayretlerin için tebrikler, Redis' i nerede nasıl kullanmayı planlamaktasınız onu tam anlayamadım, Socket yapısı kullanmanı öneririm asenkron mimari olarak onu bahsediyorsan doğrudur, Postresql daha sağlıklı oluyor büyük ve agresif yapılarda,
 

farkedermi

KY Kıdemli Üye
KY Üye
KAYIT
13 Eyl 2025
Mesajlar
81
Tepki puanı
22
Selamlar Hocam;

Öncelikle gayretlerin için tebrikler, Redis' i nerede nasıl kullanmayı planlamaktasınız onu tam anlayamadım, Socket yapısı kullanmanı öneririm asenkron mimari olarak onu bahsediyorsan doğrudur, Postresql daha sağlıklı oluyor büyük ve agresif yapılarda,
Kullanacağım teknolojiler konusunda kafam bulanıktı ama epey netleştirdim hocam. O dönem teknolojilere çok kafa patlatınca istemsiz kafam karıştı. Şu an ki güncel durum:

Sunucu: .net8(JIT)
DB: Postgre SQL
Mesajlaşma: Messagepack
Soket olarak da .net kendi soketlerini kullanıyorum. İlk etapta SQL server ve protobuff ile başlamıştım. @rapix in tavsiyesini dinledim ve pişman değilim. Mesajlaşma işlemlerini çevirme biraz zaman aldı bir de mesajları listeleme ile yollamaya karar verdim. Her tick için sunucu veya istemci mesajları bir listede biriktirip lz4 sıkıştırarak yolluyor. Yani bir tick için gitmesi veya gelmesi gereken mesajlar toplu şekilde tek pakette git gel yapıyor her bir istemci için.

Special thanks @rapix sağol bro.
Gönderi otomatik olarak birleştirildi:

postgre cok daha performanslı , .net core da sorun yokta ram sorun yapacak user sayısı arttıgında ramden silme x bi zamanda yaptıgı için dipsose da kullansan hert türlü ram şişmesi yapacak 1 2 k userda cok sorun olmaya bilri ama user cogaldıgında tcp işlemlerinde özellikle ram sorun yapar 10 20 k user kaldırmaz ama 1 2 k da cokta sorun cıkarmaz oda teknık olarak cozulur kubernets cakarsın micro servisle cozersn
Linux sunucuda açmayı düşünüyordum. Sizce yeterli olur mu? İkisi arasında hiç performans testi yapmadım ama bu yönde çok tavsiye aldım. Bir de sunucuları bölmeyi düşünüyorum. Monstler için 1 sunucu, playerlar için ayrı bir sunucu. Database 1 sunucu ve sohbet ile log db ile de 4. Sunucu. Map koordinatları için sunucu düşünmüyorum o kısmı navmesh ile çözdüm gibi. Sunucu hızı ve varış noktasını belirleyip gelecek aksiyonu hazırlıyor. Mob o noktaya vardığında sunucu gerekli aksiyonu alıyor. Wonder(devkriye gezme mantığı) ve idle için test ettim çalıştı.
 
Son düzenleme:

bluemansiiz

KY Saygın Üye
Yardımsever
KAYIT
13 May 2022
Mesajlar
425
Çözümler
4
Tepki puanı
219
Kullanacağım teknolojiler konusunda kafam bulanıktı ama epey netleştirdim hocam. O dönem teknolojilere çok kafa patlatınca istemsiz kafam karıştı. Şu an ki güncel durum:

Sunucu: .net8(JIT)
DB: Postgre SQL
Mesajlaşma: Messagepack
Soket olarak da .net kendi soketlerini kullanıyorum. İlk etapta SQL server ve protobuff ile başlamıştım. @rapix in tavsiyesini dinledim ve pişman değilim. Mesajlaşma işlemlerini çevirme biraz zaman aldı bir de mesajları listeleme ile yollamaya karar verdim. Her tick için sunucu veya istemci mesajları bir listede biriktirip lz4 sıkıştırarak yolluyor. Yani bir tick için gitmesi veya gelmesi gereken mesajlar toplu şekilde tek pakette git gel yapıyor her bir istemci için.

Special thanks @rapix sağol bro.
Gönderi otomatik olarak birleştirildi:


Linux sunucuda açmayı düşünüyordum. Sizce yeterli olur mu? İkisi arasında hiç performans testi yapmadım ama bu yönde çok tavsiye aldım. Bir de sunucuları bölmeyi düşünüyorum. Monstler için 1 sunucu, playerlar için ayrı bir sunucu. Database 1 sunucu ve sohbet ile log db ile de 4. Sunucu. Map koordinatları için sunucu düşünmüyorum o kısmı navmesh ile çözdüm gibi. Sunucu hızı ve varış noktasını belirleyip gelecek aksiyonu hazırlıyor. Mob o noktaya vardığında sunucu gerekli aksiyonu alıyor. Wonder(devkriye gezme mantığı) ve idle için test ettim çalıştı.
Selamlar,

genelde yapı şöyle olması lazım hocam;

Mikro servis mantığı ile çalışmalı, Herhangi bir pod bağımlılığıda olmamalı, DB farklı makinada , Servisler Podlardan destek vermeli başlarına takibide 1 tane load balancer koyman gerekli biraz karışık oldu anlatmam detaylı bilgi istersen yardımcı olmaya çalışırım
 

farkedermi

KY Kıdemli Üye
KY Üye
KAYIT
13 Eyl 2025
Mesajlar
81
Tepki puanı
22
@bluemansiiz sunucuları bölmekten kastım ayrı makinalarda tutmak hocam. Aklımdaki sistemi ben özetleyeyim üstüne konuşalım hocam. İstemci üzerinden gelen istekler köprü sunucu üzerinde aracılığı ile uygun sunuculara iletilecek. İlgili sunucunun ileteceği cevap paketleri yine köprü sunucu dan geçerek istemcide işlenecek. Yardıma ihtiyacım kesinlikle var hocam. Daha önce genellikle unity asset storeda bulunan hazır network solutionlar ile çalıştığım için sunucu tarafında her türlü bilgiye açın açıkçası.
 

rapix

KY Kıdemli Üye
KAYIT
11 Ocak 2021
Mesajlar
94
Tepki puanı
5
Kullanacağım teknolojiler konusunda kafam bulanıktı ama epey netleştirdim hocam. O dönem teknolojilere çok kafa patlatınca istemsiz kafam karıştı. Şu an ki güncel durum:

Sunucu: .net8(JIT)
DB: Postgre SQL
Mesajlaşma: Messagepack
Soket olarak da .net kendi soketlerini kullanıyorum. İlk etapta SQL server ve protobuff ile başlamıştım. @rapix in tavsiyesini dinledim ve pişman değilim. Mesajlaşma işlemlerini çevirme biraz zaman aldı bir de mesajları listeleme ile yollamaya karar verdim. Her tick için sunucu veya istemci mesajları bir listede biriktirip lz4 sıkıştırarak yolluyor. Yani bir tick için gitmesi veya gelmesi gereken mesajlar toplu şekilde tek pakette git gel yapıyor her bir istemci için.

Special thanks @rapix sağol bro.
Gönderi otomatik olarak birleştirildi:


Linux sunucuda açmayı düşünüyordum. Sizce yeterli olur mu? İkisi arasında hiç performans testi yapmadım ama bu yönde çok tavsiye aldım. Bir de sunucuları bölmeyi düşünüyorum. Monstler için 1 sunucu, playerlar için ayrı bir sunucu. Database 1 sunucu ve sohbet ile log db ile de 4. Sunucu. Map koordinatları için sunucu düşünmüyorum o kısmı navmesh ile çözdüm gibi. Sunucu hızı ve varış noktasını belirleyip gelecek aksiyonu hazırlıyor. Mob o noktaya vardığında sunucu gerekli aksiyonu alıyor. Wonder(devkriye gezme mantığı) ve idle için test ettim çalıştı.
karşılaşacağın en büyük zorluklardan biri matematiksel fizik hesplarında olucak muhtemelen biz unty tarafında gameserverlar yazarken c# tarafında 60 fps sümüle ettiğimizde fizik işlemlerinin tammalanmasını tamamen 16 ms de halletmek gerekiyor lag yaşamamak için 1 sn 60 kez fizik hesabı lagsız basitce 16ms *60 ms de bütün hesaplamaların bitmesi gerek 1 2 k da 16 ms i geçmeybilir ama 5 10 k da muhtemelen 16 ms işlem süresi c# tarafında geçiçiek buda lag ve takılma dediğimiz sorunları oluşturuacak o yüzde c# tarafı server tarafında pek tercih edilmiyor olmazmı olur tabiki ama gameserver için mmolarda kullanıla harita map mantığı yapmalısın basit mantıkta oyunu karelere bolup her kare 1 server gibi düşünebilirsin örnegın maradonun tam ortasında her tarafa eşit karelere bolup ona göre içindeki userları ve fizikleri hesaplamak igbi düşünebilrisin yada maradaon 1 sw olur oradan tüm işlemler için 1 servis ayaga kaldırırsın işte cz 1 server gibi albion bildiğim karadırya photonserver kullanıyor oda oda mantıgı yapmıslar zone degıstıkce oyuncular o server a baglanıp işlemleri yapılıyor birde son zamanlarda unityinin kendi gameserver mantıgı var ama onu denemedim birde c#daki garbege ile cok ugrasacaksın :) o yuzden rust dilini sana önerebilirim hem memory leak imkansız hem c++ den bı tık daha iyi ve güvenli hatta hazır oyun motorları var bevy fln ama tek başına yapmak ve öğrenme seviyesi olarka zorlayıcı hevesini kırmak için soylemıyorum bunları karşılacagın için söylüyorum bende zamanında baya ugrasmıstım
 

_action_

KY Üye
KAYIT
25 Mar 2022
Mesajlar
23
Tepki puanı
2
Merhaba arkadaşlar. Mobile versiyon için kolları sıvayan arkadaşlardan birisi de benim. Ben kolları baya yukarı sıvadım yalnız. Serveri 0dan yazmaya başlamak gibi bir çılgınlık yaptım. Meraklısı veya araştırmak isteyen olur diye kısa bir bilgi geçeyim.

Server:
.NetCore Asenkron mimaride protobuf haberleşme ile geliştiriliyor. Henüz bir anticheat yazılmadı. Önbellekleme ihtiyacı olursa redis tercih etmeyi düşünüyorum.
Client:
Unity C#
Database:
SQL

Performans noktalarındaki araştırmaları yapmak isterseniz siz de bahsettiğim içerikleri araştırabilirsiniz. Server paketlerinin %70-80 civarını taşıdım yazdığım servera.
Şu an client için elimde UI ve Karakter animasyon paketleri olmadığından daha çok server ağırlıklı çalışıyorum. Yakın zamanda bir kaç görsel de paylaşacağım orjinal assetlerin kullanılmadığı. Merak ettikleriniz sormak istedikleriniz varsa çekinmeden sorabilirsiniz.
C# soket haberleşmesine yardımcı olabilirsen gerisini ben de yapabiliyorum login sonrası pek haberleştiremedim server list gördüm karakter seçtiripoyuna sokamadımç
 

farkedermi

KY Kıdemli Üye
KY Üye
KAYIT
13 Eyl 2025
Mesajlar
81
Tepki puanı
22
@rapix hocam merhaba bahsettiğiniz konuya hakimim. AOI (Ares of interest) olarak adlandırılan bu kısım zaten önemli bir detay. Kaldı ki mapin diğer ucunda olan bir olayı diğer uca yollamayı gerektiren bir yapı yok. Zaten oyuncu haritanın o kısmını görmüyor olacak. Her haritayı da kendi içinde bir sunucu olarak tutmayı düşünüyorum. Moradon, lfc, emc, eslant ve CZ gibi haritalar birbirinden bağımsız çalışacak yani arka planda.
Gönderi otomatik olarak birleştirildi:

C# soket haberleşmesine yardımcı olabilirsen gerisini ben de yapabiliyorum login sonrası pek haberleştiremedim server list gördüm karakter seçtiripoyuna sokamadımç
Tam olarak ne demek istediğinizi anlayamadım hocam. Soket haberleşme login register veya herhangi bir paket fark etmeksizin hep aynı mantık ile çalışıyor. Gelen giden paketlerin taşıdı veri değişiyor sadece.
 

rapix

KY Kıdemli Üye
KAYIT
11 Ocak 2021
Mesajlar
94
Tepki puanı
5
süper eline sağlık bu arada aklıma gelmişken movement datasını udp ile gönderebilirsin knight tcp ile göndermiş ama mobilede tcp ile cok fazla data gonderdıkce ısınma sorunları ile karşılaşmıştık ozellıkle eski cihazlar felaket ısınıyor udp le move datası arada kayıp olsada cok onemli değil birde unity tarafında cıktı aldıgında il2cpp ile c++ a complie edilo kodlar ama piyasada baya gelişmişmiş func isimleri vb direk tersine muhendislik ile elde edi,yorlar kabak gibi her şey ortada o yüzden mutlaka unity tarafında obfuscation yaptırmaya bak ara arada goruntu at ilerlemeni görelim test cıktısı alırsan bizde girelim :)
 

shyrogue

KY Saygın Üye
Coder
KAYIT
2 Şub 2022
Mesajlar
269
Tepki puanı
404
Yaş
42
Konum
Antalya
Postgresql evet hizli buyuk boyutlarda ve coklu yazma da ust seviyede performans ama peki verileri isleme kisminda edit kisminda yonetim kisminda alisilmisin cok disina cikacaksiniz. Send recv db haberlesmeyi cok iyi planlamaniz lazim. Server sql e gore basladiginizi dusunuyorum yazinizdan onu anladim. Yanlis dusunmus anlamissam kusura bakma. postgresql icin yeniden elden gecirmeniz gerekecek. Yapiyi ko dan ayri planlama yapacaksaniz dahada karmasiklasacak. Db kullandigim 10 farkli yazilimim var nbdb postgresql sqlite3 kullandiklarim var sifirdan plana sagdik kalip edit gerektirmeyen durumlar icin guzeller. Ama ko gibi takipli manuel islemler icin zorluk seviyesi bana gore degil ve ben dusunmezdim. bu benim fikrim. Postgresql e de sifirdan editor + tam uyumlu kontrol yonetim uygulamasi sart ayrica kurulumunuda inceleyin. bagimsiz db olusturmak baska sunucuya atip calistirmak adina biraz alisilmisin disinda. İyi inceleyip oyle karar verin.
 

farkedermi

KY Kıdemli Üye
KY Üye
KAYIT
13 Eyl 2025
Mesajlar
81
Tepki puanı
22
süper eline sağlık bu arada aklıma gelmişken movement datasını udp ile gönderebilirsin knight tcp ile göndermiş ama mobilede tcp ile cok fazla data gonderdıkce ısınma sorunları ile karşılaşmıştık ozellıkle eski cihazlar felaket ısınıyor udp le move datası arada kayıp olsada cok onemli değil birde unity tarafında cıktı aldıgında il2cpp ile c++ a complie edilo kodlar ama piyasada baya gelişmişmiş func isimleri vb direk tersine muhendislik ile elde edi,yorlar kabak gibi her şey ortada o yüzden mutlaka unity tarafında obfuscation yaptırmaya bak ara arada goruntu at ilerlemeni görelim test cıktısı alırsan bizde girelim :)

Obscured şekilde şifrelemeyi hallettim hocam. Tavsiyen için teşekkür ederim. İnşaallah yeni gelişmelerden videolar paylaşacağım yakın zamanda.
Gönderi otomatik olarak birleştirildi:

Postgresql evet hizli buyuk boyutlarda ve coklu yazma da ust seviyede performans ama peki verileri isleme kisminda edit kisminda yonetim kisminda alisilmisin cok disina cikacaksiniz. Send recv db haberlesmeyi cok iyi planlamaniz lazim. Server sql e gore basladiginizi dusunuyorum yazinizdan onu anladim. Yanlis dusunmus anlamissam kusura bakma. postgresql icin yeniden elden gecirmeniz gerekecek. Yapiyi ko dan ayri planlama yapacaksaniz dahada karmasiklasacak. Db kullandigim 10 farkli yazilimim var nbdb postgresql sqlite3 kullandiklarim var sifirdan plana sagdik kalip edit gerektirmeyen durumlar icin guzeller. Ama ko gibi takipli manuel islemler icin zorluk seviyesi bana gore degil ve ben dusunmezdim. bu benim fikrim. Postgresql e de sifirdan editor + tam uyumlu kontrol yonetim uygulamasi sart ayrica kurulumunuda inceleyin. bagimsiz db olusturmak baska sunucuya atip calistirmak adina biraz alisilmisin disinda. İyi inceleyip oyle karar verin.

Hocam yorumun için çok teşekkür ederim. Bunların farkına varmam uzun zaman aldı fakat bağdatı yeniden keşfe çıkmaktan vazgeçtim diyebilirim. İlk mesajımı güncelledim. Mevcut teknolojiler üzerinden ilerlemeye karar verdim. Diğer türlüsü gerçekten inanılmaz derecede zorlayıcı olmaya başladı.
 

shyrogue

KY Saygın Üye
Coder
KAYIT
2 Şub 2022
Mesajlar
269
Tepki puanı
404
Yaş
42
Konum
Antalya
Benim kendi yazdigim mobil oyunda postgresql kullandim bin pisman oldum . Projeyi yeniden yapilandirmak sacma seylere sebep oldu yeniden basladim sqlite3 olarak. Ve yonetim paneli kontrol yazma silme tablo shema stun satir herseyi web arayuyu yada uygulama olmak zorunda sql gibi alisilmisin disinda inanilmaz zor. Bana gore tabi. Heleki ko ile ilgiliyse alistigin gibi olmayinca cozmek de zor olacak. Maceraya degmez.
 

farkedermi

KY Kıdemli Üye
KY Üye
KAYIT
13 Eyl 2025
Mesajlar
81
Tepki puanı
22
Benim kendi yazdigim mobil oyunda postgresql kullandim bin pisman oldum . Projeyi yeniden yapilandirmak sacma seylere sebep oldu yeniden basladim sqlite3 olarak. Ve yonetim paneli kontrol yazma silme tablo shema stun satir herseyi web arayuyu yada uygulama olmak zorunda sql gibi alisilmisin disinda inanilmaz zor. Bana gore tabi. Heleki ko ile ilgiliyse alistigin gibi olmayinca cozmek de zor olacak. Maceraya degmez.
Evet değmedi. Ama bir şeye yeniden başlamak ilk defa başlamaktan farklı oluyor. Eski olumsuz tecrübeler elekte kalıyor
 

farkedermi

KY Kıdemli Üye
KY Üye
KAYIT
13 Eyl 2025
Mesajlar
81
Tepki puanı
22
Bug online. Knight offline. Siz hiç SW sc'den küpe taktınız mı mesela :D
 

Ekli dosyalar

  • oha.jpg
    oha.jpg
    223.8 KB · Görüntüleme: 81

farkedermi

KY Kıdemli Üye
KY Üye
KAYIT
13 Eyl 2025
Mesajlar
81
Tepki puanı
22
Oyuna giriş paketleri işlendi ve hazır.

1781865816523.png


Stat sistemini bitirildi etkileri ile beraber.
Eşya değiştirme aktif görse olarak.
Skill sistemi bitti skill animasyonlarını elden geçirilecek. Doğru yetenek-doğru animasyon kısmında çalışıyorum. Devamında hasar verme kısmı işlenecek.
Moblar haritaya eklendi. Hareket etme mantığı işlendi. Tıklanarak seçilmesi sağlandı.


1781866031007.png


Launcher sistemi yazıldı. Dosyaların download edilmesi sağlandı.

1781866128851.png


Merchant sistemi yazıldı eşyaların görünmesi, satın alınması, geri satılması gibi mekanikler tamamlandı.


Chat sistemi işlevsel hale getirildi.
Karakter recovery(MP) aktif ve çalışır durumda.
Gönderi otomatik olarak birleştirildi:

İlk mesajda yer alan discord sunucumuz üzerinden güncellemeleri takip edebilirsiniz.
 
Anasayfa Kayıt ol Giriş yap
Üst Alt