[SATILIK] Metin2 Unity İstemcisi | C# ile Sıfırdan + Özel Sistemli Sunucu

  • Konuyu açan Konuyu açan aksen99
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 13
  • Gösterim Gösterim 371
Bu ticaret konusu sınırlı ticaret puanı geçmişine sahiptir. İşlem öncesi kullanıcı profilindeki ticaret puanlarını incelemeniz önerilir.

aksen99

Üye
Üye
Mesaj
24
Beğeni
18
Puan
680
Ticaret Puanı
0
ÖNSÖZ​

Metin2 çoğumuz için sıradan bir oyun değil: ilk lonca, ilk Metin taşı, ilk +9 burada. Yıllar geçti, oyun aynı kaldı ama altındaki motor yerinde saydı. 2000'lerin başında DirectX 8 ile yazılmış istemci, bugünün ekran kartlarında, çözünürlüklerinde ve bugünün oyuncusunun beklentisi karşısında zorlanıyor.

Bu projeye tek bir soruyla başladık:

"Metin2'yi ruhuna dokunmadan bugünün motoruna taşıyabilir miyiz?"​

Cevabı bu konuda. Eski istemcinin üstüne yama yapmadık, kopyasını da çıkarmadık. İstemciyi Unity'de, C# ile, ilk satırından yeniden yazdık. Kuralımız basitti: oyuncu farkı oynanışta değil; görüntüde, akıcılıkta ve rahatlıkta hissedecek. Kılıcın savrulduğu an, okun uçuşu, itme mesafesi, hasar sayısının çıktığı an... Hepsi orijinal kaynaktan ölçülerek aktarıldı.

Sunucuyu da yalnız bırakmadık. Yıllardır bilinen hataları düzelttik, oyuncuyu yoran eski kuralları güncelledik, yarım kalmış ve kullanılmayan sistemleri kalıntısız söktük, üstüne yeni sistemler kurduk.

Bu konu o emeğin vitrini.


PROJE HAKKINDA​

Proje iki parçadan oluşur: sıfırdan yazılmış bir Unity istemcisi ve onunla birlikte geliştirilmiş bir sunucu.

İstemci
  • Unity 6 (URP), tamamen C#. 70.000 satırı aşkın oyun kodu, ayrıca geliştirme için editör araçları.
  • Orijinal ağ protokolünü konuşur: el sıkışma, şifreleme, giriş, karakter seçimi, oyun ve ışınlanma orijinal sunucuyla paket paket uyumludur.
  • Modeller, animasyonlar, efektler, sesler ve haritalar orijinal dosyalardan aktarıldı. Arayüz, orijinal pencere tanımlarından birebir kuruldu.
  • Modern altyapı: Unity'nin ışık ve gölge sistemi, yüksek çözünürlükte kendiliğinden ölçeklenen arayüz, Addressables içerik paketleriyle çok hızlı oyun geçişleri; tam istemci yalnız ~770 MB.

Sunucu
  • Orijinal C++ sunucu kaynağı üzerine 100'ü aşkın yama: yeni sistemler, hata düzeltmeleri, temizlik.
  • FreeBSD + MySQL. Açma, kapatma, yedekleme ve sıfırlama için hazır betikler.
  • Her yama belgeli ve yedekli; neyin neden değiştiği kayıt altında.

Yaklaşımımız
Orijinale sadık, gerektiği yerde modern. Oynanışa dokunan her değişiklik bilinçli bir karar; orijinalden ayrılan yerler kodda işaretli. Amacımız "başka bir oyun" yapmak değil, Metin2'yi olması gerektiği gibi oynatmaktı.


NEDEN UNITY?

Bu proje, Metin2'yi mobile taşımaya çalışan diğer projelerle karıştırılmasın!
​

Eski istemciyi başka bir cihazda çalıştırmıyoruz, üstüne kaplama da yapmıyoruz. Metin2'yi dünyanın en yaygın oyun motorlarından biri olan Unity üzerinde, C# ile baştan yazdık. Elinizdeki şey eski bir istemcinin yaması değil; modern bir oyun motorunda çalışan, sınırsız geliştirilebilir bir Metin2.

Tek Proje, Bütün Platformlar
Unity ile aynı projeden Windows, macOS, Linux, Android ve iOS için derleme alınabilir. Proje bugün Windows için hazır; mobil sürüm için dokunmatik kontroller ve arayüz uyarlaması gerekir, motor tarafında hiçbir engel yoktur.

Oyunu Bambaşka Bir Seviyeye Taşıyın
  • Modern grafik: gerçek zamanlı ışık ve gölge, görüntü sonrası efektler (parlama, renk düzenleme, alan derinliği), özel shader'lar. DirectX 8'in sınırları artık yok.
  • Asset Store: binlerce hazır model, efekt, arayüz ve sistem; projeye eklemek dakikalar sürer.
  • C# ile geliştirme: modern bir dil ve güçlü hata ayıklama; yeni bir sistem yazmak eski C++ / Python istemcisine göre kat kat hızlı.
  • Görsel editör: harita, canavar, NPC, efekt ve arayüz Unity editöründe görülerek düzenlenir.
  • Hazır motor sistemleri: fizik, animasyon, parçacık ve ses sistemleri motorla birlikte gelir.
  • Dev topluluk: Unity, dünyanın en büyük oyun geliştirici topluluklarından birine sahip; aradığınız çözüm büyük ihtimalle zaten yazılmış.
  • Sınır sizin hayal gücünüz: yeni görsel stiller, yeni oyun modları (bu konudaki MOBA modu gibi), Metin2'de hiç görülmemiş sistemler.


ÖNE ÇIKANLAR​

Sınıflar ve Savaş
  • 4 sınıf, 8 ırk: Savaşçı, Ninja, Sura ve Şaman'ın kadın ve erkek ırkları; her sınıfın iki beceri grubu, kombolar ve at becerileri (Ninja'nın Ok Fırtınası dahil).
  • Orijinal vuruş hissi: silahın savrulma anı, vuruş alanı, itme mesafesi ve yere serilme orijinal animasyon verisinden ölçülerek aktarıldı. Vuruşu "yaklaşık" değil, orijinalin kendi hesabıyla yapar.
  • Orijinal efekt motoru: beceri, aura, yükseltme parıltısı ve vuruş efektleri, orijinal efekt motorunun C#'a birebir aktarılmış haliyle oynar. Efektlerin sesleri de orijinal ses betiklerinden.
  • Oklar ve mermiler: okçu ve büyücü canavarların mermileri gerçekten uçar; hasar mermi hedefe vardığında gelir.
  • Hasar sayıları: sana gelen hasar kırmızı; kritik ve delici vuruşların kendi efektleri. Sayı, canavarın vuruşu sana değdiği anda çıkar.
  • PvP senkronu: diğer oyuncuların vuruşları, itmeleri ve yere serilmeleri senin ekranında da orijinaldeki gibi görünür.

Dünya
  • 34 harita, her biri orijinal arazi, doku, engel, su ve obje verisinden kuruldu:
    3 imparatorluğun 1. ve 2. köyleri, Seungryong Vadisi, Yongbi Çölü, Hwang Tapınağı, Sohan Dağı, Doyyumhwan, Hayalet Orman, Kızıl Orman, Yılan Vadisi, Devler Diyarı, 3 lonca bölgesi, Örümcek Zindanı (3 kat + Barones yuvası), Şeytan Kulesi (9 kat), Maymun Zindanı (kolay / orta / zor), Sürgün Mağarası (2 kat + Beran-Setaou odası), OX, düğün haritası, lonca savaşı arenası.
  • Orijinal SpeedTree ağaçları: ağaçlar başka bir paketle değiştirilmedi; orijinal ağaç dosyalarını Unity'ye çeviren kendi aracımızla aktarıldı.
  • Zindan ışığı: zindanlar, orijinal oyunun dosyalarına gömülü ışık haritalarıyla aydınlatılır; orijinaldeki karanlık atmosfer korunur.
  • Harita efektleri: şelaleler, meşaleler, ışınlanma kapıları, mağara kristalleri orijinal yerlerinde ve yönlerinde.
  • Su, sis, gökyüzü: her haritanın kendi orijinal ortam ayarlarıyla.
  • Karakter görünür kalır: kamera ile karakter arasına giren ağaç ve bina saydamlaşır.
  • Kamera: orijinal görüş açısı ve uzaklık; kamera dağın, tepenin içine girmez.

Arayüz
  • Orijinal arayüz birebir: pencereler, orijinal oyunun pencere tanımlarından kuruldu; yerleşim, yazı tipi ve resimler orijinal. Envanter, karakter, beceri, lonca, parti, ticaret, fısıltı, arkadaş listesi, mini harita + atlas, dükkan, depo, nesne market, görev pencereleri.
  • Yüksek çözünürlük: 1080p üstünde arayüz kendiliğinden ölçeklenir, keskin kalır.
  • Yeni pencereler: orijinalde dağınık ya da hiç olmayan sistemler için oyunla uyumlu yeni pencereler (biyolog, at geliştirme, üretim, çevrimdışı pazar, eşya kilidi, balık oyunu). Ayrıntıları videolu sistemler bölümünde.
  • Yeni etki ikonları: çerçeveli küçük ikonlar; şebnem ve iksirlerde kendi ikonu, kalan süre ipucunda.
  • Yeni giriş ekranı: kanal seçimi ve 6 kayıtlı hesap; şifreler Windows korumasıyla şifreli saklanır.
  • Kopyala / yapıştır: yazı kutularında Ctrl+A, Ctrl+C, Ctrl+X, Ctrl+V.

At ve Binekler
  • At: midilliden zırhlı ata, oradan asker atına; at üstünde silaha göre saldırı (kılıç, hançer, yay, çift el) ve 4 sınıfın at becerileri.
  • Binekler: Deniz Atı ve Dev Böcek; mühre tıkla bin, bir daha tıkla in. Binikken mühür yuvası parlar.

Oyuncu İçin Ekstralar
  • Hoş geldin penceresi: ilk girişte karakterin sınıfına göre başlangıç paketi.
  • Kostüm: Melek kostüm seti (zırh + saç, 8 ırk) ve yeni bonus türü: Metin taşlarına karşı güçlü.
  • Seviye gizleme: istersen seviyen kimsenin ekranında görünmez.
  • Discord "Oynuyor" durumu: karakter adı, sınıf, seviye, harita ve o an ne yaptığı (savaşıyor, Metin taşı kesiyor, balık tutuyor, pazar kurmuş...).
  • Pazar masası: pazar kuran oyuncu orijinal pazar masasına dönüşür; çevrimdışı pazar da aynı masa.

Performans
  • Addressables içerik sistemi: haritalar, canavarlar, karakterler, sesler ve arayüz ayrı paketlerde; her şey yalnız gerektiği an yüklenir.
  • Işık hızında geçişler: karakter seçtikten sonra oyuna giriş yaklaşık 0,6 saniye, ışınlanma ve harita geçişi yaklaşık 0,4 saniye (yerel sunucuda ölçüldü).
  • Tam istemci yalnız ~770 MB! 34 harita, 4 sınıf, bütün modeller, efektler, sesler ve müzikler dahil.
  • Kalabalıkta akıcı: boss'tan yüzü aşkın eşya düşse de yere düşen eşyalar kareye yayılarak kurulur, oyun takılmaz.


VİDEOLU SİSTEMLER​

Çevrimdışı Pazar (Offline Shop)

  • Oyundan çıksan da pazarın açık kalır; köyde masa olarak durur, üstünde tabelan.
  • Bohça ile kurulur; 80 yuva, ikinci sayfa mühürle açılır.
  • Sahip paneli: tabela adı, kalan süre, eşya sayısı, toplam fiyat, biriken Yang ve "Yang Çek".
  • Satış geçmişi: son 50 satış; eşya, alıcı, fiyat ve ne zaman satıldığı.
  • Oyuna girdiğinde "sen yokken satıldı" bildirimi.
  • Fiyat hafızası: aynı eşyayı tekrar koyarken son fiyatın hazır gelir.
  • Pazarı istediğin an durdur, düzenle, yeniden aç.

Yeni At Sistemi

  • Bütün at işleri Seyis'te tek pencerede: atın aşaması, seviyesi, sıradaki yükseltmenin bedeli ve atın resmi.
  • 3 aşama: Midilli (1-10), Zırhlı At (11-20), Asker Atı (21-30).
  • Yükseltme bedeli Yang + At Madalyonu; yetiyorsa yeşil, yetmiyorsa kırmızı.
  • Seviye 30'da ata binikken bonus: +69 savunma, +100 güç, canavarlara ve Metin taşlarına karşı %20.
  • Ölen atı canlandırma ve kaybolan at kitabını yenileme aynı NPC'de.
  • Eski 18 ayrı at görevinin yerini tek sistem aldı.

Biyolog Sistemi

  • Bütün araştırmalar tek pencerede; 8 araştırma hep görünür: biten, sıradaki, kilitli.
  • Bekleme süresi YOK: eşyan varsa art arda teslim edersin.
  • Başarı şansı %60, Araştırmacının Özütü ile %90; özüt envanterdeyse kendiliğinden kullanılır.
  • Şans koruması: 3 başarısız teslimden sonraki teslim kesin başarılı.
  • İlerleme ve şans koruması göstergeleri; araştırma bitince kalıcı ödül ve ödül sandığı.

Balıkçılık Mini Oyunu

  • Oltayı attığın an mini oyun açılır; balığın vurmasını beklemek yok.
  • Yayı ger, nişan al, bırak: 3 isabet = balık kesin senin.
  • Nadir balık daha hızlı yüzer; iyi olta ve yem nişan dairesini büyütür.
  • Hiç ıskalamadan 3'te 3 = daha uzun balık. Iskalamak süreden yer.
  • Balık tablosu Türkçeleştirildi; tutulamayan ve işlevsiz balıklar temizlendi.

Eşya Kilidi

  • Köy Gardiyanı'nda "Eşya Kilidi": silah ve zırhını kilitle.
  • Kilitli eşya verilemez, takas edilemez, yere atılamaz, satılamaz, pazara konamaz, ölünce düşmez, yükseltilemez.
  • Kilidi açmak 3 gün sürer (gerçek zaman); istersen iptal edebilirsin. Hesabın çalınsa bile eşyan hemen gitmez.
  • Kilitli eşyanın yuvasında rozet, ipucunda kilit satırı; depoya koymak ve giymek serbest.

Envanter Mührü (4 Sayfa Envanter)

  • Envanter 4 sayfa, 180 hücre.
  • III. ve IV. sayfa kilitli başlar; Envanter Mührü'nü kilitli hücreye sürükleyerek açarsın.
  • Açılan hücreler kalıcıdır.

Üretim ve Dönüşüm (Baek-Go)

  • Baek-Go'da iki pencere: Üretim (bitki + boş şişe → şebnem) ve Dönüşüm (5 şebnem → Kritik, Delici ve Ejderha Tanrı iksirleri).
  • Solda tarif listesi; sağda malzemeler adlarıyla, elindeki / gereken: yetiyorsa yeşil, eksikse kırmızı.
  • Tek tıkla üretim; ücret ve sonuç pencerede.
  • Şebnemler sabit değerli ve 50'ye kadar üst üste biner.

HD Lonca Amblemi ve Lonca Bayrağı

  • HD amblem (64x48): oyuncu adının üstünde ve lonca penceresinde net görünür; eski küçük amblem de yanında çalışır.
  • Lonca bayrağı (64x128): lonca arsasındaki bayrak direğinde görünür.
  • Resmi Windows dosya penceresinden seçersin; yalnız lonca lideri yükleyebilir, sunucu doğrular.
  • Her haritadan yüklenebilir.

Yeni OX Yarışması

  • Tamamen otomatik: GM, mektuptan kişi sınırını, giriş süresini ve ödülü seçer; gerisini sunucu yürütür.
  • Soru ekranda sabit panoda, geri sayımla; süre bitince doğru cevap.
  • Yanlış bilen seyirciye geçer; tek kişi kalınca ödül verilir ve kazanan duyurulur.
  • 160 soru.

Sistem Seçenekleri

  • Efekt ve müzik sesi, müzik değiştirme, kamera uzaklığı.
  • Pencere / tam ekran, çözünürlük ve gölge kalitesi oyun içinden.
  • Haritaya özel müzikler.
  • Oyun seçeneklerinde seviyeni gizleme ve Discord durumunu açıp kapama.

Sihirdar Vadisi (5'e 5 MOBA Modu)

  • Metin2 içinde LoL tarzı takım savaşı: Mavi ve Kırmızı takım, 3 koridor, takım başına 6 kule.
  • Oda sistemi: Köy Gardiyanı'ndan pencereyi aç, oda kur ya da bir odaya katıl, takımını kendin seç; odayı kuran maçı başlatır. 1'e 1 ve 5'e 5.
  • Her maç kendi harita kopyasında oynanır; aynı anda birden fazla maç.
  • Herkes gelince 10 saniye geri sayım, ardından her 30 saniyede bir iki taraftan köpek dalgaları koridorlara akar.
  • Kuleler gerçek MOBA kuralıyla atar: önce menzildeki köpeklere; kulenin takımından bir oyuncuya vuran rakip kule menzilindeyse, kule ona döner. Yıkılan kule parçalara ayrılarak yere saçılır.
  • Can iksiri yok: can yalnız kendi üssünde ve karşı takımın köpeklerine vurdukça dolar.
  • Ölünce eşya ya da EXP kaybı yok; 40 saniye sonra kendi üssünde doğarsın.
  • TAB ile skor tablosu: öldürme, ölüm, yıkılan kule ve öldürülen köpek; kule yıkılınca herkese duyuru.
  • Karşı takımın Ana Kulesi'ni yıkan takım kazanır.
  • Mod çalışıyor, geliştirmesi sürüyor.



SUNUCU TARAFINDAKİ YENİLİKLER​

Oynanış
  • Otomatik Yang: canavar Yang'ı yere hiç düşmez, boss para yağmuru dahil. Doğrudan en çok hasar verenin hesabına gelir, grupta yakındaki üyelerle paylaşılır. Üçüncü El takana +%20.
  • Anında ölüm: canavarlar 3 saniye sersem beklemeden ölür; düşen eşya, EXP ve Metin taşı muhafızlarının ölümü anında. Oyuncular için orijinal kural aynen.
  • Ruh Taşı: ekleme şansı %50. Başarısız olursa taş gider, yuva boş kalır; yuvaya kırık parça yazılmaz.
  • Vergisiz ticaret: NPC'ye satıştaki %3 vergi ve alım vergisi kaldırıldı.
  • Beceri puanı: M seviyesi 17. seviyede kesin. Toplam beceri puanı sınıfın beceri sayısına göre hesaplanır; hiçbir beceri yarım kalmaz.
  • Durum puanı: Shift + tık ile 10 puan tek seferde, oyundan atılma yok.
  • EXP oranı: sunucu genelinde 2 kat; tek komutla değiştirilebilir.
  • Şebnemler: her şebnem sabit değerli ve 3 saat sürer; 50'ye kadar üst üste biner. Dönüşüm iksirleri de 3 saat, şebnemlerle birlikte çalışır.
  • Otomatik iksir: Güneş Özütü (HP) ve Ay Özütü (SP) eklendi; sağ tıkla aç / kapat.
  • Beceri kitapları: Liderlik, Kombo, Dönüşüm ve Madencilik kitaplarının düşme oranları artırıldı.
  • Lonca savaşı: yalnız arenada; köyde savaştaki loncanın üyesine saldırı yok.
  • Boşanma: eşin gerekmeden tek taraflı boşanma (1 milyon Yang).
  • Işınlayıcı: hedef listesi baştan yazıldı; sayfalı, olmayan haritalara giden seçenekler temizlendi.
  • Demirci: işlevsiz menü seçenekleri kaldırıldı; tıklayınca tek satır yol gösterir, eşyayı demirciye sürükleyip yükseltirsin.
  • Çıkış: "Çıkış" 3 saniye sayar; "Karakter Değiştir" ve "Oyun Sonu" beklemez.
  • Sürgün Mağarası ve Barones yuvası: görevi, düşüşleri ve canavar değerleriyle sunucu tarafında baştan kuruldu.

Yönetim Betikleri
  • Güvenli kapatma: oyunda duyuru ve 60 saniye geri sayım, ardından oyunun kendi 10 saniyelik sayacı. Önce oyun çekirdekleri her karakteri kaydederek kapanır, en son veritabanı çekirdeği. Kapanınca veritabanının yedeği otomatik alınır, son 10 yedek saklanır.
  • Tek komutla açılış: açmadan önce denetim yapar, her çekirdeğin portunu dinlemeye başlamasını bekler.
  • Günlük temizliği: sunucu açıkken çalışmaz; bir önceki hata günlüğünü saklar.
  • Sıfırlama aracı: yeni sunucu açılışı için. Önce "dene" kipiyle neyin silineceğini sayılarıyla gösterir. Karakterleri, eşyaları, loncaları ve günlükleri ya da istersen hesapları da tek komutla siler. Silmeden önce tam yedek alır, oran ayarlarını korur.
  • EXP oranı: tek komutla gösterilir ve değiştirilir; sunucu açıksa anında etkili olur.
  • Okunabilir veri dosyaları: düşüş dosyalarında Korece adlar yerine eşya numarası ve Türkçe açıklama; balık tablosu Türkçe.
  • Bütün betikler yaptıklarını tek bir günlük dosyasına yazar.

GM Araçları
  • Tam set komutu: baştan yazıldı. Karakterin sınıfına göre bütün becerileri en yüksek seviyeye çıkarır, +9 seti giydirir, efsunları canlı efsun tablosunun en üst değerleriyle basar.
  • Yeniden başlatmadan GM: GM listesine eklenen ya da çıkarılan hesap, sunucu kapanmadan anında yetki alır ya da kaybeder.
  • Haritadan ışınlanma: GM, atlas haritasına sağ tıklayıp oraya ışınlanır. Atlası olmayan zindanlarda harita, engel verisinden kendiliğinden çizilir.
  • Oran mektubu: GM'e özel mektuptan eşya, Yang ve EXP oranlarını süreli olarak açıp kapatır; oyuncular duyuruyla haberdar olur.
  • OX yönetimi: kişi sınırı, giriş süresi ve ödül tek mektuptan.
  • Her haritaya ışınlanma: bütün haritalar harita numarasıyla ışınlanma listesinde.


KAPATILAN AÇIKLAR VE DÜZELTİLEN HATALAR​

Sunucu tarafında işe "çalışıyor" görünen yerlere güvenmeden başladık. Her sistemi canlı kaynaktan, çağrıldığı her yerle birlikte okuduk; veri dosyalarını sunucunun kendi okuyucusunu taklit eden araçlarla satır satır taradık.

Piyasada dolaşan 94 maddelik hazır "açık / fix" listesini de tek tek kaynağımızla karşılaştırdık: 27'si zaten vardı, 11 gerçek eksik kapatıldı. Hazır kodları körü körüne yapıştırmadık; listedeki bazı "fix"ler zararlıydı (biri oyuncunun bütün komutlarını kapatıyor, biri grubun tek üyesi çıkınca herkesi zindandan atıyordu). Her düzeltme kendi kaynağımıza göre yeniden yazıldı, belgelendi ve geri alınabilir şekilde yedeklendi.

Aşağıdaki liste bu çalışmanın özeti.


1) Sunucuyu Çökerten Hatalar
  • NPC'ye lonca daveti: lonca daveti bir NPC'ye gönderildiğinde çekirdek çöküyordu. Davet artık yalnız bağlantısı olan oyunculara gider.
  • Görev yenileme + açık pencere: görevler yeniden yüklenirken ekranında görev penceresi açık olan oyuncu cevap verince kanal çöküyordu. Yenilemede askıdaki bütün görev pencereleri güvenle kapatılıyor; çökme dökümüyle teşhis edildi, düzeltildi.
  • Boş görev kaydı: görev bayrağı okuma / yazma, kaydı olmayan oyuncuda çekirdeği çökertiyordu.
  • Üretim penceresi taşması: malzeme satırını okuyan kodda bellek taşması vardı (iki ayrı yerde). Kapatıldı.
  • Bayrak savaşı: eksik veri yüzünden bayrak savaşı açıldığı an çekirdeği çökertiyordu. Sistem kaynağıyla birlikte söküldü; lonca savaşı artık yalnız arenada.
  • Binekle ışınlanma: binek etkisi girişte geç yüklendiği için o sırada yürüyen oyuncu geçersiz konuma düşüp oyundan atılıyordu. Giriş anındaki yürüyüş düzeltildi, etkiler artık girişte anında (1 sn yerine 40 ms) yükleniyor.
  • Harita sınırı: bir çekirdek 32'den fazla harita açtığı için son 5 harita diğer çekirdeklere hiç duyurulmuyordu; diğer kanallardan o haritalara geçiş sorun çıkarıyordu. Harita dağılımı düzenlendi.

2) Eşya Çoğaltma ve Eşya Hileleri
  • Görev açıkken eşya kullanma: görev penceresi beklerken eşya kullanılabiliyordu. Artık sunucu reddediyor.
  • Depo + ekipman: depo açıkken eşya giyip çıkarmak, giyili eşyayı depoya koymak, depodan doğrudan ekipman yuvasına çekmek mümkündü. Üçü de kapatıldı.
  • Ölüyken eşya işlemi: ölü karakter eşya kullanabiliyor, giyebiliyor, taşıyabiliyor, atabiliyor, takas edebiliyordu. Artık ölüyken kullanma, giyme, çıkarma, taşıma, atma, verme, yükseltme, takas, depo, yerden alma, NPC'ye tıklama ve dükkandan / pazardan alma kapalı.
  • Binek mührü: bindiğin bineğin mührü başkasına verilebiliyordu. Binerken o mühür verilemez, takas edilemez, atılamaz, satılamaz, pazara ve depoya konamaz.
  • Çıkış koruması: takas, depo ve pazar işleminden sonraki çıkış beklemesi (çoğaltma koruması) korundu; ESC menüsündeki gereksiz savaş beklemeleri kaldırıldı.
  • Şeytan Kulesi demircisi: yükseltme hakkı, yükseltme gerçekleşmese bile siliniyordu. Hak artık yalnız işlem başarıyla yapılınca düşer.
  • Grup ganimeti: grup üyesinin eşyasını alınca eşya sahibinin elindeki yığına eklenmeyip ayrı hücre kaplıyordu. Düzeltildi.

3) Güvenlik
  • Lonca amblemi: orijinal kaynakta amblem yüklemede hiçbir kimlik kontrolü yoktu; hileli bir istemci herhangi bir loncanın amblemini değiştirebiliyordu. Artık yalnız lonca lideri, kendi bağlantısının gizli anahtarıyla doğrulanarak yükleyebilir; yetkisiz deneme kayda geçer.
  • Lonca bayrağı: bayrak yüklemesi de lider doğrulamalı; dosyanın gerçekten JPG olup olmadığı içeriğinden denetlenir, değilse bağlantı kesilir.
  • Amblem devri: yeni kurulan lonca, aynı numaradaki eski (silinmiş) loncanın amblemini devralıyordu. Kapatıldı.
  • Amblem kayıt dosyası: her çekirdek amblem dizinini kendi bayat belleğinden diske yazıyordu; amblemler karışıyor, kayboluyordu. Dizini artık yalnız amblem sunucusu yazar.
  • Arkadaş listesi: arkadaş silmede hesap adı veritabanına kaçışlanmadan gidiyordu; boş ya da sınırdan uzun adlar da kabul ediliyordu. Kaçışlama ve sınır eklendi.
  • Çekirdekler arası bağlantı: veritabanı çekirdeği yalnız yerel adresten dinler, dışarıdan görünmez. İzinsiz P2P bağlantıları reddedilir ve hata günlüğüne yazılır; çok makineli kurulum için izinli adres listesi eklendi.
  • Eski giriş sistemleri: kullanılmayan "matrix kart" ve passpod giriş kodları kaynağından söküldü; giriş yolu sadeleşti.

4) Çalışmayan ya da Yarım Kalmış Sistemler
  • Canavardan hiç düşmeyen 70 eşya: düşüş dosyası (etc_drop) 2017'den beri boştu; yükseltme malzemeleri ve biyolog eşyaları canavarlardan hiç düşmüyordu. Dosya dolduruldu.
  • Hiç düşmeyen 82 ortak düşüş: kayık yazılmış satırlar yüzünden 82 düşüş kaydı hiç işlemiyordu. Satırlar doğru dizilimde yeniden yazıldı.
  • Kaynağı olmayan malzemeler: Akrep Kuyruğu+, Yılan Kuyruğu+ ve Eskrim Broşürü'nün oyunda hiçbir kaynağı yoktu; ilgili canavarlara ve boss sandıklarına bağlandı.
  • Etkisiz eşyalar: Üçüncü El, Tecrübe Yüzüğü, Hırsız Eldiveni, Balıkçılık Kılavuzu, Liderin Kitabı, Genişletilmiş Depo ve Altın Şans Parası tanımları eksik olduğu için takılıyor ama hiçbir şey yapmıyordu. Hepsi çalışıyor.
  • Efsun tablosu: 8 bozuk satır efsun eklemenin sessizce başarısız olmasına yol açıyordu. Temizlendi.
  • Boss sandıkları: Lusifer ve Barones sandıklarında çift tanımlı 28 satır hiç çıkmıyordu. Düzeltildi.
  • Doğmayan gruplar: lideri tanımsız gruplar sessizce hiç doğmuyordu: köyde gezen NPC grupları, Örümcek Zindanı 2. katta boş geçen turlar. Tarandı, düzeltildi.
  • Karakter silme: bu sunucuda karakter silme hiç çalışmıyordu (veritabanı sorgusunda tablo adı hatası). Ayrıca yeni karakter açtıktan sonra 30 saniye ikinci karakter açılamıyordu. İkisi de düzeltildi.
  • İmparatorluk değiştirme: gerekli tablo hiç yoktu; gruptayken işlem sessizce başarısız oluyordu; başarılı olsa bile yeniden girişe kadar eski imparatorluğun kuralları işliyordu. Üçü de düzeltildi.
  • Lusifer sonrası: Şeytan Kulesi'nde Lusifer ölünce oyuncular dışarı atılmıyordu (görevde tanımsız bir metin yüzünden Lua hatası). Düzeltildi, 30 saniye sonra şehre ışınlanıyorsun.
  • Sürgün Mağarası girişi: giriş oyuncuyu duvarın içine ışınlıyordu. Doğru noktaya alındı.
  • Ok Fırtınası: becerinin türü veritabanında boştu; kritik, delici ve beceri hasarı bonusları hiç işlemiyordu. Düzeltildi.
  • Üretim listesi: üretim penceresinin tarif listesi ilk açılışta gelmiyordu. Düzeltildi.
  • GM araçları: GM yetkisini yenileme komutu veritabanına boş paket gönderiyordu, hiçbir şeyi yenilemiyordu; set verme komutu küpeyi takmıyordu. İkisi de düzeltildi.
  • Ekonomi günlüğü: para günlüğü tablosu yanlış kolonlarla kuruluydu, saatlik ekonomi özeti hiç yazılmıyordu. Düzeltildi.
  • Kehribar zinciri: eritme fırını cevheri ve Yang'ı alıp eşya vermiyordu; zincirin damarı ve binası da oyunda yoktu. Zincir kalıntısız kaldırıldı.

5) Oynanış Hataları
  • Canavar köye girmesi: canavarlar güvenli alana girip köydeki oyunculara saldırabiliyordu. Artık güvenli alandaki oyuncuyu hedef almazlar, kovalarken bırakırlar, yürüyerek ya da itilerek giremezler.
  • Duvar içine itme: Hamle ve Kılıç Darbesi canavarı duvarın, nesnenin hatta haritanın dışına itebiliyordu. İtme artık engelin önünde durur.
  • Cesaret Pelerini: canavarlar pelerinin basıldığı noktaya koşup oyuncuyu ancak oraya varınca fark ediyordu. Artık hedefi yol boyunca takip ederler.
  • Beceri sıfırlama: beceri sıfırlandığında o becerinin aurası ve etkileri üstünde kalıyordu. Artık kalkar (iksirlere dokunmadan).
  • Arkadaş silme: silme tek taraflıydı, karşı tarafın listesinde kalıyordun. Artık iki taraftan da anında silinir.
  • Ata binip inme: binip inince can / mana oranı bozuluyordu. Artık oran korunur. Seri binip inme ve kamp ateşi kötüye kullanımı da sınırlandı.
  • Bozuk mesajlar: balık tutarken sohbete Tayvanca kodlanmış bozuk yazılar düşüyordu; lonca savaşı başlarken çevirisi olmayan bir satır gidiyordu. Düzeltildi.
  • Sunucu - istemci hız farkı: 18 canavarın sunucudaki yürüme hızı istemcidekinden farklıydı; canavar ekranda bir yerde, sunucuda başka yerde duruyordu. Bütün canavarlar tek tek karşılaştırıldı, fark sıfırlandı.

6) Temiz Kaynak, Temiz Açılış
  • Ejderha Taşı, hükümdar, kale kuşatması, üç imparatorluk savaşı, piyango, SMS, lisan, cep telefonu, eski düello arenası gibi ölü ya da yarım sistemler kaynak kodundan, veritabanından ve veri dosyalarından kalıntısız söküldü.
  • Hiçbir sorgunun kullanmadığı 17 veritabanı tablosu ve 32 gereksiz hesap kolonu kaldırıldı.
  • Her açılışta hata günlüğüne düşen gereksiz satırların kaynağı tek tek bulundu ve kapatıldı. Sunucu artık her çekirdekte temiz bir hata günlüğüyle açılıyor; günlüğe düşen her satır gerçek bir sorun demek.


GELİŞTİRİCİ ARAÇLARI​

Projeyi alan kişi yalnız bitmiş bir oyun değil, onu büyütecek araçları da alır. Yeni harita, canavar, efekt ya da eşya eklemek elle saatler süren bir iş değil; çoğu tek menüdür.

Unity Editörü İçinde
  • Harita aktarma hattı: bir Metin2 haritası tek menüyle Unity sahnesine kurulur: arazi, doku katmanları, engel / su / güvenli bölge verisi, sis + ışık + gökyüzü, su yüzeyi, bütün objeler, orijinal ağaçlar, harita efektleri, mini harita ve tıklama yüksekliği. Açık haritalar ve zindanlar (ışık haritalı bloklar) ayrı ayrı desteklenir.
  • Canavar / NPC hattı: orijinal model ve animasyon dosyasından hazır, animasyonlu, sesli prefab; saldırı zamanlaması ve vuruş verisi orijinal dosyalardan otomatik üretilir.
  • Efekt aktarıcı: orijinal efekt dosyalarını içe aktarır ve editörde oyundakiyle aynı motorla önizler.
  • NPC Yön Editörü: haritanın bütün NPC'lerini sahnede modelleriyle görürsün; yönlerini serbest açıyla, yerlerini sürükleyerek değiştirirsin. Değişiklikler sunucuya tek komutla, yedek alınarak uygulanır.
  • Engel Fırçası: haritaya engel, su ve güvenli bölge boyarsın; kenarlar yumuşak, yarım metre inceliğe kadar.
  • Önizleme ve denetim menüleri: pencereler, modeller, efektler ve haritalar oyunu açmadan resim olarak alınır; zindanlarda düşülecek boşluk taraması, at becerisi ve ses verisi denetimi gibi kontrol menüleri.
  • Hızlı derleme: içerik paketleri değişmediyse paketleme adımı atlanır; yalnız kod değişince derleme dakikalar yerine saniyeler sürer.


EKRAN GÖRÜNTÜLERİ


jc1vu8tb.png


70pwgw2p.png


eamovpge.png


x5oqoxu9.png


orjuruio.png


lk2fajbk.png


fl36qbs1.png


fclit38i.png


n23cy8u1.png


ezb5piuo.png


w53ccrdp.png


ncfsjgvg.png


iadeak7d.png


ktmakcph.png


jehtmajd.png


kmzu9uuj.png


1kmrkdxf.png


lyerqlzw.png




SATIŞ

Türkiye'de bir ilk: kaynak koduyla birlikte satılan Unity Metin2 projesi.​

Paket İçeriği
  • Unity istemcisi: projenin tamamı, kaynak koduyla.
  • Sunucu dosyaları: her şeyiyle.
  • Bu konuda anlatılan bütün sistemler, araçlar ve düzeltmeler pakete dahildir.

Tek Kişiye Satış
Kaynak kodu yalnız bir kişiye satılacaktır. Satıştan sonra proje başka kimseye satılmaz.

1 Ay Tam Destek
Satın alan kişiye 1 ay boyunca tam destek verilir:
  • İstemediğin sistem sökülür, istediğin sistem eklenir.
  • Açacağın oyunun tarzına göre proje baştan sona düzenlenir.
  • Projenin ve araçların kullanımı öğretilir.

Test
Test imkânı yalnız ciddi alıcılara, görüşmeden sonra verilir.

Fiyat ve İletişim
Fiyat teklif usulüdür. Teklifinizi konuya yorum olarak yazabilir ya da bize özelden ulaşabilirsiniz:
  • MMOTutkunları: Özel Mesaj
  • Discord: rand06m
 
öncelikle tebrik ederim.

dünya ile objelerin teması yok gibi attığımı inceler misin yardımcı olacaktır. bununla ilgili farklı kaynaklarada bakabilirsin.
 
hissiyat yok gibi , "yok gibi" yazdığımı ve attığım kaynağı izlersen demek istediğimi anlarsın anlayarak okumamışsın.
Hocam saolun lütfen rica ediyorum 4 ay emek verdim daha fazla zorlamayın en iyisini siz yapın satın o zaman. Konu baltalamaya çalışmayın lütfen! 2018'den bu yana unity kullanıyorum lütfen zorlamayın.
 
"Metin2'yi ruhuna dokunmadan bugünün motoruna taşıyabilir miyiz?"

Kendi kuracağım tarzda bir cümle ve güzel bir proje, elinize sağlık
 
Açıkçası çok şaşırdım. Büyük bir emek var ortada, belli. Elinize sağlık.

Ancak yazılarınızda ucu açık kalan ve sizin de detaylarına pek değinmediğiniz sormak istediğim birkaç soru var projenizle ilgili;
Modern bir motorda aynı oyun görüntüsü ve mekanik hissiyatını verince modern motorun nasıl bir +sı kalıyor geriye?

Örneğin Unity'nin sunduğu cross platform derleyebilme özelliği ve sizin kurduğunuz yönetimsel editor araçları gayet kullanışlı işler tabiki.

Peki başka neler var? Kalabalık alan FPS performansı nasıl? Oyun eskisinden akışkan mı? Hala eski donanımla ve işletim sisteminde oynayan oyuncular için motor üzerinde özelleştirmeler yapıldı mı? Bilinen Anticheatlar konusunda nasıl uyumluluk sağlayacak yeni C# altyapısı? Orjinal ağ yapısı korundu demişsiniz, zaten orjinal ağ yapısı berbat ötesi kötü orjinal dosyalarda. İyileştirme yapmamanızın özel bir sebebi var mı bu konuda?

Ve "satın alan kişiye 1 ay boyunca teknik destek verilecek" gibi bir şey yazmışsınız. Bu tarz büyük çapta bir proje için sadece 1 aylık teknik destek yetersiz olmaz mı? Hedeflediğiniz müşteri kitlesi mi farklı yoksa? Yazılarınıza bakınca projeniz çok deneysel gözüktü gözüme. Acaba ben yanlış anladım ve dosyalarınız açık oyunlarda test edildiği için mi böyle söylediniz.

Lütfen beni yanlış anlamayın, satışınız ve projeniz için yapıcı yorumlar yapmaya çalıştım. Herhangi bir artniyetim yok.
 
Son düzenleme:
Eklenen görsellerde haritalar ayrı ayrı scene olarak görülüyor. Haritalar kendi içerisinde bölgelere ayrılarak mı yönetiliyor yoksa tüm harita içeriği tek seferde mi yüklüyor? Eğer harita içeriği tek seferde yükleniyorsa özellikle mobil cihazlarda RAM tüketimi, yükleme süreleri ve performans açısından ciddi sorunlar yaşanabilir. Bu noktada Addressables kullanılıyor olması tek başına yeterli değil. Static batching, GPU instancing, LOD, occlusion culling ve texture optimizasyonlarının ne durumda olduğunu da konuya ekleyebilirsiniz.

Konu üzerinde sadece unity üzerinde yapılan işlemlerden bahsetmişsiniz. Peki server tarafında durum nedir? base olarak (marty, mainline, novaline) hangisi üzerinde geliştirme yaptınız ve orada yapılan düzeltme işlemleri nelerdir? Eğer daha önce bu dosyalar ile sunucu açtıysanız (en azından sadece sunucu taraflı olsa bile) referans eklemeniz faydalı olacaktır.
 
Açıkçası çok şaşırdım. Büyük bir emek var ortada, belli. Elinize sağlık.

Ancak yazılarınızda ucu açık kalan ve sizin de detaylarına pek değinmediğiniz sormak istediğim birkaç soru var projenizle ilgili;
Modern bir motorda aynı oyun görüntüsü ve mekanik hissiyatını verince modern motorun nasıl bir +sı kalıyor geriye?

Örneğin Unity'nin sunduğu cross platform derleyebilme özelliği ve sizin kurduğunuz yönetimsel editor araçları gayet kullanışlı işler tabiki.

Peki başka neler var? Kalabalık alan FPS performansı nasıl? Oyun eskisinden akışkan mı? Hala eski donanımla ve işletim sisteminde oynayan oyuncular için motor üzerinde özelleştirmeler yapıldı mı? Bilinen Anticheatlar konusunda nasıl uyumluluk sağlayacak yeni C# altyapısı? Orjinal ağ yapısı korundu demişsiniz, zaten orjinal ağ yapısı berbat ötesi kötü orjinal dosyalarda. İyileştirme yapmamanızın özel bir sebebi var mı bu konuda?

Ve "satın alan kişiye 1 ay boyunca teknik destek verilecek" gibi bir şey yazmışsınız. Bu tarz büyük çapta bir proje için sadece 1 aylık teknik destek yetersiz olmaz mı? Hedeflediğiniz müşteri kitlesi mi farklı yoksa? Yazılarınıza bakınca projeniz çok deneysel gözüktü gözüme. Acaba ben yanlış anladım ve dosyalarınız açık oyunlarda test edildiği için mi böyle söylediniz.

Lütfen beni yanlış anlamayın, satışınız ve projeniz için yapıcı yorumlar yapmaya çalıştım. Herhangi bir artniyetim yok.


Merhaba, yorumunuz için teşekkürler, yapıcı olduğu belli. Sırayla cevaplayayım.

Aynı görüntü ve his varken modern motorun artısı ne?
Önce bilerek birebir aktarım yaptık; amaç, üstüne inşa edilecek sağlam bir taban. Oyuncunun bugün hissedeceği farklar: istemci 64 bit (eski 32 bit istemcinin bellek sınırı yok), yüksek çözünürlükte keskin ölçeklenen arayüz, karakter seçtikten sonra oyuna giriş ~0,6 sn ve ışınlanma ~0,4 sn (yerel sunucuda ölçüldü), gerçek zamanlı ışık ve gölge.
Asıl kazanç geliştirici tarafında: yeni sistemi C# ile yazmak, Unity'nin profiler'ıyla performans ve hata ayıklamak, harita / canavar / efekt aktarımının editörde menüye bağlanması ve oyunun görünümünü (shader, ışık, model) motoru yeniden yazmadan değiştirebilmek. Eski istemcide bunların çoğu motora elle girmek demekti.

Kalabalık alan FPS'i, eskisinden akıcı mı?
Performansı baştan tasarımın içine koyduk:
- Gerektiği an yükleme: haritalar, canavarlar, karakterler, efektler ve sesler ayrı içerik paketlerinde; bellekte yalnız o an gereken durur. Oyuna giriş ~0,6 sn, ışınlanma ~0,4 sn.
- Efekt yükü: Sürgün Mağarası'nda haritaya yerleşik 2.300'ü aşkın efekt var; yalnız kameraya yakın olanlar oynar, uzaktakiler işlemciyi yormaz.
- Eşya yağmuru: boss'tan yüzü aşkın eşya düştüğünde eşyalar kareye yayılarak kurulur, isim kutuları havuzdan gelir; oyun takılmaz.
- 64 bit istemci: eski 32 bit istemcinin bellek sınırı yok.
Yüzlerce oyuncunun aynı noktada olduğu gerçek bir canlı oyun yükünde denedik ve herhangi bir yavaşlama crash vb durumlar olmadı; bu yüzden Ciddi alıcıyla test sırasında kalabalık testini birlikte, kendi bilgisayarında yapabiliriz.

Eski donanım ve işletim sistemi
Unity 6 istemcisi Windows 10 (21H1) ve üstünü, DX10 / 11 / 12 destekli ekran kartını istiyor. Windows 7, 8 ve XP desteği yok; bu bilinçli bir tercih. Düşük sistem için oyun içinden gölge kalitesi, çözünürlük ve pencere modu ayarlanabiliyor; ayrı bir "düşük sistem" modu henüz yok.

Anticheat
Bunu satın alan kişinin özel isteğine bağlı kodluyoruz.

Ağ yapısı neden iyileştirilmedi?
Protokolü bilerek koruduk. Sunucu orijinal C++ kaynağı; protokolü değiştirmek iki tarafı birden yeniden yazmak demek. İlk hedefimiz, istemciyi orijinal sunucuyla paket paket uyumlu yapıp her davranışı orijinale karşı ölçebilmekti. Bu sırada kullanılmayan paketleri (Ejderha Taşı, matrix kart, passpod vb.) iki taraftan söktük, paket boyutlarını kaynaktan tek tek doğruladık, amblem yükleme gibi doğrulamasız yolları sunucuda kapattık. Kaynak kodu iki tarafıyla birlikte verildiği için protokolde yapılacak bir yenilik artık alıcının elinde; istemcinin ağ katmanı ayrı ve toplu duruyor.

1 aylık destek ve "deneysel" izlenimi
1 ay, istediğiniz sistemin sökülmesi veya eklenmesi ve oyunun tarzınıza göre düzenlenmesi dahil tam destek süresi. [SONRASI İÇİN NE DİYECEKSİN: ör. "Sonrasında da hata ve soru için ulaşılabiliriz; uzun dönem geliştirme desteği ayrıca konuşulur."] Hedeflediğimiz alıcı, kendi geliştiricisi olan ya da projeyi üstüne almak isteyen biri; bu yüzden her sunucu değişikliği ayrı ayrı belgeli ve geri alınabilir şekilde teslim ediliyor.
Ciddi alıcıya test imkânı vermemizin sebebi de bu: görmeden almanızı beklemiyoruz.

Tekrar teşekkürler.
 
Eklenen görsellerde haritalar ayrı ayrı scene olarak görülüyor. Haritalar kendi içerisinde bölgelere ayrılarak mı yönetiliyor yoksa tüm harita içeriği tek seferde mi yüklüyor? Eğer harita içeriği tek seferde yükleniyorsa özellikle mobil cihazlarda RAM tüketimi, yükleme süreleri ve performans açısından ciddi sorunlar yaşanabilir. Bu noktada Addressables kullanılıyor olması tek başına yeterli değil. Static batching, GPU instancing, LOD, occlusion culling ve texture optimizasyonlarının ne durumda olduğunu da konuya ekleyebilirsiniz.

Konu üzerinde sadece unity üzerinde yapılan işlemlerden bahsetmişsiniz. Peki server tarafında durum nedir? base olarak (marty, mainline, novaline) hangisi üzerinde geliştirme yaptınız ve orada yapılan düzeltme işlemleri nelerdir? Eğer daha önce bu dosyalar ile sunucu açtıysanız (en azından sadece sunucu taraflı olsa bile) referans eklemeniz faydalı olacaktır.
Merhaba,

Ciddi alıcıysanız detaylı konuşulur ve test imkanı verilir aklınızda kalan tüm soruları cevaplamış oluruz.
 
Geri
Üst