dvl' Alıntı:
C++ programlamayı yazılı olarak nereden öğrenebilirim? Unreal engine'in sitesinde yeterince bilgi yok genellikle blueprint için anlatılmış. Olanları'da pek anlamadım çünkü mesela
böyle bir kod belirtmiş. fakat ben burda "GetWorldTimerManager" fonksiyonunun ne işe yaradığını bilmiyorum. Bunun gibi, tüm fonksiyonların ve işlevlerinin yer aldığı kaynak önerir misiniz?
Soru1:
C++ programlamayı öğrenmek için öncelikle basit olarak programlamanın genel mantığını öğrenmelisiniz. Çünkü kendine has bazı şablonları ve işaretçileri taşır. Dökümantasyonlardaki örnekler daha önceden oyun programlaması ile uğraşmış herhangi bir kişi için iyi bir örnektir. Eğer C++ dilinde kendinizi uygun hissetmiyorsanız Unreal Engine 4 ile uğraşmak mantıklı değil.
C++ öğrenmek için yazılı kaynaklar:
https://www.tutorialspoint.com/cplusplus/ (bu siteyi öneriyorum)
https://www.sololearn.com/Course/CPlusPlus/ (daha interaktif. buradaki her şeyi bitirmeniz temel şeyleri öğrenmek için yeterli olacaktır.)
Temel eğitimleri öğrendikten sonra:
SDL veya
SFML grafik kütüphaneleri için 2D bazlı oyunlar yaparak oyun programlama yeteneklerinizi geliştirebilirsiniz. Bu kütüphaneler klavye giriş çıkışı, ağ, ses ve grafik çizdirmek için hazırlanmış kütüphanedir. Bunlar ile ilgilenmek yapılan bir oyunun genel mantığı için uygun olacaktır.
Eğer renderlemek sizi ilgilendiriyor daha matematiksel ve geometrik işlemlerde kullanıp daha derinle girmek istiyorsanız
OpenGL ya da
Vulkan gibi kütüphaneleri kullanarak bir oyun yapabilirsiniz.
Unreal Engine 4 ile programlamayı internet üzerinden öğrenebileceğiniz kaynaklar (bunun dışında bende bir pdf kitap var sana atabilirim)
https://www.udemy.com/
http://www.tomlooman.com/category/unreal-engine-4/cpp/
http://orfeasel.com/blog/
Bunun dışında
Unreal Slackers Discord topluluğuna katılıp C++ programlama kanalına katılabilirsiniz.
http://unrealslackers.org/
Soru2:
Unreal Engine için sınıflara baktığınız zaman bir çok farklı şekilde tanımlama görürsünüz.
UObject sınıfı tüm sınıfların başında gelir. Diğer sınıflar bu sınıftan türemiştir.
https://docs.unrealengine.com/latest/INT/API/Runtime/CoreUObject/UObject/UObject/index.html
UObjectin bir alt sınıfı olan AActor sınıfına bakın.
https://docs.unrealengine.com/latest/INT/API/Runtime/Engine/GameFramework/AActor/index.html
Bahsettiğiniz GetWorldTimerManager fonksiyonu bir AActor sınıfının metodu.
https://docs.unrealengine.com/lates...mework/AActor/GetWorldTimerManager/index.html
Gördüğünüz üzere bir aktör sınıfının mesela
AActor* benimAktorum;
benimAktorum().aktörün zamanlayıcısını al. vs... gibi şeyleri kullanabilirsiniz.
Burada . ile işaretçi olan bir metoda erişmek için kullanıyoruz. Peki FTimerManager nedir? O da bir sınıftır. Bu sınıf ile oyun dünyasındaki ya da aktördeki bir sınıfa eriştiğiniz zaman size geri döner mesela
GetWorld()->GetTimerManager diyelim. burada dönen bir FTimerManagerin örneğidir. CountdownTimerHandle dediğiniz parametreyi tutar.
Bundan sonra setTimer metoduna bakalım.
https://docs.unrealengine.com/latest/INT/API/Runtime/Engine/FTimerManager/SetTimer/4/index.html
GetWorld()->GetTimerManager().SetTimer(parametreler...) gördüğünüz gibi aslında her şey sınıfların birbirinden aldıkları örnekler sonucunda çıkan bir veri tipidir. Bu bir sınıf veri tipi olabilir ya da saf bir tamsayı veri tipi olabilir.
UObjectin bir alt sınıfı olan
UWorld bakın. UObjectten türemiş olan bir sınıf. Ve içinde bazı Timer metodları var. Oyun dünyasının genel olarak soyutlanan bir sınıf örneğidir
https://docs.unrealengine.com/latest/INT/API/Runtime/Engine/Engine/UWorld/index.html
Eğer oyun dünyasında zamanı tutacaksanız buna göre bir timer oluşturmanız gereklidir. Bu TimerHandle sınıfı gerçek çalışma zamanlı olacağı için oyun motorunun içinde tanımlanmıştır. O yüzden AActor sınıfından türemiş.. Fakat aktörün içindeyse, örnekteki metodu kullanmanız gereklidir.
Son olarak eğer aradığınız kodun bir örneğini bulamadıysanız yapılan template projelerin içerisinde ya da actor.h gibi ana başlık dosyasına gidip oradaki bazı fonksiyonları deşebilirsiniz. Yararlı olacak bazı şeyler bulacaksınız. Unreal Slackers'da ue4-programming kanalında bu tip sorarsanız daha çabuk yanıt verecek bir çok yardımsever insan tanıyorum.