İlan
04 Haz 2026 20 çevrimiçi üye Duyurular
Ana Sayfa C++ / C# / Python
Ana Sayfa Forum C++ / C# / Python Protobuf Darboğazlara Veda: Protobuf ile Yazılımd...
İlan Yan banner placeholder

Protobuf Darboğazlara Veda: Protobuf ile Yazılımda Hız Kesmeyin

beagsoft 17.04.2026 19:05 1.3K görüntüleme 7 cevap
Son Mesaj
beagsoft
Üye
Üye
Katılım05 Ara 2025
Konular8
Mesajlar42
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
17.04.2026 19:05 #1
Freebsd kütüphane olarak
pkg install protobuf protobuf-c pkgconf
indirin

daha sonra makefile içine
# Makefile örneği
INCDIR += -I/usr/local/include
LIBDIR += -L/usr/local/lib
LIBS += -lprotobuf

eklentilerinizi yapın

bu arada direk Protobuf kurulumunu anlatmıyorum bende şuanda alt yapıyı değiştiriyorum.
google.rar içindekileri extern include kütüphanesine atın rarı çıkartıp

libleride aynı şekilde çıkartıp atın
ilk adım olarak protobufu src içerisinde çalıştırın daha sonra Örnek alabileceğiniz Files Aeldra oradaki gibi bütün paketleri yapmayın tek tek yapın

Client için ise
Extern içine atın google-client ve clientprotlib.rar içindekileri gerekli yerlere atın

Asıl büyük olay Protobuf içerisinde 1 adet paket belirleyin ve packet.h ve packet_info.cpp içeriisnde seçtiğiniz paketin cgsini silin structlarınıda aynı şekilde basit bir sistem üzerinden gidebilirsiniz. Örnek at level için yazılan sistem

Daha sonra bu paketi input_main.cpp içerisinde normalde

#if defined(__ENABLE_RIDING_EXTENDED__)
case HEADER_#ifMOUNT_UP_GRADE:
MountUpGrade(ch, c_pData);
break;
#endif
bu şekilde olanı

alttaki gibi yapılacak
protobuf.rar#endif
cg_packets.proto içine girin
message CGMountUpGradePacket
{ uint32 sub_header = 1; // Struct'taki iSubHeader }

tanımlayın

daha sonra
gc_packets.proto

Paste2.org - Viewing Paste 5p60c0j3

ekleyin packetleri ise header klasöründe
tanımlayacaksınıız tabi bunları yapmadan önce alt yapıda değişiklikler yapacaksınız bunuda aeldra içinde nasıl yapmışlarsa aynı şekilde yapabilirsiniz. bütün paketleri yapmayın ilk adım olarak 1 paket yapın daha sonra 5 paket yaparsınız daha sonra diye diye arttırırsınız..

Virüs Total google.rar
Virüs Total lib.rar
Virüs Total google-client.rar
Virüs Total clientprotlib.rar
Virüs Total protobuf.rar
beagsoft
Üye
Üye
Katılım05 Ara 2025
Konular8
Mesajlar42
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
23.04.2026 12:17 #2
protobuf paketleri sıkıştırarak paket boyutlarını düşürüp ağ trafiğinde daha çok alan açmış oluyor. her ne kadar hızlı olarak görülse de serialization işlemlerinde paket iletimi kadar hızlı değil. Özellikle protobuf ram konusunda biraz obur online sayısı arttıkça protobufın ihtiyaç duyacağı ram miktarıda artıyor. Tip güvenli olduğu için packet bozulmalarını sıfıra indiriyor. Her ne kadar performans sunsa da metin2 gibi anlık veri iletimine ihtiyaç duyan oyunlarda tercih edilmiyor. Bu yüzden custom binary protocol kullanılıyor. şuanki metin2nin paket yapısı bunun bir temel örneği. Koray'ın contributor olarak destek verdiği m2devdeki filesleri incelersen orada ki yapı protobufa göre daha performanslı daha güvenli custom binary protocol için en sağlam örnekler Korayda

mesajı yeni gördüm, biraz geç olsada yazmak istedim. benim bildiğim kadarıyla schema tabanlı sistemlerin metin2'ye hiç bir kazancı yok, chat, whisper, offlineshop gibi istisnalar dışında metin2 paketleri çok ufak boyutlarda çalışıyor zaten, schema tabanlı sistemler ile buna ek metadata eklediğinizde üzerine runtime da işlemek için ek işlemlerde dahil olması gerektiğinden bir kazanç getireceğini düşünmüyorum.

gerekli mi? kişiden kişiye ya da amacınıza göre değişir, ben bugün oyun sunucusunu rust ile yeniden yazmak istesem ya da clientini unity/ue gibi bir motora taşımak istesem mevcut sisteme uygun bir serializer yerine schema tabanlı bir sisteme geçirmeyi tercih ederdim, şu an ki gibi kalacaksa ama modernleştirmek istiyorsam std::visit + std::span ile çok daha basit ve runtime maliyeti olmayan(ancak build time da maliyeti mevcut) Öğeyi görmek için üye olmalısınız. gibi bir alternatife yönelirdim. ancak amacım sadece performans katmayı hedeflemekse kesinlike mevcut sistemi değiştirmezdim.

bunun dışında schema tabanlı sistemlerde protobuf pek tercih edilmiyor bildiğim kadarıyla, cap'n proto ya da flatbuffers performans olarak daha avantajlı olması lazımdı.
beagsoft
Üye
Üye
Katılım05 Ara 2025
Konular8
Mesajlar42
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
26.04.2026 05:00 #3
Paylaşım için teşekkürler +'ları -'leri nedir ne gibi bir fayda sağlıyor.
protobuf paketleri sıkıştırarak paket boyutlarını düşürüp ağ trafiğinde daha çok alan açmış oluyor. her ne kadar hızlı olarak görülse de serialization işlemlerinde paket iletimi kadar hızlı değil. Özellikle protobuf ram konusunda biraz obur online sayısı arttıkça protobufın ihtiyaç duyacağı ram miktarıda artıyor. Tip güvenli olduğu için packet bozulmalarını sıfıra indiriyor. Her ne kadar performans sunsa da metin2 gibi anlık veri iletimine ihtiyaç duyan oyunlarda tercih edilmiyor. Bu yüzden custom binary protocol kullanılıyor. şuanki metin2nin paket yapısı bunun bir temel örneği. Koray'ın contributor olarak destek verdiği m2devdeki filesleri incelersen orada ki yapı protobufa göre daha performanslı daha güvenli custom binary protocol için en sağlam örnekler Korayda
beagsoft
Üye
Üye
Katılım05 Ara 2025
Konular8
Mesajlar42
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
04.05.2026 11:39 #4
aslında bütün paketleri protobuf yapmak çok sağlıklı değil mesela hareket saldırı gibi anlık veri alışverişlerine ciddi sorunlar ortaya çıkartır fakat ciddi veri taşına pet sistemi offlineshop login verileri item verileri gibi paketleri protobufa taşımak daha mantıklı diğer türlü karakter hareketlerinin olduğu anlık durum güncellemesi olan yerleri struct olarak bırakmak daha işleyişli hale geliyor ama diğer türlü protobufa geçişler de eski memcy kopyalamaları sizeof matematik hesaplamaları gibi yerlerde SendPacket, RecvPacket, TPacketGC... gibi bitmek bilmeyen struct tanımlamaları ve sizeof() hesaplamalarından kurtulursunuz protobuf okuma/yazma (setter/getter) fonksiyonlarını otomatik oluşturur. Laglar takılmalar hileler crash gibi dupeler bunun gibi yerlerde muazzam bir kalite sunuyor fakat dediğim gibi Karakter hareketleri ve anlık durum güncellemeleri protobufa geçirmemek daha iyi çünkü aşırı bellekte yer açma durumları var çok oyunculu katmanlarda çok fazla sıkıntı verir özellikle çoğu yerde değişiklik yapılacağı için dikkatli olunmaz ise bitmek bilmeyen buglar dupelerle uğraşmak zorunda kalırsınız.
Dora
Üye
Üye
Katılım10 Nis 2026
Konular6
Mesajlar81
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
04.05.2026 15:18 #5
Paylaşım için teşekkürler +'ları -'leri nedir ne gibi bir fayda sağlıyor.
Gokcag
Üye
Üye
Katılım13 Nis 2026
Konular6
Mesajlar37
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
04.05.2026 22:48 #6
Paylaşım için teşekkürler +'ları -'leri nedir ne gibi bir fayda sağlıyor.
protobuf paketleri sıkıştırarak paket boyutlarını düşürüp ağ trafiğinde daha çok alan açmış oluyor. her ne kadar hızlı olarak görülse de serialization işlemlerinde paket iletimi kadar hızlı değil. Özellikle protobuf ram konusunda biraz obur online sayısı arttıkça protobufın ihtiyaç duyacağı ram miktarıda artıyor. Tip güvenli olduğu için packet bozulmalarını sıfıra indiriyor. Her ne kadar performans sunsa da metin2 gibi anlık veri iletimine ihtiyaç duyan oyunlarda tercih edilmiyor. Bu yüzden custom binary protocol kullanılıyor. şuanki metin2nin paket yapısı bunun bir temel örneği. Koray'ın contributor olarak destek verdiği m2devdeki filesleri incelersen orada ki yapı protobufa göre daha performanslı daha güvenli custom binary protocol için en sağlam örnekler Korayda
41Yazılım
Üye
Üye
Katılım28 Kas 2025
Konular7
Mesajlar30
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
05.05.2026 08:27 #7
Paylaşım için teşekkürler
Dora
Üye
Üye
Katılım10 Nis 2026
Konular6
Mesajlar81
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
05.05.2026 11:13 #8
protobuf paketleri sıkıştırarak paket boyutlarını düşürüp ağ trafiğinde daha çok alan açmış oluyor. her ne kadar hızlı olarak görülse de serialization işlemlerinde paket iletimi kadar hızlı değil. Özellikle protobuf ram konusunda biraz obur online sayısı arttıkça protobufın ihtiyaç duyacağı ram miktarıda artıyor. Tip güvenli olduğu için packet bozulmalarını sıfıra indiriyor. Her ne kadar performans sunsa da metin2 gibi anlık veri iletimine ihtiyaç duyan oyunlarda tercih edilmiyor. Bu yüzden custom binary protocol kullanılıyor. şuanki metin2nin paket yapısı bunun bir temel örneği. Koray'ın contributor olarak destek verdiği m2devdeki filesleri incelersen orada ki yapı protobufa göre daha performanslı daha güvenli custom binary protocol için en sağlam örnekler Korayda
Öncelikle güzel anlaşılır açıklaman için teşekkür ederim anladığım kadarıyla 1-2 noktada +'sı olsada metin2 nin anlık paketleri için tercih edilmez.
Bu konuyu görüntüleyenler
1 misafir
Cevap yazmak için giriş yapın.
Benzer Konular
6 cevap
2K görüntüleme
9 cevap
1.9K görüntüleme
4 cevap
1.9K görüntüleme
8 cevap
1.9K görüntüleme
İlan Yan banner placeholder