- Mesaj
- 38
- Çözümler
- 1
- Beğeni
- 99
- Puan
- 679
- Ticaret Puanı
- 0
Yüzeysel olarak kafada oturttuğum bir "offline shop" sisteminin diyagramı, aklınıza gelen feature varsa belirtebilirsiniz.
Şimdi baktığımız zaman(@pasha37 de açtığım konuda yorum atarak fikir verdi sağ olsun) veyahut benim uğraştığım zamanlarda da olan sorun, çok gelmiştir bu soru ki eminim hala soran vardır; "hangi shopu kullanıcaz?", geliştirici bir shop geliştirir leş yiyiciler warez olsun diye bekler, bir kısım ciddi miktarlar öder, sonra forumlarda warez olunca üzerine konular açılır, bu shopu ekleyip files satanlar ortaya çıkar bla bla bla. Amaç bu sorunu Türkler olarak çözmek(bu benim vizyonum tabii, herkes farklı anlam yükleyebilir.).
Çok kapsamlı olduğunu, uzun ve ciddi bir süreç olduğunu biliyorum, şayet bunu tamamlarsam(veya tamamlarsak) benim için jubile olur(zaten amacımda bu, Metin2 benim için artık bir şey ifade etmiyor, arkada değerli bir iş bırakıp hayatımdan çıkarmak istiyorum, sonrasında sadece shopa bakım süreci devam edebilir). Ardında bir şeyler bırakmanın, insan kazanmanın paradan daha önemli olduğu düşüncesindeyim. Sistem kullanımı için min. bir miktar bağış belirleme niyetindeyim(LÖSEV, ahbap, TSKGV vb.). Tabii bu shop kullanılır kullanılmaz o ayrı bir mevzu onu ayrı tartışırız olgunlaşırsa.
Globalde kullanılabileceğini düşündüğüm bir sistem, tabii boş işler, uğraşmaya değmez vb. yorumları olanlarda olabilir, saygı duyarız. Eğer bu forum altında geliştirilecekse yönetimin(şahsıma hiçbir beklentim yok, örneğin ekip olursa contributor arkadaşlara jest amaçlı dev tagı bile vermeleri bile motive edicidir [ bu sadece ben yönetici olsam teşvik amaçlı yapacağım bir örnek, yönetimi zan altında bırakmak istemem sadece örnek elbette zorunda değiller, bence kimse de böyle bir şey beklememeli] ) ve yorumlarda yardıran üstün yazılımcı yeteneğine sahip olan arkadaşların destek olmasını beklerim, tabii onlara kalmış kimse vaktini harcamak zorunda değil.
Not: Webci bir contributor bulunmazsa yapay zeka desteğiyle kendim geliştirmeye çalışacağım c#, go vb. bir dil ile ama bu son çare, "marketplace" bir web servisi için yapay zekaya güvenmeyi mantıklı bulmuyorum, gerçek kişiler tercihim.
"Sürekli "destek" diyorsun sonra ahkam kesiyorsun!" diyecekler için buradaki tek olay kod yazmak değil bir projenin başında R&D süreçlerinde özellikle geliştireceğiniz projeyi bilmeniz, tanımanız lazım. Güncel tarihte sorunlar neler(örn. bu iş için shopların kritik sorunları, oyuncu beklentisi, olası zorluklar vb.) gibi araştırmalar yapılmak zorunda, paldır küldür başlanmaz. Ben zaten çalışan biriyim keza herkesin bir özel hayatıda var tüm bu süreci baştan aşağı kendim yapmam ciddi zaman alır. Algoritmanı belirlersin, mimarini oturtursun, geçmiş çözümlere bakarsın, kendi çözümünü oluşturursun bla bla bla. Destekten kastım "bak şu sorunlar çıkıyor shoplarda, oyuncu şunu bekliyor, geçmişte şu sorunlar yaşandı, daha önce x yerinde çalıştım orda şöyle bir çözüm sunuluyordu" gibi şeyler "kardeş biri gelsin auction kodlasın ya" değil, kurulacak her cümle, verilen her bilgi destektir. Beni seversiniz sevmezsiniz o ayrı bir konu, benim hak eden herkese saygım var, iş ayrı bu konular ayrı şeyler.
Bir ekip oluşursa beklentim;
Aşağıdaki liste yüzeysel, tamamen detaylar belirlenip, text'e ve diyagramalara dökülmeden kodlamaya başlama niyetim yok, burda da tabii bir arkadaş gerekiyor kendi iş ve özel hayatımdan bunları 1 haftada çıkarıp başlamak mümkün değil. Gerekli destek bulunmazsa konuda istenen farklı sistemlerden birini kodlayıp paylaşacağım sözümü tutmak amaçlı.
Genel bilgiler
Açık Artırma (Auction) Sistemi
Borsa (Order Book) Sistemi
Bildirim ve Entegrasyon
Web Entegrasyonu:
Not: Bu diyagramlar sadece yüzeyseldir (monitoring, fail-safe, concurrency vb. durumlar yok, ileride UML ile çizececeğim oturdukça, zaten her projede tasarım en az 10 kez değişir) ve hedeflenen mimari ve feature listdir, geliştirme aşamasında mimari zorluk, trade-off vb. durumlardan dolayı değişebilir(Örn. redis'ten vazgeçilebilir, farklı bir mekanizma kullanılır yerine, websocket değilde rpc + pub/sub tercih edilir, IPC metodu değişebilir vs.). Şu an fikir ve mimari aşaması, tam oturmuş halde değil.
Sanıyorum ki bunu konu altından konuşabiliriz veyahut bana dc'den falan yazabilirsiniz.
Şimdi baktığımız zaman(@pasha37 de açtığım konuda yorum atarak fikir verdi sağ olsun) veyahut benim uğraştığım zamanlarda da olan sorun, çok gelmiştir bu soru ki eminim hala soran vardır; "hangi shopu kullanıcaz?", geliştirici bir shop geliştirir leş yiyiciler warez olsun diye bekler, bir kısım ciddi miktarlar öder, sonra forumlarda warez olunca üzerine konular açılır, bu shopu ekleyip files satanlar ortaya çıkar bla bla bla. Amaç bu sorunu Türkler olarak çözmek(bu benim vizyonum tabii, herkes farklı anlam yükleyebilir.).
Çok kapsamlı olduğunu, uzun ve ciddi bir süreç olduğunu biliyorum, şayet bunu tamamlarsam(veya tamamlarsak) benim için jubile olur(zaten amacımda bu, Metin2 benim için artık bir şey ifade etmiyor, arkada değerli bir iş bırakıp hayatımdan çıkarmak istiyorum, sonrasında sadece shopa bakım süreci devam edebilir). Ardında bir şeyler bırakmanın, insan kazanmanın paradan daha önemli olduğu düşüncesindeyim. Sistem kullanımı için min. bir miktar bağış belirleme niyetindeyim(LÖSEV, ahbap, TSKGV vb.). Tabii bu shop kullanılır kullanılmaz o ayrı bir mevzu onu ayrı tartışırız olgunlaşırsa.
Globalde kullanılabileceğini düşündüğüm bir sistem, tabii boş işler, uğraşmaya değmez vb. yorumları olanlarda olabilir, saygı duyarız. Eğer bu forum altında geliştirilecekse yönetimin(şahsıma hiçbir beklentim yok, örneğin ekip olursa contributor arkadaşlara jest amaçlı dev tagı bile vermeleri bile motive edicidir [ bu sadece ben yönetici olsam teşvik amaçlı yapacağım bir örnek, yönetimi zan altında bırakmak istemem sadece örnek elbette zorunda değiller, bence kimse de böyle bir şey beklememeli] ) ve yorumlarda yardıran üstün yazılımcı yeteneğine sahip olan arkadaşların destek olmasını beklerim, tabii onlara kalmış kimse vaktini harcamak zorunda değil.
Not: Webci bir contributor bulunmazsa yapay zeka desteğiyle kendim geliştirmeye çalışacağım c#, go vb. bir dil ile ama bu son çare, "marketplace" bir web servisi için yapay zekaya güvenmeyi mantıklı bulmuyorum, gerçek kişiler tercihim.
"Sürekli "destek" diyorsun sonra ahkam kesiyorsun!" diyecekler için buradaki tek olay kod yazmak değil bir projenin başında R&D süreçlerinde özellikle geliştireceğiniz projeyi bilmeniz, tanımanız lazım. Güncel tarihte sorunlar neler(örn. bu iş için shopların kritik sorunları, oyuncu beklentisi, olası zorluklar vb.) gibi araştırmalar yapılmak zorunda, paldır küldür başlanmaz. Ben zaten çalışan biriyim keza herkesin bir özel hayatıda var tüm bu süreci baştan aşağı kendim yapmam ciddi zaman alır. Algoritmanı belirlersin, mimarini oturtursun, geçmiş çözümlere bakarsın, kendi çözümünü oluşturursun bla bla bla. Destekten kastım "bak şu sorunlar çıkıyor shoplarda, oyuncu şunu bekliyor, geçmişte şu sorunlar yaşandı, daha önce x yerinde çalıştım orda şöyle bir çözüm sunuluyordu" gibi şeyler "kardeş biri gelsin auction kodlasın ya" değil, kurulacak her cümle, verilen her bilgi destektir. Beni seversiniz sevmezsiniz o ayrı bir konu, benim hak eden herkese saygım var, iş ayrı bu konular ayrı şeyler.
Bir ekip oluşursa beklentim;
- Python ile uğraşmayı seven UI işlerine bakacak birileri
- Web tarafına bakacak birileri
- Üst düzey olmasa da belli düzeyde C++ kullanabilenler/mantık yürütebilenler
- Metin2 oynayıp piyasadaki olan ve olası sorunları bilenler
- Oyuncu beklentilerini bilen server sahipleri
Aşağıdaki liste yüzeysel, tamamen detaylar belirlenip, text'e ve diyagramalara dökülmeden kodlamaya başlama niyetim yok, burda da tabii bir arkadaş gerekiyor kendi iş ve özel hayatımdan bunları 1 haftada çıkarıp başlamak mümkün değil. Gerekli destek bulunmazsa konuda istenen farklı sistemlerden birini kodlayıp paylaşacağım sözümü tutmak amaçlı.
Genel bilgiler
- Shop Server: Unix Domain Sockets (UDS) üzerinden IPC iletişimi
- Veri Doğrulama: Klasik checksum, imza doğrulamaları vs.
- Oturum: Session kontrolü ve Token doğrulama
- Koruma: Kullanıcı bazlı Rate Limit ve Tier (yetki) kontrol sistemi.
- Signature: Giden paketlerin imzalanması ve hata durumları için özel Error Packet yapısı.
- Monitoring & logging: Klasik audit loglar, sistem logları vs.
- Market Fonksiyonları: Shop info, shop görüntüleme, eşya arama, ekleme silme, ortalama fiyat (avg price) takibi vb. klasik shop gereksinimleri
- Banka Sistemi: Bankadan para çekme ve "Return All" ile tüm eşyaları geri alma.
Açık Artırma (Auction) Sistemi
- Escrow (Emanet) Sistemi: Teklif sırasında paranın rezerve edilmesi ve üst teklif gelince eski teklifin otomatik iadesi.
- Müzayede Yönetimi: Açık artırma başlatma, iptal etme ve bitişte otomatik eşya/para transferi.
- Otomatik İşleyici: Background thread (Expiry Worker) ile süresi dolan ilanların ve açık artırmaların otomatik sonlandırılması gibi işlemler
Borsa (Order Book) Sistemi
- Limit Order: Kullanıcının belirlediği fiyattan alım (Bid) veya satım (Ask) emri girebilmesi.
- Order Book (Emir Defteri): Alım/satım emirleri listesi
- Matching Engine: Yeni bir emir geldiğinde defteri tarayıp uygun fiyatlı karşı emirle anında eşleştirme yapan motor.
- Escrow: Alım emrinde paranın, satım emrinde eşyanın işlem gerçekleşene kadar sistem tarafından bloke edilmesi.
- Offline Trading: Online olma gereksinimi yok
- Dinamik Fiyat Takibi: Eşyaların anlık taban ve tavan fiyatlarının defter üzerinden izlenebilmesi.
- Event-Based Bildirim: İşlem gerçekleştiğinde Event Bus üzerinden Web, Discord ve Telegram kanallarına anlık veri gönderimi.
Bildirim ve Entegrasyon
- Event Bus: Klasik thread-safe queue
- Anlık Bildirimler: Web tarafı için(marketplace) WebSocket push desteği
- Bot Entegrasyonu: Discord ve/veya Telegram botları için bildirim yapısı
Web Entegrasyonu:
- Satış: Oyuncular para elde etmek için shopundaki itemleri gerçek para karşılığında satabilecek
- İletişim: Tabii bu "Shop Server" ile entegre şekilde çalışacak
- Marketplace dışında bir admin dashboard panelde sunulabilir.
Not: Bu diyagramlar sadece yüzeyseldir (monitoring, fail-safe, concurrency vb. durumlar yok, ileride UML ile çizececeğim oturdukça, zaten her projede tasarım en az 10 kez değişir) ve hedeflenen mimari ve feature listdir, geliştirme aşamasında mimari zorluk, trade-off vb. durumlardan dolayı değişebilir(Örn. redis'ten vazgeçilebilir, farklı bir mekanizma kullanılır yerine, websocket değilde rpc + pub/sub tercih edilir, IPC metodu değişebilir vs.). Şu an fikir ve mimari aşaması, tam oturmuş halde değil.
Sanıyorum ki bunu konu altından konuşabiliriz veyahut bana dc'den falan yazabilirsiniz.


