Arama Sonuçları

  1. Kaptan Yosun

    Modern C++ ile Metin2 Kodlarını Refaktör Ediyoruz

    :mmotutkunlari-logo: Bu başlık altında konu dışına çıkmadan, YMIR’in yaklaşık 20 yıl önce yazdığı ve günümüz standartlarına göre oldukça problemli olan kod bloklarını refaktör edip, ortaya çıkan sonuçları birbirimizle paylaşalım. YMIR bu oyunu geliştirmeye başladığında, Visual Studio’da bugün...
  2. Kaptan Yosun

    Modern C++ ile Metin2 Kodlarını Refaktör Ediyoruz

    (DirectX8 içindir, DirectX9 için uygulamak isterseniz kendiniz uyarlamalısınız) Yeni Bölüm: GrpDetector / GrpDevice – Legacy D3D8 cihaz ve mod tespit kodunun sadeleştirilmesi Bunu yapmadan önce şu konulardaki değişiklikleri yapın, yoksa bazı fonksiyon çağrılarımız uyuşmayabilir. Ben bu iki...
  3. Kaptan Yosun

    Modern C++ ile Metin2 Kodlarını Refaktör Ediyoruz

    Yeni bölümü ayrı konu olarak açtım https://www.mmotutkunlari.com/konu/c-metin2-client-window-centering-bug-win10-11-%E2%80%93-ger%C3%A7ek-sebep-ve-kal%C4%B1c%C4%B1-%C3%87%C3%B6z%C3%BCm.24536/
  4. Kaptan Yosun

    Modern C++ ile Metin2 Kodlarını Refaktör Ediyoruz

    Bu bölümde basit bir iş yapacağız. C++11 öncesi yazılan bu oyunda auto makrosu olmadığı için kendilerince itertype diye bir makro yazmışlar. Ancak bu makro SonarQube gibi statik kod analiz araçlarının kafasını karıştırıyor ve araçlar öneri sunamıyor. Bunu standart C++'nın auto makrosuyla...
  5. Kaptan Yosun

    Modern C++ ile Metin2 Kodlarını Refaktör Ediyoruz

    Ben aslında onu "Metin2 için bu kadar da kasmaya gerek var mı?" Kafasıyla yazmıştım. Ama haklısınız, nihai kod kalitesi perspektifinden bakınca exception safety önemli bir konu. Eve gidince sağladığınız düzenlemeyi ekleyeceğim.
  6. Kaptan Yosun

    Modern C++ ile Metin2 Kodlarını Refaktör Ediyoruz

    Metin2'nin neresi exception-safe ki? Bir de Set_Proto_Mob_Table zaten bool döndürüyor. Sizin verdiğiniz kod server ve Dump Proto parsing için over-engineering değil mi? Yanlış mı düşünüyorum?
  7. Kaptan Yosun

    Modern C++ ile Metin2 Kodlarını Refaktör Ediyoruz

    assign(count, value) de fill gibi count kez copy assignment yapar; bu yüzden bilinçli olarak kullanılmadı. az önce eleştirilen fill yaklaşımının aynısı bu. bu son yaptığım reserve + emplace_back en doğru yaklaşım olsa gerek
  8. Kaptan Yosun

    Modern C++ ile Metin2 Kodlarını Refaktör Ediyoruz

    Haklısın, resize + index üzerinden doldurma yaklaşımı çalışıyor ama gereksiz default ctor çağrılarına yol açıyor ve uzun vadede ölçeklenebilir değil. Bu yüzden düzgün bir refactor için clear + reserve + emplace_back modeline geçmek daha doğru. Şöyle yaptım: /* - [4] Allocate target vector...
  9. Kaptan Yosun

    Modern C++ ile Metin2 Kodlarını Refaktör Ediyoruz

    Konuyu tam olarak bunun için yoruma açık tutuyorum, katkınız için teşekkür ederim. Başlığa C++26 yazmamın sebebi en azından C++26 ile derlenebilir kod almak ve daha modern yaklaşımları teşvik etmek. Yoksa evet bu özellikler C++20 ile geldi. UB kokusu var dediğiniz yerde hakkınız var, ancak...
  10. Kaptan Yosun

    Modern C++ ile Metin2 Kodlarını Refaktör Ediyoruz

    Aşağıdaki @Larry Watterson üyemizle yaptığımız tartışmalar neticesi daha da iyileştirildi ve güncellendi! Kendisine teşekkür etmek istiyorum. Bu bölümde https://www.mmotutkunlari.com/konu/db_name_column-sistemi-kald%C4%B1rma-detayl%C4%B1-rehber.24442/ Bu konudaki sadeleştirmenin üzerine [1]...
  11. Kaptan Yosun

    Modern C++ ile Metin2 Kodlarını Refaktör Ediyoruz

    Bu bölümde etc_drop_item.txt dosyasını ve okuma mantığını refaktör edelim. Eğer Koreli bir YMIR geliştiricisi değilseniz bu dosyayı okumak zor. 흰색 댕기+ 2.0 흰색 댕기 1.0 화장품 4.0 호랑이발톱 2.0 호랑이가죽 4.0 헝겊조각+ 2.0 헝겊조각 2.0 풀잎 4.0 표창+ 1.0 표창 1.0 투지범의 이빨 4.0 전갈의 집게발 2.0...
  12. Kaptan Yosun

    Modern C++ ile Metin2 Kodlarını Refaktör Ediyoruz

    Ben başlayayım o halde; void CHARACTER::ItemDropPenalty(LPCHARACTER pkKiller) Fonksiyonu içinde bu kod bloğu: int iAlignIndex; if (GetRealAlignment() >= 120000) { iAlignIndex = 0; } else if (GetRealAlignment() >= 80000) { iAlignIndex = 1; } else...
Geri
Üst