i/o blog

ゲーム系の情報の入出力してみるブログ

UE4 Particle チュートリアル11

manabibeya.com

LODやります

 

やったこと

 パーティクルのlodの設定し、距離に応じて

 ・rateを下げる

 ・パーティクルを発生させなくする

やり方は結構簡単で

①「LODを追加」を押しレベルを追加する

②LOD のレベルごとの詳細設定をする( より高いレベルからの設定をベースに設定する )

③LOD の切り替えタイミングの設定をする

な流れになります

 

f:id:dabura:20151101234313p:plain

LOD DistanceCheckTime

 lodの確認タイミング

LOD Method 

 切り替え方タイミングの設定

 ・Automatic ... 距離に応じて切り替える( 距離の確認タイミングは設定可能 )
 ・Direct Set ... ソースコード側で切り替える
 ・Active Automatic ... 時間に応じて切り替える( スポーンしたタイミングでlodのレベルが決まる )

LOD Distance

 レベルを変える距離

UE4 Particle チュートリアル10

manabibeya.com

今回は新規プロジェクトに含めることができる「スターターコンテンツ」に含まれているパーティクルの説明です

本格的に作られているパーティクルの特徴的な設定などをピックアップして説明しています

 

便利な操作(カスケード)

 ・Sボタン

複数のエミッターがある時に、ボタンを押した他のエミッターを表示させなくすることができる

なお、✔ボタンでも表示/非表示の設定はできる

 

便利な操作(エディター) 

・Endボタン

エディター上で、オブジェクトをつかんでいるときにEndボタンを押すと、何かにぶつかるまで下に移動する

 なので、オブジェクトを地面に設置したい場合にとても有効な操作です

 

マテリアル

・DepthFade

半透明なオブジェクトと不透明なオブジェクトが交わった時にエッジが表示しないようにしたい場合に使用する

カメラからの距離に応じて透明度が変わる

Depth 表現式 | Unreal Engine

 

・エフェクトに使用する画像をライティングに反映させる設定

Deteal -> Material -> ShadingModel で DefaultLit に選択

 

カスケード

・SubUVの遷移スピードを補完する

Requiewd->SubUVセクションで Interpolation Method で設定すればok

画像の作り直しではなくエディター側で調整できる機能は便利ですね

 

 

Fireパーティクルの炎の揺らめきはなにか専用の機能があると思っていたら画像のUVアニメーションを利用してたみたい

なるほどなー

 

C#とWPFのお勉強

今年のCEDECWPFの話題が上がっていたものの、実際に触ったことが無いので触ります

ポッ拳におけるゲームエディタの設計と実装 | 公式サイト | CEDEC 2015 | Computer Entertainment Developers Conference

 

まず、ハンズオンで何か作ってみたかったのでこの方のスライドを参考にする

www.slideshare.net

 

そもそもWPFとは

Windows Presentation Foundation の略

特徴

GPUレンダリング可能

 -それだけではなく描画周りはwindowsFormより優れている点が多い

・なめらかなui

 -Animation機能が標準で搭載されている

XAML(eXtensible Application MarkupLanguage)でつくるGUI

 -XML形式の一種

 

ぱっと話を聞いた感じ、WindowsFormとよく比較されており、

それよりかなり便利になっているのがWPF

だからWPF使っとけ!みたいな話みたい

 

完成図

夕張さん is きゃわわ

f:id:dabura:20151028030239p:plain

 

また後日、処理の内容とか追っていきます

UE4 Particle チュートリアル9

ネットワークのやつの続きもやりたいけど、

今日はチュートリアルやりたい人間だったので い つ も の やります

manabibeya.com

 

アニメーショントレイルエミッタ

・軌跡なんかに使用できます

 

やったこと

・マテリアルとパーティクルの作成

・ボーンを指定して エミッターをくっつける

・パーティクルの微調整あれこれ

 

簡単でした

 

完成図

f:id:dabura:20151027031014p:plain

 

おまけ

FirstSocket      : hand_l

SecondSocket : hand_r

にすると以下のような結果に

f:id:dabura:20151027031334p:plain

このように First , Secondの範囲でエフェクトが発生されるようです

python2.0で指定したファイルを削除(移動)するプログラム

ブログにプログラムを張ってみるテスト

起動するとバーッと削除(移動)したいファイルがリストアップされます

そのあと「y」押すだけで実行できます

# -*- coding: utf-8 -*-

#import module
import os
import os.path
import sys
import shutil

# define value
targetPath = "F:\Library\Music" # path
movePath = "F:\_moved"
searchWord = " 1." # search word

#define function

#==========================================================
# getDeleteFileList
def getFileList( fileDir ) :
#print( "getDeleteFileList : " + fileDir )
tmpFileList = os.listdir( fileDir )
#print( "listLength : " + len( tmpFileList ) )

resultFileList = []

for file in tmpFileList :
filePath = fileDir + "\\" + file
if os.path.isfile( filePath ):
#print( filePath )
resultFileList.append( filePath )
elif os.path.isdir( filePath ):
resultFileList += getFileList( filePath ) #recursive
#else :
#print( " invalid file name : " + filePath )

return resultFileList

#==========================================================
# pickUpToList
def pickUpToList( list , word ) :
resultFileList = []

#print( "list size " + str( len(list) ) )
#return resultFileList

for file in list :
if( str( file ).find( word ) != -1 ) :
#print( file )
resultFileList.append( file )

return resultFileList

#==========================================================
# execDelete
def execDelete( list ) :

if( raw_input( 'excuteDelete ... y > ' ) == 'y' ) :
for file in list :
os.remove( file )

#==========================================================
# execMove
def execMove( list ) :
if( raw_input( 'excuteMove ... y > ' ) == 'y' ) :
for file in list :
os.stat( file )
shutil.move( file , movePath )

#==========================================================
# program start 

# is main ?
if( not __name__ == "__main__" ) :
print("not main.")
print("finish program.")
sys.exit(0)

# targetPath check
if( not os.path.isdir( targetPath ) ) :
print("targetPath is invalid.")
print("finish program.")
sys.exit(0)


print( "-- start -- " )
fileList = pickUpToList( getFileList( targetPath ) , searchWord )

#print( fileList )
for file in fileList :
print( file )

execDelete( fileList )
#execMove( fileList )


print( "-- finish --" )


itunesの曲がいくつかかぶっていたのでで試しに作ってみました

UE4でネットワークやってみる

www.slideshare.net

UE fes2015行ってきました

技術系の話は登壇者の話がとてもわかりやすく&面白そうな&すぐに実行できそうな内容が多かった印象でした

中でもalwaiさんのお手軽マルチプレイのセッションは実際にライブコーティングしながら、マルチプレイができる所までやってたので僕もやってみようかなと思いました

 

 

目標は、

①ネットワーク対戦で多人数プレイができる

②プレイヤーが球を発射することができ、相手に当たるとダメージを与えることができる

③オブジェクトなどを、サーバー/クライアント側で表示 & 処理がきちんとできること

って感じですかね

 

 

ひとまずやってみて③がうまくいかない感じ

ゲー開始時にクライアント側のobjectの生成位置がおかしい上に、荒ぶっているし、うまく同期できていないみたい

f:id:dabura:20151020042856p:plain

発射した弾は同期できてるっぽいんだけどなんだろう...

 

設定はこんな感じ

f:id:dabura:20151020043811p:plain

時間も時間なんでまた明日にでもやってみます

UE4 Particle チュートリアル8

manabibeya.com

Ribbonチュートリアルですね

軌跡の表現とかに使えます

 

やったこと

Ribbonエミッターの作成

・2種類のエミッターから構成されるパーティクルの作成

 

 

・Sourceモジュール

  今回のような何かのエフェクトを発生したい場合に使う

  文字列でエミッターの名前を指定する必要がある

・SpawnPerUintモジュール

  Sourceが動く距離に応じてパーティクルを発生させることができる

  普段使うSpawnモジュールだと、エミッターの座標から生成してしまうのでこちらを使用

 

結果

f:id:dabura:20151013002245p:plain