auの日記

プログラミング初心者の日記。(auはハンドルネームです)

ゲーム制作のお話をしてみて

auです。

インターン先で「ゲーム制作をどんな順序でやるか」というのを話し合いました。

その際、ゲームのジャンルによってアルゴリズム・必要なアセット・ゲームシステムがあり、初心者は「ドットイート」「ラン&ジャンプ」「パズルゲーム」「ノベルゲーム」がいいと言われ、自分は「ドットイート」のゲームを作ることにしました。

短い内容を少しずつ変えていき、難易度を変えていくのが面白そう、アルゴリズムを考えるのがいい感じかなと感じました。

いい感じのアルゴリズムやゲームシステムが思いつけば、パズルゲームにも挑戦していきたいと思います。

そのあとは、自分が思う世界をゲームで体現してみたいと思っています。

UE4のライティングをWritingだと思ってた

auです。

UE4をいじってたら割と時間が経ってしまっていたので、今回は自分がしていた勘違いを書きたいと思います。

UE4には「Lighting」という、光を表す用語が使われます。

自分は、UE4を日本語で使用しているためカタカナで「ライティング」と表記されています。

ライティングという言葉を聞いて最初に思ったのは「プログラムを書くって感じのWritingなのかな〜」と思っていました。

実際に、ライティングビルドをしている時も、プログラムを上書き保存みたいにしてるのかな〜と思いながら待っていました。

そして最近、調べているうちに、本当の意味のライティングを知ったときに全然違うじゃん…と思いました。

ちなみに、プログラムを書くのはコーディングです。

UE4のレベルとは

auです。

今回は、UE4に出てくる用語の「レベル」について調べました。

RPGのレベル?みたいに思いましたが全然違いました。

レベルとは

レベルとは、メッシュ、ボリュームやライト、ブループリントから構成するステージや面のことです。

まずはじめに、ステージ1読み込み、プレイヤーがステージ1をクリアしたら、次にステージ2を読み込むといった感じになり、それぞれのステージをレベル1、レベル2と言います。

UE4のコリジョンとは

auです。

今回は、よく見かける用語の「コリジョン」について調べました。

コリジョンとは

コリジョンとは、当たり判定のことです。

シューティングゲームなどで、弾が相手にヒットした際にイベントが発生するようにする際の、当たり判定として使われる用語です。

シューティングゲーム以外にも当たり判定は基本的なこととして使うと思うので、今回用語の意味を知れてよかったです。

C言語のint型の配列を初期化しなかったらバグった

auです。

今回は、C言語でint型の初期化をしなかったら痛い目を見たので記事にしようと思います。

こんな感じのプログラムを組みました。
動かす前は、「word = 1」のような感じで結果が返ってくると思っていました。
しかし、実際に動かしてみると全然違う結果が返ってきました。

#include <stdio.h>

int main(void) {
    int count[52];
    char word[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";

    for (int j = 0; j < 52; j++) {
    count[j]++;
        printf("%c = %d\n", word[j], count[j]);
    }

    return 0;
}

// 実行結果
A = 1
B = 1
C = 1
D = 1
E = 1
F = 1
G = 1
H = 1
I = 1
J = 1
K = 1
L = 1
M = -578158376
N = -745510524
O = -347248135
P = 32767
Q = -347248359
R = 32767
S = 2
T = 1
U = -347248319
V = 32767
W = -347248335
X = 32767
Y = -347248383
Z = 32767
a = 169026517
b = 2
c = -347248359
d = 32767
e = 74616833
f = 2
g = -347248335
h = 32767
i = -347248359
j = 32767
k = 169022753
l = 2
m = 1
n = 2
o = 169022025
p = 2
q = 1
r = 1
s = 1
t = 1
u = 1
v = 1
w = 1
x = 1
y = 1
z = 1

結果は悲惨ですごい数になっていたり、1とか2でした。

そこから色々と試しましたが、「int型の配列の初期化」をしたら正常に動かすことが出来ました。

#include <stdio.h>

int main(void) {
    int count[52] = {0};
    char word[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";

    for (int j = 0; j < 52; j++) {
        count[j]++;
        printf("%c = %d\n", word[j], count[j]);
    }

    return 0;
}

// 実行結果
A = 1
B = 1
C = 1
D = 1
E = 1
F = 1
G = 1
H = 1
I = 1
J = 1
K = 1
L = 1
M = 1
N = 1
O = 1
P = 1
Q = 1
R = 1
S = 1
T = 1
U = 1
V = 1
W = 1
X = 1
Y = 1
Z = 1
a = 1
b = 1
c = 1
d = 1
e = 1
f = 1
g = 1
h = 1
i = 1
j = 1
k = 1
l = 1
m = 1
n = 1
o = 1
p = 1
q = 1
r = 1
s = 1
t = 1
u = 1
v = 1
w = 1
x = 1
y = 1
z = 1

今度は思っていたような結果を出すことが出来ました。

初期化をしないとバグる場面ってどんな時なんだろうなと思っていたので、それに巡り会えたので若干嬉しかったです。

Unreal Engine4の画面構成を勉強した

auです。

Unreal Engine4のレベルエディタのインターフェースについて勉強しました。

f:id:program-shoshinsya:20181015232231p:plain

レベルエディタのインターフェースは、開いたときの画面で7つに分かれています。それぞれに番号を降ったので、番号順に解説します。

①メニューバー:ファイルやウィンドウの管理をします
ツールバー:作成したゲームを実行したり、メニューバーより多く使う機能が入っています。
③ビューポート:配置したオブジェクトなどを編集するための画面です。
④モード:エディタ用の色々なツールがあり、新しいオブジェクトをワールドに設置したり、編集をすることができます。
⑤コンテンツブラウザ:このワールドで使用できるオブジェクトなどを管理しているパネルです。ここから③のビューポートにドラッグ&ドロップすることで配置をすることができます。
⑥ワールドアウトライナー:このワールドに配置されているオブジェクトを階層表示でみることが出来ます。
⑦詳細:ビューポートやアウトライナーで選択しているオブジェクトの関数などの情報を閲覧・編集が出来ます。

それぞれの大まかなできることを勉強しました。何も知らずにいじるのと、少しでも知っていていじるのでは、覚える速度が違うと思うので、少しでも活かせればなと思います。

UE4Fest

auです。

本日、UNREAL FEST EAST 2018という、Epic Games Japanが主催する勉強会に参加してきました。

unrealengine.jp

会場では、Unreal Engine4を使って様々なゲームやデザイン、VRゲーム、更にはVTuberなどが紹介されていました。

まだUnreal Engine4については触り始めたばかりですが、どれも興味が引かれるようなものばかりでした。

3つの会場があり、それぞれの会場で、業界関係者の方が約1時間ほど、解説を交えた紹介をしていただきました。

Unreal Engine4を本気でやっているとこんなこともできるようになるのかという期待とやる気をもらえるような、そんな勉強会でした。