- Mesaj
- 44
- Çözümler
- 1
- Beğeni
- 152
- Puan
- 699
- Ticaret Puanı
- 0
C++26 ile benim programcılık bakış açımla yazılan, dün gece daha ilk günden sabahlamama sebep olan bir in game shop(veya item shop) sistemi. Şu lanet oyuna dair bazı heveslerim savunmada çalışsam dahi bitmedi maalesef, sanki reflection ile yapılacak proje yok da eklenti yazıyoruz, neyse...
Piyasada kullanılan çoğu sisteme baktım kimse üzerine alınmasın ama gerçekten berbat haldeler. Size güzel bir UI sözü veremem ama daha haso bir backend olduğundan emin olabilirsiniz, artık UI için uğraşmak size kalmış, bir babayiğit çıkar illa UI ile uğraşacak, ben vasat bir şeyler yapacağım.
Kullanacak kişiyi ve Metin2'nin yapısını düşünerek; ayrı executable, klasörleme vb. yöntemlere bulaşmadım. C++26 - GCC16'ya sahip olan herkes kullansın istedim. Bazı TU'ların boyutu fazla gelebilir ama yapacak bir şey yok, ileride TU'ları ayırırım büyük ihtimalle. Şimdilik kodu okumak biraz zor olabilir normal şartlarda böyle olmasına karşıyım ama zamanla oturur, production düzeyde bir mini proje olacak.
Çizdiğim sequnce diagramlarını vs. repoya ekleyeceğim, yani mimariyi diagramlardan okuyabilirsiniz.
Oyun tek thread olduğu için keza in game shop sistemi hot path bir sistem olmadığı için concurrency tarafına hiç girmedim, C++26 yeteneklerim için tasarladığım ve geliştirdiğim bir eklenti. Repoyu public yapacağım, init commiti atınca yorumlarda paylaşacağım.
Hatasız kul olmaz, repoyu açtığımda bir bulgunuz olursa issue kısmından bildirebilirsiniz.
Not: Normalde bu foruma konu açmıştım niyetim bir offline-shop kodlamaktı ama işten güçten ne fırsat bulabildim ne de devam ettirecek motivasyon, ileride umarım.
Soru & Cevap:
Harcadığım vakte değer mi?
-> Amacım C++26 çalışmak bu da bahanesi işte.
Onca item shop varken bunu niye kullanalım?
-> Tercihleriniz sizi bağlar..
E işler yoğunlaşınca ne olucak?
-> Ayda bir commit atarız yahu ne olucak
E bu over eng değil mi item shop alt tarafı?
-> Yani bakış açısına göre evet, biraz yoğun reflection kullanımı var
Reflection ne birader ne anlatıyorsun?
-> Halk dilinde şu işe yarıyor: paket tanımlarını enum'a annotation olarak yazıyorum, payload, isim ve dispatch tablosu compile-time'da reflection ile üretiliyor. Yeni paket eklemek scoped enum'a tek satır eklemek anlamına geliyor, traits, log, decode hepsi kendiliğinden geliyor. Tabii item shop ölçeği geniş bir sistem değil, dediğim gibi C++26 yeteneklerim için bu kadar dibini sıyırıyorum.
Bu sene fener şampiyon olur mu?
-> ...
İnanıyorum ki bu sefer tamamlayacağım..
Piyasada kullanılan çoğu sisteme baktım kimse üzerine alınmasın ama gerçekten berbat haldeler. Size güzel bir UI sözü veremem ama daha haso bir backend olduğundan emin olabilirsiniz, artık UI için uğraşmak size kalmış, bir babayiğit çıkar illa UI ile uğraşacak, ben vasat bir şeyler yapacağım.
Kullanacak kişiyi ve Metin2'nin yapısını düşünerek; ayrı executable, klasörleme vb. yöntemlere bulaşmadım. C++26 - GCC16'ya sahip olan herkes kullansın istedim. Bazı TU'ların boyutu fazla gelebilir ama yapacak bir şey yok, ileride TU'ları ayırırım büyük ihtimalle. Şimdilik kodu okumak biraz zor olabilir normal şartlarda böyle olmasına karşıyım ama zamanla oturur, production düzeyde bir mini proje olacak.
Çizdiğim sequnce diagramlarını vs. repoya ekleyeceğim, yani mimariyi diagramlardan okuyabilirsiniz.
Oyun tek thread olduğu için keza in game shop sistemi hot path bir sistem olmadığı için concurrency tarafına hiç girmedim, C++26 yeteneklerim için tasarladığım ve geliştirdiğim bir eklenti. Repoyu public yapacağım, init commiti atınca yorumlarda paylaşacağım.
Hatasız kul olmaz, repoyu açtığımda bir bulgunuz olursa issue kısmından bildirebilirsiniz.
Not: Normalde bu foruma konu açmıştım niyetim bir offline-shop kodlamaktı ama işten güçten ne fırsat bulabildim ne de devam ettirecek motivasyon, ileride umarım.
Soru & Cevap:
Harcadığım vakte değer mi?
-> Amacım C++26 çalışmak bu da bahanesi işte.
Onca item shop varken bunu niye kullanalım?
-> Tercihleriniz sizi bağlar..
E işler yoğunlaşınca ne olucak?
-> Ayda bir commit atarız yahu ne olucak
E bu over eng değil mi item shop alt tarafı?
-> Yani bakış açısına göre evet, biraz yoğun reflection kullanımı var
Reflection ne birader ne anlatıyorsun?
-> Halk dilinde şu işe yarıyor: paket tanımlarını enum'a annotation olarak yazıyorum, payload, isim ve dispatch tablosu compile-time'da reflection ile üretiliyor. Yeni paket eklemek scoped enum'a tek satır eklemek anlamına geliyor, traits, log, decode hepsi kendiliğinden geliyor. Tabii item shop ölçeği geniş bir sistem değil, dediğim gibi C++26 yeteneklerim için bu kadar dibini sıyırıyorum.
Bu sene fener şampiyon olur mu?
-> ...
İnanıyorum ki bu sefer tamamlayacağım..