コミュ障だから明日が僕らをよんだって返事もろくにしなかった

何かを創る人に憧れたからブログをはじめたんだと思うよ

std::cout << "C++完全に理解した" << std::endl;

UE4に手を出したはなし

おはようございます、タイトル通りC++を完全に理解した(大嘘)僕です。C++を完全に理解してしまったので本日はコア部分がC++で構成されているといわれるUE4を触っていきたいと思います。件のUE4とは何者なのかといいますと以下のようなやつです。

Unreal Engineはエピックゲームズが自社で開発した『Unreal』、『Unreal Tournament』シリーズ、『Gears of War』シリーズおよび『Infinity Blade』はもちろんの事、同業他社が開発した『レインボーシックス』シリーズ、『レッドスティール』、『バイオショック』および『ミラーズエッジ』など多くのゲームで採用されている。その他にも、NASAの宇宙飛行士訓練やウォルト・ディズニー・カンパニーの映画製作とテーマパークに利用されるなど様々なジャンルで使われ、「最も成功したビデオゲームエンジン」としてギネス世界記録にもなってる。

はい、Unreal Engineのバージョン4のことです。ゲームエンジンのことです。

公式
アンリアル・エンジン 4 とは?



使い方全然わかんね


そういったわけで、なんにも操作がわからない状態ですが触っていきます。インストール方法などについては公式の指示通りに落としてくればなんとかなります。

f:id:andron:20180528092034p:plain
C++を完全に理解してしまったのでこんなのができてしまった。ハロワ的なやつしか作ってない。やったことは左上のメッセージ出すだけです。でもこれは一人の人間にとっては小さな一歩だが、人類にとっては偉大な飛躍だから(意味不明)。

よくわかんないなりにいじってみた結果、とりあえずアクタ作っておけばひとまずなんかできるらしいっすね。
ソースコード
MyFirstClass.cpp

#include "MyFirstClass.h"
#include "Engine.h"

// (デフォルト値を設定) 
AMyFirstClass::AMyFirstClass()
{
 	//  (フレーム毎に Tick() を呼び出すようにこのアクタを設定)
        //  (必要がなければパフォーマンスを向上させるためにオフにすることができます)
	PrimaryActorTick.bCanEverTick = true;
}

// (ゲーム開始時またはスポーン時に呼び出されます)
void AMyFirstClass::BeginPlay()
{
	Super::BeginPlay();
	const int32 AlwaysAddKey = -1;
	GEngine->AddOnScreenDebugMessage(AlwaysAddKey, 50.0f, FColor::Red, L"C++完全に理解した");	
}

// (フレーム毎に呼び出されます)
void AMyFirstClass::Tick(float DeltaTime)
{
	Super::Tick(DeltaTime);
}

まったく大したことしてないのに日本語出力が文字化けして小一時間詰みました……。結局文字コードの問題だったから、VSとVSCodeを行き来しながら文字コードUTF-8に対応させるなどという意味わかんない利用をすることでことなきを得た。あと、UE4ググってもほとんどブループリントの話しかでなくて、きつい。というよりもブループリントでやればいいのでは……?まあ、多分今後ブループリントしか使わないと思う。それが触ってみたいがために手を出したところあるからね……。

参考:メッセージ出すやつ
UEngine::AddOnScreenDebugMessage | Unreal Engine



といった感じにUnityと並行してUE4もぼちぼちいじってみようかと思ったのでした。なお、今後C++について突っ込んだことをやっていくかは不明。なんなんだこの記事は……。