備忘録のような

趣味グラマによる個人的な見解、備忘

PUBGの 【ZipUtility】エラーについての対処

f:id:rai06:20180106085753p:plain
ERRORCODE

Would you like to disable ZipUtility?You will no longer be able to open any assets
created using it.

つまりは、プラグインがうまく動作してないぞ!どうする?(パブジのバージョン確認処理によって???)はいを押すと落ちる
いいえを押すと…

二週間くらい前のことだからどうなるか忘れた


これのことなんですが、ググってもPUBG関連での対処法がなかったんで
記述していこうと思います(本作業をやろうとしたときに別のことをしたくなったからってやつ)

まずこのエラーの発生条件は、たぶん
アップデート中に何らかの(ミッフィーみたいな名前のやつとか)によって正常にアップデートできなかった、
アップデートが糞長く回線激重になったから、steam落としてアップデートが中途半端に終わった(←ワアはこれ)
つまり要因は自分な訳でありますが、


そういうことではなくアップデートが、正常に完了していない場合起こりうるエラー?な気がします。(僕はデバッガーでもエンジニアでも天才ハカーじゃないので詳しくは知りません)
というわけで、アップデートをもう一度行うか、再インストールをすれば直るはずです。

再インストールで心配なのはデータ関連ですけど、
PUBGは、steamidとかと括りつけられてデータベースに保存されてるだろうしデフォでsteamクラウドにバックアップされているので
問題ないです。


次メインであろう解決策の再アップデートの手順ですが、
Steamから、ライブラリ→pubg→右クリでプロパティ→タブの ローカルファイル→ゲームファイルの整合性を確認…っというボタンをクリックでOK

以上で、解決するかと思います(´・ω・`)

~おまけの技術編~

パブジーはUE4(UnrealEngine4)というゲームエンジンを使っているのですが、(僕もいろいろ記事カキコしてるので見てね!)
そのエンジンの非公式プラグインZipUtility というのがあり
これは7zipを移植させたプラグインであるらしく、解凍、圧縮がでするようです
これを使いSteamでZIPを入れて、
起動時同じバージョンZIPがあればなどの条件分岐で解凍してアップデートをさせて
やっているようですね、たぶん、そうかもしれないし違うかもしれない、
けれども可能性は微粒(ry
まあPUBGの処理じゃなくてSteam側がゴニョゴニョしてるのかもしれないですがね

結局どっちが処理行ってるかって?

Ans. エンジニアじゃない俺がわかるはずないよ^q^

VC++でTitleBarを非表示ってどうやるん?

結論から、 FormBorderStyle属性を None に指定する。終わり

VC#というかWPFとかだとwindowstyleとかでできた記憶があった気が
あるのですが、今開発中のソフトができるだけ高速処理できるようにとC++を使っていて
プロパティ見てるんですけど、これがないんですよね…

けど昔どこかで、似たようなオプションがあった記憶があるので頑張ってググって見つけてきました。

FormBorderStyle  ← 此奴です

このBorderをNoneにするとTitleBar(WindowFormStyle???)を非表示にできます!

あとは、たとえばフラットウィンドウなのが作りたかったら画像でも張ってその要素のクリック(ドラッグ)で
ウィンドウ移動処理を付けたりしたりで作れたりと夢が広がりますね!(´・ω・`)

UE4 クック時に起きた SDK v8.1 エラーの対処

UATHelper: パッケージ化 (Windows (64ビット)): UnrealBuildTool: ERROR: Windows SDK v8.1 must be installed in order to build this target.

UATHelper: パッケージ化 (Windows (64ビット)): Program.Main: ERROR: AutomationTool terminated with exception: AutomationTool.CommandUtils+CommandFailedException: Command failed (Result:5): G:\なんとか\Engine\Binaries\DotNET\UnrealBuildTool.exe UE4Game Win64 Development -NoUBTMakefiles -remoteini="C:\Users\ゆざめい\ぷろじぇくとでぃれくとり" -skipdeploy -noxge -NoHotReload -ignorejunk. See logfile for details: 'UnrealBuildTool-2017.12.XX-XX.XX.XX.txt'



最近パソコンを初期化したんですが、
UE4インストールしなおしてクックしたところこんな感じのエラーがでて
困ったのですが、

ググってもVS2015のC++のパケいれればなおるよ!とかしかでなく、それでも直るかもしれないですが、
意識高い僕は2017を使用しておりまして、VSの複数のバージョンを入れるのは難しく(普通はできないようになってた気がする)
そもそも時間がかかるのでなし

じゃあどうすればいいのか、この頭が弱い僕でもわかりました
普通にエラーログに Win8.1 SDKをいれろやゴラァ!?(cv.?) って書いてあるので入れれば解決します。

ちなみに自分はWin10です
v8.1の意味間違ってたらすみませんWindows系詳しくないんだよな~w(linux使いでVi○mとかEma○cs使ってる変な意識高い系の人がいいそうなこと)


〜追記、〜
調べるほどただのバージョンにしか見えないけど必要なところは共通なのかosが違くてもいけるはずなのでとりあえず動けばいいやという人はwin8.1のでも大丈夫かと思います
〜〜〜

で、終わるのがよくあるツンデレサイトなのでこのツンツンデレデレサイトはちゃんとサイトリンクを張ります。

Windows SDK for Windows 8.1 – Windows アプリ開発

こちらでございます(←ちょっとこの言葉遣いうざいよね)
で、ダウンロードの手順は下にスクロールして黒いインストールとダウンロードに関するページボタンを押せばOK
インストールはデフォのままNextしてけば大丈夫です。

インストール終了後プロジェクトを再起動とかしないでそのままクックしても成功するはずです

f:id:rai06:20171216065817p:plain
(ちなみに序章のエラーコード部分に画像がなかったのはただ撮り忘れていたからなの// テキストは補足用としてとっておいてよかった危なかったぜ)


以上お役に立てたならば幸いです!
あ、僕はIDE派なので争いは好みません!

UE4 メッシュの回転軸、中心点 を変える方法

開閉ドアを実装するときなどで、Y軸を動かすと全体が動き失敗したりすると思うのですが(実体験)
そういうときは、回転軸の位置を調整してあげることで解決します。

やり方

それでやり方なのですが、簡単で
ビューポートに設置した調整したいメッシュをクリックして、デフォのEキーなどを押して
回転軸を出して、中心の白いポイントをマウスホイールを押して(中クリックとかいうアレ)移動させることでできます。


↓参考になりました
www.youtube.com


以上です。

開閉ドアの作り方も覚えていたらいつかやります。

追記
ちょっと触って記事書いたのですが、調べると一時的なものらしいですね?、
面倒ですがBlenderなどで設定してインポートするのが賢そうです

月100pv 気づいたら超えてました

タイトル通り月100pv 超えていました!

こんなしょうもないブログにアクセスしていただき嬉しく思います!

 

うおおおおおおおおおやったあああああああ(周りから見ると少ないんだろうけど

UE4 スターターらいパック リッスンサーバーでのオンラインマルチ対応 更新11/17

サードパーソンサンプルの4.17で作成されたスターターパック的なのです

ゲームでよく使うようなシステムテンプレを随時更新していきます。
連続でこんなながったるい記事をかけられる秘訣は、
この前ごちうさ映画で一発でシャロちゃんが当たったからです!!
f:id:rai06:20171117020441j:plain


……
………

~~~~~~~~~~~~~~~~~~~~~~~

注意 分かりやすくはしていますが、変数の作り方などが理解できている
初心者だけど基本が分かった人向けです。

回復ダメージゲームオーバー処理付きHPゲージ?HPバー?

ヒットポイントの実装の例
f:id:rai06:20171114182040p:plain
UMGフォルダを作成して、ウィジェットブループリントを
右クリで作成します。(例ではHealthBar)
次に作成したUMGを開きProgressBarを検索し、配置します。
そしてPersent値のバインディングを作成します。
f:id:rai06:20171114182405p:plain
次に、Float型の変数を作成、コンパイルをしてHP最大値となる1.0を値に埋め込みます。

  1. インスタンス編集可
  2. スポーン時に公開

にチェックを入れて、Get で Return Valueに繋げます
f:id:rai06:20171114182658p:plain
次にレベルブループリントなどから、BPを開き
f:id:rai06:20171114183032p:plain
変数を作成していきます。

  1. 作成したUMG名の変数型を選択します ( castobj
  2. 次、現在のHPを入れる変数で Float型で作成します ( Health

あとは、画像通り配置すれば完成です。
f:id:rai06:20171114183632p:plain
f:id:rai06:20171114183644p:plain
お疲れ様です。足りてない処理は、回復していくと最大値を超えて増えてしまうところで
回復処理に最大値以上の場合、最大値に置き換えるなどにして実装すると綺麗かと思います

~~ 11/17 ~~

回復処理の微修正というか追加
f:id:rai06:20171116183037p:plain
MaxHealthという変数をFloat型で作成して、コンパイルをし、値を1.0にする。
あとは、画像通り
f:id:rai06:20171116183022p:plain
あと一応
f:id:rai06:20171116183041p:plain
で最大値をいじるとき簡単に変数二つの値を変えるだけでできるようになります

(BeginPlay で変数の値を ゲットMaxHealth → セットHealth で値を読み込ませるとMaxだけで可能になるというのを
実装忘れしたなと思う僕であった)

メインメニューの実装

わりかし重要なメニューを実装していきます。
f:id:rai06:20171116185408p:plain
UMGフォルダ内にMainMenuフォルダを作成します。
次に、MainGameMenuというウィジェット(ユーザーインターフェイスウィジェットプリントのこと)を作成

f:id:rai06:20171116185423p:plain
次に先ほど作ったMainGameMenuを開き、Vertical Box を配置して、
Vertical Box のアンカーを中心にあるものを選択します。

f:id:rai06:20171116185437p:plain
次にスロットパラメーターの値で、
位置 X | -250 ( サイズXの半分の値)
位置 Y | 0 (アンカーで設定してる為)
サイズX | 500(見た目)
サイズY | 380 (見た目)
にします。

f:id:rai06:20171116190207p:plain
次に、Uniで出てくるUniform Grid PanelをVertical Box内に設置して
Sizeを自動からフィルにします。

(画像を置きまくると表示スピード低下でSEOなんちゃらしちゃうんである程度テキストのみ)
f:id:rai06:20171116190716p:plain
次、Uni にButton を三ついれてアライメントを両方伸ばします、そして、
ButtonのRowを上から0、1、2と設定します

次、各ボタンにTextを設置して、上から
シングルプレイ
オンラインプレイ
ゲームを終了する
としました。

次、シングルプレイのイベント、OnClickedを作成してください
Clickedイベントに OpenLevelを作り繋ぎ LevelNameをThirdPersonExampleMap(サードパーソンのデフォ名)にして完了。
次、ゲームを終了するのワンクリイベを作成してください
イベントに、QuitGameを作成し繋ぎ、一旦メインメニューが完成です。(オンラインはちょい長いので次項目)
f:id:rai06:20171116192119p:plain
ですが、肝心の表示処理忘れてるので作っていきます。

メイン画面に戻り、ファイル→新規レベル→空のレベルを作成
レベルBP(ブループリント→レベルブループリントのこと)を開いてください。
イベントTickは今回いらないので無駄処理のTickを削除して、
BeginPlayにいつもの、CreateWidget(ウィジェットを作成)→受け箱の変数→Add to Viewportを作成
CreateWidgetのClassには、先ほど作ったMainGameMenuを選択でok

表示はできましたが、マウスを表示する処理を忘れていました(←天然美少女と思い込んでいる陰)

……
Get PlayerControllerを作り、Valueからのみ出てくる Set Show Mouse Cursorを作り繋ぎ、カーソル変数にチェックを入れます

Add to Viewport→チェックを入れたSet Show Mouse Cursor→Set Input Mode UI Onry を作り繋げて、 Targetを 先ほどの Get Player Controllerに繋げて
コンパイルで完了
f:id:rai06:20171116194402p:plain

と、いきたいとこですがUI Onlyにしてしまっているので、修正とこのメインメニューをゲーム開始時最初に読み込むようにしていきます。
メイン画面に戻り、現在のレベルを保存をクリックして、保先を、UMG→MainMenuにしてMemuMapとして保存します。
次、ThirdPersonBP→Mapsにある、ThirdPersonExampleMapをダブルクリックして読み込みます。
レベルBPを開き、以下の画像のように Game Onlyにします。
f:id:rai06:20171116194835p:plain

この項目最後!
メイン画面の上にある設定→プロジェクト設定… を開きます(レベルBPの隣のやつ)
プロジェクト欄のマップ&モードを開き、DefaultMaps欄の両方にMenuMapを選択して終わりです!

オンライン化

このパックでここが知りたい人が多いのではないのか的な勝手な妄想をしつつ(自分がそうだった)
やっていきます
作っていく上で、今回AdvancedSessionsというプラグインを使用していくので、
プラグインの導入からやっていきます。
Advanced Sessions Plugin - Unreal Engine Forums
ここから4.17のプラグインをリンクの一覧にあるGoogleDriveから右上のダウンロードボタンを押してダウンロードします。
解凍して、中に二つファイルがあるかと思いますがAdvancedSessionsの方がプラグインです。(もう一つの方は使ったことないけど名前から察するにサンプルなので見ておくといいかもデスね)
次、プロジェクトフォルダにPluginsフォルダを作成して、Advancedsessionsをドラッグ&ドロップします。(分からなければ前回の記事を参考に)
プロジェクトを開いていていたら、一度閉じ再度起動します。
導入は終わりで、
次に メイン画面から設定→Pluginsを開き 
Online Subsystemにチェックを入れて有効化してプロジェクトを閉じます。
次に、プロジェクトフォルダにあるConfig→DefaultEngine.iniを開き
最下部に、以下の内容を追加して保存してください

[/Script/Engine.GameEngine]
+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="OnlineSubsystemSteam.SteamNetDriver",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")

[OnlineSubsystem]
DefaultPlatformService=Steam

[OnlineSubsystemSteam]
bEnabled=true
SteamDevAppId=480

[/Script/OnlineSubsystemSteam.SteamNetDriver]
NetConnectionClassName="OnlineSubsystemSteam.SteamNetConnection"

もう一度プロジェクトを開き、準備は完了です。

開き終わったら、MainGameMenuのオンラインプレイボタンのOnClickedイベを作ります。
次にカスタムイベントを二つ作り名前を
CreateServer
JoinServer

とします。
そして、Integer型の変数を作り名前を、CurrentIndexとします。
f:id:rai06:20171117011259p:plain
次に、カスタムイベントの中身を作っていきます(ちょっと長いので画像で)

  • CreateServer

f:id:rai06:20171117011458p:plain

  • JoinServer

f:id:rai06:20171117011538p:plain
f:id:rai06:20171117011543p:plain

最後に、先ほど作ったクリックイベントとJoinServerを繋ぎ
完成です!
f:id:rai06:20171117011723p:plain

仕様は、オンラインプレイをクリックで、空いてあるサーバーがなければ作ってそこへ参加、
サーバーがあり空いていれば参加 を自動で分けます。


構造、仕組みは画像内のコメントを参考に、
一応流れは、クリックイベントでJoinが呼び出され、
Find Session Advancedでサーバーを探し、ForEachLoopで一つ一つ参加できるか
総当たり(イメージ悪いけど)して、入れなければ次、最後までなければサーバーを作る。
最初から無ければ検索後、同じくサーバーを作る処理を行う。


AdvancedSessions使うほどだったのか怪しいが
一先ず完成
11/17現在は以上お疲れ様でした!
ライセンスは、AdvancedSessionsが大丈夫であれば
ゲーム配布としてなら大丈夫ですが、ブループリントの共有などの場合、このブログURLを張っていただくと嬉しいです。


~~~~~~~~~~~~~~~~~~~~~~~

プロジェクトのダウンロードをしたい方は、下のURLからお願いします。(プラグインは抜いてあるので各自導入お願いします。)
11/17更新版
http://bit.ly/2z6Lv7Z
リンク切れしてたので更新
http://bit.ly/2C5SeMy

パスワードはサイトとZIPどちらも、
Ue4RaiPack
です。


時々更新していきます。
分からないところや、希望があればコメントまたは、TwitterのDMやリプなどで分かる限りの返事します。
twitter.com

UE4で毎回引っかかってるようなことのメモ羅列+αおすすめ機能

Version 4.17です 11/14更新

自分がいつも忘れて模索するので
同じように困っている人にもお役に立てればなと、随時更新していこうと思います
+ショートカットとかも



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

//BluePrint(BP) AND UMG

UMGの表示優先順位設定が見つからない(ZOrder,Z-index)

f:id:rai06:20171113202704p:plain
Canvas Panelが親でないと表示されない?ようです。(多分違う)
他のやり方で設定するにはUMGを優先度ごとに分けて呼び出す際のviewportのオプションから指定する、overlayを使うなどです

ThirdPersonCharacterのmeshが見つからない

f:id:rai06:20171113222254p:plain
のようにキャラクターBPから編集するとmeshが選択できます

BP、UMGで編集中の(選択中)ファイルを指定するには

self というノードを使えばできます
また、自分は is とかで検索をかけてます(いっぱい引っかかるときもあるので臨機応変にw)

UMGの要素、オブジェクトを非表示にするにはどうすれば

f:id:rai06:20171113231456p:plain
Set Visibility
というノードを使用すると表示、非表示ができます。
Visible | 表示
Collapsed | 要素ごと持っていき場所を確保できる(場が空きになり非表示になる) …?(という認識してやってきた)
Hidden | 要素はそのまま非表示
…あとは使った事無いので分かりません

背景をブラーかかったものにしたい(磨りガラス)

f:id:rai06:20171113232449p:plain
BackgroundBlur を置き、Appearance にある、 Blur Strength でブラーの度合いをいじるとできる
imageでmaterialを使ってとかでも実装できそうな予感




//メイン画面

編集中の画面位置の保存(ブックマーク)

Ctrl+0~9または、▼から開いて設定する

ブックマークしたところに飛びたい

ブックマークナンバーの数字がショートカットになっています。
Ctrl+>hoge   hogeに当たる数字

コマンドを入力、使用したい

f:id:rai06:20171113225007p:plain
ウィンドウ→デベロッパーツール→アウトプットログ をクリック
コンソールコマンドを入力する と日本語だとかいてあるテキストボックスに入力すればok




//コマンド

英語にしたい、日本語に戻したい(言語変更)

ログに、 
英語 | culture=en
日本語 | culture=ja
etc.
で完了するとグリーンカラーでCmd: culture=ja のようなものが出力されてフォントファイルも読み込まれます

FPSを表示させたい

stat fps
で、表示できます。もう一度実行すると消えます

終了させたい

quit
でワンパンです。慣れるとこのコマンドを入力した方が早いことが多いので必須かも




//プラグイン(Plugins)

プラグインの導入方法

エンジンフォルダの、Pluginsに入れる
G:\Epic Games\Epic Games\UE_4.17\Engine\Plugins
自分の環境下ではこのようなディレクト
そしてメイン画面から、編集→Pluginsでマネージャを開き適用したいプラグインにチェックをいれてUE4を再起動
または、
導入したいプロジェクトのほげ~.uproject などがあるプロジェクトフォルダ内にPluginsフォルダを作成してそこに入れるといけます

Online Subsystem(デフォ)

steam系を使用するときに使ってます。
DefaultEngine.iniの編集も必要

[/Script/Engine.GameEngine]
+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="OnlineSubsystemSteam.SteamNetDriver",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")

[OnlineSubsystem]
DefaultPlatformService=Steam

[OnlineSubsystemSteam]
bEnabled=true
SteamDevAppId=480

[/Script/OnlineSubsystemSteam.SteamNetDriver]
NetConnectionClassName="OnlineSubsystemSteam.SteamNetConnection"

docs.unrealengine.com

Steam系を使いたい(Advanced Sessions Plugin)

Steamのことならお任せあれのプラグイン
オンラインマルチ対戦とかも簡単に実装できたり、
Steamアイコン、名前などの取得が容易
Steam系でお世話になります。
ただ4.17だと?パッケージ後exeを開くとエラー吐きます??
forums.unrealengine.com



おすすめ機能(随時)

アセットサーチ(アセット検索)

Ctrl+P でアセットファイルを検索できかなり便利です


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

よく使いそうなテンプレ → (いつか作る)