UEProg by milkc0de

    Search

    Home

    UEFN Verse: ガード撃破位置にVFXを出す

    Guardヘッドショットで「headshot」を1秒表示する(3デバイスのみ)

    UEFN / Verseでプレイヤー名を表示する方法

    UEFN Verseサンプル - Trigger起動でBearのPropがプレイヤーについてくる

    ガードの行動範囲を「プレイヤー中心」に縛る(Leash)ガードAI

    通常編集とシンプル編集で 窓開けリセットの最短時間を測定

    UEFN: 建物内が暗くなる場合の対処(Cast Shadow一括OFF) by milkc0de

    UEFN / VerseのみでPINコード・パスコード入力パッドを実装する

    UEFN / Verseのみで作ったPINコード入力パッドを初心者向けに分解して解説する

    UEProg by milkc0de

    Home

    UEFN / Verseでプレイヤー名を表示する方法

    UEFN Verseサンプル - Trigger起動でBearのPropがプレイヤーについてくる

    UEFN Verse: ガード撃破位置にVFXを出す

    Guardヘッドショットで「headshot」を1秒表示する(3デバイスのみ)

    ガードの行動範囲を「プレイヤー中心」に縛る(Leash)ガードAI

    通常編集とシンプル編集で 窓開けリセットの最短時間を測定

    UEFN: 建物内が暗くなる場合の対処(Cast Shadow一括OFF) by milkc0de

    UEFN / VerseのみでPINコード・パスコード入力パッドを実装する

    UEFN / Verseのみで作ったPINコード入力パッドを初心者向けに分解して解説する

    milkc0de

    XTwitch
    UEProg by milkc0de
    /
    通常編集 vs シンプル編集 窓開けリセット時間の測定(UEFN)
    通常編集 vs シンプル編集 窓開けリセット時間の測定(UEFN)

    通常編集 vs シンプル編集 窓開けリセット時間の測定(UEFN)

    窓開けリセット時間の測定(UEFN)

    By milkc0de

    建築編集の速度を定量的に比較するため、

    「窓開け → リセット」と「窓開け → ショットガン → リセット」の最短時間を計測しました。

    測定には Perception Trigger を3×3(計9個)配置したVerseデバイスを使用しています。

    壁が開いた瞬間にタイマー開始、壁が閉じた瞬間にタイマー終了する仕組みです。

    測定条件

    ・編集対象:壁の窓編集

    ・ショットガン:センチネルポンプ(ミシック)

    ・数値:すべて最短値

    測定結果

    操作
    通常編集
    シンプル編集
    窓開け + リセット
    0.200 sec
    0.400 sec
    窓開け + SG + リセット
    0.534 sec
    0.667 sec

    編集のみの比較

    窓開け + リセットのみを見ると

    通常編集

    0.200 sec

    シンプル編集

    0.400 sec

    シンプル編集は約2倍の時間が必要という結果になりました。

    ショットガンを挟んだ場合

    窓開け → SG → リセット

    通常編集

    0.534 sec

    シンプル編集

    0.667 sec

    差は 0.133 sec まで縮まります。

    ショットガン操作の追加コスト

    「SGを挟んだことで増えた時間」を分離すると

    通常編集

    0.534 − 0.200 = 0.334 sec

    シンプル編集

    0.667 − 0.400 = 0.267 sec

    つまり

    編集自体は通常編集が速いですが、

    ショットガン操作を挟む追加コストは通常編集の方が大きい結果になりました。

    測定デバイス構成

    ・Perception Trigger ×9(3×3)

    ・壁の背面にダミーを配置

    窓が開くと視線が通り Trigger が反応し、

    壁が閉じると視認が失われるため、編集時間を測定できます。

    Verseコード

    using { /Fortnite.com/Devices }
    using { /Verse.org/Simulation }
    using { /UnrealEngine.com/Temporary/Diagnostics }
    using { /UnrealEngine.com/Temporary/UI }
    
    edit_reset_timer_device := class(creative_device):
    
        @editable
        Perception_trigger_device:[]perception_trigger_device = array{}
    
        var Count : int = 0
    
        Widget:NewWidgetBlueprint = NewWidgetBlueprint{}
    
        StringToMessage<localizes>(value:string) : message = "{value}"
    
        OnBegin<override>()<suspends>:void=
            for(T: Perception_trigger_device):
                T.DeviceSeesAgentEvent.Subscribe(OnDeviceSeesAgentWrapper)
                T.DeviceLosesSightOfAgentEvent.Subscribe(OnDeviceLosesSightOfAgentWrapper)
    
            for(P: GetPlayspace().GetPlayers()):
                if(PlayerUI := GetPlayerUI[P]):
                    set Widget.text = StringToMessage("0.0 sec")
                    PlayerUI.AddWidget(Widget)
    
            spawn{Watch()}
    
        OnDeviceSeesAgentWrapper(Agent:agent):void=
            set Count = Count + 1
    
        OnDeviceLosesSightOfAgentWrapper(Agent:agent):void=
            set Count = Count - 1
    
        Watch()<suspends>:void=
            var StartTime:float = GetSimulationElapsedTime()
    
            loop:
                if(Count <> 0):
                    var ElapsedTime:float = GetSimulationElapsedTime() - StartTime
    
                    if(ElapsedTime > 0.0):
                        Str := "{ElapsedTime}"
                        var Str2:string = ""
    
                        for(C:Str):
                            if(Str.Length - Str2.Length > 3):
                                set Str2 = "{Str2}{C}"
    
                        set Widget.text = StringToMessage("{Str2} sec")
    
                else:
                    set StartTime = GetSimulationElapsedTime()
    
                Sleep(0.001)