Metin2 Geliştirici Kaynağı: AI Yardımıyla Oluşturulan Detaylı game/src Markdown Belgeleri

  • Konuyu açan Konuyu açan Raviel
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 11
  • Gösterim Gösterim 358

Raviel

Premium Üye
Premium Üye
Üye
Mesaj
136
Çözümler
3
Beğeni
120
Puan
764
Ticaret Puanı
0
Merhaba değerli Metin2 geliştiricileri ve MMOTutkunları topluluğu!

Biliyorum ki bir çok kişi bu işe hiç kod bilgisi olmadan veya başlangıç bilgisiyle hevesle başladı ve o şekilde kendini geliştirdi. Bunu her zaman bir adım öteye taşımak istedim ancak vakit bazı şeylere engel oldu. Artık yapay zeka dönemindeyiz. Bu sebeple yapay zekayı projelerimizde nasıl daha iyi kullanarız veya Metin2 konusunda nasıl kullanabiliriz şeklinde uzun zamandır düşünüyorken aklıma Metin2 hakkında yapay zekayı eğitmek ve yardımcı seviye bir geliştiriciye dönüştürmek oldu.

Metin2 sunucusunun srcServer/Source/game/src klasöründeki C++ ve Lua arayüz dosyalarının, yapay zeka destekli bir süreçle oluşturulmuş kapsamlı Markdown belgelerini oluşturdum. Bu Belgeler Hangi Seviyede ve Neden Markdown? Oluşturduğumuz bu Markdown dosyaları, her bir bileşen için (kütüphane, klasör, dosya, Lua arayüzü) öncelikle amacını ve temel işlevlerini/içeriğini açıklayacak şekilde hazırlandı.
  • Kaynak Kod Dosyaları (.c, .cpp) İçin: Ana çalışma prensiplerini ve önemli fonksiyonları vurgulayan orta seviye implementasyon detayları eklendi. Bu, kodun ne yaptığını ve genel olarak nasıl yaptığını anlamak için yeterli bir derinlik sunarken, her bir satırın detayında boğulmayı engellemeyi hedefler.
  • Lua Arayüzleri İçin: Lua tarafından C++ fonksiyonlarına erişimde kullanılan Lua ön ekleri ve bu fonksiyonların nasıl kullanılabileceğine dair örnekler belirtildi.
Markdown formatını tercih etmemizin nedenleri ise şunlar:
  • Okunabilirlik ve Anlaşılırlık: Markdown, temiz ve kolay okunabilir bir yapı sunar.
  • Erişilebilirlik ve Paylaşım Kolaylığı: Metin tabanlı olması sayesinde kolayca paylaşılabilir ve farklı platformlarda görüntülenebilir.
  • Sürüm Kontrolü Dostu: Değişikliklerin takibi ve versiyonlama için idealdir.
  • Geliştirici Odaklı: Kod parçacıklarının ve teknik açıklamaların net bir şekilde sunulmasına olanak tanır.
Bu Belgeleri Projelerinizde Nasıl Kullanabilirsiniz? Bu dokümantasyonun sizlere şu konularda yardımcı olacağını umuyoruz:
  1. Mevcut Sistemleri Anlama: "Bu dosya ne işe yarıyor?" veya "Bu fonksiyonun temel mantığı nedir?" gibi sorularınıza hızlıca yanıt bulabilirsiniz.
  2. Yeni Sistem/Zindan Geliştirme: Mevcut kodun nasıl yapılandırıldığını ve hangi bileşenlerin birbiriyle nasıl etkileşimde bulunduğunu görerek yeni özellikler veya içerikler (örneğin yeni zindanlar, görevler) tasarlarken sağlam bir temel oluşturabilirsiniz. Özellikle Lua arayüzlerinin belgelenmesi, görev (quest) tabanlı sistemler geliştirmede size yol gösterecektir.
  3. Hata Ayıklama ve Modifikasyon: Bir sistemde değişiklik yapmanız veya bir hatayı anlamanız gerektiğinde, ilgili bileşenlerin belgeleri size başlangıç noktası sunabilir.
  4. Ekip Çalışması ve Bilgi Aktarımı: Projeye yeni katılan geliştiricilerin kod tabanını daha hızlı öğrenmesine yardımcı olabilir.
Bu Belgeler Yapay Zekayı Eğitecek Bir Veri Seti mi?

Tamamen detayına köküne kadar inmiyor ancak Orta seviye bir geliştirici olabilmesi için gerekli detayları içeriyor. Projenizde sizi başlangıç seviyesi veya orta seviyede bile olsanız çok hızlandıracağını düşünüyorum.

Ek olarak forumda çok değerli geliştiriciler ve gerçekten işinde başarılı olan geliştiriciler var. En büyük isteğim onların bu belgeleri okuyup yorumlarını esirgememesi. Ayrıca devamında İstemci tarafı içinde rehber oluşturmaya başlayacağım.

Lütfen değerli fikirlerinizi esirgemeyin. Projenin gelişmesi ve yapay zekaya tamamen olmasa bile ciddi manada size yardımcı olabilecek bir canavara dönüştürme yolunda katkı sunabilirsiniz.

Linkleri görebilmek için giriş yap veya kayıt ol.


1746596910543.webp
1746596925487.webp
 

Dosya Eklentileri

çok yararlı bir konu forumda bağış at ve benzeri gibi bir özellik olsaydı kesin bağış atardım
Çok teşekkürler en büyük desteğiniz dosya hakkında ki yorumunuz olur :) daha çok geliştirebilmek ve tam donanımlı bir AI Dev oluşturmak istiyorum
 
Emeğine sağlık, işe yarar nadir bir paylaşım olmuş.

Ayrıca bazı yapay zekalar metin2 ilgili konuştukça(veya belirli bir konu) arkaplanda bu işlemleri yüzeysel olarak da kavrıyor. Birnevi kendi kendini eğitiyor ve bunu bariz bir şekilde kullanıcıya hissettiriyor. Mesela şöyle bir örnek vereyim;

3 gün önce:
Yapay zekaya #ifdef makrolu bir kodun neden çalışmıyor olabileceğine dair fikirlerini sordum diyelim. Ve o gün biraz diyalog sonrasında sorunumu çözmüş olsun.

3 gün sonra (bugün):
3 gün önce sorduğum soruya büyük oranda benzeyen başka bir soru sorduğumda bu sefer verdiği cevaplar daha oturaklı oluyor. Mesela "locale_inc.h/service.h içinde tanımladın mı?" gibi daha çözüm odaklı cevap veriyor. Bu yazdığım olay sadece gözlemlerimi anlatmak için örnek bir senaryoydu. Fakat benzerini birkaç defa yaşadım ve yaşamaya da devam ediyorum.

Kullanıcının ağırlıklı olarak konuştuğu konuları bir şekilde bellekte tutuyorlar. New Chat ile yeni konuşma başlatılsa bile bir şekilde günler öncesi konuşmadan bir alıntı yapabiliyor. Elbette bunlar yüzeysel olaylar, tüm source dosyalarını,fonksiyonları, çağrıları vs. bilmesi ve ezberlemesi pek kolay değil fakat bir sorunu yazarken o an yazılan prompt'un bu konuya çok fazla etkisi var.

Mesela;
"Bu kod neden uygulamayı çöktürüyor?"
diye sormak yerine,

"Bu kod aslında şu şekilde çalışıyor, şu işe yarıyor. Falanca yere çağrı yapıyor ve şurdan şu veriyi çekiyor. Hata ayıklamada her şey düzgün görünüyor fakat uygulama içinde çökmeye neden oluyor. Nasıl çözebiliriz bunu?"

diye sormak arasında çok fark vardır, alınan cevaplarda farklı olacaktır. Mesela burada kritik cümle altı çizili cümledir. Sorun detaylarında hata ayıklamayı belirtmiş olmak(veya denenen şeyleri..), yapay zekanın sorun hakkında daha farklı düşünmesine neden olacaktır ve daha farklı şekilde yönlendirmeler yapacaktır.
 
Emeğine sağlık, işe yarar nadir bir paylaşım olmuş.

Ayrıca bazı yapay zekalar metin2 ilgili konuştukça(veya belirli bir konu) arkaplanda bu işlemleri yüzeysel olarak da kavrıyor. Birnevi kendi kendini eğitiyor ve bunu bariz bir şekilde kullanıcıya hissettiriyor. Mesela şöyle bir örnek vereyim;

3 gün önce:
Yapay zekaya #ifdef makrolu bir kodun neden çalışmıyor olabileceğine dair fikirlerini sordum diyelim. Ve o gün biraz diyalog sonrasında sorunumu çözmüş olsun.

3 gün sonra (bugün):
3 gün önce sorduğum soruya büyük oranda benzeyen başka bir soru sorduğumda bu sefer verdiği cevaplar daha oturaklı oluyor. Mesela "locale_inc.h/service.h içinde tanımladın mı?" gibi daha çözüm odaklı cevap veriyor. Bu yazdığım olay sadece gözlemlerimi anlatmak için örnek bir senaryoydu. Fakat benzerini birkaç defa yaşadım ve yaşamaya da devam ediyorum.

Kullanıcının ağırlıklı olarak konuştuğu konuları bir şekilde bellekte tutuyorlar. New Chat ile yeni konuşma başlatılsa bile bir şekilde günler öncesi konuşmadan bir alıntı yapabiliyor. Elbette bunlar yüzeysel olaylar, tüm source dosyalarını,fonksiyonları, çağrıları vs. bilmesi ve ezberlemesi pek kolay değil fakat bir sorunu yazarken o an yazılan prompt'un bu konuya çok fazla etkisi var.

Mesela;
"Bu kod neden uygulamayı çöktürüyor?"
diye sormak yerine,

"Bu kod aslında şu şekilde çalışıyor, şu işe yarıyor. Falanca yere çağrı yapıyor ve şurdan şu veriyi çekiyor. Hata ayıklamada her şey düzgün görünüyor fakat uygulama içinde çökmeye neden oluyor. Nasıl çözebiliriz bunu?"

diye sormak arasında çok fark vardır, alınan cevaplarda farklı olacaktır. Mesela burada kritik cümle altı çizili cümledir. Sorun detaylarında hata ayıklamayı belirtmiş olmak(veya denenen şeyleri..), yapay zekanın sorun hakkında daha farklı düşünmesine neden olacaktır ve daha farklı şekilde yönlendirmeler yapacaktır.
Çok teşekkürler umarım istemci tarafınıda paylaşıcam :)

Aslında yapay zekalar tam olarak sizin dediğiniz gibi "kendi kendine öğrenme" yapamasada bir konu üzerine düşünme ve konuyu adım adım çözmeyi şu anda iyi yapabiliyorlar ancak henüz kendi kendine öğrenen bir yapay zeka maalesef yok. Yapay zekalar hala günümüzde ki veri seti veya internette yazan insansı bilgi kaynaklarına dayanarak gelişiyor.

Bütün yapay zekalar aslında rules-based tabanlı çalışıyor. Yani sizin belirleyeceğiniz konsept ve kurallar çerçevesinde çalışırlar.

Bu projeyi geliştirirken en çok zorlanndığım şeylerden biri context boyutlarıydı. Yaklaşık belki 20 farklı yeni sohbet açtım ve her seferinde konseptinizi yapay zekaya anlatmamanız için kullandığım kurallar vardı. Yani siz yapay zekalara yorumsal bir soru sorduğunuzda veya bir dosyayı analiz ettirdiğiniz her seferinde farrklı konseplterle size dönüş yapar. Bunu engellemek adına kurallarınızı yapabilirsiniz.

Bu projede kullandığım daimi kural promptu:
prompt:
Genişlet Daralt Kopyala
Bu proje, Metin2 sunucu kaynak kodunu modüler olarak belgeleyerek geliştiriciler için bir referans kılavuzu oluşturmayı amaçlar. Her bileşen (kütüphane, klasör, dosya, Lua arayüzü) ayrı Markdown dosyalarında veya bölümlerinde, öncelikle **amacını** ve **temel işlevlerini/içeriğini** açıklayacak şekilde belgelenir. Kaynak kod dosyaları (.c, .cpp) için, ana çalışma prensiplerini ve önemli fonksiyonları vurgulayan **orta seviye implementasyon detayları** eklenir. Lua arayüzleri için **Lua ön ekleri** ve **örnek fonksiyonlar** belirtilir. Belgeleme dili açık, anlaşılır ve tutarlı Markdown formatında olacaktır.

Çoğu zamanda sohbet başlarında konseptimi hatırlatırım. Ne tarzda yazmasını istediğimi. Dosyaları ona tekrar yüklerim ve bu konsepti takip etmesini isterim.

En çok zorrlandığım kısımlar ise 22k satırlık dosyalar oldu tabi ki yüzeysel olarak değerlendirdik dosyaları ancak yapay zekaların içerik anlama boyutu maalesef hala işleri 10-20 parçaya bölmenize sebebiyet veriyor
 
Emeğine sağlık, işe yarar nadir bir paylaşım olmuş.

Ayrıca bazı yapay zekalar metin2 ilgili konuştukça(veya belirli bir konu) arkaplanda bu işlemleri yüzeysel olarak da kavrıyor. Birnevi kendi kendini eğitiyor ve bunu bariz bir şekilde kullanıcıya hissettiriyor. Mesela şöyle bir örnek vereyim;

3 gün önce:
Yapay zekaya #ifdef makrolu bir kodun neden çalışmıyor olabileceğine dair fikirlerini sordum diyelim. Ve o gün biraz diyalog sonrasında sorunumu çözmüş olsun.

3 gün sonra (bugün):
3 gün önce sorduğum soruya büyük oranda benzeyen başka bir soru sorduğumda bu sefer verdiği cevaplar daha oturaklı oluyor. Mesela "locale_inc.h/service.h içinde tanımladın mı?" gibi daha çözüm odaklı cevap veriyor. Bu yazdığım olay sadece gözlemlerimi anlatmak için örnek bir senaryoydu. Fakat benzerini birkaç defa yaşadım ve yaşamaya da devam ediyorum.

Kullanıcının ağırlıklı olarak konuştuğu konuları bir şekilde bellekte tutuyorlar. New Chat ile yeni konuşma başlatılsa bile bir şekilde günler öncesi konuşmadan bir alıntı yapabiliyor. Elbette bunlar yüzeysel olaylar, tüm source dosyalarını,fonksiyonları, çağrıları vs. bilmesi ve ezberlemesi pek kolay değil fakat bir sorunu yazarken o an yazılan prompt'un bu konuya çok fazla etkisi var.

Mesela;
"Bu kod neden uygulamayı çöktürüyor?"
diye sormak yerine,

"Bu kod aslında şu şekilde çalışıyor, şu işe yarıyor. Falanca yere çağrı yapıyor ve şurdan şu veriyi çekiyor. Hata ayıklamada her şey düzgün görünüyor fakat uygulama içinde çökmeye neden oluyor. Nasıl çözebiliriz bunu?"

diye sormak arasında çok fark vardır, alınan cevaplarda farklı olacaktır. Mesela burada kritik cümle altı çizili cümledir. Sorun detaylarında hata ayıklamayı belirtmiş olmak(veya denenen şeyleri..), yapay zekanın sorun hakkında daha farklı düşünmesine neden olacaktır ve daha farklı şekilde yönlendirmeler yapacaktır.
Bu tamamen doğru bu arada 2 gün önce yapay zeka ile bir hatayı çözmeye çalıştığımda alakasız cevaplar verirken, dün gece tekrardan kafam esti ve yapay zekaya tekrar sordum ama bu sefer gerçekten eksiksiz bir şekilde hatayı A dan Z ye çözdü, bu MarkDown dosyaları da bir sistem geliştirmeden önce yapay zekayı hazırlamak için çok yararlı olacaktır hazırlayan arkadaşa teşekkür ederim.
 
teşekkürler eline sağlık.

github'a atıp public yapsan daha iyi olabilir, geliştirmeye de açık olmuş olur.
 
teşekkürler eline sağlık.

github'a atıp public yapsan daha iyi olabilir, geliştirmeye de açık olmuş olur.
Teşekkür ederim yorumunuz için :) Tabi Github hayatımda 2-3 defa kullandım ama açmak kesinlikle daha verimli olur herkesin birşeyler katabileceği bir duruma getirmek harika olur.
 
Çok büyük iş hocam eline emeğine sağlık bunla ilgili güzel bir eğitim bile çekilir bambaşka bir seviyeye taşır bu işi
 
Çok büyük iş hocam eline emeğine sağlık bunla ilgili güzel bir eğitim bile çekilir bambaşka bir seviyeye taşır bu işi
Değerli yorumunuz için çok teşekkürler. Eğitim seviyesi için yeterli yazılım bilgisine sahip olduğumu düşünmüyorum ama Cursor veya çeşitli IDE programlarına .md dosyalarını entegre edip çalışılabilir tabi ki. Şu anda istemci tarafı için rehber oluşturuyorum oda en kısa zamanda gelecektir. Belkide artık küçük veya orta çaplı sorunlar için aşırı arama yapmamıza gerek kalmadan herkesin kendi "hayal ettiği" sistemleri geliştirdiği bir ortam olması dileğiyle...
 
Değerli yorumunuz için çok teşekkürler. Eğitim seviyesi için yeterli yazılım bilgisine sahip olduğumu düşünmüyorum ama Cursor veya çeşitli IDE programlarına .md dosyalarını entegre edip çalışılabilir tabi ki. Şu anda istemci tarafı için rehber oluşturuyorum oda en kısa zamanda gelecektir. Belkide artık küçük veya orta çaplı sorunlar için aşırı arama yapmamıza gerek kalmadan herkesin kendi "hayal ettiği" sistemleri geliştirdiği bir ortam olması dileğiyle...
Siz bu emektar süreci bitirin kafama yatarsa yani vaktim de olur yapay zeka destekli pvp dev eğitimi çekerim
 
Geri
Üst