Yardım Metin2 nasıl yazılım dillerini bir arada kullanılıyor

Konu sahibi bu konuda soru soruyor. Sorusu ile ilgili bilgisi olanların yanıtlamasını bekliyor.

xvcx

Çaylak Üye
Üye
Mesaj
3
Beğeni
0
Puan
8
Ticaret Puanı
0
Herkese merhaba arkadaşlar foruma yeni katıldım. Fazla uzatmadan bir kaç sorum olucak bu sorduğum sorular metin2 geliştirmek istediğim için değil kafamda bazı konuların canlanması için soruyom.

1. Soru c++ ile python nasıl haberleşiyor (pipe mi kullanılıyor ?) anladığım kadarı ile yanlış anladım ise kusura bakmayın bütün gui işlemleri pythonda gerçekleşiyor ve sürekli c++ ve python arasında bir haberleşme söz konusu.

2. Soru Metin2 Client-Server Socket haberleşmesi client c++ mı kullanıyor ? Sunucu kendi seçtiği dilimi kullanılıyor (örnek PHP) ?

3. Metin2 de markete basınca gelen item listesini HTTP istek ilemi alıyor her kullanıcı tıkladığında yoksa Socket de ona uygun bir fonksiyonmu tanımlı ?,

4. Python ile gui için kullanılan bir kütüphane varmı (örnek: tkinter, pygame vs..) yoksa Metin2 geliştiren yazılımcıların kendi geliştirmiş olduğu bir kütühanemi ?

5. Üsteki sorularda python ile bütün gui işlemleri dedim ama bunlara 3d modeller dahilmi mesela savaşçı karakteri yoksa sadece göreve basınca çıkan ekranmı ve ya markete bastığımızda çıkan ekran filan mı?

Tekrar belirtiyim metin2 geliştirmek istemiyorum sadece profesyonel bir oyunda bu tür işlemler nasıl yapılıyor merak ediyorum. İyi günler
 
Python ın c++ kütüphanesi var bu sayede iki yazılım dili birbirleriyle haberleşiyor.
Python gui işlemlerine gelirsek; normal bir windows uygulaması nasıl bir pencere oluşturup içerisine butonlar vs koyuyor ise aynı mantık. Python c++ ile haberleşip c++ bir windows penceresi oluşturuyor. 3d modelleri grafik motoru işliyor.
 
Python ın c++ kütüphanesi var bu sayede iki yazılım dili birbirleriyle haberleşiyor.
Burda c++ da bulunan Python.h den bahsediyorsunuz galiba.

Grafik motoru c++ mı yoksa pythondamı çalışıyor?
 
Grafik motoru c++ ile çalışıyor demek bütün 3d modeller orda render ediliyor demek oluyor değilmi ? x isimli karakter 3 adım ileri gittiyde sunucudan gelen veriye göre c++ da render ediliyor ozaman peki bilgisizlğime veriniz neden python ile haberleşme ekranları kullanılıyor ?
 
Bilmiyorum. O zamanın teknolojisine göre en iyi olarak böyle uygun görmüşleridir heralde.
 
Grafik motoru c++ ile çalışıyor demek bütün 3d modeller orda render ediliyor demek oluyor değilmi ? x isimli karakter 3 adım ileri gittiyde sunucudan gelen veriye göre c++ da render ediliyor ozaman peki bilgisizlğime veriniz neden python ile haberleşme ekranları kullanılıyor ?
C++ ve Py, modellerde sadece hesaplamaları ve bağlantılı fonksiyonları kontrol ediyor. Burada Python ve C++ hakkında konuşuluyor fakat metin2 nin bünyesinde görsel dosyalarda mevcut. Mesela model dosyaları .GR2 dir.
GR2 ise zaten halihazırda içinde animasyonun kendisini barındırıyor. Python ve C++'ın buradaki görevi; animasyonun oyunun gerekliliklerine göre düzgün çalışıp çalışmadığını kontrol etmek ve sistemin sunduğu sınırlar ve kurallar çerçevesinde o animasyonu canlandırmak.

Örnek veriyorum; GR2 dosyasında karaktere sabit bir yürüme,koşma özelliği verilir. Ama hangi yöne nasıl koşacağını yürüyeceğini python ve c++ belirleyip kontrol eder. Mesela üzerinde siyah çelik olan bir Savaşçı GM karakterimiz var diyelim, ve /poly kodu ile suraya dönüştüğümüzü varsayalım. Her iki karakterin de normalde yürüme animasyonuna sahip olmasına rağmen, bulundukları şartlar(üzerinde siyah çelik olan bir sura) sisteme ve kodlara ters düşen bir durum olduğu için oyun buna izin vermiyor ve karakter bozulup kilitleniyor.
 
Yorumuma konudaki sorulara yanıtlamaya başlamadan önce konu içerisine gelen yorumlara yanıt vererek başlayacağım. Teknik terimleri fazla bilmediğim için mümkün olduğunca açıklayacağım.

Grafik motoru c++ ile çalışıyor demek bütün 3d modeller orda render ediliyor demek oluyor değilmi ? x isimli karakter 3 adım ileri gittiyde sunucudan gelen veriye göre c++ da render ediliyor ozaman peki bilgisizlğime veriniz neden python ile haberleşme ekranları kullanılıyor ?
O zamanın şartları nedir bilemem ancak makine diline en yakın olan diller yüksek seviyeli dillere göre daha performanslı çalışır. Bu yüzden oyunlarda c++ kullanılmasının temel nedeni budur. Aynı şey işletim sistemleri içinde geçerli.

Yani arkaplanda işlem yüküne ait olanlar c++ kullanılırken ön planda python kullanıyor.

Gelelim sorulara yanıt vermeye​

1. Soru​

C++ içerisinde kullanılması için zaten hazır fonksiyonlar oluyor. @Elisia 'nın yorumunda verdiği linki incelemenizi tavsiye ediyorum. Daha anlaşılır olacaktır.

2. Soru​

Server'de client'te çekirdek yapısı c++ ile yazılmış. Her ikisi de socket ile etkileşim kuruyor. Verileri gönderip alırken packet alıyor.
Client'te son kullanıcı için python dili kullanılırken server tarafında oyun içerisindeki görevlerin çalışması için lua dili kullanılmış. Client örneğinde olduğu gibi lua'da c++ ile haberleşebiliyor.

3. Soru​

Market dediğiniz dönen parada yer alan item shop mu? Orası aslında bi tarayıcı. IE altyapısını kullanarak urlden verileri alıyor.

4. Soru​

Metin2 oyunu için kendi UI kodları bulunuyor. Detaylı incelemek isterseniz ui.py'ye bakabilirsiniz.

5. Soru​

Burada Python ile 3 boyutlu modelleri gösterebilir miyim diye anladım. Karakter seçim ekranı bunun için en iyi örnek olabilir.


Eğer yeterince programlama bilginiz varsa kendi oyununuzu tasarlarken kendinize ait UI kütüphanesi yazabilirsiniz, fonksiyonlar oluşturabilirsiniz.
 
Geri
Üst