Quantcast
Channel: historia Inc –株式会社ヒストリア
Viewing all 984 articles
Browse latest View live

[UE4] Multiplayer Online Deep Dive で講演してきました

$
0
0

先日開催された、Epic Games Japan 様主催の Multiplayer Online Deep Dive で講演してきました。

Deep Dive とは主に Epic Games ライセンシー向けに、実際に商業プロジェクトで UE4 を使っている企業による実践的な深い知識やノウハウを共有する場です。

第一回がライトマス、第二回がマテリアル管理、そして第三回となる今回のお題はネットワークマルチプレイでした。

講演で使用したスライドは既に公開されていますので、ご興味のある方は下記からどうぞ。

 

入門編


 

Traveling 編


 

また、ご一緒した Byking 様、ソレイユ様のスライドも既に公開されています。

合わせてご覧頂ければと思います。

 

Byking 様


 

ソレイユ様


 

 

終わりに

今回初めて講演者側で参加させて頂いたのですが、 Deep Dive の中で発表される内容が貴重な情報というのはもちろんですが、二ヶ月に渡って Epic Games Japan 様、Byking 様、ソレイユ様と会社間の垣根を超えて情報共有しつつ検証を行っていた期間が非常に充実したものであり、Deep Dive で発表した内容以上に多くの知見を得ることができました。

この場を借りて、お誘い頂いた Epic Games Japan 様、並びに Byking 様、ソレイユ様、会場をお貸し頂いたドリコム様にお礼を申し上げたいと思います。

 

今後も引き続き Deep Dive は開催されていく予定で、講演者は随時募集しているとのことです。

会社間の垣根を超えた情報共有と、Epic Games Japan 様によるサポートはとても多くの知見を得ることができます。

もしご興味のあるライセンシーの方は、Epic Games Japan 様にご連絡頂ければと思います。


[UE4] UE 4.16 の新機能!Animation Modifier について

$
0
0

UE4.16 で追加された新機能『Animation Modifier』について解説します。

Animation Modifier (以下、Modifier と呼びます) は、Animation Sequence (以下、Sequence) に対して追加・適用することで、Sequence の内容に合わせて自動的に Animation Notify (以下、Notify)、Animation Notify State (以下、Notify State)、Curve、Virtual Bone などの情報を追加・編集・削除することができる機能です。

例えば、「特定の Bone の Z 値が最小となる部分に Notify を追加する」ような Modifier を作成し、歩行 Sequence に適用すれば、足が接地するフレームに Notify を自動追加することができるので、足音の実装が簡単になります。

また、適切に処理を記述すればの話ですが、Modifier の取消・削除で適用前の状態に戻すことができるので、実質的な非破壊編集が可能となります。

なお、この機能は早期アクセスプレビューという位置付けのため、今後のアップデートで仕様が変更される可能性があります。ご注意ください。

Modifier 作成から適用までの流れ

Modifier の新規作成

Content Browser → Add New → Blueprint Class と選択し、Parent Class として AnimationModifier を指定して作成します。

Event OnApply、Event OnRevert の実装

作成した Blueprint にて、Event OnApply と Event OnRevert の処理を実装します。

OnApply には、Sequence に対して行いたい処理を記述します。先の足音の例では、「特定の Bone の Z 値が最小となる部分に Notify を追加する」が OnApply の処理となります。

OnRevert には、OnApply で行った処理をすべて取り消す処理を記述します。OnApply で追加した Notify は削除する必要がありますし、逆に Notify を削除した場合は復元する必要があります。

Modifier 適用時には、OnApply に先立って OnRevert が呼び出されます。これは、Modifier を何度適用しても処理が一回分となることを保証するためです。そのため、OnRevert は OnApply が一度も呼び出されていない状況でも正常に動作することが求められます。また、取消処理は何度も呼び出される可能性があるため、OnRevert は連続で複数回呼び出しても正常に動作することが求められます。更に、Sequence には同じ種類の Modifier を複数追加・適用することが可能なので、OnRevert は同じクラスの別の Modifier の適用結果に対して意図しない影響を及ぼさないことが求められます。アクセス違反を起こしたり、追加したもの以外のものを削除したりしないように注意して作成する必要がありますが、前述した「実質的な非破壊編集」を実現するために大切な部分となります。

なお、Sequence に対する情報の追加・削除・取得 などの操作は、Animation Blueprint Library として提供されています。

Modifier の追加・適用

Event の記述が終わったら、Sequence に対して Modifier を追加します。

Sequence を開き、Window → Animation Data Modifiers を選択すると、Modifier 関連の操作を行うことができるパネルが表示されます。このパネルで Modifier の追加 (Add)・適用 (Apply)・取消 (Revert)・削除 (Remove) を行うことができます。

Add Modifier から先ほど作成・編集した Modifier を選択して追加し、右クリック → Apply Modifier で適用します。

Modifier 名に『(Out of Date)』と表示されている場合は、その Modifier が未適用であることを示しています。

Apply All Modifier ボタンでリスト内のすべての Modifier を一括で適用することができますが、このときの適用順はリストの上からとなるようです。Modifier の処理内容によっては適用順で結果が変わることがありますので、先に適用したいものは 右クリック → Move Up でリストの上に持っていきましょう。

なお、Skeleton を開いているときにも Animation Data Modifiers パネルを表示させることができます。このパネルで Modifier を適用すると、Skeleton に紐づくすべての Sequence に対して Modifier を一括適用することができます。

Modifier の作成例

実例として、以下のようなロボットダンスのアニメーションに対して動作音を自動で付加する Sequence を作成したいと思います。

まずは、Modifier で追加する Notify State を作成します。この Notify State は、NotifyBegin で動作音の再生を開始し、NotifyEnd で動作音の停止と停止音の再生を行うというものです。

// AnimNotifyState_OperatingNoise.h

#pragma once

#include "CoreMinimal.h"
#include "Animation/AnimNotifies/AnimNotifyState.h"
#include "AnimNotifyState_OperatingNoise.generated.h"

UCLASS(EditInlineNew, Blueprintable, const, hidecategories = Object, collapsecategories, meta = (ShowWorldContextPin, DisplayName = "OperatingNoise"))
class TEST_ANIMMODIFIER_API UAnimNotifyState_OperatingNoise : public UAnimNotifyState
{
GENERATED_BODY()

public:
virtual void NotifyBegin(USkeletalMeshComponent * MeshComp, UAnimSequenceBase * Animation, float TotalDuration) override;
virtual void NotifyEnd(USkeletalMeshComponent * MeshComp, UAnimSequenceBase * Animation) override;

UFUNCTION(BlueprintCallable)
void Init(FName BoneName, USoundBase* LoopSound, USoundBase* StopSound);

UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "AnimNotify")
FName BoneName;

UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "AnimNotify")
class USoundBase* LoopSound;

UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "AnimNotify")
class USoundBase* StopSound;

private:
class UAudioComponent* AudioComponent_LoopSound;
};

// AnimNotifyState_OperatingNoise.cpp

#include "AnimNotifyState_OperatingNoise.h"
#include "Runtime/Engine/Classes/Components/AudioComponent.h"
#include "Runtime/Engine/Classes/Kismet/GameplayStatics.h"

void UAnimNotifyState_OperatingNoise::NotifyBegin(USkeletalMeshComponent * MeshComp, UAnimSequenceBase * Animation, float TotalDuration)
{
AudioComponent_LoopSound = UGameplayStatics::SpawnSoundAttached(LoopSound, MeshComp, BoneName, FVector(ForceInit), EAttachLocation::KeepRelativeOffset);

Received_NotifyBegin(MeshComp, Animation, TotalDuration);
}

void UAnimNotifyState_OperatingNoise::NotifyEnd(USkeletalMeshComponent * MeshComp, UAnimSequenceBase * Animation)
{
if (AudioComponent_LoopSound)
{
AudioComponent_LoopSound->Stop();
}
UGameplayStatics::SpawnSoundAttached(StopSound, MeshComp, BoneName, FVector(ForceInit), EAttachLocation::KeepRelativeOffset);

Received_NotifyEnd(MeshComp, Animation);
}

void UAnimNotifyState_OperatingNoise::Init(FName BoneName, USoundBase* LoopSound, USoundBase* StopSound)
{
this->BoneName = BoneName;
this->LoopSound = LoopSound;
this->StopSound = StopSound;
}

この Notify State は Blueprint ではなく C++ で作成しています。Blueprint で override できる Received_NotifyBegin は const 関数になっており、Received_NotifyEnd において動作音の停止処理のために必要となる AudioComponent の参照を、メンバ変数として保持することができないためです。C++ では、内部的に Received_NotifyBegin を呼び出している非 const 関数 NotifyBegin を override することができるので、こちらを使っています。もちろん、このような事情がない限りは Notify State の作成に C++ を使う必要はありません。

Notify State の作成が終わったら、Modifier を新規作成し、Event の処理を記述します。

OnApply では、指定した Bone が回転しているフレーム区間に Notify State を追加する処理を行っています。

最初に AddAnimationNotifyTrack 関数を利用して Notify Track の追加を行っています。この Track に対して Notify State を追加していくことにします。この Modifier が Sequence に複数追加された場合に、同一の Notify Track に対して適用・取消処理が行われないようにするため、Notify Track 名に Modifier の Object Name を含めて区別できるようにしています。

Notify State の追加は AddAnimationNotifyEvent 関数を利用して行っています。この関数は引数として TSubclassOf<UAnimNotifyState> を取って Notify State を追加するものですので、返却値の型は追加した Notify State を指す UAnimNotifyState * であることが望ましいと思うのですが、実際に返却されるのは何故か UAnimNotify * となっています (UAnimNotify と UAnimNotifyState はどちらも UObject を直接継承しており、両者間での継承関係はありません)。UAnimNotifyState* を返してくれるのであれば直後に Notify State のプロパティ変更などを行えるのですが、そうなっていないので、Notify State の追加が一通り終わった後で Notify Track を走査し、Notify State のプロパティ変更関数を呼び出しています。

OnRevert では、Notify State を Notify Track ごと削除しています。本当は追加した Notify State の参照を保存しておいて、それらのみを削除する方が正確だと思われます。

作成した Notify State を Sequence に追加・適用・取消してみた様子が以下の動画です (音が出ます)。

Animation Modifier を利用すると、今まで手動で行っていた作業の一部を自動処理することができ、作業時間の短縮やヒューマンエラーの発生抑制が期待できます。うまく活用していきましょう。

[UE4] UMGのアニメーションで変数のトラック作成!

$
0
0

 

UMGにはAnimationという機能がありTimeline上でトラックを作成し、Widgetのパラメータを操作したりイベントに通知することができます。

UE4.16からMaterialParameterCollection(以下MPC)のトラックも作成できるようになり、MPCを使っているマテリアルなどにUMGのAnimationからパラメータを渡すことができるようになりました。

しかし、MPCを使う場合MPCを使っているすべてのクラスに影響してしまい、インスタンスごとにパラメータを操作することができません。

Widgetのパラメータをブループリントやマテリアルに渡して操作することも可能ですが、本来の用途と異なるのであまりやりたくない…

 

そこで今回はAnimationで変数のトラックを作成し、複数のWidgetに個別でパラメータを渡す方法を紹介していきます。

まずはWidgetクラスを継承したクラスを作成します。

今回はImageクラスを継承したクラスを作成しました。

 

次に、作成したクラスの中で任意の変数を定義し、”Expose to Cinematics”を有効にします。

クラスの型など”Expose to Cinematics”の項目がない型はトラックを作成できません。

 

Widgetクラスを継承したクラスを作成するとUMGのPalette内に作成したクラスがあるので、UMGのDesigner内に配置します。

 

AnimationのTimelineに配置したWidgetを登録し、配置できるトラック一覧を見ると先程クラス内で定義した変数のトラックが

作成できるようになっています。

 

あとは変数の値を処理したい部分に渡すだけです。

Widgetの他のパラメータと組み合わせて使う場合に便利だと思います!

また、RetainerBox Widgetと組み合わせて使えば更に表現の幅が広がりそうです。

是非使ってみて下さい!

 

◯まとめ

・Widgetクラスを継承することでカスタムWidgetが作成可能

・カスタムWidgetに追加した変数は”Expose to Cinematics”を有効にすればAnimationのTimeline上にトラックを作成可能

Unreal Engine 4作品コンテスト、第8回ぷちコンを8月6日(日)より開催決定!

$
0
0

 

この度ヒストリアは第8回ぷちコンを「2、3日でサクッと作ってサクッと応募」をコンセプトに開催します!

ぷちコンとは、株式会社ヒストリアが主催するゲームエンジン「UnrealEngine4」の学習を目的とする一般参加型ゲームコンテストです。参加者は短期間(約1か月)でテーマに沿った作品を制作・投稿し、入賞を目指します。

本コンテストは「UE4の学習」を目的に行っています。学習目的なのでプロもアマチュアも関係ありません!気になっている皆さん、ぷちコンに応募してUE4を覚えちゃいましょう!そしてこの第8回UE4ぷちコンを開催するにあたり、ファウンドリ様・MODO JAPAN グループ様のご協賛により3Dモデリングソフト「MODO」の3カ月無償ライセンス発行が決定いたしました!申し込みは本日より開始しておりますので、ぷちコンのテーマ発表がされる前にMODOを触ってぷちコンに備えよう!

MODOとは・・・
MODOはゲームやバーチャルリアリティといったリアルタイム系のアセット制作やコンセプトデザイン、映像制作、さらには建築パースやプロダクトデザイン、微細なディテールまで求められるプロダクトの製造など、ハイエンドなモデリングから、UV、リギング、3Dペイント、スカルプティング、アニメーション、レンダリングに至るまで、ユーザーへより快適、かつ効率的な3D制作環境を提供する統合型の3DCGアプリケーションです。

MODOお申込みはコチラから↓
http://modogroup.jp/regist/petit_con_08
コンテストテーマ・開催概要は8月6日に開催される「出張ヒストリア!UE4勉強会」の中で発表いたします!

※UE4ぷちコンはご協賛いただける企業様を募集しております。
詳細は下記よりお問い合わせください。
株式会社ヒストリア (info@historia.co.jp)

 

【告知サイト】 http://historia.co.jp/ue4petitcon08 (8月6日公開)
【主催】 株式会社ヒストリア
【協賛】 エピック・ゲームズ・ジャパン
FOUNDRY
MODO JAPAN グループ

[UE4]”OpenAsset”を使ってみよう

$
0
0

これが今回の主役、”Open Asset”です。

Assetピンにオブジェクトを指定してエディタ上で実行すると、そのアセットが開きます。MeshもLevelもSeaquencerも何でも開きます。

元々はエディタのチュートリアルで使用されるノードらしいのですが、エディタ上でカスタムイベントを実行できるBlutilityと組み合わせて、プチエディタ拡張的な、ちょっとオモシロい使い方をしてみようと思います。


Blutility機能を有効にする

“エディタの環境設定”→”Editor Utility Blueprints(Blutility)”をオンにして、Blutility機能を有効にします。

Blutilityについての詳しい説明はこちら↓の記事を御覧ください。(ざっくり言うと、エディタ上でBlueprintのカスタムイベントを実行できる機能です。)

■公式フォーラム(英語)
http://unrealengine.hatenablog.com/entry/2016/10/05/215937

■alweiさんのblog(日本語)


Blutilityを作成

1.”ブループリント”→”ブループリントユーティリティ”を押下

2.”GlobalEditorUtilityBase”を選択

3.ダブルクリックではなく、アセットを右クリック→”ブループリントの編集”でブループリントを開く

4.処理を組む

下図のように、指定したスケルタルメッシュにアサインされているマテリアルを全て開く処理を組んでみます。

カスタムイベントのプロパティの“エディタで呼び出す”をオンにしておいてください。


作成したBlutilityを実行する

一度Blueprintを閉じて、今度はダブルクリックで開いてください。

動画だとちょっと分かりにくいかもしれませんが、

スケルタルメッシュを指定しカスタムイベントを実行すると、そのメッシュにアサインされているマテリアルが一度に開きます。

 

うまく応用すれば、作業の効率化を図れるかもしれません。是非試してみてください!

オフィスを移転しました!

$
0
0

こんにちは、広報です。

 

この度事業拡大につき、オフィスを下目黒から五反田へお引越しいたしました!

新オフィスは以下の住所です。

〒141-0032
東京都品川区大崎5-6-2 都五反田ビル西館8階

※電話番号は変更ありません。

 

下目黒オフィスに移転した当時はメンバーも10名ちょっとだったのが今では25名となり、とても賑やかになりました!

ここまでヒストリアとして順調に成長してこれたのは、取引先の皆様、そして応援していただいている皆様のおかげです。

本当にありがとうございます。

簡易的ではありますが、このブログで新オフィスのツアーをしたいと思います!

 

こちらが新しいエントランスになります。

取引先の皆様素敵なお祝いをありがとうございます!

 

エントランス左側のドアを開けるとメイン会議室です。

開発室は60名まで入る広さになりました!

バーカウンターとみんなでご飯を食べながら交流するスペースです。

代表・佐々木がご飯をこぼしても大丈夫な床です!(前のオフィスでは魚の煮物をこぼして床にシミを作ってました。)

今回一番目玉となるセミナースペースです!

ここも60名まで入ります。自社内でセミナーが開ける日が来るとは・・・!

巨大なスクリーンでゲームし放題ですね( ◠‿◠ )

 

本日はこのセミナールームで新オフィス営業開始を祝ってみんなで宴会です。

※さすがにジュースです。

 

今回紹介したほかにも会議室はあと2つ、社員用のリフレッシュルームもあり、これからこのオフィスで仕事をしていくのが楽しみですね!

それでは、最後に代表・佐々木のご挨拶です。

====================================================

2013年10月に設立し、最初は8畳ほどのオフィスで始めた会社が、いまでは25名の仲間と4つ目のオフィスに移転することが出来ました。
これもひとえに、取引先の皆様、そして応援いただいているコミュニティの皆様のおかげです。ありがとうございます。
今回は少し背伸びしたオフィスを構えましたが、中身も伴うように良いコンテンツと良い会社づくりに励んでまいります。
今後ともご指導ご鞭撻のほどよろしくお願いいたします。
オフィスはまだところどころ整え中ですが、ぜひお気軽にお立ち寄りいただければと思います。

株式会社ヒストリア
代表取締役 佐々木 瞬

====================================================

 

それでは、今後ともヒストリアをよろしくお願いいたします!

 

[UE4] Preview Scene Settingsでモデルのプレビューにひと工夫!

$
0
0

こんにちは。UE4初心者の浅井です。
前回に引き続き、UE4を触り始めた皆さんに役立つtipsをご紹介していきます。

今回はEditer画面での作業に便利な「Preview Scene Settings」の「Add Profile」についてご紹介します!
Editer画面の左上「▼」マークから、「Preview Scene Settings」を選択すると……

 

↓の画像のように、右のリストに設定タブ「Scene Profile Setting」が表示されます。
さらにその下に「Default」と書かれたボックスと、その横に「Add Profile」「Remove Profile」があります。


ここで「Add Profile」のボタンをクリックすると
「Default」のボックスがプルダウンになり、2つ目の項目「Profile_2」ができます。

「Default」「Profile_2」は別設定として記録することができ、「Scene Profile Setting」の内容を分けておくことができます。
Add Profileをクリックことで、この項目をいくつも増やすことができます。


増えた項目を消したいときは、該当の項目を選んで「Remove Profile」をクリックすることで消去できます。

 
このSettingsでは、背景をOFFにしたり、ライティングを変えたり
背景を変更したり、ライティングのカラーを変更することができたりしてイロイロ便利です。

 
Directional Light Intensityとその下のDirecrional Light Colorの数値を増減させることで全体の色合いを追加することもできます。

 

Sky Light Intensityを増減させることで、ライティングも調整することができます。

 

Show Environmentのチェックボックスから背景のON/OFF
Environment Cube MapからTextureCubeを読み込むことで、背景を変更することもできます。

 

さらに、Settingsの下部にある「▼」をクリックするとPost Processの設定タブが開きます!
上級者の皆さんはこちらも有用ではないでしょうか。

 

ちょっとした調整で、違いを比較したい時などに活用すると便利かと思います。
ぜひぜひ使ってみてくださいね!

[UE4] BPノードのピンを自作する

$
0
0

ブループリントを使用してる方ではあればこのような少し変わったピンを見たことがあるのではないでしょうか?

[GetInputAnalogKeyState]

指定のキー(またボタン)のアナログ値を返す関数

[HasTag]

TagContainerの中に指定のタグが含まれてるかを判定する関数

例に上げたものはそれぞれ[FKey][FGameplayTag]という構造体で定義されてるものですが、普通に作成しただけでは画像のようなピンは表示されないのですが
少しだけC++を使用することで専用ピンが作ることが可能なので今回はそれの紹介をしたいと思います。まずは[FKey]のようなクリックされたら選択できる候補がリスト上に表示されるようにしてみたいと思います。
それでは早速実装してみたいと思います。

 

実装1:構造体を定義する

まずはピンをカスタマイズするとき使用される構造体をRunTimeモジュールで定義します。
今回は例としてuint8の変数1つを所持した構造体を定義しました。



もちろんこれを使用してもピンは普通の構造体と変わりません。

 

実装2:ピンの作成をする

ピンの編集にはSGraphPin(Engine\Source\Editor\GraphEditor\Public\SGraphPin.h)というクラス継承することで専用のウィジェットを作成することができます
ただしエディタ時のみに使用するクラスなので、プロジェクトのエディタモジュール側に定義します。
ちなみにエディタモジュールの実装に関してはこちら(http://historia.co.jp/archives/3097)の記事を参考にして下さい。

実装3:ファクトリクラスを使用してピンを登録する

次に先程作成したピンをFGraphPanelPinFactory(Engine\Source\Editor\UnrealEd\Public\EdGraphUtilities.h)を継承したクラスで生成するようにします。
これもエディタ時のみに使用するクラスなので、プロジェクトのエディタモジュール側に定義します。

そして作成したクラスをモジュールで登録をします。


以上で終了になります。では実際に見てみましょう

 

今回はBPノードピンの編集を行いましたが変数化した場合など詳細画面で表示された値は以前のままByteとして表示されてしまいます。また機会があれば今度は詳細画面で表示される値を編集してみたいと思います。
最後まで読んでいただきありがとうございました。


『第8回ぷちコン』に向けて、ビルドやシェーダーコンパイルを分散処理*できるIncrediBuildのライセンス無償提供が決定!

$
0
0

先日開催を発表いたしました「第8回UE4ぷちコン」ですが、MODO JAPAN グループ様に引き続きインクレディビルドジャパン様より分散処理*によりビルドやシェーダーコンパイル時間を短縮する「IncrediBuild」の期間限定無償ライセンスの提供が決定いたしました!
スタンドアロンの環境でも複数coreを使用した並列処理や、並列処理のモニタリング機能をご利用いただけます。

今回は先着60名様限定! 

申し込みは本日より開始しておりますので、早い者勝ちです!
こんなにたくさんのツールが無料で使えるのはUE4ぷちコンだけ!この機会にぜひご参加ください!

IncrediBuildお申込みページはコチラから↓

https://goo.gl/gmnjCq

IncrediBuildとは・・・

IncrediBuildは、ソフトウェア・アクセレーション・テクノロジーを牽引するソリューション・プロバイダーです。IncrediBuildはプライベートやパブリックのクラウド環境で未使用の処理能力を活用し、Windowsベースのコンピュータソフトウェアを高速化します。もちろんIncrediBuildは簡単に導入、移行が可能です。独自プロセスによる仮想化技術により、IncrediBuildはコード・ビルド高速化の業界標準のソリューションとなっています。IncrediBuildは現在20社のフォーチュン100企業を含む2,000社を超える企業や組織の10万を超えるユーザーにご利用いただいております。
【第8回UE4ぷちコン告知サイト】 http://historia.co.jp/ue4petitcon08 (8月6日公開)

【主催】 株式会社ヒストリア
【協賛】 エピック・ゲームズ・ジャパン
FOUNDRY
MODO JAPAN グループ
インクレディビルドジャパン株式会社

コンテストテーマ・開催概要は8月6日に開催される「出張ヒストリア!UE4勉強会」の中で発表いたします!

出張ヒストリア!UE4東京勉強会のお申込みはコチラ※残り枠あとわずか!お申し込みはお早めに!!
https://atnd.org/events/89177

初開催!! UE4ぷちコン ゲームジャム開催のお知らせ

$
0
0

8月6日(日)~9月18日(月)にUnreal Engine 4作品コンテスト 第8回UE4ぷちコン の開催を発表いたしました!

過去7回にわたって開催いたしました「UE4ぷちコン」ですが、おかげさまで回数を重ねるごとに応募作品も増え、UE4ユーザーが着々と増えていることを実感しております。
そして今回、初めてこのコンテストと絡めたゲームジャムを開催することとなりました。本イベントでは、即興で数人のチームを組み、2日間かけてぷちコン用ゲームを制作いたします。
コンテストに初めて参加する方、常連の方、どなた様もぜひご参加ください!

参加費無料!夕食付き!

 

お申込みはコチラからどうぞ!※先着20名(8月7日より募集開始)

【9/9-9/10(土・日)】第8回UE4ぷちコン ゲームジャム

 

スケジュール

9月9日(土)

時間 内容
10:30-11:00 集合(弊社セミナー室)
11:00-11:30 ゲームジャム概要説明・会社設備説明
11:30-18:30 ゲーム制作(休憩は各自自由)
18:30-20:00 夕食(弊社社内) ※弊社でご用意いたします。

9月10日(日)

時間 内容
10:30-11:00 集合(弊社セミナー室)
11:00-17:00 ゲーム制作(休憩は各自自由)
17:00-18:30 ゲーム発表会
18:30-20:00 夕食(弊社社内) ※弊社でご用意いたします。

場所

株式会社ヒストリア 内 セミナールーム
住所: 〒141-0032
東京都品川区大崎5-6-2 都五反田ビル西館8階

持ち物

  • PCは弊社でも用意いたします。ご自身のPCをお持ち込みいただいても構いません。
  • その他ゲーム制作に必要になりそうなもの
    (Oculus Rift/touch、HTC Vive、ゲームパッド等は弊社にもご用意はございますが、数に限りがございます。ご用意いただける方はぜひお持ちください)

注意事項

  • 自動車、自転車でのご来場は出来る限りご遠慮ください。会場は駐輪場・駐車場のご用意はしておりません。ご利用の場合は、公共の施設をご利用ください。
  • 会場内は禁煙となっております。喫煙の際は喫煙所をご利用ください。
  • 休憩・昼食は各自合間を見てお取りください。会場内は飲食可能ですが、会場を汚す可能性のあるもの・刺激臭のあるものの持ち込み、出前の発注はご遠慮ください。
  • 弊社以外のフロアへの立ち入りはご遠慮ください。
  • 開場時間(10:30)より前は会場に立ち入ることができません。
  • 20:00以降の会場への居残りは原則として受け付けておりません。

第8回UE4ぷちコン 開催概要

http://historia.co.jp/ue4petitcon08

運営

株式会社ヒストリア ( Twitter公式アカウント )

 

ProCEDEC2017開催のお知らせ

$
0
0

開催まで1カ月を切ったCEDEC2017

皆さん参加登録は済みましたか?

 

今年のセッション情報も続々と公開され、どれも魅力的な内容でわくわくしますね!

そして毎年CEDEC最終日に行われるプログラマ向け意見交換会を、今年は株式会社ヘキサドライブ 斎藤さんに代わりまして、弊社代表の佐々木が幹事を任されることになりました。

詳細お申込みは下記からお願いします。

ぜひみなさんご参加下さい!

 

================================

今月末に開催されるCEDEC。今年は任天堂さんの初参加でも話題になっていますね!
CEDEC最終日の夜に開催される、恒例のプログラマー飲み会「ProCEDEC」を今年も開催いたします。
鉄は熱いうちに打て、ということで、CEDECのネタがもっとも新鮮なうちに、プログラマー同士で語り合いましょう!
プログラマーの皆さんの参加をお待ちしております。
佐々木 瞬

================================

 

【9/1(金)】ProCEDEC2017
http://peatix.com/event/274607

 

そのほか、アーティストとテクニカルアーティスト向けの「Artists Meets Technicals 2017」もすでに募集を開始しています。

 

毎年恒例の交流会もただいま開催準備中ですので、CEDECに参加される方はぜひ下記ページをチェックしてみてください!

「CEDEC非公式懇親会2017(裏CEDEC他) ‪#‎nomic‬」

 

 

[UE4] [UMG]キャンバス内のウィジェットを動かす

$
0
0

UMGで配置したウィジェットを動的に動かしたい/位置を取得したい場合があると思います。
この操作は「スロット」を介して行います。

 

ウィジェットを任意の位置へ置くにはCanvasPanelを用います(CanvasPanelはWidgetBPを新規作成した時点で配置されています)。

CanvasPanel上に置かれたウィジェットの配置情報はそのウィジェットの持つCanvasPanelSlotに保持されています(スロットの種類は親パネルの種類によって変わります)。

 

ウィジェットの参照からSlotAsCanvasSlotを引き出すことでこれを参照できます。

 

CanvasPanelSlotからGetPosition/SetPositionとすることで位置の取得/設定が行えます。

 

 

Get/Set ができれば、あとはやりたい放題ですね。

↓キー入力でねこちゃんを動かしてみました。

UMGの複数のパネルでUVスクロールを行うマテリアル

$
0
0

 

こんにちは!テクニカルアーティストの黒澤です。

上記のGIFアニメの様に、UMGの複数のパネルで画像をスクロールさせる方法について解説します。
こちらは複数のウィジェットで共通のマテリアルを使用しています。マテリアルの内容は以下のようになっています。

マテリアルの内容を解説します。

UVを作る

画面の縦横比でテクスチャのサイズを補正」のコメントの部分です。

画像を斜めに動かすには、いわゆるUVスクロールを行えばいいのですが、UMGのパネルで普通のUVを使用するとパネルの大きさがUVのおおきさになってしまいます。今回は画面を基準に画像が複数枚並ぶようなUVが欲しいので、ScreenPositionからUVを作ります。
ScreenPositionというノードは画面の左下がR0G0、右上がR1G1が出力されるノードです。こちらをUVに使用したいのですが、そのままでは画面の比率に左右されてしまうため、R(縦)を画面の横の比率で、G(横)を画面の縦の比率で割ります。これで縦横の幅が均等なUVとして使えます。

調整機能をつける

「繰り返し回数を指定」と「スクロールスピードを調整」のコメントの部分です。

「繰り返し回数を指定」の部分では、繰り返し回数を変更できるようにUVの値に変数ImageScaleをかけています。

「スクロールスピードを調整」の部分では、UVスクロールを行う部分です。UVスクロールを行うには、時間に応じてUVの値を足していけばいいので、Timeに変数Speedを掛けて速度をコントロールし、UVに当たる項目にAddします。

 

なるべく丁寧に解説してみましたがいかがでしたでしょうか?
マテリアルでUVを作ることで自由な表現ができますので、ぜひ試してみてください!

[UE4] 文字列FString操作まとめ

$
0
0

UE4では文字列を扱うクラスとしてFString/FText/FNameの3つが用意されています。公式ドキュメント

このうちFStringは文字列を結合させたり置き換えたりなどの操作を想定したクラスとなっており、それらの操作のために非常に多くのブループリントノードや、関数が用意されています。

今回はそのFString用に用意された機能を紹介していこうと思います。(多いので徐々に追記していきます)

 

ノード

説明

文字列結合 挿入

文字列を結合して1つの文字列にする
AddPinをクリックで引数を最大25個(アルファベット順でY)まで増やすことが出来る
元の文字列(Append To)に引数を文字列にキャストしたものを追加できる

Return Valueは Append To + Prefix + キャスト結果 + Suffix
型名の候補は boolean / color / float / int / Int Vector / name / object / rotator / vector / vector2d

Source ArrayのStringの配列を結合して1つの文字列にする

Separetorに指定した文字が配列の各要素の間に挿入される

Ch Countで指定した文字数になるようにSource Stringの終端に半角スペースを挿入する

Source Stringの文字数以下のCh Countを指定するとそのままSource Stringが返る

Ch Countで指定した文字数になるようにSource Stringの先頭に半角スペースを挿入する

Source Stringの文字数以下のCh Countを指定するとそのままSource Stringが返る

分解・削除 文字列を部分的に取得

Source Stringの終端からCountの数だけ文字列を取得する
Source Stringの先頭からCountの数だけ文字列を削除する

例 : Source String = “AAABBBCCC” で Count = 3 とすると “BBBCCC” が返る

Source Stringの先頭からCountの数だけ文字列を取得する
Source Stringの終端からCountの数だけ文字列を削除する

例 : Source String = “AAABBBCCC” で Count = 3 とすると “AAABBB” が返る

Source Stringの先頭から数えてStartで指定した文字数の位置からCount分の文字列を取得する

例 : Source String = “AAABBBCCC” で Start = 3 Count = 3 とすると “BBB” が返る

Find Substringと一緒に使うと特定の文字列のみ取得するのに便利

引数の名称が異なるが、Midと同じ挙動
Delimiterで指定した文字によってSource Stringを分割し、配列にして返す

csvなどのデータを , で区切るとセルごとのデータの配列になるので便利

Source Stringを1文字ずつに分解して配列にする
Source StringをIn Strの見つかったところから右側と左側に分けて返す

Search Dirで指定した方向から検索し、一番初めに見つけたところから分割する

文字列のうち前半部分の空白を除去する

例 : ”  AAA  “は”AAA  “となる

文字列のうち後半部分の空白を除去する

例 : ”  AAA  “は”  AAA”となる

検索

  Search In の中からSubstringの文字列を検索する

見つかると-1以外の数が返るため、見つけたかどうかの判定は返り値を!=-1で評価して使う

Use Case : 大文字小文字を判断するかどうか

Search from End : 文字の終端から検索をするか

Start Position : 検索開始位置先頭(または終端)から指定分の文字数のところから検索を開始する

   Substringの文字列がSearch Inの中に含まれているかどうかを返す
   *と?を用いたワイルドカード形式で文字列を検索する

*は何らかの文字列(長さ不定)として扱い、?は何らかの1文字として扱う

Source Stringの先頭にIn Prefixの文字列があるか調べる
   Source Stringの終端にIn Suffixの文字列があるか調べる

 

FBXインポートのマテリアルの新機能

$
0
0

こんにちは。テクニカルアーティストの黒澤です。

以前、FBXのインポートについて記事にしたのですが、UE4のアップデートによりずいぶん機能が拡張されました。今回はアップデートにより加わったマテリアルのインポート設定について書こうと思います。

公式サイトでは以下のページに記載されています。
FBX インポート オプションのリファレンス

 

このアップデートにより、FBXファイルをインポートする際にベースマテリアルが設定できるようになりました。
新規にオブジェクトをインポートすると、オブジェクトのマテリアル名に合わせたマテリアルインスタンスが自動的に生成さます。また、同名のマテリアルがすでにプロジェクト内にある場合にはそちらが割り当てられます。アセットごとに専用のマテリアルを毎回作るということは工数的にも負荷的にも現実的ではなくインスタンスになるケースが多いので、実用に即した非常に使える機能だ思います。

ベースマテリアルの設定

ベースマテリアルは以下のように設定しました。ベースカラーとノーマルにちょっとした調整機能をつけておきました。

新規アセットを読み込む

SK_MannequinをUE4から書き出し、Mayaで頭を付け替え新規マテリアルを割り当てます。このさい頭以外のマテリアル名はSK_Mannequinのままにしておきます。

インポート設定は以下のようにしました。BaseMaterialNameにBT_Baseを設定すると、それぞれのPropertyのスロットにマテリアルが持つパラメーター名を選択できるようになります。
(ちなみにマテリアルごとにどのようなパラメーター名を設定したかは保存されますので再設定不要です)

UE4に読み込んだ結果がこちらになります。
MI_NekoHeadという新規のマテリアルはBT_Baseのインスタンスとして作られました。M_UE4Man_ChestLogoとMI_NekoHeadは、SK_Mannequinのマテリアルとしてすでにプロジェクトに入っているマテリアルがそのまま割り当てられます。

欠点

非常に便利な機能なのですが(FBXの仕様のために)いくつか残念な点もあります。

ますは元になっているFBXのマテリアルの仕組みがPBRを前提にしていないことです。マテリアルにテクスチャを接続してインポートできる要素がBaseTexture、BaseNormalTexture、BaseEmissiveTexture、BaseSpecularTextureの4枚で、MayaのPhonegシェーダーではそれぞれカラー、バンプマッピング、スペキュラカラー、白熱色にあたります。これはPBRの見た目とは大きく異なります。

また、それぞれの要素が別のテクスチャになっているのでデータ効率的が悪くなります。Mayaの見た目を犠牲にして統合したテクスチャをなにかのスロットに使用すれば問題ないのですが、ますますMayaの見た目がUE4と異なってしまいます。

 

マテリアルの順番を固定する方法

 

FBX マテリアル パイプライン

上記のドキュメントに「4.14 時点で、マテリアルの順序を指定するためのSkin##の命名規則は不要になりました。」と書かれています。

これはマテリアルスロットにソースデータのマテリアル名が割り当てられるようになったため、再インポートのたびにエレメント番号が変わらないということを言っているのだと思います。しかし再インポートでなくとも、アセットのエレメント番号を揃えておきたいことはあります。

たとえばキャラクターモデルが複数のマテリアルを持ち、特定のエレメントのマテリアルにだけ処理を加えたいときなどは、Skin##の命名規則はまだ有用です。以前の検証ではSkin##をつけたマテリアルはマテリアル名が強制的に6文字になってしまうために、いまいち使いにくいという結論になりました。

こちらのマテリアルの命名の条件もアップデートで変わっていたので再検証してみます。

 

Mayaで以下のデータを用意しました。

マテリアル名は番号順に以下のようにつけました。

  1. IceCreamMaterialChocolate_skin01
  2. IceCreamMaterialMint_skin02
  3. IceCreamMaterialUjiGreenTea_skin03
  4. IceCreamMaterialMangoSolve_skin04
  5. IceCreamMaterialRamuneSoda_skin05
  6. IceCreamMaterialStrawberry_skin06
  7. IceCreamMaterialVanilla_skin07
  8. IceCreamMaterialGrapeSoda_skin08
  9. IceCreamMaterialBloodOrange_skin09

せっかくなのでネコちゃんとおなじように、マテリアルインスタンスを生成して読み込んでみました。ベースマテリアルは以下になります。

インポート設定はこのようにしました。

インポートした結果、マテリアルのエレメントは以下の順番になりました。
_Skin##で指定した通りの順番にエレメントが並んでおり、マテリアル名が欠けることもなくなっていますね!

保存


第8回UE4ぷちコン ゲームジャムにたくさんのご応募ありがとうございました!

$
0
0

こんにちは

広報ですよ

 

 

先日の出張ヒストリア!UE4勉強会2017で発表いたしました「第8回UE4ぷちコン ゲームジャム」ですが、たくさんの方に参加ご応募いただき誠にありがとうございました!!

定員になりましたので、ただいまを持ちまして応募を締め切らせていただきます。

【9/9-9/10(土・日)】第8回UE4ぷちコン ゲームジャム

ギリギリまで枠を増やしましたので、本日8月30日の時点で補欠に入っていた方までご参加いただけます!

 

ご応募の際「ノートPCを持ち込みますか?」に「はい」とご回答いただいた方は当日ご持参ください。

また、やむを得ない事情で参加キャンセルされる方はお早めにキャンセル手続きをお願いします。

(枠があまりに空くようだったら追加募集をかけるかもしれないですよ…。まだ参加のチャンスがあるかもしれませんね…。)

 

それでは、当日お会いできるのを楽しみにしております!!( ◠‿◠ ) よろしくどうぞ!!

 

[UE4] ランダムに移動するキャラクターを簡単に実装する方法

$
0
0

ゲーム制作には乱数が必要不可欠です。そしてUE4でも、様々な乱数を簡単に取得する方法があります。

今回はそのたくさんある方法のうち、ボックス内の座標をランダムに取得する機能を使って、簡単にエリア内をランダムに移動するキャラクターを実装する方法をご紹介します。

作成手順

1.移動範囲用のアクター配置

まず最初に、トリガーボックスをレベルに配置します。このトリガーボックスの中をキャラクターが動き回る事になります。

2.キャラクターの用意

次に動き回るキャラクターを用意します。とりあえず今回はキャラクタークラスを基底にした「BP_Character」を作成します。

このクラスは、ゲームによってNPCであったり敵キャラであったり、ランダムな動きをさせたいアクターになります。

3.移動処理の実装

次に移動処理を実装します。本来であればCotrollerなどを経由するのが望ましいかと思いますが、今回はとりあえずキャラクタークラスに直接移動処理を書くことにします。

まず、キャラクターの移動範囲であるトリガーボックスを参照できるようにします。

次にそのエリア内に対してランダムな座標を取得できる関数を作成します。

この時に使用するのが「Random Point in Bounding Box」です。これは指定したOriginを中心座標に、Box Extentの範囲内にあるランダムな座標を取得する関数です。

つまりこの引数にトリガーボックスのボックス部分の値を代入すれば、エリア内に存在するランダムな座標を取得できるようになる、という算段です。

あとはこの関数を利用して初期座標や目的地の座標を設定してあげればよいわけです。

まずは初期座標の設定からです。

今回はZ軸に関しては元のアクターの座標をそのまま使うようにしましたが、ここは接地処理などを使った方がよいでしょう。

次に移動処理です。

初期座標と同じようにランダムな座標を取得し、それを「Move To Location」の「GoalLocation」に指定してあげれば、キャラクターはその位置に移動するというわけです。

あとはレベルに配置したトリガーボックスを好きなサイズに広げてキャラクターに紐付け、最後は忘れずにナビメッシュを配置すれば完成です。

ね、簡単でしょ?

最後に

さて、このように乱数を所得する関数はブループリントでもいくつもサポートされていますが、今回使ったボックス以外にも、指定した円錐内からランダムな単位ベクトルを取得する「Random Unit Vector in Cone」など様々なものがあります。

これらをうまく活用して、簡単にゲームを作っていきましょう。

UE4ぷちコン ゲームジャムを開催いたしました

$
0
0

こんにちは

広報です

 

弊社主催の「第8回UE4ぷちコン」の関連イベント、「UE4ぷちコンゲームジャム」を9月9日・10日と2日間で開催いたしました。

当日は20人以上の参加者の方にお集まりいただきまして本当にありがとうございました!

当日はこんな感じでチーム分けをしました。(チーム名は広報の思い付きです。深い意味はないです。)

皆さん和気あいあいとした雰囲気でゲーム製作に取り組んでいました。

中にはこんな機材を持ち込んだ強者も。

何とか皆さん2日間の間でゲームを制作し、2日目の最後にはゲーム発表会&試遊会もしました。

どのチームも出来が良く、結果発表が楽しみですね!

今回、機材協賛としてサードウェーブ様にご協力いただきました。

また、大阪の方でも大阪駆動開発様の主催で【大阪】大阪でも第8回UE4ぷちコン ゲームジャムを開催していました。こちらにご参加いただいた皆様もありがとうございました。

今後も定期的にこのようなイベントを開催する予定です。

ご興味のある方はぜひご参加ください!

ありがとうございました!

[UE4] VR中にドアを手動で開け閉めする方法

$
0
0

今回は、VR中にドアを手動で開け閉めする方法をご紹介します。

基本的には、UE4のVirturalRealityTemplateを使用して、すでに用意されているBPを利用していきます。

エンジンのバージョンは、4.17で作成していきます。

 

 

(1)プロジェクトの開始

まずはVirturalRealityTemplateを選択して、プロジェクトを開始しましょう。

次にマップを選択しますが、こちらも既に用意されているMotionControllerMapを使用していきます。

また、基本的にはVirturalRealityTemplateに用意されている

MotionControllerPwanとBP_MotionControllerを利用し、少し変更を加えていく形で進めていきますので、

Viveのコントローラー等の動作処理は、ほとんど作る必要はありません。

 

(2)必要なBPや設定の追加

今回ドア手動で開閉するにあたって、下記を準備していきます。

・DoorHandleとHandコリジョンプリセット

・IF_DoorOpen

・BP_Door

では順番に作成していきましょう。

 

(3)コリジョンプリセット

ここではオブジェクトチャンネルとコリジョンプリセットを追加していくので、

エディターのProjectSettingsを開き、Collisionを選択しましょう。

 

1.オブジェクトチャンネル

上記画面のObjectChannelsの項目からNewObjectChannelを選択し、

DooHandleとHandというオブジェクトチャンネルを新たに作成します。

 

2.コリジョンプリセット

Presetの項目からNewProfileを選択し、新たにDoorHandleとHandというコリジョンプリセットを作成します。

・DoorHandle

HandのみOverlapに設定し、他は全てIgnoreとします。

・Hand

HandleのみOverlapに設定し、他は全てIgnoreとします。

これで、コリジョンプリセットの準備は終了です。

 

(4)IF_DoorOpen

ブループリントインターフェースから、IF_DoorOpenを作成します。

作成したブループリントを開き、関数を追加していきます。

今回は、OpenとCloseの2つの関数を作成します。

・Open

Open関数には、Inputsに変数を1つ追加し、型にはBP_MotionControllerを設定します。

・Close

Close関数には、何も設定する必要はありません。

 

(5)BP_Door

アクタークラスを基底にした、BP_Doorを作成します。

1.ドア用スタティックメッシュコンポーネント

BP_Doorを開いたら、ドアフレームと、ドアプレート用のスタティックメッシュコンポーネントを作成します。

ドアのメッシュは今回はStarterContentsに入っている、

SM_DoorFrameとSM_Doorを使用しています。

・SM_DoorFrame

・SM_Door

もちろん、ご自分で作成したメッシュを使用してもかまいません。

2.ボックスコリジョン

ドアハンドル位置を取得するための、ボックスコリジョンを追加します。

こちらのボックスは、ドアプレートに追従して動いて欲しいので、

先程のDoorPlateへ、アタッチします。

そして、Box_Handleのコリジョンプリセットを、DoorHandleに設定します。

 

4.変数

BP_Doorで必要な変数は下記との4つとなります。

・HandleVector・・・ハンドルの位置を保存します。型はVectorとなります。

・Angle_Min・・・ドアの開閉角度最小値をセットします。型はFloatとなります。

・Angle_Max・・・ドアの開閉角度最大値をセットします。型はFloatとなります。

・BP_MotionController・・・ドアハンドルに触れたコントローラーを保存します。型はBP_MotionControllerとなります。

 

5. IF_DoorOpenを追加

クラスセッティングスを選択し、Interfacesの項目へ、

(4)で作成したIF_DoorOpenを追加します。

これでIF_DoorOpenを使用できるようになりました。

 

6.MakeAngleFrom2Vectors関数

内容としては、握られた時点でのドアハンドルの位置と、

そこから動いた手の位置の2つのベクターの角度を取得します。

2つのベクターの角度取得の仕方は、下記サイトを参考にさせていただきました。

・KIT数学ナビゲーション

http://w3e.kanazawa-it.ac.jp/math/category/vector/henkan-tex.cgi?target=/math/category/vector/naiseki-wo-fukumu-kihonsiki.html

中身の説明は、下記画像のようになります。

 

7.RotateDoorByHand関数

内容としては、5で作成した関数を利用して、ドアプレートを回転させるものとなります。

少し横に長くなってしまったので、分割して説明をしていきます。

まずは、5で作成したMakeAngleFrom2Vectors関数へ、

・ドア軸の位置

・ドアを掴み始めた位置

・手の位置

をセットします。

そして取得した角度の値で、ドアを回転します。

その時に、手がドアの回転する側へある時のみ回転するように、

ブランチで分岐させています。

 

8.イベントグラフ

最後にこれまで作成した変数、関数を用いて、イベントグラフに、ノードを配置していきます。

イベントは、下記の3つから成っています。

・Event Tick

・Event Open

・Event Close

Event Tickでは、Gateノードをはさんで、RotateDoorByHand関数へつなげます。

Event Openでは、ドアハンドルを掴んだ時のドアハンドルの位置を保存します。

その時に、Z値をだけをドア軸のZ値に入れ替えます。

そして、Event TickからでているGateノードを開きます。

Event Closeで、Gateノードを閉じます。

これで、BP_Doorの完成です。

 

(6)BP_MotionController

VirturalRealityTemplateに既に入っている、BP_MotionControllerを

少しだけ変更していきます。

1.GrabSphereのコリジョンプリセット

GrabSphereを選択し、コリジョンプリセットをHandに設定します。

 

2.GetActorNearHand関数の変更

BP_MotionControllerに既にある、GetActorNearHand関数を、ドア開閉用に少し変更します。

・GetOverlappingActorsノードのクラフフィルターをBP_Doorへ変更し、

ドアとのオーバーラップ情報を取得します。

・DoesImplementInterfaceノードのインターフェースをIF_DoorOpenに変更します。

これで、手とドアハンドルとの重なり情報を取得できるようになります。

 

3.GrabDoor関数

GrabDoor関数を作成し、InputsへBoolean型の変数を追加し、

オンとオフを切り替えられるようにします。

・オン

掴んだハンドルアクターを取得し、IF_DoorOpenのOpenイベントへ通知します。

・オフ

IF_DoorOpnのCloseイベントへ通知します。

これで、手がドアハンドルを掴んだことを、BP_Doorへ通知することができるようになります。

 

(7)MotionControllerPawn

(6)と同様に、VirturalRealityTemplateへ既に入っている、MotionControllerPawnを

少しだけ変更していきます。

1. IF_DoorOpenを追加

クラスセッティングスを選択し、Interfacesの項目へ、

(4)で作成したIF_DoorOpenを追加します。

 

2. GrabDoor関数のセット

MotionControllerのイベントグラフ内にある、

InputAction GrabLeftとInputAction GrabRightの処理を、

(6)で作成したGrabDoor関数へ切り替えます。

 

これで、ドアハンドル位置で、コントローラーのトリガーを引くと、

ドアを開け閉めできるようになりました!

機会がありましたら、今度はスライドドアの開閉を、

ご紹介できればと思います。

[UE4]第8回UE4ぷちコン応募作品公開!その1

$
0
0

第8回UE4ぷちコンのエントリー作品一覧ページです。

今回なんと!!過去最多108作品!すごい!!

応募いただいた皆様、ありがとうございます!!

第8回UE4ぷちコン応募作品一挙公開!

※コンテストの告知ページはこちらです。

第8回UE4ぷちコン応募作品一挙公開!その2はこちら

第8回UE4ぷちコン応募作品一挙公開!その3はこちら

第8回UE4ぷちコン応募作品一挙公開!その4はこちら

第8回UE4ぷちコン応募作品一挙公開!その5はこちら

第8回UE4ぷちコン応募作品一挙公開!その6はこちら

 

[エントリーNo.1]   ABOUT 60 SECONDS

もんしょ さま

 

▼応募者コメント▼

60秒の針の進行。しかし、実は60秒ではないのです。
• 1秒未満の針の進行が存在します。それを見つけるだけの簡単なゲームです。

[エントリーNo.2] 煩悩を60秒間消し続けるやつ

PavilionDv7 さま

 

▼応募者コメント▼

第8回UE4ぷちコン応募作品です。
2日くらいで作れるやつを目標にサクッと作ってみました。
煩悩を棒で叩いて消し飛ばす簡単なゲームです。
セミの鳴き声と鳥の鳴き声と肩を叩く音に癒やされながら見ていただければと思います。

[エントリーNo.3] 60秒の夏の思い出

もんしょ さま

 

▼応募者コメント▼

日本の風物詩を写真で撮影する環境ソフトとなっています。
日本の夏の60秒といえばこれ、という誰でも知っている物を題材にしました。
環境ソフトですがエンディング付きです。

[エントリーNo.4] Don’t need MINUTES

増富 来人 さま

 

▼応募者コメント▼

60秒の制限時間でどれだけ進めるかを競うゲーム。
更に「60秒」をゲームルールに組み込んで、ちょっと頭の体操も。

[エントリーNo.5] Matching Blocks

板庇 賢一 さま

 

▼応募者コメント▼

60秒以内にブロックを枠に当てはめるだけの単純なゲームです。ブロックの移動方法はマウスのドラッグだけなのでとても簡単です。
全てのブロックを枠に当てはめたら、すぐにボタンを押してください。
その時の(残り)秒数が、プレイヤーのスコアです。
ハイスコア欄にはトップ3のスコアが残ります。
60秒以内にブロックが当てはめられなかったり、
全て当てはめた後でも時間を止めるボタンを押し忘れるとゲームオーバーとなり、
ブロックが枠からはじけ飛びます。
このゲームアピールポイントは次の4点です。
1.MODOのMeshFusionを使ったブロックと枠の作成。
2.枠の動的配置。(プレイ毎に枠の配置が変わっています)
3.ブロックのはめ込みアシスト機能。(枠にある程度近づくとピタッとはまります)
4.トップ3のスコアを記録します。

[エントリーNo.6] アンリアル60秒クッキング

Takao さま

 

▼応募者コメント▼

60秒以内に料理を出すという、料理番組的なアレです。・BGM
OK-Sounds(オーケーサウンズ)
http://dova-s.jp/_contents/author/profile145.html

[エントリーNo.7] 60秒カウントダウン

ohseto yoshikazu さま

 

▼応募者コメント▼

グレイマンがしゃがみこんで60秒カウントダウンする作品です。
マウスかキーボードのスペースでカウントダウンします。
連打するとカウントダウンが早くなります。
0になると終わりです。

[エントリーNo.8]long long doomsday

wagatsuma さま(ヒストリアメンバー)

 

▼応募者コメント▼

降り注ぐ隕石から地球を守る防衛型シューティングゲームです。隕石の猛攻は60秒ごとに激しさを増していきます。

時々降ってくる彗星に接触すると防衛施設がレベルアップします。

[操作方法]画面をスワイプすると地球がクルクル回ります。

[エントリーNo.9]60秒脱出ゲーム

MozPaca さま

 

▼応募者コメント▼

敵を倒して制限時間を伸ばし、敵を倒すためのボールを回収しながらゴールを、目指す脱出ゲームです。

[エントリーNo.10]60`s

alwei さま

 

▼応募者コメント▼

テーマが60秒(Second)なので、60個の”S”を撃退していくというだけのゲームです。

[エントリーNo.11]スカルのブキミなダンジョン

いかさんチーム さま(ヒストリアメンバー)

 

▼応募者コメント▼

ぷちコンゲームジャム2日間で2人で作りました。 60秒間の間に深く進めるか競うアクションゲームです。

[エントリーNo.12]Battle Griders

Grid Brother さま

 

▼応募者コメント▼

エンジニア2人、デザイナー1人のチームで制作しました。
2人プレイのFPSです。60秒間でアイテムを集めスコアの高かった方が勝ちです。
サイバーワールドを意識していて、グリッドのオブジェクトで構築されています。

[エントリーNo.13]60レーシング!

荻野雄季 さま

 

▼応募者コメント▼

60秒以内にゴールにたどり着け! エアバイクを乗りこなし、ゴール地点を目指すのだ!!

[エントリーNo.14]60sec speed lane

JetSoundStreet さま

 

▼応募者コメント▼

パネルのレーンをトータル60秒通過するゲームです

[エントリーNo.15]historia大爆破

らいおんさんチーム さま

 

▼応募者コメント▼

”60秒”の間に指定の位置に爆弾を仕掛けて、 historiaを爆発させて脱出しよう。VR対応、リアルな historiaオフィスを体験せよ!

第8回UE4ぷちコン ゲームジャム らいおんさんチーム製作作品です。

[エントリーNo.16]60 SEC DASH

きつねさんチーム さま

 

▼応募者コメント▼

グレーマンを操作して60秒以内にゴールを目指すゲームです。

コントローラーかキーボード+マウスで操作ができます。

[エントリーNo.17]フルーツバスケット

ねこさんチーム さま

 

▼応募者コメント▼

UE4ぷちコンゲームジャムで作成したゲームです。

60秒の間にたくさんのフルーツをバスケットに振り分けていくVRゲーム!

ねこさんチームのメンバー

若草なずな @NazzTea

IZUN∀ @mizuki_izuna

ふじたく @flyaway1214

[エントリーNo.18]「CM」

ado さま

 

▼応募者コメント▼

映像作品となります。ヒーロー系とか復讐劇的な感じにしようとしたらスタイリッシュな感じになっていました。どうぞお楽しみください。

[エントリーNo.19]ワン・ミニット・ビフォア・ザ・牢屋

OUCC さま

 

▼応募者コメント▼

60秒ごとに透明人間の看守が現れる謎の迷宮から脱出する、アクション脱出ゲームです。一般的な脱出ゲームのような難しいパズルは一切ありませんが、看守に捕まる前に素早くパズルを解く力、エイム力、タイミングをあわせる能力が要求されます。

[エントリーNo.20]「ねこ缶クライシス!」

Zmix さま

 

▼応募者コメント▼

テーマの60秒を制限時間として設定しました。
60秒以内に、マップ内のねこ缶を集められるだけ集める2Dアクションゲームです。敵の攻撃でゲームオーバーになったりせず、60秒経過したら強制的に終わりです。
気持ちのよいテンポで動き回れるゲームになっていると思います。

 

第8回UE4ぷちコン応募作品一挙公開!その2はこちら

第8回UE4ぷちコン応募作品一挙公開!その3はこちら

第8回UE4ぷちコン応募作品一挙公開!その4はこちら

第8回UE4ぷちコン応募作品一挙公開!その5はこちら

第8回UE4ぷちコン応募作品一挙公開!その6はこちら

Viewing all 984 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>