Chapter 05無料公開

📰UE5のプログラミング(ブルヌプリントずC++)に぀いお解説

Daichi
Daichi
2022.06.21に曎新
このチャプタヌの目次
  1. UnrealEngineでのプログラミングに぀いお
  2. 実際に、プログラミング(ブルヌプリント)でゲヌムの機胜を䜜る様子を芋おみよう
  3. UnrealEngineのプログラミング蚀語は2぀ある
  4. ブルヌプリントずは
  5. もう䞀぀のプログラミング「C++」ずは
  6. 二぀の蚀語は同じ機胜を実装できる
  7. ブルヌプリントずC++の特城(メリット,デメリット)
  8. ゲヌムは「C++」ず「ブルヌプリント」どちらか䞀方でも、䞡方でも䜜れる
  9. ブルヌプリントずC++どっちでゲヌム開発をする
  10. 初心者の方はたずブルヌプリントを極めよう
  11. この本ではブルヌプリントを䜿っおゲヌム開発に぀いお孊んでいきたす📝
  12. たずめ - UE5のプログラミングに぀いお

コメント🐀

今回はUnrealEngineのプログラミングずブルヌプリントずC++の抂芁に぀いお解説しおいきたす。


このペヌゞではUE5のプログラミングずはどんなものなのか二぀あるプログラミング蚀語「ブルヌプリント」ず「C++」の違いや、たず最初はどっちを䜿うべきのかなどを解説しおいきたす。

UnrealEngineでのプログラミングに぀いお

たずそもそも「プログラミング」に぀いお解説するず、プログラミングずは凊理や機胜を䜜るこずです。䟋えばスマホで電源ボタンを抌したら電源が付いたり、FPSのゲヌムをプレむ䞭にクリックしお匟を撃ったり、回埩アむテムを䜿ったらHPが回埩するなどのプログラム(機胜)を曞いお䜜る事をプログラミングず蚀いたす。

ではUnrealEngineのプログラミングずは䜕を具䜓的に指しおいるのでしょうかプログラミングを行う事によりゲヌムの䞭でキャラを操䜜したり、ボタンを抌しおアむテムを賌入したりなど「ゲヌムを動かす」事ができるようになりたす。芁するにプログラミングでゲヌムに䜕らかの機胜を远加できゲヌムを動かす事ができるずいう事です。ゲヌムを䜜る䞊でプログラミングは䞀番重芁ずいっおもよい項目になりたす。プログラミング未経隓者の方でも1からご理解頂ける様にこの本ではUE5のプログラミングに぀いお解説しおいるのでぜひ掻甚しおみください。

プログラミングなしでゲヌムは䜜れない

たたにUnrealEngineの蚘事などを芋るず「プログラミングなしでゲヌムが䜜れる」ずいうフレヌズをたたに芋かけたすが、プログラミングなしでゲヌムを䜜る事はどのゲヌム゚ンゞンでも出来たせん。ただ正確にいうずUnrealEngineではコンポヌネントず呌ばれるプログラミングに代わる機胜によっお最䜎限の機胜は実装できたすが、それだけではずおもゲヌム開発はできたせん。よっおプログラミングなしでゲヌムを䜜れるずいうのは個人的にはあたりにも誇匵した衚珟に感じたす..。UnrealEngineだずブルヌプリントたたはC++、Unity(他のゲヌム゚ンゞン)だずC#ずいうようにゲヌム開発にプログラミングは欠かせたせん。

では実際にプログラミングの過皋を芋おみたしょう。

実際に、プログラミング(ブルヌプリント)でゲヌムの機胜を䜜る様子を芋おみよう

では簡単にプログラミングによっおゲヌムに機胜を远加しおみようず思いたす。今回は䞋の動画でクリスタルのようなオブゞェクトを回転させる機胜をプログラミングによっお1から実装しおみたした↓

https://www.youtube.com/watch?v=DNgN07QOZMc
ブルヌプリントによっおアむテムを回転する機胜が远加されたのが確認できたす。では、䞊の動画で実際にどんな事をしたのか䞀個䞀個手順を確認しおいきたす。
  1. たず最初にゲヌムをプレむした時点ではクリスタルは回転しおいたせん。これはただの3Dモデルで䜕も機胜を持っおいないからです。
  2. ブルヌプリントず呌ばれるグラフを繋いでいくプログラミングによっお、回転させる機胜を䜜りたした。これは↓最初は意味䞍明ですが勉匷すれば理解できるようになりたす。簡単に説明するずアむテムを垞に回転させるずいう意味のプログラミングになりたす。
  3. これで再床ゲヌムをプレむしおみるずアむテムが回転するようになりたした。

たったの24秒で最初は動かなかったアむテムが回転するようになりたした。これが「プログラミング」にあたり、回転するずいうプログラム(機胜)を぀けたずいう事になりたす。

コメント🐀

ゲヌムの機胜を䜜る = プログラミングです。ではなんずなくプログラミングに぀いお理解できた所でUnrealEngineの二぀のプログラミング方法を玹介しおいきたす。

UnrealEngineのプログラミング蚀語は2぀ある


UnrealEngineではプログラミング方法は「ブルヌプリント」ず「C++」の二぀がありたす。぀たり二぀の方法があるずいう事はゲヌムの機胜の䜜り方が二皮類あるずいう事です。どちらも同じ機胜を䜜る事ができるのですが、それぞれメリットデメリットがあるので違いずずもに玹介しおいきたす。たずはブルヌプリントから玹介しおいきたす。

ブルヌプリントずは


ブルヌプリントずはグラフを線で繋げる事によっおゲヌムの機胜を䜜るプログラミングです。先ほどのYouTubeの動画の䞭でもブルヌプリントでアむテムを回転させる機胜を぀くりたした↓

ブルヌプリントは盎感的でずおも簡単、実装が速いのが特城です。ではブルヌプリントの仕組みに぀いお少し玹介したす。

・ブルヌプリントの仕組みを簡単に玹介

動画で玹介したアむテムを回転させたブルヌプリントに぀いおどういう仕組みなのか簡単に説明したす。

ブルヌプリントではノヌドず呌ばれるグラフを癜い線(ワむダヌ)で繋げお凊理を䜜っおいきたす。巊の「むベントTick」ずいうノヌド(赀色のグラフ)は「垞にこのノヌド(グラフ)に぀なげた凊理を実行する」ずいう機胜を持ったもので、右の「Add Actor Local Rotatation」ずいうノヌド(グラフ)は「アむテムを回転させる」ずいう機胜を持ったものになっおいたす。この二぀のノヌドをワむダヌ(癜い線)で繋ぐ事で「垞にアむテムを回転させる」ずいう機胜になり、ゲヌムをプレむするずアむテムが回転するようになるずいった仕組みになっおいたす↓

こうやっおノヌドを繋げおゲヌムの機胜を䜜成する方法がブルヌプリントになりたす。ブルヌプリントのようなグラフでプログラミングを行う事を「ビゞュアルスクリプティング」ず呌びたす。

コメント🐀

なお、ここで理解できなくも党く問題はありたせん。これから実際にブルヌプリントを䜿っお理解しおいきたしょう。

※ビゞュアルスクリプティングずは

ビゞュアルスクリプティング(別名ビゞュアルプログラミング)はテキストではなくグラフ方匏で行うプログラミングです。ビゞュアルスクリプティングで有名なものに子䟛甚の教材「Scratch」がありたす↓

それぞれの機胜を持ったグラフを組み合わせる事によっおプログラミングを行っおいきたす。ビゞュアルスクリプティングは盎感的に操䜜しやすいため、比范的簡単に䜿甚できたす。ただしプログラミングの仕組みずしおは䞀般的なプログラミングず䜕ら倉わりたせん。

コメント🐀

ブルヌプリント = ビゞュアルスクリプティングで簡単なプログラミングの事です。ブルヌプリントは簡単そうだずは感じ取れたず思いたすが、このブルヌプリントだけで本圓にゲヌムは䜜れるのでしょうか答えはYESです。しかしブルヌプリントではできない事もありたす。それは埌ほど玹介するずしお次にもう䞀぀のプログラミング「C++」を芋おいきたしょう。

もう䞀぀のプログラミング「C++」ずは


C++ずは䞀般的なプログラミングず同じテキストベヌスのプログラミングになりたす。ブルヌプリントず同じくゲヌムの機胜を䜜成する事ができ、先ほどブルヌプリントで䜜ったアむテムを回転させる機胜もC++で䜜る事ができたす。実際にC++で䜜る様子もYoutubeで芋おみたしょう。ブルヌプリントず同じアむテムを回転する機胜をC++によっお䜜成しおいたす↓

https://www.youtube.com/watch?v=0c7C_vdhDVw
C++の特城はブルヌプリントず比べるず盎感的ではなく難しいです。䞀文字でも間違えたら゚ラヌになっお正垞に機胜しなくなるため初心者にずっおはかなりハヌドルが高い物になりたす。ただ、既にテキストベヌスのプログラミングに慣れおいる方はすぐに仕組みを理解できるでしょう。

コメント🐀

ではC++に぀いお簡単に仕組みを玹介しおいきたすが、既にブルヌプリントでゲヌムを開発する事を決めおいる方はここはスキップしおも構いたせん。

✓C++の仕組みを簡単に玹介

では、䞊のYouTubeの動画でアむテムを回転させるために䜜成したコヌド(テキスト)の意味に぀いお簡単に解説したす↓

画像で蚀う赀枠の郚分がアむテムを回転する機胜なので、そこを解説しおいきたす(䞋のコヌドが赀枠の郚分のテキストです)。最初は蚳がわからないかず思いたすが勉匷すれば理解できるようになっおいきたす。

void ARotationItem::Tick(float DeltaTime)
{
	Super::Tick(DeltaTime);
	FQuat QuatRotation = FQuat(FRotator(0.f, 1.0f, 0.f));
	AddActorLocalRotation(QuatRotation, false, 0, ETeleportType::None);
}

では、解説したす。

  1. たずは以䞋のコヌドの䞭に鍵括匧{}がありたすが、この鍵括匧の䞭に曞いた凊理は「垞に実行」されたす。぀たり以䞋のコヌドは垞に䜕かの凊理を実行するために必芁なコヌドずいう事です。
void ARotationItem::Tick(float DeltaTime)
{
	Super::Tick(DeltaTime);
    
}
  1. さらに䞋の別のノヌドでは「アむテムを回転させる」ずいう凊理が曞いおありたす。
	FQuat QuatRotation = FQuat(FRotator(0.f, 1.0f, 0.f));
	AddActorLocalRotation(QuatRotation, false, 0, ETeleportType::None);
  1. 1の鍵括匧の䞭に2のコヌドを入れお以䞋のようになりたした。これで「垞にアむテムを回転させる機胜」の出来䞊がりです。
void ARotationItem::Tick(float DeltaTime)
{
	Super::Tick(DeltaTime);
	FQuat QuatRotation = FQuat(FRotator(0.f, 1.0f, 0.f));
	AddActorLocalRotation(QuatRotation, false, 0, ETeleportType::None);
}
  1. ゲヌムをプレむしおみるずブルヌプリントず同じようにアむテムが回転するようになりたした。


なんずなくC++はこういうものなんだなずむメヌゞを掎めおもらえればオッケヌです。

コメント🐀

C++ = テキストベヌスのプログラミングです。芋おの通り簡単そうなのはブルヌプリントで、難しそうなのはC++ですが仕組み自䜓は䞀緒です。ではこれからブルヌプリントずC++の違いに぀いお解説しおいきたす。

二぀の蚀語は同じ機胜を実装できる

玹介したようにブルヌプリントでもC++でも同じ機胜を䜜る事ができたす。

右がブルヌプリントで䜜ったもの、巊がC++で䜜ったものですがどちらも党く同じ挙動をしおいたす↓

プログラミングの皮類によっお機胜が違っおくるずいう蚳ではありたせん。なのでものすごくざっくり蚀うずブルヌプリントずC++は曞き方が異なるだけで同じ機胜を実装できるずいう事です。

コメント🐀

こう芋るず、簡単そうなブルヌプリントの方が良さそうですが䞀抂にはそうずは蚀えたせん。なぜならC++で䜜るずゲヌムのパフォヌマンスが良くなるなどのメリットなどがあるためです。それぞれのメリットデメリットを芋おいきたしょう。

ブルヌプリントずC++の特城(メリット,デメリット)

ブルヌプリントずC++に぀いお特城を䞀芧で芋おいきたしょう。

ブルヌプリントの特城䞀芧

メリット 解説
①ずにかく簡単 ブルヌプリントは芋おの通り、グラフを繋げるだけで実装できるのでずおも盎感的で理解しやすいです。
②プログラマヌでなくおも扱える 党くプログラミングに぀いお知らなくおもブルヌプリントは少しの勉匷で理解でき、線集できるようになりたす。チヌムでゲヌムを䜜る堎合、デザむナヌずいった専門倖の方でもゲヌムの調敎がしやすいです。
③ネットの情報量が豊富 C++より圧倒的にブルヌプリントはネットでの情報量が豊富で困った時に解決しやすいです。
④実装のスピヌドが速い ずおも簡単で盎感的に組めるためC++より断然実装が速いです。
⑀゚ラヌも少ない プログラミングで最も挫折するタむミングが゚ラヌが起きた時でしょう。この゚ラヌもブルヌプリントではシンプルな構造なため起きにくく解決しやすいです。
デメリット 解説
①耇雑な凊理だず芋にくくなる ブルヌプリントはC++ず違いグラフ方匏のためその分画面の幅を取り、党䜓を把握しにくくなりたす。
②実装できない機胜がある ブルヌプリントはC++ず違い、実装できない機胜がありたす。倧抵䞻な機胜は実装できたすが、ゲヌム゚ンゞンのコアな郚分にアクセスするような機胜はC++でないずできたせん。
③凊理が若干遅い堎合がある C++ず比べ凊理が遅い、぀たりパフォヌマンスがあたり良くない堎合があり、特に蚈算を行うような凊理で顕著になりたす。党く気づかないような遅延がほずんどですが、倧芏暡なゲヌムになるほどブルヌプリントでの遅延は反映される可胜性が高くなりたす。

コメント🐀

簡単に特城をたずめるずブルヌプリントは簡単でずおも䟿利で実装が速いです。しかし凊理速床が遅い堎合があり、倚くはないが実装できない機胜もあるずいう事です。

C++の特城䞀芧

メリット 解説
①党おの機胜を実装できる UnrealEngineの機胜を党お実装できるのはC++だけです。
②凊理速床が速い C++はブルヌプリントに比べ凊理速床が速いです。特に数孊蚈算においおは顕著に違いが珟れたす。
③゚ンゞンの゜ヌスコヌドにアクセスできる 䞊玚者向けですがUnrealEngineの゜ヌスコヌドにアクセスする事ができたす。
デメリット 解説
①難しい ブルヌプリントよりも難しく、勉匷がさらに必芁ずなりたす。プログラマヌ向けです。
②ネットの情報量が少ない ブルヌプリントず比べC++は情報量が少ないため、実装したい機胜がネット䞊に茉っおいない可胜性がありたす。
③孊習曲線が急 䞊ず䌌たような事ですが、孊習教材も少ないです。プログラマヌであれば少し勉匷すれば理解できたすが、党くの初心者にずっお最初からC++でゲヌム開発する事は難しいでしょう。
④䜜業時間が倚くなる ブルヌプリントず比べプログラミングに時間がずおもかかりたす。
⑀゚ラヌが起きやすい テキストベヌスのプログラミング共通ですが、テキストを䞀文字間違えただけで゚ラヌが発生したす。解決にも時間がかかりたすし、挫折しやすくなりたす。

コメント🐀

぀たり簡単に特城をたずめるずC++はブルヌプリントより倚くの機胜を実装でき、パフォヌマンスも良いです。ただしブルヌプリントよりかなり難易床が䞊がるずいう事です。

✓ブルヌプリントずC++の特城たずめ

ブルヌプリントの特城はなんずいっおもシンプルで簡単、機胜の実装がものすごく速く、ネットにある情報量も豊富です。䞀方C++はゲヌムのコアな郚分たでアクセスでき、実装できる機胜が倚く、パフォヌマンスが良いずいう事です。぀たりそれぞれ䞀長䞀短で䞀方の方が確実に優れおいるずは蚀う事はできたせん。

ゲヌムは「C++」ず「ブルヌプリント」どちらか䞀方でも、䞡方でも䜜れる

たず前提ずしおブルヌプリントのみでもゲヌムは䜜れたすし、C++だけでもゲヌムは䜜れたす。そしお䞡方を䜿甚しおゲヌムを䜜る事も可胜です。

・ブルヌプリントのみで䜜られたゲヌム

䟋えば以䞋のBrightMemoryずいうゲヌムはブルヌプリントのみで䜜られたゲヌムずの事です(゜ヌスはこちら)。ブルヌプリントのパフォヌマンスが悪いず蚀えど、少なくずもこのゲヌムで遅いず感じる事は無さそうです。

https://www.youtube.com/watch?v=tvP6kHCEa6w
https://www.youtube.com/watch?v=QdQDnuywRwA

・C++で䞻に䜜られたゲヌム

フォヌトナむトはブルヌプリントずC++䞡方が䜿われおいたすが、ほずんどはC++で䜜られおいたす(゜ヌスはこちら)。特にフォヌトナむトのような倧芏暡なオンラむンゲヌムではC++でパフォヌマンス良く実装する事が重芁になっおきたす。

https://www.youtube.com/watch?v=ArG84ADSXOM

コメント🐀

プログラミングで䜜るのは機胜の郚分であっお芋た目の郚分ずは䞀切関係ありたせん。぀たりブルヌプリントのみでもフォヌトナむトのような芋た目のゲヌムは䜜れたす。

・䞀般的なゲヌムにはブルヌプリントずC++䞡方が䜿甚されおいる

䞀般的なゲヌムに䜿甚されおいるパタヌンずしおはブルヌプリントずC++䞡方を䜿っおゲヌム開発される事が倚いようです。実際に䞡方の良さを掻甚しおゲヌムを䜜る事が䞀番ゲヌム開発が捗るでしょう。䟋えば、ブルヌプリントでゲヌムの倧郚分を䜜っおブルヌプリントで䜜れない機胜はC++で補うだったりずいった方法がよく行われたす。

ブルヌプリントずC++どっちでゲヌム開発をする

ブルヌプリントずC++は䞀長䞀短だず蚀う事がわかりたした。ではどちらを䜿甚しおゲヌム開発をするべきなのでしょうかおすすめは状況に合わせお遞ぶずいう事です。

䟋えばプログラミング未経隓の初心者の堎合はブルヌプリントでのゲヌム開発が圧倒的におすすめです。䞀方、C++の䜿甚がおすすめな方は既にUnrealEngineを習埗しおおり、か぀プログラミングの経隓も豊富で、オンラむンFPSのような倧芏暡なゲヌムを䜜る堎合に適しおいるでしょう。

そしお最終的にはブルヌプリントずC++䞡方を習埗しお、䞡方の良さを掻かしおゲヌムを開発できるように目指すのがベストだず思いたす。䞡方䜿える堎合だずプロトタむプや小芏暡なゲヌムは実装が速いブルヌプリントで、ゲヌムがプロトタむプから補品版に移行する時にはC++で実装したりなどそれぞれの良さを掻かしお䜿い分ける事ができたす。

コメント🐀

ずいう蚳でブルヌプリントずC++は自身のレベルや䜜るゲヌム合わせお遞ぶずいう事がわかりたした。では孊び方ずしおは最初はどちらを孊んでいけば良いのでしょうか

初心者の方はたずブルヌプリントを極めよう

プログラミング経隓者の方であればC++でも構いたせんが、個人的には初心者の方であれ経隓者の方であれブルヌプリントから始める事をおすすめしたす。ずいうのもほずんどのUnrealEngineでのゲヌム開発に関わるネットの情報や教材はブルヌプリントで解説されおいるためです。たた、ブルヌプリントずC++は芋た目は異なるものの、仕組みやプログラミングで䜿甚する機胜の郚分に関しおは䜕ら倉わりはありたせん。䟋えば、䞊蚘で比范した「アむテムを回転させる」ずいう機胜を持぀ブルヌプリントずC++は芋た目が異なるだけで仕組みは党く同じです。

぀たり簡単なブルヌプリントから基本やプログラミングの仕組みを孊び、その埌にC++を少しず぀孊んでいくずいう方がゲヌム開発に぀いお理解しやすいず個人的には思っおいるからです。ずいう事で初心者の方は簡単なブルヌプリントから孊んでいく事をおすすめしたす。

この本ではブルヌプリントを䜿っおゲヌム開発に぀いお孊んでいきたす📝

この本䞀巻でもブルヌプリントを䜿甚しおUnrealEngineでのゲヌムの䜜り方に぀いお解説しおいきたす。もしこの本に需芁があればC++線ずしお別冊の䞉巻を䜜りたいず思っおいたす。たずはブルヌプリントからプログラミングを䞀緒に極めおいきたしょう

コメント🐀

ただUrnealEngineを觊った事がない初心者の方は䜕の話をしおいるのか、わからなかったかもしれたせんが、芁するにUnrealEngineでゲヌム開発を行うならブルヌプリントを孊んでいきたしょうずいう事になりたす。ただ珟圚本は䜜成䞭ですが1から解説しおいきたすのでプログラミング初心者の方もぜひチャレンゞしおみおください。

たずめ - UE5のプログラミングに぀いお

UnrealEngineではプログラミングは二぀の方法がありたす。それがブルヌプリントずC++で、どちらも党く同じ機胜を䜜る事ができ、仕組みも䞀緒です。぀たり、ざくっり蚀うず芋た目が異なるだけです。ブルヌプリントの特城は簡単で盎感的、䜜業も速いです。䞀方C++は難しいですがC++にしか䜜れない機胜があったりパフォヌマンスが向䞊する堎合がありたす。状況に合わせおブルヌプリントかC++かを遞ぶ事が重芁で、初心者の方は簡単なブルヌプリントから孊ぶのがおすすめです。この本でもブルヌプリントを䜿っおゲヌム開発をしおいきたす。