【UE4】SaveとLoad時のUserIndexについて
はじめに
時々SaveとLoadに苦戦するのでよくお世話になっているほげたつさんのサイトです。
ここには
セーブデータにはスロット名とユーザーインデックスが指定できます。 スロット名はセーブデータの名前、ユーザーインデックスはその中でのIDみたいなものですね。 ドラクエの冒険の書1とか冒険の書2とかそんなイメージです。
とあります。
もちろんこちらにも。
For some platforms, master user index to identify the user doing the saving.
ただ実際に実装してみると、なにやら動作がおかしいので調べてみました。
ソースコード
ということで、Engineのソースコードを追います。UE4.13です。 ctrl+FとかでUserIndexをハイライトしておくと、見やすいかもしれません。
Runtime/Engine/Private/GameplayStatics.cpp
USaveGame* UGameplayStatics::LoadGameFromSlot(const FString& SlotName, const int32 UserIndex) { USaveGame* OutSaveGameObject = NULL; ISaveGameSystem* SaveSystem = IPlatformFeaturesModule::Get().GetSaveGameSystem(); // If we have a save system and a valid name.. if(SaveSystem && (SlotName.Len() > 0)) { // Load raw data from slot TArray<uint8> ObjectBytes; bool bSuccess = SaveSystem->LoadGame(false, *SlotName, UserIndex, ObjectBytes); if(bSuccess) { (省略)
bool UGameplayStatics::SaveGameToSlot(USaveGame* SaveGameObject, const FString& SlotName, const int32 UserIndex) { ISaveGameSystem* SaveSystem = IPlatformFeaturesModule::Get().GetSaveGameSystem(); // If we have a system and an object to save and a save name... if(SaveSystem && SaveGameObject && (SlotName.Len() > 0)) { (省略) // Stuff that data into the save system with the desired file name return SaveSystem->SaveGame(false, *SlotName, UserIndex, ObjectBytes); } return false; }
とSaveもLoadもUserIndexに関わる処理はSaveGame、LoadGameを呼び出しているのでそちらへ。
Runtime/Engine/Public/SaveGameSystem.h
virtual bool SaveGame(bool bAttemptToUseUI, const TCHAR* Name, const int32 UserIndex, const TArray<uint8>& Data) override { #if PLATFORM_HTML5_BROWSER return UE_SaveGame(TCHAR_TO_ANSI(Name),UserIndex,(char*)Data.GetData(),Data.Num()); #elif PLATFORM_HTML5_WIN32 FILE *fp; fp=fopen("c:\\test.sav", "wb"); fwrite((char*)Data.GetData(), sizeof(char), Data.Num(), fp); fclose(fp); return true; #else return FFileHelper::SaveArrayToFile(Data, *GetSaveGamePath(Name)); #endif }
virtual bool LoadGame(bool bAttemptToUseUI, const TCHAR* Name, const int32 UserIndex, TArray<uint8>& Data) override { #if PLATFORM_HTML5_BROWSER char* OutData; int Size; bool Result = UE_LoadGame(TCHAR_TO_ANSI(Name),UserIndex,&OutData,&Size); if (!Result) return false; Data.Append((uint8*)OutData,Size); ::free (OutData); return true; #elif PLATFORM_HTML5_WIN32 FILE *fp; fp=fopen("c:\\test.sav","rb"); if (!fp) return false; // obtain file size: fseek (fp, 0 , SEEK_END); int size = ftell (fp); fseek (fp, 0 , SEEK_SET); Data.AddUninitialized(size); int result = fread (Data.GetData(),1,size,fp); fclose(fp); return true; #else return FFileHelper::LoadFileToArray(Data, *GetSaveGamePath(Name)); #endif }
えーっとPlatformがHTML5のブラウザだけUserIndexを使っているように思います。
そしてこのUE_SaveGameとUE_LoadGameはこちらに。
Runtime/HTML5/HTML5JS/Private/HTML5JavaScriptFx.js
UE_SaveGame: function (name, userIndex, indata, insize) { // user index is not used. var _name = Pointer_stringify(name); var gamedata = Module.HEAPU8.subarray(indata, indata + insize); // local storage only takes strings, we need to convert string to base64 before storing. var b64encoded = base64EncArr(gamedata); $.jStorage.set(_name, b64encoded); return true; }, UE_LoadGame: function (name, userIndex, outdataptr, outsizeptr) { var _name = Pointer_stringify(name); // local storage only takes strings, we need to convert string to base64 before storing. var b64encoded = $.jStorage.get(_name); if (b64encoded === null) return false; var decodedArray = base64DecToArr(b64encoded); // copy back the decoded array. var outdata = Module._malloc(decodedArray.length); // view the allocated data as a HEAP8. var dest = Module.HEAPU8.subarray(outdata, outdata + decodedArray.length); // copy back. for (var i = 0; i < decodedArray.length; ++i) { dest[i] = decodedArray[i]; } Module.HEAP32[outsizeptr >> 2] = decodedArray.length; Module.HEAP32[outdataptr >> 2] = outdata; return true; },
いやあのこれ、UserIndex出番なくないですか…(引数として呼ばれているだけで未使用)
まとめ
現状だとUserIndexは出番がないようです。ちゃんと(?)設定していないはずのUserIndexでLoadしてもエラーが出ませんでした。
Forum等も漁りましたが、良さげな解答が見つからなかったので追ってみました。
どこか間違ってたり、新たに何か分かった時にはぜひ@shop_0761までお知らせください(更新します)
【UE4】自作アクションゲームにAutoPlayを仕込んでみた
はじめに
ぷちコンで作ったもろもろ紹介編2です。
元記事
今回はCEDECに行った際に聞いたAutoPlayのお話をもとに作ってみました。
講演はこちら。
資料はCEDiLにあります。
実際にAutoPlayしたものがこちら。
考え方
講演の内容をもとに(正確な内容はあやふやですが)AutoPlayの実装方法を簡単に説明します。
-------事前準備-------
マップにConeを置く
そのConeにはいくつかActionを登録しておく
-------実行時---------
ConeのActionを実行する
次のConeについたら上へ戻る
これだけです。AIは使わなくても実装できます。
Actionというのは絵に描いてあるような移動だったり、ジャンプだったりと なんでもいいわけです。
管理、保守など調整しやすいように難しいことはしません。
実装
実際に実装してみると、このConeのBPだけで大部分はまかなえてしまいました。
(あとはループ処理のためのConeManagerを作ったりしたくらい)
方針
ポイントを整理しておきます。
今回は予めConeを配置したあとにNextConeとして次のConeを登録しておく
今ActionをしているConeとNextConeのみCollisionを有効にする(例外あり)
くらいだと思います。
一つ目はConeと同じ型の変数を公開しておき、レベル上で設定していきます。
こんな感じ。
二つ目はそのほうが安全だよねってくらいです。
そして"例外あり"とは、スタート地点はCollisionを有効にしておかなきゃそもそも動かないのでという意味だったり、不具合対処の意味が大きいです。
この辺はまたあとで触れます。(※)
実際のBPはこちら(1-2日で作ったので一応整理したけど散らかっている感)
ConstractionScript
一応確実にジャンプして欲しい場面(大きな穴とか)があるので
全体像
BeginPlay
ここでCollisionの設定をしています。
BeginOverlap
NextConeのCollisionをEnableにしたあと、Wait秒待ちます。
落ち着いてジャンプしてもらうためです。
Debug用にPrintStringしてるだけです。Duration0は便利ですね。
到着判定
NextConeにたどり着いたかどうかをチェックします。
今回はVecLengthでやりましたが、2点間の距離でもいいと思います。
そして、先程の※のお話(ポイントの2つ目)がここで出てきます。
後述するRandomJumpを使っていたりすると、偶然Coneをスキップされてしまい、 Gateが開いたまま移動処理が残ったりする場面が多々ありました。
実装方法に問題があるのは分かっていますが、今回は一定距離が離れたりした場合でも到達したとみなして、処理を打ち切ることにしました。
Move
一応Axisの向きも内積でなんとなく求めておきます。
このMoveActionはキー入力の移動と同じ処理をするだけです。そのために追加したイベントです。
Jump
こちらのJumpは一度だけ確実にジャンプする必要があるときに使います。
JumpActionも先程のMoveActionと同じです。
RandomJump
適当なタイミングで適当に長押し(したフリをして)ジャンプします。
Reset
今回はループさせたかったので、Reset処理を追加しました。
ループさせる必要がないならDestroyしてしまってもいいかもしれません。
(そうするとさっきの※のお話はなくなるはず)
AutoPlayのメリット
最初は なんかすげぇでも作れそう とおもったので勉強がてら作りました。
何がいいかというとテストプレイ(周回系)が楽です。
- 実装に疲れたから、眺めて確認したい
- どうせちゃんと動くだろうから、操作したくない
- Twitterを見たい
などAutoPlayにしておけばこんなに便利です。
あとプレイ動画を撮るのも楽ですね。コミケ等の展示時に流していると面白いかもです。
まとめ
このくらいのスピード感で作ってました。
オートプレイ UE4なら作れるかもしれない
— てんちょー@9/30-10/2東京 (@shop_0761) 2016年8月26日
暇というわけではないけど、ぷちコンのオートプレイを作ってみよう
— てんちょー@9/30-10/2東京 (@shop_0761) 2016年8月28日
AutoPlayできたー
— てんちょー@9/30-10/2東京 (@shop_0761) 2016年8月28日
意外にあっさりできましたね。
ちなみに途中で操作介入できます。(意図的にジャンプさせたり)
なにかわからないことがあれば@shop_0761までお願いします。
【UE4】ParallaxOcclusionMappingで背景アセットを作ったお話【小ネタ】
はじめに
ぷちコンで作ったもろもろ紹介編1です。
元記事
HeightMapの描き方が分かりません。
けど、いい感じの背景アセットを手抜きで作りたい。
そんなこんなで出来たのが、これ。
意外に良くないですか 手抜きの割には。
作り方
Heightmapは描きました。手描き出来ます。
引っ込ませたい方を黒で塗ればいいんです。おわり。
あとはMaterialですが、ContentExampleにあったものを拝借してきただけです。
超お手軽ですね!!
深いことを考えなければ、パラメータはSampleそのまま使っていい気がします。
最初はalphaで抜こうか、なんて思ってた時期もありました。
ですが、シェーダ複雑度が真っ赤になったのでやめました。
これなら実質箱だけなので、描画負荷はalpha抜きに比べると軽いです。(上手くやれば赤いとこもなくなるはず)
試しにalpha抜きしてみました。(見栄えはおいておくとして
そりゃそうですねって感じです。
まとめ
ぱららっくすおくるーじょんまっぴんぐ ってカッコよかったので使いたかっただけです。
ContentExampleのは出来が良すぎて意味が分からなかったですが こんな手抜きの白黒絵を描いても使えるよ ということが言いたいだけです。
賞味20分くらい?だった気がします。
誰かもうちょっとまともな使い方の記事を書いて欲しいところですね。
【UE4】第6回ぷちコンに応募しました 【概要編】
はじめに
今回も2作品応募しました。
ぷちコンのページ
月にかえりたい
実行ファイル
カノトンボ
今回もまた作品概要だけをここで紹介してUE4の技術的なお話とかはまた別記事にします。(後々検索しやすくするため
月にかえりたい
この作品は某CMとか某映画が元ネタとなってます。知ってるとより楽しめるかと思います。(知らなかったら連絡ください こっそりお教えします)
今回はちゃんとコンセプトアートを書き、グレーボクシングをし、比較的ちゃんとまとまってから作り始めたので心に余裕がありました。(毎回すべきことなのに)
ちょくちょくコンセプトとずれそうになったりしました。(得点をScoreと英語にしてたり、小判ではなく札束にしようとしてたり)
ですがふとコンセプトアートを思い出して修正できました。描いておいてよかったです。
最終的にこの敵キャラのマスクも作れたのでよかったです。
絵作りの方は当初水彩っぽくしたかったんですが、調整してるうちに今のに落ち着きました。
これを使って調整しただけです。
今回のBGMはMusycというiOSのアプリで作りました。作ったといってもおもちゃみたいな感じなのでガチではありません。
すごい地味ですが、残り日数が短くなると徐々に早くなったりしてます。
プレイする人によって借金を返すのか、踏み倒すのかに差が出そうですね。
カノトンボ
こちらは完全に思いつきと勢いです。VR用になにか作ろうと思ってた時にやってきたアイディアです。
虫かごのフタだけモデリングしました。
ちょうどMMD版の中野シスターズが公開されて、目の構造が変わったらしかったので大抜擢です。
参考:
中野シスターズMMDモデルver1.1をリリースいたしました!不具合を幾つか修正しております。お手数ですがもう一度ダウンロードよろしくお願い致します!https://t.co/5ALxEOR5Dv
— ナカシス【代表】@MMDモデル配付中! (@nakasis_) September 1, 2016
DLパスワード nakasisu pic.twitter.com/8t5MfoCh5Q
あとはこれでカノちゃんのアニメーション、graymanのポーズを作りました。
スケール感的にはこのくらいです。(graymanは60倍くらい
UE4.13からのVRTemplateを使ったので他に変わったことはしてません。お手軽です。
昨日の23時半くらいから作ったので正真正銘のぷち作品です()
— てんちょー@9/30-10/2東京 (@shop_0761) September 18, 2016
(後悔はしていない#UE4 #UE4Study #ue4conhttps://t.co/NbrI9zlh1L
まとめ
なぜか締切が一日早い方に勘違いしていたので、はやく終わりました。
気持ちが楽になりました。チキンレース勢もいいですが、こっちはココロにやさしいです。
近々 月にかえりたい の方は実行ファイルを公開します。
【UE4】MayaLT2017でphysXを使って服を揺らす
はじめに
第6回ぷちコンにあわせて頓挫中だった3Dモデルを作りました。 その話は、また別の機会にするとして今回はワンピースをApexClothで揺らしてみたいと思います。
結論から言えば、微妙です。
あまり期待しないでください。
MayaLTも初心者ですのであしからず。
やるなら一通り読んでからのほうがいい気がします。
テスト環境
Maxでも出来ると思います。(未確認
手順
ApexCloth自体は最後にある参考サイトの@com04さんのサイトを見るといいかと思います。 以降はある程度知ってるものとして色々省略します。
基本的に参考を最後につけているのでそちらの動画(英語)を見ていただければ実際済むお話ですが、
つらい目にあったよってところも織り交ぜながら書いておきます。
それと、服のマテリアルは別にしておきましょう。そのほうが多分安全。
分けてなかった時
失敗例 pic.twitter.com/z4fNnBY6pK
— てんちょー@9/30-10/2東京 (@shop_0761) 2016年9月13日
服だけになりました。
ちなみに服には一切ボーンは入ってません。
プラグインを入れる
nvideaにログイン後、こちらのDownloadCenterからダウンロード出来ます。
手元のMayaのバージョン等に合わせてください。
Download Center | NVIDIA Developer
.msi形式なので、実行すれば導入自体は出来るかと。
そして、MayaLT上で言うとウィンドウ → 設定/プリファレンス →プラグインマネージャー からphysx.mllをロードすると
このように追加されます。
physX Clothingを作る
これを作るときにはジョイント(ボーン)が必要になるはずなので、準備しておきましょう。
対象のメッシュを選択して(今回はワンピース)、右から6つ目のスカートみたいなアイコンをクリックするか、上のメニューからphysX → physX Clothing → Create Clothingで作れます。
これを色々調整していく感じです。
ペイントする
スパナみたいなアイコンをクリックすると、このようにメニューが出ると思うのでPaintを選べば塗れます。
この時、マテリアルを設定していればこのように紫色になるかと思います。ならなかったら確認してみてください。
ちなみに僕は一旦ここでハマりました。
あれ なぜかマテリアルを適用しても表示されない(Maya
— てんちょー@9/30-10/2東京 (@shop_0761) 2016年9月10日
ぷちコン用のSceneで同じ手順で適用すればみれるのでSceneの問題っぽい…
— てんちょー@9/30-10/2東京 (@shop_0761) 2016年9月10日
??? 新規シーンに円柱追加して、マテリアルを適用しても変わらなかった…?
— てんちょー@9/30-10/2東京 (@shop_0761) 2016年9月10日
やり方が間違っている可能性()
@tarava777 @aizen76 と、思ってやってはみたもののやっぱりダメでした…
— てんちょー@9/30-10/2東京 (@shop_0761) 2016年9月10日
新たに追加した円柱とかに適用しても変わらなかったです(設定されてることにはなってた
@aizen76 @tarava777 正常に動いているっぽいぷちコン用のシーンにインポートしたら行けましたww(謎
— てんちょー@9/30-10/2東京 (@shop_0761) 2016年9月10日
意味がわからぬ
— てんちょー@9/30-10/2東京 (@shop_0761) 2016年9月10日
そして秘伝のタレのようにこのSceneをコピーして使っていくしか()
はい、原因不明ですが乗り切りました。
こんな感じで色々設定できます。
Attribute
4種類塗れます。
- maxDistances これがきっとメインになる塗り
- latchToNearest 動画だと服の裏地に塗ってました
あとのBackstop系はよくわからなかったです()
とりあえずmaxDistanceを揺らしたいところに強弱をつけて塗るみたいです。
参考までにこんな感じしたり。
裏も塗りました。
シュミレート自体は再生ボタンを押せば勝手にやってくれます。
ちなみにlatchToNearestを塗ると表と裏の生地が貫通したのでやめました。
RagDoll
服と体のコリジョンを作れます。
Bodyになるメッシュを選択後、藁人形みたいなアイコンをクリックしてCreate Kinematic RagDollで作成できます。
つよそう
でこのように選択して、不要なジョイントのところのコリジョンをRemoveできたりします。
個々のコリジョンを編集するには、上でジョイントを選択した後に下のshapeSetUpから目的のコリジョンを選択して、Selectすれば編集メニューがでます。
と普通に移動、回転、スケールができるみたいです。
なお
バグっぽいものに当たった
— てんちょー@9/30-10/2東京 (@shop_0761) 2016年9月13日
(コリジョン用のカプセルのサイズ調整したあとに実行するとサイズが変わる pic.twitter.com/Yg5ea1BR9u
こんな目に遭っているので様子見ながら調整しましょう。
出力する
一通りおわった(ことにした)ので、UE4用に出力します。
Create Clothingしたメッシュを選択して出力するだけです。
ポイントは
ファイルの種類をphysXにした後、ここを確認しましょう。
特にunitを間違えるとおかしなことになります。
エラーも出ずにApexが読み込めました(上手く言ったとはいっていない pic.twitter.com/8sDN6kpOS5
— てんちょー@9/30-10/2東京 (@shop_0761) 2016年9月10日
あとは.apxファイルが生成されるので適用するだけですね。
この辺はスクショでも貼って終了にします。
結果
とりあえず.apxファイルを適用することはできた pic.twitter.com/IFmBXkKOpd
— てんちょー@9/30-10/2東京 (@shop_0761) 2016年9月13日
正直これくらいしか差がない pic.twitter.com/4a5ubkpDRT
— てんちょー@9/30-10/2東京 (@shop_0761) 2016年9月13日
— てんちょー@9/30-10/2東京 (@shop_0761) 2016年9月13日
はい すごい微妙に変わります。
まとめ
ここまでやってこれだけ…しかも微妙って…
@tarava777 あ、ありがとうございます!!(すごい辛い道を歩もうとしている気がする
— てんちょー@9/30-10/2東京 (@shop_0761) 2016年9月13日
なので、現状はボーンを入れて、Anim Dynamicsで揺らすか手付けアニメーションにするかが最適解かもしれません。(けど面倒なのでやりたくない
余裕があれば髪もやります。
AnimDynamics
参考
CEDEC2016に行ってきた
はじめに
今回は特に行く予定がなかったのですが、急遽就活の関係で8/27に東京に行かなきゃならなくなったので
「CEDECいけるじゃん!!」
ってなったので行きました。
個人的によかった講演やらメモをまとめておこうかなというお話です。
資料はCEDiLに公開されていたりするので、そちらもできるだけリンクを貼ります。
CEDiLは会員登録が必要なのでそれだけご注意を。
順番は適当です。
手と指がVRの中にある:Oculus Touchのインタラクションデザイン
資料公開があると思うのですが、さすがにまだ見当たらず…
Youtubeの配信もあったし、主婦さんのツイートとかを見ていただいたほうが早いかも。
Touchは非常に良いコントローラーなので、よりよい体験のためにどうしたらいいか というような内容が中心で、 僕も気になったところをちょこちょこツイートしてました。
大根おろしみたいな親指置き場#CEDEC2016
— てんちょー@9/30-10/2東京 (@shop_0761) August 26, 2016
あんなに争奪戦だったBulletTrainが普通にできるのはおかしい()#CEDEC2016
— てんちょー@9/30-10/2東京 (@shop_0761) August 26, 2016
フライパンのようなちょっと重心がずれているものは違和感があるかも(逆手にとるのもあり#CEDEC2016
— てんちょー@9/30-10/2東京 (@shop_0761) August 26, 2016
Toyboxの当たり判定は握っている時にだけで、開いてる時は貫通する#CEDEC2016
— てんちょー@9/30-10/2東京 (@shop_0761) August 26, 2016
Toyboxのコリジョンの方向は手のベクトルと頭からのベクトルの中間を使ってる#CEDEC2016
— てんちょー@9/30-10/2東京 (@shop_0761) August 26, 2016
握り始めた瞬間と離しはじめた瞬間の時間とかを使う方がシャープ#CEDEC2016
— てんちょー@9/30-10/2東京 (@shop_0761) August 26, 2016
手を止めてからトリガーを離すケースもあるので、ちょっと前までの加速度とかでプレイヤーの救済をしたほうがよい#CEDEC2016
— てんちょー@9/30-10/2東京 (@shop_0761) August 26, 2016
BulletTrainの弾丸って最初の一瞬だけ遅くて、後から加速してるのか#CEDEC2016
— てんちょー@9/30-10/2東京 (@shop_0761) August 26, 2016
テスターがやってみて出来なかったことを実装してみる#CEDEC2016
— てんちょー@9/30-10/2東京 (@shop_0761) August 26, 2016
こんなところですかね。Touchが楽しみです。
『ベヨネッタ2』におけるゲーム品質を上げる為の自動化 ~オートプレイと継続的なパフォーマンス計測~
前回のぷちコンでプレイ動画を撮るのにすごい苦労したので興味がありました。
AutoPlayの実装方法について説明されているのですが、非常にイメージしやすく これならUE4でもぱぱっと作れそうという印象でした。
ざっくりした方法を紹介するなら、
- コーンと呼ばれるマーカーみたいなものをレベルに配置
- 一番近いコーンに移動
- Actionを実行
- 終わったら次のコーンへ
と2-4を繰り返すイメージです。 AIを使うわけではなくAutoPlayなのでパッド入力としてActionを行います。
Actionには移動、待機、ジャンプなどそれぞれセットするだけなので単純。
Aで攻撃して壁を壊したら、移動する ではなく「適当に10回くらいA連打、待機、移動」のような実装で十分だそうです。
パフォーマンス計測の方は専用のwebページを作って、グラフィカルに負荷をみれるようにというコンセプトで作られており
アーティストさんにもパッと見で改善されたかわかるようにとのことでした。
データベース化すると管理で死んでしまうので取ってきたデータの生XMLを置いてあるとかいうお話です。
Unreal Engine 4 のレンダリングフロー総おさらい
BPでロジック組むの大好きだったのでレンダリングはからっきしでしたが、非常にわかりやすかったです。
毎日見直してレンダリングの流れを頭に入れておきたいレベルです。
細かいことは中身を見たほうがよっぽどいいですw
www.slideshare.net
「VR ZONE Project i Can」の知見、全部吐き出します!
これはEvernoteにメモったものがあるのでそれを
VRの宣伝は人の反応を見せるほうがインパクトがある
身長が10倍になると怖さは1/10
現実との比較がないと驚きが少ない
コントローラに機体をAttachするとずれない
被写界深度を浅くすると酔わなくなる…?
完全再現ではなく厳選再現でおけ
錯覚 クロスモーダル現象 認識とか判断を端折りたい →いつものパターンは端折る →騙される
得た経験とか知識によるリアリティの感じ方に差が出る
共感力の増加
- 実際に経験豊富
- 妄想
- 楽しむ心 信じる心
減少
- VR擦れ
- 分析心
現実 実物は実在感が大事
物理法則のインタラクション大事 炎で熱いとか
複数の情報筋から得たいつものパターンつよい
映像 音 地響きのような複数インプットがあると信じる
VR
- 旅に出る 体験して感動
- 自分のからだ
- 自ら行動→行動制限不能
- 見回せる、歩ける
- 強烈な体験そのもの
- ゲームルールと面白さは別
ゲーム
- 旅番組を見る 感情移入して感動
- レバー ボタン
- 意思を伝える
- 作者の狙い通りに感動体験をした気分
面白い体験を発見すること
その場にいたら、本当に起こったら、を豊かに想像する力
アニメやゲームのシチュエーションはそもそもその場で体験したらすごい
百聞は一体験に如かず 開発者にも大事
リアル体験じゃないと得られない感動をコンテンツの中心におく
欧米で日本のゲームを成功させる方法 How to make Japanese games work in the West
同時通訳のせいで激辛セッションだった気がしますw
これもEvernoteのメモを
可愛らしい動物、アニメ的な簡単に描かれた顔、ファンタジー系、刀と銃の混在欧米ではない
欧米ではファンタジーは真剣に読んだりするものなのでアニメ的な絵などにすると子供向けに思われることも
アメリカ的にはシリアスなファンタジーのがよい
アメリカゲーマーは30-40代
アメリカとinterface(UI)が違う
アメリカではキャラになりきる、プレイヤーアバターのようなものが必要
PvPとPvEは混在させない
協力プレイがよい
アイテムを後から買うのはあまり受けない(ガチャとかガチャとかガチャとか
→時間をつぎ込むことで解禁できるように 他の手段でも獲得できるように
運によって差があると欧米ではマイナスな印象に(日本だとラッキーだねと割とプラスな印象に
探索可能、動機づけ(なぜ戦うのかなど)が大事
ポケモン的な感じが一番ウケがよく分かりやすい例(PvPとPvE、探索、ストーリーの動機付けなど)
まとめ
UE4のVRロードマップはだいたいリリースノートとかに書いてる感じだったので、資料を見ていただければいいかも。
下の2つは資料が公開されていないもののはずなので、なにか参考になればと。写真もちょっとあるので後で追記します。
ちなみにガチャは英語でGachaらしいです。
ネカフェで書いたので、帰ったあとに今回CEDECにかかった額の計算をしてみようかと思います。
(2016/08/28 追記
計算しました。 およそ84000yenですね(やばい) 全部自費です。
簡単な内訳としては
- 1daypass 2 expopass 1 33480
- 飛行機 19300
- Developer's Nightなどの懇親会費 12364
- 宿代(ネカフェ) 3 6480
残りは交通費やらですね。
食費ゴリゴリ削る人なので、一人で飲食したのはジュース1本と帰ってきてから新千歳で買ったお菓子くらいです。
Developer's Nightは5000円の烏龍茶とオレンジジュースでした()
きっと普通に食べたら9万コースですねきっと。
)
全体を通して(懇親会もほぼフル参加では)、かなり行ってよかったなと思いますが
遠方+学校の支援なしな学生にはCEDECはコスト的な意味できついですね!!
内容の質を学生向けに下げる必要は全くないと思いますので、そんな学生向けのパス代にしてくれると助かります()
【UE4】UE4札幌MeetupでVREditorのお話をしてきた
はじめに
すごい勢いで決まった今回のイベント
僕が勝手に
Bullet Train いいなー 持ち運べるのかー やりたい
— てんちょー (@shop_0761) June 5, 2016
札幌でまたMeetUpやらないかなー
— てんちょー (@shop_0761) June 5, 2016
@aizen76 やりたいですよね @sandinist さん!!
— てんちょー (@shop_0761) June 5, 2016
と持ちかけたところから始まっています。
気がつけばとんとん拍子で決まっていき2時間くらいで決まってしまいました。
中身のお話
そこでVREditorのお話をしてきました。
Reveal.jsとMarkdownで資料を作ったのがこちら
VREditorを使ってゲームを作ってみた UE4MeetUpSapporo
2016/07/03時点で公開されているVREditorの資料の中で、一番色々やっている気がします。
資料読むのが面倒な方用にざっくり説明すると
- 簡単なレベルデザイン"だけ"ならサイズ感ばっちり
- すべてをVR内で完結させるのはまだ厳しい
- 調整できることが限られている
といったことをまとめてあります。
他にもalweiさんの絵作りのお話と、おぎまふさんのセル表現のお話もありました。 どちらもとても勉強になる内容でした…
ue4studysapタグを追ってみたりするといいかもしれません。
そしてパネルディスカッションにも参加させていただきました。
質問内容は事前に教えて頂いてたのですが、ほぼその場で思いついたことを言っていただけなので役に立ったのかどうかわかりませんねww
あとでTwitterのタグを追いかけてみると、
お風呂に入ってて あ、キタ! と思ってモチベーションが上がるっていうの、挑戦自体がモチベーションぽいなー。 #ue4studysap
— あんぬい (@PUPRL) July 2, 2016
#ue4studysap RT 第3回UE4札幌Meetup、パネルディスカッション。UE4の魅力について。「ブループリントはゲームをしている感覚でゲームが作れる」というてんちょーさんの発言が印象的でした。この後は懇親会です。 pic.twitter.com/xZYeMWgFLd
— IIJmiio@Sapporo (@ayako119) July 2, 2016
UE4をこれから始めるには後に引けなくなるように良いPCを買おう #ue4studysap
— YKKY (@yk_handle) July 2, 2016
とこの辺りが自分で話してた内容ですね。何か参考になれば幸いです。
まとめ
EPICの今井さんや、alweiさん、まえはなさんなどすごいギリギリな日程の中本当にありがとうございました!!
今井さんとalweiさんと僕が当日北海道入りするというよくわからない状態でしたね…
まだUE4歴1年未満ですがこれからも頑張って行きたいです。
おまけ
すごいカミングアウト。 #ue4studysap pic.twitter.com/w42Rk8AKQh
— EPIC IMAI (@EPICIMAI) July 2, 2016
なんと、このイベントの予定を入れてから気付いたのですが大学院の推薦入試と被ってしまったことに気づき、さらに前日はVRZoneが21時終わり(飛行機の最終は21時半)など他にも色々不運なことが重なってました。
嘘を書いてもしゃーないと思って書いてたら後にひけない文章になってきて笑っている
— てんちょー (@shop_0761) June 13, 2016
大学の方蔑ろにしてたせいで面白いことになってる
— てんちょー (@shop_0761) June 7, 2016
願書書いてる最中にボールペン出なくなるのほんと笑った
— てんちょー (@shop_0761) June 12, 2016
今はホントUE4+VRがやりたいだけなのでペンが進まない()
— てんちょー (@shop_0761) June 13, 2016
ということで、かなり出遅れていますが就活しようかと思ってます。
一応新卒です。雇ってやってもいいぜ!みたいなお話があれば@shop_0761にDMとかいただけると泣いて喜びます。