C++ Code Editor çok gerekli midir?


  • Kullanılan toplam oy
    6
  • Anket kapatılmış .

cahitburak

Yeni üye
13 Ağu 2015
740
160
0
35
Belirtilmemiş
tr.linkedin.com
Merhabalar.

Foruma yeni karıldım sayılır. Birkaç ısınma cevabı gönderdikten sonra istek ve öneri kategorisine girmeye hak kazandığımı düşünüyorum ;)

Şaka bir yana ülkemizde oyun sektörünün canlanması adına bu forumu son derece yararlı bulduğumu söylerek söze başlamak isterim. Sıklıkla ziyaret ettiğim kategoriler Blueprint ve C++ Programlama kategorileri olmasına karşın C++' a olan ilginin bir hayli az olduğunu gördüm. Oyun geliştirme konusunda programlama önemli bir yer tutmasına karşın; gerek blueprint sayesinde gerekse de programlamanın oyun geliştirmede az yer teşkil etmesi bunun başlıca nedenleri olsa gerek. Yine de C++ bölümünü canlandırmak için küçük bir önerim var.

Gerek sorulacak olan sorularda, gerekse de söz konusu kategori altında yapılacak anlatımlarda yararlı olması açısından Code Editor'ün UE4 yapılarını olmasa da (zor olsa gerek) en azından bir C++ Syntax Highlighting (tercihen Visual C++) yapması iyi olurdu diye düşünüyorum.

Forum yöneticilerine ve kullanıcılarına kolaylıklar diliyorum. İyi çalışmalar.
 
Senin gibi birileri gelse de C++ bölümü de canlansa diyorduk bayadır. :) Forumda sorusu olan varsa da soru cevaplayacak bilgi olmadığı(en azından kimse çıkıp C++ konusunda yardımcı olabilecek kapasitede olduğunu söylemediği ve herhangi bir döküman hazırlamadığı için şu ana kadar) için C++ bölümü bomboş kaldı malesef. Benim bilgim de sıfır olduğu için Wiki'den çeviri işine bile girişmeyi göze alamadım.

Umarım Kaan istediğin özelliği ekleyebilir.
 
Eğer mesele cevap vermek ise burdan duyurmuş olayım her türlü soruyu cevaplarım. C++ bölümü bu yüzden canlanmıyorsa, hiç kimse dert etmesin. Ne sorusu çok basit diye ne de çok karmaşık diye. Ben C++ konusunda elimden geldiğince yardımcı olacağım. Diğer taraftan çok sık olmamakla birlikte, fırsat buldukça bazı anlatımlarda da bulunacağım.
 
Bulmuşken sorayım;

5 yıl kadar pawn kodlama yaptım(c++ yapılı),biraz c#,biraz php,yarım phyton ve çok azcık da javascript.


Sence c++ ya geçmelimiyim?

Blueprint deki actor mantığı vs. c++ da nasıl işliyor?
 
SoloWarrior' Alıntı:
Bulmuşken sorayım;

5 yıl kadar pawn kodlama yaptım(c++ yapılı),biraz c#,biraz php,yarım phyton ve çok azcık da javascript.


Sence c++ ya geçmelimiyim?

Blueprint deki actor mantığı vs. c++ da nasıl işliyor?

Pawn kodlama ile kastınız nedir? Anlayamadım.

Düzenleme:
Unreal için hep söylerim, performans kaygısını göze almadan blueprint ile programlama olmazsa olmazdır. Blueprint öğrenmek vakit kaybı değil. Ama siz programcıysanız ki bu kadar deneyiminiz varsa geçin derim. Yinede ister programcı olun, ister tasarımcı ne olursanız olun BP şart.

Düzenleme 2:
Şöyle bir göz attım da literatürde Pawn programlama diye bir şey varmış oyun geliştirme üzerine, ilk kez duyuyorum. C++'da kullanmışsanız, mutlaka UE4 C++'a geçmelisiniz. Hobi için bile olsa...
 
cahitburak' Alıntı:
SoloWarrior' Alıntı:
Bulmuşken sorayım;

5 yıl kadar pawn kodlama yaptım(c++ yapılı),biraz c#,biraz php,yarım phyton ve çok azcık da javascript.


Sence c++ ya geçmelimiyim?

Blueprint deki actor mantığı vs. c++ da nasıl işliyor?

Pawn kodlama ile kastınız nedir? Anlayamadım.

Düzenleme:
Unreal için hep söylerim, performans kaygısını göze almadan blueprint ile programlama olmazsa olmazdır. Blueprint öğrenmek vakit kaybı değil. Ama siz programcıysanız ki bu kadar deneyiminiz varsa geçin derim. Yinede ister programcı olun, ister tasarımcı ne olursanız olun BP şart.

Düzenleme 2:
Şöyle bir göz attım da literatürde Pawn programlama diye bir şey varmış oyun geliştirme üzerine, ilk kez duyuyorum. C++'da kullanmışsanız, mutlaka UE4 C++'a geçmelisiniz. Hobi için bile olsa...
Benim sormak istediğim şey şu;(şey şu biraz garip oldu :) )

C++ ile bp bir arada kullanılabilir mi?,kullanımı nasıl olur?

Visual studio indirmeden c++ compile edilebiliyor fakat visual indirmemizi söylüyor motor.

Visual studio 2013 için win 8 veya win 7 nin güncelini istiyor,bendeki windows deneme sürümünün bitmiş hali olduğundan visual uğraştırır gibi :)
 
SoloWarrior' Alıntı:
cahitburak' Alıntı:
Pawn kodlama ile kastınız nedir? Anlayamadım.

Düzenleme:
Unreal için hep söylerim, performans kaygısını göze almadan blueprint ile programlama olmazsa olmazdır. Blueprint öğrenmek vakit kaybı değil. Ama siz programcıysanız ki bu kadar deneyiminiz varsa geçin derim. Yinede ister programcı olun, ister tasarımcı ne olursanız olun BP şart.

Düzenleme 2:
Şöyle bir göz attım da literatürde Pawn programlama diye bir şey varmış oyun geliştirme üzerine, ilk kez duyuyorum. C++'da kullanmışsanız, mutlaka UE4 C++'a geçmelisiniz. Hobi için bile olsa...
Benim sormak istediğim şey şu;(şey şu biraz garip oldu :) )

C++ ile bp bir arada kullanılabilir mi?,kullanımı nasıl olur?

Visual studio indirmeden c++ compile edilebiliyor fakat visual indirmemizi söylüyor motor.

Visual studio 2013 için win 8 veya win 7 nin güncelini istiyor,bendeki windows deneme sürümünün bitmiş hali olduğundan visual uğraştırır gibi :)

Evet C++ ile BP bir arada kullanılabilir ki her UE4 projeniz bunu zaten yapıyor. Mesela BP projesinde yeni bir blueprint oluşturdunuz ve bu Character'den kalıtım aldı. İşte o Character, ACharacter isimli bir C++ sınıfıdır ve o da AActor'den o da UObject'den kalıtım almıştır. Nasıl olur sorusunu anlamadım. Ben edebiyatçı değilim, yanlış anlamayın ama açık sorular sormanız gerekir. Daha mı hızlıdır? Ne yararı var? Neyi C++'da neyi BP'de yapmalı?...gibi. Tabi bazılarının cevabı çok uzun.

Visual Studio indirmeden Compile edemezsiniz, edersiniz de edemezsiniz. Eğer C++ kullanacaksınız, siz iyisi mi Visual Studio 2013 Express'i indirin. Bunu zahmet olarak görmeyin, başka alternatifleriniz var ama bunlar onlarca kat daha can sıkıcı emin olun. Ayrıca bu biraz benim görüşüm ama o kadar göreceli olduğunu sanmıyorum; Visual Studio birçok açıdan en iyi IDE'dir (C++ Intellisense biraz yavaş olsa da).

Visual Studio, Windows'ta belki Service Pack arayabilir ama zannetmiyorum bunun dışında her türlü kurabilmeniz gerekir. Visual Studio kurulumunun sizi uğraştıracağını düşünüyorsanız, UE4 C++'a başlamamanızı tavsiye ederim. Çünkü bundan çok daha fazla şeyle uğraşacaksınız.

Seçeceğiniz yolu düşünürken uzun vadeli bir plan yapmanızı tavsiye ederim. Sadece sizin için değil, herkes için. Siz bir programcıysanız mesela, ben olsam, BP öğrenmekle birlikte mutlaka UE4 C++ da öğrenirdim. Yok sadece UE4 öğreneyim C++'da bunun bi parçasıysa ona da bakayım diye öğrenilmez.
 
cahitburak' Alıntı:
SoloWarrior' Alıntı:
Benim sormak istediğim şey şu;(şey şu biraz garip oldu :) )

C++ ile bp bir arada kullanılabilir mi?,kullanımı nasıl olur?

Visual studio indirmeden c++ compile edilebiliyor fakat visual indirmemizi söylüyor motor.

Visual studio 2013 için win 8 veya win 7 nin güncelini istiyor,bendeki windows deneme sürümünün bitmiş hali olduğundan visual uğraştırır gibi :)

Evet C++ ile BP bir arada kullanılabilir ki her UE4 projeniz bunu zaten yapıyor. Mesela BP projesinde yeni bir blueprint oluşturdunuz ve bu Character'den kalıtım aldı. İşte o Character, ACharacter isimli bir C++ sınıfıdır ve o da AActor'den o da UObject'den kalıtım almıştır. Nasıl olur sorusunu anlamadım. Ben edebiyatçı değilim, yanlış anlamayın ama açık sorular sormanız gerekir. Daha mı hızlıdır? Ne yararı var? Neyi C++'da neyi BP'de yapmalı?...gibi. Tabi bazılarının cevabı çok uzun.

Visual Studio indirmeden Compile edemezsiniz, edersiniz de edemezsiniz. Eğer C++ kullanacaksınız, siz iyisi mi Visual Studio 2013 Express'i indirin. Bunu zahmet olarak görmeyin, başka alternatifleriniz var ama bunlar onlarca kat daha can sıkıcı emin olun. Ayrıca bu biraz benim görüşüm ama o kadar göreceli olduğunu sanmıyorum; Visual Studio birçok açıdan en iyi IDE'dir (C++ Intellisense biraz yavaş olsa da).

Visual Studio, Windows'ta belki Service Pack arayabilir ama zannetmiyorum bunun dışında her türlü kurabilmeniz gerekir. Visual Studio kurulumunun sizi uğraştıracağını düşünüyorsanız, UE4 C++'a başlamamanızı tavsiye ederim. Çünkü bundan çok daha fazla şeyle uğraşacaksınız.

Seçeceğiniz yolu düşünürken uzun vadeli bir plan yapmanızı tavsiye ederim. Sadece sizin için değil, herkes için. Siz bir programcıysanız mesela, ben olsam, BP öğrenmekle birlikte mutlaka  UE4 C++ da öğrenirdim. Yok sadece UE4 öğreneyim C++'da bunun bi parçasıysa ona da bakayım diye öğrenilmez.

Tabletten yazdığımdan dolayı pek anlatamadım gibi :)


Visual studio 2013 1 sene önce filan kurmaya çalışmıştım,servicepack istemişti bende boyuttan tasarruf edip 2005 kurmuştum :) :)


Bp biliyorum fakat kısıtlayıcı ve sıkıcı.


Şöyle söyleyeyim,if a == b yi kodla yazarken tek satırda halledersiniz fakat bp de önce branch oluşturacak,sonra equal ile verileri kontrol edip pinleri bağlayacaksın vs..

Bp nin çol zaman sağladığı yerler tabi ki var :)



Aklımd olan sorular;

1-Scriptler arası iletişim nasıl? Cast to gibi mi yoksa public variable olayı mı geçerli?

2-actor oluştururken viewportta objeleri vs. Konumlandırıp bp yi yazıyoruz,c++ yı da aynı bp yazar gibi actor içerisinden mi yazıyoruz?

Yine anlatamadım galiba :)
 
Hayır olmadı.

Script kullanacaksanız sizi Unity'e alalım. C#'da biliyormuşsunuz zaten ;).

Actor sınıfları arası iletişin blueprintlerde olduğu gibi hiç bir fark yok. Bir Actor'den diğerine erişmek istiyorsanız. World'e başvurup tüm mevcut aktörleri (belki filtreleyere) dolaşmalısınız yada Actor'ün referansını (BP'de referans variable, C++'da pointer) önceden set edebilirsiniz. C++'da UPROPERTY makrolarını iyi bilmek gerekiyor bunun için.

Neyse siz çok fazla açılmayın bence, bir alan seçip oraya yoğunlaşın. Fena trollediniz beni...
 
Merhabalar =) Öncelikle aramıza hoşgeldin. Aramızda senin gibi paylaşımcı arkadaşları görmek çok güzel :)  Öncelikle, sabahın 7'sinden beri bununla uğraşıyorum, MyBB için syntax highlight'lar mevcut ama hepsi eski sürüm. Bu sürümleri yükselterek sürümümüze uyarlamaya çalıştım; ajax yüzünden pek başarılı olduğum söylenemez. Şöyle bir sistem yaptım;
[pastebin]http://pastebin.com/Z8pdBhfq[/pastebin]
Bu sistem pastebin üstünden çalışıyor. Editör üstünde ise kullanımı şu şekilde:
Kod:
[pastebin]http://pastebin.com/link[/pastebin]

Tam olarak istediğin şeyi verememiş olabilirim, ama işe yarar bir sistem oldu :)

Eğer boş gözükürse veya sekme takılırsa refresh atın. Tarayıcı ile alakalı büyük ihtimal gözükmemesi.
 
cahitburak' Alıntı:
Hayır olmadı.

Script kullanacaksanız sizi Unity'e alalım. C#'da biliyormuşsunuz zaten ;).

Actor sınıfları arası iletişin blueprintlerde olduğu gibi hiç bir fark yok. Bir Actor'den diğerine erişmek istiyorsanız. World'e başvurup tüm mevcut aktörleri (belki filtreleyere) dolaşmalısınız yada Actor'ün referansını (BP'de referans variable, C++'da pointer) önceden set edebilirsiniz. C++'da UPROPERTY makrolarını iyi bilmek gerekiyor bunun için.

Neyse siz çok fazla açılmayın bence, bir alan seçip oraya yoğunlaşın. Fena trollediniz beni...

Trollediniz derken?


Script ağız alışkanlığından dolayı söylüyorum,filterscript diye geçiyordu pawn da bazı şeyler (haytırlayınca duygulandım :D )



Sizin söylediğiniz mantık şöyle olsa gerek,mesela benim a scriptim var (bu kelimeye alıştım,değiştirmek zor) bu a scripti karakterin içinde,a scriptindeki değişkenlere ıd ler atıyoruz

mesela bir widget yarattık,bu bizim can widgetimiz,bunun return değerini a scriptindeki canwidget değişkenine atıyoruz(widget için vs değişkenler var).

Sonra oyunda bize can widgetinde değişiklik gerektiğinde cast to a yapıyoruz,a ya cast eden şeyi karakter olarak belirliyoruz (çünkü içinde) ve sonra bu a daki değişkenlerden istediğimizi
çekerek şekillendiriyoruz.


Buraya kadar herşey iyi güzel,benim anlamamakta ısrar ettiğim nokta neden cast to yapmamız gerekiyor?

Birşeylere cast to etmeden veri çekmenin yolu yokmu c++ da yada bp de?


C++ ya geçmek şu yüzden istiyorum,mesela multiplayer session olayında bp deki nodeler işimi görmüyor.


Şu zamana kadar pawn ile birşeyler geliştirdim,sonra bu beni sınırlıyor dedim ve unity ye geçtim.

Baktım ki unity ile olmayacak ordan unreale geçtim.


Sonunda unreal de istediğimi buldum,değişmek gibi bir niyetim yok :D

Ve son olarak,bir ekibim olmadığı için herşeyi kendim yönetiyorum :)

(bu mesajı diğer mesajları yazıp uyuduktan sonra yazdığımdan diğerleri ile bağlantısı olmayabilir,sırf derdimi anlatabilmek için kalkar kalkmaz pc açtım :) )
 
SoloWarrior' Alıntı:
cahitburak' Alıntı:
Hayır olmadı.

Script kullanacaksanız sizi Unity'e alalım. C#'da biliyormuşsunuz zaten ;).

Actor sınıfları arası iletişin blueprintlerde olduğu gibi hiç bir fark yok. Bir Actor'den diğerine erişmek istiyorsanız. World'e başvurup tüm mevcut aktörleri (belki filtreleyere) dolaşmalısınız yada Actor'ün referansını (BP'de referans variable, C++'da pointer) önceden set edebilirsiniz. C++'da UPROPERTY makrolarını iyi bilmek gerekiyor bunun için.

Neyse siz çok fazla açılmayın bence, bir alan seçip oraya yoğunlaşın. Fena trollediniz beni...

Trollediniz derken?


Script ağız alışkanlığından dolayı söylüyorum,filterscript diye geçiyordu pawn da bazı şeyler (haytırlayınca duygulandım :D )



Sizin söylediğiniz mantık şöyle olsa gerek,mesela benim a scriptim var (bu kelimeye alıştım,değiştirmek zor) bu a scripti karakterin içinde,a scriptindeki değişkenlere ıd ler atıyoruz

mesela bir widget yarattık,bu bizim can widgetimiz,bunun return değerini a scriptindeki canwidget değişkenine atıyoruz(widget için vs değişkenler var).

Sonra oyunda bize can widgetinde değişiklik gerektiğinde cast to a yapıyoruz,a ya cast eden şeyi karakter olarak belirliyoruz (çünkü içinde) ve sonra bu a daki değişkenlerden istediğimizi
çekerek şekillendiriyoruz.


Buraya kadar herşey iyi güzel,benim anlamamakta ısrar ettiğim nokta neden cast to yapmamız gerekiyor?

Birşeylere cast to etmeden veri çekmenin yolu yokmu c++ da yada bp de?


C++ ya geçmek şu yüzden istiyorum,mesela multiplayer session olayında bp deki nodeler işimi görmüyor.


Şu zamana kadar pawn ile birşeyler geliştirdim,sonra bu beni sınırlıyor dedim ve unity ye geçtim.

Baktım ki unity ile olmayacak ordan unreale geçtim.


Sonunda unreal de istediğimi buldum,değişmek gibi bir niyetim yok :D

Ve son olarak,bir ekibim olmadığı için herşeyi kendim yönetiyorum :)

(bu mesajı diğer mesajları yazıp uyuduktan sonra yazdığımdan diğerleri ile bağlantısı olmayabilir,sırf derdimi anlatabilmek için kalkar kalkmaz pc açtım :) )

Trollediniz derken, sürekli değişik konulardan, belirsiz sorular soruyorsunuz diye dedim...

Script son derece yanlış bir ifade. Yapılanın anlaşılması açısından da olumsuz etkileri var. Söz konusu Unity olsaydı ifadelerinizdeki yanlışlıklar görmezden gelinebilirdi.

Mesela Unity3D Component-Based mimariye sahip bir oyun motorudur. Her oyun nesnesi bir GameObject'tir ve bu nesnelere Component'ler eklenerek yeni özellikler kazandırılır. Yazdığınız ve atadığınız her Script bir MonoBehaviour Component olarak nesneye eklenir. Özellikle C# bilenlere, basit oyunlar yada mobil oyunlar geliştirmek isteyenlere Unity3D'yi şiddetle tavsiye ederim.

Söz konusu Unreal olunca işler biraz değişiyor. Unreal'da nesnelere özellik kazandırma işlemi tamamen Unity'deki gibi bileşenlerle yapılabilir/yapılır (ActorComponent) ama birçok açıdan yeni bir nesne kalıtım yoluyla yeni bir sınıf oluşturularak yapılır.. GameObject'i Actor temsil eder. Sahnede yer alan bir nesneden bahsediyorsak bu C++ anlamında da BP anlamında da Actor'dür. Zaten her BP özünde C++'dır. Unreal geliştiricileri temel bazı oyun yapılarını Actor'den kalıtım alarak halihazırda geliştirmişlerdir. Mesela SkeletalMeshActor, bu Actor Unreal geliştiricileri tarafından yazılmasaydı, iskelet yapısı kullanan modelin animasyonunun oynatılmasını sağlayan bir Actor'ü biz yazmak zorunda kalacaktık.

Sizin söylediğiniz mantık şöyle olsa gerek,mesela benim a scriptim var (bu kelimeye alıştım,değiştirmek zor) bu a scripti karakterin içinde,a scriptindeki değişkenlere ıd ler atıyoruz

Burdaki sorun şu, a sadece şunlardan birisi olabilir.
  • Actor'ün kendisi (AActor, AStaticMeshActor, ACableActor, ACharacter...vs). Bu durumda a, karakterin içinde değildir kendisidir. Bu BP'de de böyledir.
  • Bir ActorComponent'dir. UStaticMeshComponent, UCableComponent, UMovementComponent..vs)

Değişkenlere id'ler atamak ne demek yine anlamadım. Çok literatür dışı söylemleriniz. Can Widget'ı nedir? Başka lüteratürlerden de kavramları getirip karıştırdığınızda söylediğiniz hiç bir şey anlaşılmıyor. Widget diye mesela QT'de arayüz nesnelerine denir. Unreal'da widget derken arayüzde HUD'da kullanılan UMG nesneleri akla gelir.

Gelgelelim soru A Actor'ü üzerindeki bir 'v' değişkenini B Actor'ü üzerinden nasıl değiştiririm ise bunun BP'den farkı yok. B'de A'nın referansı yoksa B ile World'e başvurup World'deki tüm aktörleri, A'yı bulana kadar dolaşabilirsiniz. Yada tipik "Find" methodlarını kullanabilirsiniz. Diyelim ki A, bir ACableActor:

Kod:
UCLASS()
class A: public ACableActor
{
}

UCLASS()
class B: public AActor
{
    void Foo();
}

void B::Foo()
{
    // Sahnede Kablo adındaki ACableActor'ü bul
    ACableActor* Cable = FindObject<ACableActor>(nullptr, TEXT("Kablo"));

    // Bulunduysa
    if (Cable != nullptr)
    {
        // Uzerindeki Var adındaki değişkenin değerini değiştir.
        Cable->Var = 5;
    }
}


Yada belki bu A'nın referansı Editor üzerinde önceden B'de set edilmiştir.

Kod:
UCLASS()
class A: public ACableActor
{
}

UCLASS()
class B: public AActor
{
    void Foo();

    // EditAnywhere sayesinde A'nın referansı B'de, Editor üzerinden DesignTime verilebilir (B'nin BP'i oluşturulursa).
    UPROPERTY(EditAnywhere, BlueprintReadWrite) ACableActor* Cable;
}

void B::Foo()
{
    // Cable'a Editor üzerinde A'nın referansı zaten verilmişse
    if (Cable != nullptr)
    {
        // Uzerindeki Var adındaki değişkenin değerini değiştir.
        Cable->Var = 5;
    }
    else // Verilmemişse tasarımcıyı uyarabiliriz...
    {
        GEngine->AddOnScreenDebugMessage("Dikkat B üzerinde Cable değeri verilmemiş!!!", vs...);
    }
}

Cast etmenin nedeni, referans değerin Cast edilen tip olarak kullanılmasını sağlamaktır. Bu tüm programlama dillerinde de böyledir, BP'de de böyledir. Mesela;

Kod:
class Arac
{

};

class Kamyon
{

public:

    int KasaHacmi;

    Kamyon() {}
};

// Baska bir metot
Arac* AracBul(int sasiNo) { ... }


Arac* a = AracBul(1);

// Bu kod çalışmaz, önce bu araç kamyon mu onu öğrenmek gerek...
a->KasaHacmi = 5;

// a'yı Kamyon'a cast ediyoruz.
// Bu bir static cast, unrealda biraz daha farklı...
Kamyon* k = (Kamyon*)a;
if (k != nullptr) // cast başarılıysa...
{
    // a bir Kamyon'dur ama Arac olarak onun KasaHacmi'ne hala ulaşamayız.
    a->KasaHacmi = 5; // Yanlış
    k->KasaHacmi = 5; // Doğru
}


Bence bu başlık altından değil de konu açarak daha spesifik sorular sormalısınız.
 
cahitburak' Alıntı:
SoloWarrior' Alıntı:
Trollediniz derken?


Script ağız alışkanlığından dolayı söylüyorum,filterscript diye geçiyordu pawn da bazı şeyler (haytırlayınca duygulandım :D )



Sizin söylediğiniz mantık şöyle olsa gerek,mesela benim a scriptim var (bu kelimeye alıştım,değiştirmek zor) bu a scripti karakterin içinde,a scriptindeki değişkenlere ıd ler atıyoruz

mesela bir widget yarattık,bu bizim can widgetimiz,bunun return değerini a scriptindeki canwidget değişkenine atıyoruz(widget için vs değişkenler var).

Sonra oyunda bize can widgetinde değişiklik gerektiğinde cast to a yapıyoruz,a ya cast eden şeyi karakter olarak belirliyoruz (çünkü içinde) ve sonra bu a daki değişkenlerden istediğimizi
çekerek şekillendiriyoruz.


Buraya kadar herşey iyi güzel,benim anlamamakta ısrar ettiğim nokta neden cast to yapmamız gerekiyor?

Birşeylere cast to etmeden veri çekmenin yolu yokmu c++ da yada bp de?


C++ ya geçmek şu yüzden istiyorum,mesela multiplayer session olayında bp deki nodeler işimi görmüyor.


Şu zamana kadar pawn ile birşeyler geliştirdim,sonra bu beni sınırlıyor dedim ve unity ye geçtim.

Baktım ki unity ile olmayacak ordan unreale geçtim.


Sonunda unreal de istediğimi buldum,değişmek gibi bir niyetim yok :D

Ve son olarak,bir ekibim olmadığı için herşeyi kendim yönetiyorum :)

(bu mesajı diğer mesajları yazıp uyuduktan sonra yazdığımdan diğerleri ile bağlantısı olmayabilir,sırf derdimi anlatabilmek için kalkar kalkmaz pc açtım :) )

Trollediniz derken, sürekli değişik konulardan, belirsiz sorular soruyorsunuz diye dedim...

Script son derece yanlış bir ifade. Yapılanın anlaşılması açısından da olumsuz etkileri var. Söz konusu Unity olsaydı ifadelerinizdeki yanlışlıklar görmezden gelinebilirdi.

Mesela Unity3D Component-Based mimariye sahip bir oyun motorudur. Her oyun nesnesi bir GameObject'tir ve bu nesnelere Component'ler eklenerek yeni özellikler kazandırılır. Yazdığınız ve atadığınız her Script bir MonoBehaviour Component olarak nesneye eklenir. Özellikle C# bilenlere, basit oyunlar yada mobil oyunlar geliştirmek isteyenlere Unity3D'yi şiddetle tavsiye ederim.

Söz konusu Unreal olunca işler biraz değişiyor. Unreal'da nesnelere özellik kazandırma işlemi tamamen Unity'deki gibi bileşenlerle yapılabilir/yapılır (ActorComponent) ama birçok açıdan yeni bir nesne kalıtım yoluyla yeni bir sınıf oluşturularak yapılır.. GameObject'i Actor temsil eder. Sahnede yer alan bir nesneden bahsediyorsak bu C++ anlamında da BP anlamında da Actor'dür. Zaten her BP özünde C++'dır. Unreal geliştiricileri temel bazı oyun yapılarını Actor'den kalıtım alarak halihazırda geliştirmişlerdir. Mesela SkeletalMeshActor, bu Actor Unreal geliştiricileri tarafından yazılmasaydı, iskelet yapısı kullanan modelin animasyonunun oynatılmasını sağlayan bir Actor'ü biz yazmak zorunda kalacaktık.

Sizin söylediğiniz mantık şöyle olsa gerek,mesela benim a scriptim var (bu kelimeye alıştım,değiştirmek zor) bu a scripti karakterin içinde,a scriptindeki değişkenlere ıd ler atıyoruz

Burdaki sorun şu, a sadece şunlardan birisi olabilir.
  • Actor'ün kendisi (AActor, AStaticMeshActor, ACableActor, ACharacter...vs). Bu durumda a, karakterin içinde değildir kendisidir. Bu BP'de de böyledir.
  • Bir ActorComponent'dir. UStaticMeshComponent, UCableComponent, UMovementComponent..vs)

Değişkenlere id'ler atamak ne demek yine anlamadım. Çok literatür dışı söylemleriniz. Can Widget'ı nedir? Başka lüteratürlerden de kavramları getirip karıştırdığınızda söylediğiniz hiç bir şey anlaşılmıyor. Widget diye mesela QT'de arayüz nesnelerine denir. Unreal'da widget derken arayüzde HUD'da kullanılan UMG nesneleri akla gelir.

Gelgelelim soru A Actor'ü üzerindeki bir 'v' değişkenini B Actor'ü üzerinden nasıl değiştiririm ise bunun BP'den farkı yok. B'de A'nın referansı yoksa B ile World'e başvurup World'deki tüm aktörleri, A'yı bulana kadar dolaşabilirsiniz. Yada tipik "Find" methodlarını kullanabilirsiniz. Diyelim ki A, bir ACableActor:

Kod:
UCLASS()
class A: public ACableActor
{
}

UCLASS()
class B: public AActor
{
    void Foo();
}

void B::Foo()
{
    // Sahnede Kablo adındaki ACableActor'ü bul
    ACableActor* Cable = FindObject<ACableActor>(nullptr, TEXT("Kablo"));

    // Bulunduysa
    if (Cable != nullptr)
    {
        // Uzerindeki Var adındaki değişkenin değerini değiştir.
        Cable->Var = 5;
    }
}


Yada belki bu A'nın referansı Editor üzerinde önceden B'de set edilmiştir.

Kod:
UCLASS()
class A: public ACableActor
{
}

UCLASS()
class B: public AActor
{
    void Foo();

    // EditAnywhere sayesinde A'nın referansı B'de, Editor üzerinden DesignTime verilebilir (B'nin BP'i oluşturulursa).
    UPROPERTY(EditAnywhere, BlueprintReadWrite) ACableActor* Cable;
}

void B::Foo()
{
    // Cable'a Editor üzerinde A'nın referansı zaten verilmişse
    if (Cable != nullptr)
    {
        // Uzerindeki Var adındaki değişkenin değerini değiştir.
        Cable->Var = 5;
    }
    else // Verilmemişse tasarımcıyı uyarabiliriz...
    {
        GEngine->AddOnScreenDebugMessage("Dikkat B üzerinde Cable değeri verilmemiş!!!", vs...);
    }
}

Cast etmenin nedeni, referans değerin Cast edilen tip olarak kullanılmasını sağlamaktır. Bu tüm programlama dillerinde de böyledir, BP'de de böyledir. Mesela;

Kod:
class Arac
{

};

class Kamyon
{

public:

    int KasaHacmi;

    Kamyon() {}
};

// Baska bir metot
Arac* AracBul(int sasiNo) { ... }


Arac* a = AracBul(1);

// Bu kod çalışmaz, önce bu araç kamyon mu onu öğrenmek gerek...
a->KasaHacmi = 5;

// a'yı Kamyon'a cast ediyoruz.
// Bu bir static cast, unrealda biraz daha farklı...
Kamyon* k = (Kamyon*)a;
if (k != nullptr) // cast başarılıysa...
{
    // a bir Kamyon'dur ama Arac olarak onun KasaHacmi'ne hala ulaşamayız.
    a->KasaHacmi = 5; // Yanlış
    k->KasaHacmi = 5; // Doğru
}


Bence bu başlık altından değil de konu açarak daha spesifik sorular sormalısınız.

Tam anlatmak istediğimi anlamışsınız :)

Eve geçince resimli olarak anlatacağım a olayını.

Bu arada karakter actorunde çok sayıda değişken bulunmasının etkisi nedir?

O karakterde depolama taraftarı olmadığım için a actoru örneğini verdim.
 
konuyu hortlatıcam ama cok iyi bir konu olmuş tebrik ederim cpp bilenleri görmek iyi oldu biraz eklemeler yapayım ozaman :)
Unreal engine'i geliştiren kişiler BP her iş için yeterli olmayacağın söylediler.Bencede doğru çünkü online bir oyun yapılacağında gerçekten sıkıntı ama single player tarza yapılacak olan bir oyun için nimet BP zaten. Kodlama yapısıda önemli hem BP hem c++ için.Daha önceden bir Ironsight yaptim BP ile Input, variable ve timeline iceren bir basic BP yapısı aynı tarzda birde c++ Ironsight yaptım.BP ile bir aksiyon sahnesine girdiğimde ikisindede aynı olaylar aynı harita bir anda BP ile olan da Ironsight fps bir anda düşüse geçiyor ve aynı noktaya geliyor ama c++ da bunu olmadıgını gördüm.BP ve c++ karışık gitmek gercekten çok faydali. Ben structre ve fonksiyonları c++ ile yapiyorum %80 c++ ile %20 BP ile olmalı Özellikle Multiplayerlar kesinlikle c++ ile olmalı
 
Ozzy' Alıntı:
konuyu hortlatıcam ama cok iyi bir konu olmuş tebrik ederim cpp bilenleri görmek iyi oldu biraz eklemeler yapayım ozaman :)
Unreal engine'i geliştiren kişiler BP her iş için yeterli olmayacağın söylediler.Bencede doğru çünkü online bir oyun yapılacağında gerçekten sıkıntı ama single player tarza yapılacak olan bir oyun için nimet BP zaten. Kodlama yapısıda önemli hem BP hem c++ için.Daha önceden bir Ironsight yaptim BP ile Input, variable ve timeline iceren bir basic BP yapısı aynı tarzda birde c++ Ironsight yaptım.BP ile bir aksiyon sahnesine girdiğimde ikisindede aynı olaylar aynı harita bir anda BP ile olan da Ironsight fps bir anda düşüse geçiyor ve aynı noktaya geliyor ama c++ da bunu olmadıgını gördüm.BP ve c++ karışık gitmek gercekten çok faydali. Ben structre ve fonksiyonları c++ ile yapiyorum %80 c++ ile %20 BP ile olmalı Özellikle Multiplayerlar kesinlikle c++ ile olmalı

C++ kullanımı gerekliliğine katılıyorum. Başlarda çok fazla BP kullanıyordum şimdi sadece gerekli yerlerde, UMG için yada son tasarım süreçlerinde kullanıyorum.

Diğer taraftan konuyu ben açmış olmama rağmen şimdi Phyrexian'ı boşu boşuna uğraştırdığımı düşünüyorum. Çünkü özellikle de sonra farkettiğim birşey var ki "PasteBin" hiç kullanışlı değil. Bunu daha önce söylemek istedim aslında ama fırsat olmadı. Çünkü şöyle bir durum var. Kod editörü gerekliyse; bence kodu kopyalamak için gerekli ama "PasteBin"de bu durum zahmetli bir hal alıyor. Üstelik kod, resim olarak gözükecekse; "Visual Studio" üzerinden ekran görüntüsü alıp koymak daha mantıklı bir hal alıyor. Çünkü zaten tam olarak istediğimizi de vermiyor "PasteBin".
 
cahitburak' Alıntı:
Ozzy' Alıntı:
konuyu hortlatıcam ama cok iyi bir konu olmuş tebrik ederim cpp bilenleri görmek iyi oldu biraz eklemeler yapayım ozaman :)
Unreal engine'i geliştiren kişiler BP her iş için yeterli olmayacağın söylediler.Bencede doğru çünkü online bir oyun yapılacağında gerçekten sıkıntı ama single player tarza yapılacak olan bir oyun için nimet BP zaten. Kodlama yapısıda önemli hem BP hem c++ için.Daha önceden bir Ironsight yaptim BP ile Input, variable ve timeline iceren bir basic BP yapısı aynı tarzda birde c++ Ironsight yaptım.BP ile bir aksiyon sahnesine girdiğimde ikisindede aynı olaylar aynı harita bir anda BP ile olan da Ironsight fps bir anda düşüse geçiyor ve aynı noktaya geliyor ama c++ da bunu olmadıgını gördüm.BP ve c++ karışık gitmek gercekten çok faydali. Ben structre ve fonksiyonları c++ ile yapiyorum %80 c++ ile %20 BP ile olmalı Özellikle Multiplayerlar kesinlikle c++ ile olmalı

C++ kullanımı gerekliliğine katılıyorum. Başlarda çok fazla BP kullanıyordum şimdi sadece gerekli yerlerde, UMG için yada son tasarım süreçlerinde kullanıyorum.

Diğer taraftan konuyu ben açmış olmama rağmen şimdi Phyrexian'ı boşu boşuna uğraştırdığımı düşünüyorum. Çünkü özellikle de sonra farkettiğim birşey var ki "PasteBin" hiç kullanışlı değil. Bunu daha önce söylemek istedim aslında ama fırsat olmadı. Çünkü şöyle bir durum var. Kod editörü gerekliyse; bence kodu kopyalamak için gerekli ama "PasteBin"de bu durum zahmetli bir hal alıyor. Üstelik kod, resim olarak gözükecekse; "Visual Studio" üzerinden ekran görüntüsü alıp koymak daha mantıklı bir hal alıyor. Çünkü zaten tam olarak istediğimizi de vermiyor "PasteBin".
Aynen ben BP öyle kullanıyorum son 6 aydır ve öyle kullanılması gerekiyor kodlama konusunda Unreal Engine müthiş ama karakter ve modeller konusunda biraz fazlamı seçici ne :D
 
[code-sh=cpp] // Artık var.
int main(){
#include <iostream> 
#include <vector>
#include <memory>

auto main(int* argc, char** argv) -> int
{
    auto u_int = std::make_unique<int>(123);
    cout << (*u_int == 123) << endl;
    auto u_string = std::make_unique<std::string>(3, '#');
    cout << (*u_string == "###") << endl;
    return 0x0;
}

[/code-sh]

Kullanımı için sadece:
6m71CGzvRtawnq06g__YNQ.png