====== M2 ====== RTFI Topluluğunda tüm metin2 ile alakalı içerikler m2 etiketi altında toplanmıştır. Sende büyük ihtimalle kendi m2 sunucunu açmak için bu serüvene atıldın. Öncelikle kendi sunucunuzu geliştirmenin ve yönetmenin kolay olmadığını bilmeniz gerekmekte. Normal şartlarda bu seviyede bir oyunun idaresi için çok büyük bir ekibe ihtiyaç vardır. * Game Designer * System Designer * Level Designer * FX Artist * Asset Artist * Game Tester * Animator * Game Artist Bunlar sadece başlıcaları, bunun 3 katı daha fazla kariyer alanı bulunmaktadır oyun geliştirmede... Sizde farkındasınız ki bu kadar büyük bir ekip kuramayacaksınız. Bu yüzden tüm bu alt alanlara kendiniz hakim olmak zorunda kalacaksınız. Biz tüm bu alt kategoriler 3 ana kategoride topladık. ===== Sunucu Yönetimi===== Server-Client sisteminin iki işletim sisteminde kurulumu ve çalıştırma ile ilgili tüm alt alanları içeren kategoridir. Kısaca kaynak tarafında düzenleme gerektirmeyecek tüm düzenlemeler ve geliştirmeler bu kategoriye aittir. ===== 3D Modelleme ===== Oyun içinde görsellik üzerinde tüm alt kategoriler bu kategori altında toplanmıştır. Harita tasarımı, model tasarımı, efekt tasarımı, ui tasarımı gibi tüm kategoriler bu kategoriye aittir. ===== Geliştirme ===== Kaynak tarafında çalışma gerektirecek olan tüm işlemleri içeren kategoridir. Diğer iki kategoriye eklenemeyen tüm içerikler bu kategoride toplanmıştır. Sistem yazımı, kaynak taraflı hata ayıklamalar gibi kısaca kaynak kodlarının tekrardan derlenmesini gerektirecek tüm içerikler bu kategoriye aittir. ---- Biz RTFI topluluğu olarak, bu alanlarda kendinizi daha rahat geliştirebilmeniz için en basitten başlayarak öğretici içerikler hazırladık. ====== Genel Bakış ====== ===== Client-Server Yapısı ===== Metin2 [[wp>Transmission_Control_Protocol|TCP]] paketleri üzerinden çalışan bir client-server yapısıdır. Sunucu(Server) oyun içerisindeki sunucuları değil, fiziksel sunucuları ifade edecek şekilde kullanılmıştır. Client içerisinde birden fazla sunucuya bağlanılabilir. Bu yazıda tek bir sunucu var ve bu sunucu tek bir fiziksel cihazda barındırılması baz alınmıştır. Örnek olarak Alesta ve Klikya birbirinden farklı sunuculardır. İki sunucunun barındırğı fiziksel cihazların IP adresleri farklıdır. Sunucu kendi içerisinde kanallara bölünmüştür. Farklı portlar üzerinden kanallara erişim sağlanır. ===== Çekirdek ===== Çekirdek, Sunucunun ana parçasıdır, Temelde dosya-program yapısıdır. Bir çağrılabilir ikili ve onun kullandığı dosyalardan oluşan bir klasör yapısıdır. Client tarafından gönderilen TCP/UDP paketlerini işleyen kısımdır. Sunucu yapısında çekirdekler, üstlendikleri görevlere göre isimlendirilmiştir. * **Auth**; //Authentication// kelimesinin kısaltmasıdır. Oyuncuların login aşamasını kontrol eden çekirdek yapısıdır. Eski 34k [[:tr:m2:sf:start|SF]]'lerde auth çekirdeğine ek olarak karakter seçim aşamasını kontrol eden ekstra bir çekirdek olabilir(//First//). Ancak güncel [[:tr:m2:sf:start|SF]]'lerde bu çekirdek kanal çekirdeklerine dahil edilmiştir. * **Game_1, Game_2 … Game_4**; Bu çekirdekler oyunun belirli haritalarında gerçekleşen tüm istekleri işleyen çekirdeklerdir. Güncel [[:tr:m2:sf:start|SF]]'lerde her kanal belli sayıda alt çekirdeğe bölünerek sunucu kapasitesi arttırılma amaçlanmıştır. En çok rastlanan yaklaşım. Birinci köy haritalarını bir çekirdeğe atarken, kalan haritaları diğer çekirdeklere atamaktır. * **Game99**; Bu çekirdek ortak haritaların işlendiği çekirdektir. Zindanlar ve etkinlik haritaları bu çekirdeğe atanır. Bu haritalara ışınlanan oyuncular, tek bir çekirdekte toplandıklarından oyun içerisinde kanal değiştirseler dahi ortak bir kanalda toplanmış olurlar. ==== DB Çekirdeği ==== Bu çekirdek yukarıdaki çekirdeklerden farklıdır. Db //database//'in kısaltmasıdır, //database cache// olarak da isimlendirilebilir. Oyunculara ait itemlerin, at isimlerinin, loncalar gibi veritabanı üzerinde sorgu gerektirecek tüm içerikler için bir önbellek oluşturur. Bu çekirdek veritabanının aşırı yüklenmesini engellemek amacı ile geliştirilmiştir. Eğer bu önbellek olmasaydı, oyun içerisinde gerçekleşecek olan tüm işlemler veritabanında bir sorgu gerçekleştirecektir. Çok oyuncu durumunda çok sayıda sorgu, veritabanını çok yoracaktır. Yavaşlama ve çakışmalardan dolayı, hatalar meydana gelecektir. DB çekirdeği, her __x__ dakikada tüm verileri veritabanına işleyerek yukarıdaki sorunların önüne geçer. Bu sebeptendir ki oyun kapandığında veya çöktüğünde oyuncuların bazı itemleri kaybolur. Çünkü x dakika geçmeden db çekirdeği kapatılırsa, son işlemlerin sorguları veritabanına işlenmeyeceğinden itemler kaybolur. Bunun önüne geçmek için kanal çekirdekleri kapatıldıktan x dakika sonra db çekirdeği kapatılır. ---- ===== İşleyiş ===== Client ilk olarak auth çekirdeğine bağlanır ve kimlik doğrulaması gerçekleştirir. Auth çekirdeği izin verirse, bağlantı kesilir ve belirli bir çekirdeğe bağlanır. Bu kanal eski sistemlerde First çekirdeğidir. Güncel sistemlerde oyunucun seçtiği kanala ait ilk alt çekirdektir. Oyuncu karakterini seçtiğinde veya yarattıktan sonra, karakterine giriş yapmak istediğinde. Çekirdek, gerekli referansları sunucu üzerinde oluşturduktan sonra bulunması gereken haritaya göre başka bir çekirdeğe bağlanmasını sağlar. Örnek olarak ortak bir haritada ise bağlantı kesilip game99 çekirdeğine bağlantı gerçekleşecektir. Son çekirdek bağlantısı sağlandıktan sonra, ilgili çekirdek oyunucun yaptığı tüm işlemlerden sorumlu hale gelir. Ta ki başka bir çekirdekte bulunan bir haritaya ışınlanana kadar. ---- [[tr:m2:genel|http://wiki.rtfi.dev]]'den alınmıştır. ===== EDİTÖR NOTLARI ===== BU WRAP'i SİLME Bu metin işlenen sayfada görünmeyecektir. Kendiniz ve diğer editörler için notlar bırakmak için kullanabilirsiniz. ---- [[tr:m2:start|RTFI Wiki]]'den alınmıştır. ===== EDİTÖR NOTLARI ===== BU WRAP'i SİLME Bu metin işlenen sayfada görünmeyecektir. Kendiniz ve diğer editörler için notlar bırakmak için kullanabilirsiniz.