[Tyolduran SF] Geliştirme Günlüğü

  • Konuyu açan Konuyu açan benimsinsen41
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 15
  • Gösterim Gösterim 395

benimsinsen41

MT Üye
MT Üye
Mesaj
170
Çözümler
7
Beğeni
423
Puan
799
Ticaret Puanı
0
Tyolduran SF
Geliştirme Günlüğü

1-120 Global • Python 3.10 Client • Protobuf Ağ Altyapısı • 11 Dil​



Merhaba MMOTutkunları!

Öncelikle kendimden bahsedeyim kısaca yaklaşık 15 senedir Metin2'nin içinde olan birisiyim.Metin2'yi sadece oynamakla kalmayıp youtube dan c++ ve python kodlamasını öğrenen birisiyim.Youtube den kodlama mı öğrenilir diyenler için hastanede laboratuar teknikeri olarak çalışıyorum boş vakitlerimi değerlendiriyorum :D.Bir süredir üzerinde çalıştığım Tyolduran SF projesinin gelişimini bu konu altında paylaşacağım. Amacım hazır bir files'ı açıp sunucu kurmak değil, altyapıyı baştan sona elden geçirip uzun ömürlü, güvenli ve global ölçekte çalışabilecek bir Metin2 server ortaya çıkarmak.Evet herşey yapay zekayla yapılabilir oldu ama ben hobi olarak yapıyorum :D.

Yapılanları, karşılaştığım sorunları ve çözümlerini düzenli olarak burada güncelleyeceğim. Fikir, öneri ve eleştirilere açığım.



📌 Proje Kimliği

  • Proje adı: Tyolduran SF
  • Tür: 1-120 Global PvM
  • Durum: Aktif geliştirme / iç test aşaması



⚙️ Teknik Altyapı

Client
  • Visual Studio 2022 ile derlenen C++ client kaynağı
  • Python 2.7 → Python 3.10 geçişi tamamlandı; root tarafındaki tüm arayüz kodları Python 3'e taşındı ve eski 2.7 kalıntıları temizlendi
  • Pack yapısı değiştirildi ve yalnızca .typack paketlerinden okunacak hale getirildi.(FoxFS tarzında)

Server
  • FreeBSD üzerinde C++20 (g++10) ile derleme
  • game / db / auth kaynakları elden geçirildi, kullanılmayan eski kodlar temizleniyor.
  • Tam sabit genişlikli tiplere geçildi. (uint32_t / uint16_t / uint8_t)



🌐 Protobuf Ağ Altyapısı

Projenin en büyük işi ağ katmanının Google Protocol Buffers (protoc 3.21.12) yapısına taşınması oldu. Klasik struct mantığından tamamen çıkıldı.

  • Client ↔ Game / Auth
  • Game ↔ Game (P2P)
  • Game ↔ DB:
  • Paket tanımları kod üreteciyle oluşturuluyor; yeni paket eklemek bu şekilde çok kolay oluyor :)



🌍 Dil Desteği

11 dil: Türkçe, İngilizce, Almanca, İspanyolca, Fransızca, İtalyanca, Portekizce, Lehçe, Çekçe, Macarca, Rumence

  • Clienti kapatmandan oyun içinden dil değiştirme (relogin) sistemi
  • Yeni eklenen her sistemin metinleri tüm dillere eklenir; hedef %100 oyun içi çeviri



🛒 Offline Pazar ve Pazar Arama

IkarusShop altyapısı üzerine tamamen kendi tasarladığım arayüz ve oyun akışı:

  • Yeni pazar arama penceresi: Kategori / alt kategori, eşya veya satıcı adıyla arama, miktar, seviye ve yang aralığı filtreleri, sayfalama
  • Sıralamalı Pazar Arama (Premium): fiyat/isim sıralaması, efsun filtresi, aramadan doğrudan satın alma ve uzaktaki pazarı açma. Premium yoksa satıcının pazarının yanına ışınlanma
  • Pazar kurma: önce eşyalar eklenir, fiyatlar belirlenir, pazar adı girilir; "Pazar Aç" ile pazar kurulur.
  • Pazar Slot Anahtarı: kilitli slotun üzerine sürükle-bırak ile açılır





✨ Diğer Sistemler ve Düzenlemeler

  • Sandık içerikleri TR resmi verilerine göre düzenlendi (Razadör, Nemere, Beran-Setaou, Azrail, Jotun, Hidra vb.)
  • Hedef bilgisi penceresinde moblardan düşen eşyaların düşme oranı (%) gösterimi




🗺️ Yol Haritası

  • Zindan bilgi (Dungeon Info) sistemi [(y)]
  • Kostüm gizleme sistemi [(y)]
  • Yang sınırının artırılması
  • Anti-hile sistemi (yapım aşamasında)
  • x64 client derlemesi




Tyolduran​
 
Son düzenleme:
Pazar tasarımı hoşuma gitti (y)
Oyunun genel tasarımını ona göre yaparsan bence çok hoş olur. Offical tasarıma biraz sırıtmış.
 
Pazar tasarımı hoşuma gitti (y)
Oyunun genel tasarımını ona göre yaparsan bence çok hoş olur. Offical tasarıma biraz sırıtmış.
Sırıttığı konusuna katılıyorum official tarzda yapılabilir ama bu tarz arayüzler hoşuma gidiyor
 
Offlineshop tasarımı official a göre biraz garip durmuş ama genel anlamda güzel bir tasarım.
Başarılar.
 
Zindan Bilgisi sistemi eklendi.
Tüm zindanlar source tabanlı ve 4 katlı olacak şekilde hazırlandı.
Tüm fonksiyonları sorunsuz çalışıyor yakın zamanda videosunu da atacağım.
Ekran Alıntısı2.webp
 
Premium ve normal pazar araması arasındaki farkı göstermemişim onları ekledim.
Shop search açıkken kullanıcı aktif olduysa yanında yeşil aktif değilse kırmızı nokta bulunur.Anlık yenilenir.
İkarus Offshop un kapanmamasıyla ilgili bir game.core çözüldü.
Ekran Alıntısı2.webp
Ekran Alıntısı1.webp
 
Kostüm göster/gizle sistemi eklendi.
Kostümler için 5 saniye süre sınırı konuldu.
 
Zindan Bilgi sistemi için tek geriye kalan slotların sayısını ve konumu ayarlamak.
 
Yine gavurlardan gördüğüm bir sistemi yaptım.

Büyük haritayı (M) açtığında bossları ve ışınlanma noktalarını ikon olarak görürsün; tek tıkla yanlarına gidersin.

  • Canlı boss durumu: İkonlar canlı / ölü / bilinmiyor olarak değişir, boss ölünce veya doğunca 1 saniye içinde yansır. Çok çekirdekli sunucularda P2P ile senkronize.
  • Boss kartı: İkonun üzerine gelince bossun 3D modeli , konumu, yeniden doğma sayacı ve ücret görünür.
  • Bossun yanına gidiş: Boss doğduğu yerden uzaklaşsa bile o anki konumunun yanına gidersin; ikon da bossu takip eder.
  • Yükleme ekranı yok: Aynı haritada anında ışınlanma, başka haritaya normal warp.
  • Sade kurallar: Limit yok(isteğe göre limit eklenebilir), her ışınlanma yalnızca yang ücreti alır. Savaşta, zindanda ve savaş haritasında engellendi.

 
Yine gavurlardan gördüğüm bir sistemi yaptım.

Büyük haritayı (M) açtığında bossları ve ışınlanma noktalarını ikon olarak görürsün; tek tıkla yanlarına gidersin.

  • Canlı boss durumu: İkonlar canlı / ölü / bilinmiyor olarak değişir, boss ölünce veya doğunca 1 saniye içinde yansır. Çok çekirdekli sunucularda P2P ile senkronize.
  • Boss kartı: İkonun üzerine gelince bossun 3D modeli , konumu, yeniden doğma sayacı ve ücret görünür.
  • Bossun yanına gidiş: Boss doğduğu yerden uzaklaşsa bile o anki konumunun yanına gidersin; ikon da bossu takip eder.
  • Yükleme ekranı yok: Aynı haritada anında ışınlanma, başka haritaya normal warp.
  • Sade kurallar: Limit yok(isteğe göre limit eklenebilir), her ışınlanma yalnızca yang ücreti alır. Savaşta, zindanda ve savaş haritasında engellendi.


sro da var kanka o sistem.

server ismi tanıdık geldi bide açık server var o isimle hanginiz orjinal :)
 
Geri
Üst