朱峰社區(qū)首頁 朱峰社區(qū)

搜索資源 注冊(cè)|登陸

等待

返回 展開菜單

使用虛幻引擎4可視化記錄器

rayfire動(dòng)力學(xué) 觀看預(yù)覽

rayfire動(dòng)力學(xué)

包含2節(jié)視頻教程
關(guān)注8.8萬

rayfire制作破碎、爆破、子彈等都有其獨(dú)特的地方。你可以快速制作類似美國大片的破碎效果。利用軟件快速模擬大爆炸或者子彈的碎片。增加你的特效技術(shù)含量!

關(guān)閉

有一類游戲缺陷通過用戶報(bào)告是很難跟蹤的。這種類型的缺陷一般涉及到復(fù)雜的步驟,可能涉及到AI要根據(jù)當(dāng)前的游戲狀態(tài)做出決定。 當(dāng)用戶報(bào)告一個(gè)類似這種情形的問題時(shí),僅能在可以觀察得到的結(jié)果上報(bào)告。 這使得追蹤游戲狀態(tài)相關(guān)的問題變得非常難。 虛幻引擎4有一個(gè)工具可以在這方面予以輔助;我們稱之為Visual Logger(可視化記錄器)。 其核心同您以前看過的很多日記記錄系統(tǒng)類似,可以捕獲當(dāng)前正在被記錄的actor的狀態(tài),然后當(dāng)那個(gè)事實(shí)完成之后在游戲或編輯器中可視化地顯示該狀態(tài)。 這是一個(gè)強(qiáng)大的工具,允許您在出現(xiàn)問題時(shí)查看游戲狀態(tài),同時(shí)還提供用戶報(bào)告。 通過查看那些數(shù)據(jù),您可以將您期望發(fā)生的事同數(shù)據(jù)及底層代碼比較。

要想查看正在運(yùn)作中的Visual Logger(可視化記錄器),請(qǐng)使用“窗口| 開發(fā)者工具 | Visual Logger(可視化記錄器)”菜單。 在4.7版本之前,請(qǐng)使用控制臺(tái)命令"VisLog"。 這里是StrategyGame中的一個(gè)會(huì)話。 第一個(gè)圖片顯示了該可視化記錄器,第二張圖片是編輯器中的視口。 注意,有一條代表選中AI的路徑的紫色線,時(shí)間軸上選中點(diǎn)處還有一個(gè)紅色的位置標(biāo)識(shí)。


正在運(yùn)作中的可視化記錄器。


編輯器中的關(guān)卡視口,顯示了呈現(xiàn)信息的可視化記錄器.

下面圖片中的突出呈現(xiàn)區(qū)域顯示了Actor列表,這些Actor的信息在記錄過程中被記錄到了可視化記錄器中。 還有一個(gè)搜索條,用于通過名稱快速地查找Actor的日志信息。


Actor列表和搜索選項(xiàng)。

下一張圖片突出顯示了時(shí)間軸視圖。 這張圖片中的拖拽塊位于23.53秒標(biāo)記處。 StrategyAIController_1被選中,所以那個(gè)時(shí)刻其他區(qū)域的任何信息都屬于該Actor。 帶顏色的水平條是記錄的事件。 時(shí)間條可以前后拖動(dòng)來通過特定快照即時(shí)地更新其他區(qū)域。


時(shí)間軸區(qū)域

在下面圖片的左下角區(qū)域的高亮顯示部分中,可視化記錄器顯示了在時(shí)間軸上的指定時(shí)間處可以捕獲的針對(duì)那個(gè)Actor的任何快照數(shù)據(jù)。 該數(shù)據(jù)在每個(gè)給定幀中被捕獲一次,該Actor通過使用UE_VLOG()宏請(qǐng)求一個(gè)可視化日志項(xiàng)。 同一幀中的多個(gè)可視化記錄調(diào)用會(huì)重用那幀的相同數(shù)據(jù)。 作為快照一部分捕獲的數(shù)據(jù)可以進(jìn)行分類,并針對(duì)你的游戲進(jìn)行自定義(以下提供了一個(gè)代碼示例)。


展開了自定義類別的Actor快照區(qū)域

下圖中突出顯示的區(qū)域包圍了可視化記錄器的記錄區(qū)域。 它顯示了該日志所寫入的類別及日志信息本身。 如果每幀有多個(gè)日志信息,那么它們將在那個(gè)區(qū)域顯示為列表。


顯示信息的日志區(qū)域

既然現(xiàn)在您知道了可視化記錄器的主要區(qū)域的作用,現(xiàn)在讓我們看下如何在您的游戲中添加針對(duì)它的支持吧。 在下圖中,使用第一人稱模板創(chuàng)建了一個(gè)新項(xiàng)目,命名為GDC,用于在游戲開發(fā)者大會(huì)上進(jìn)行展示。 向Actor的捕獲狀態(tài)信息中添加了一個(gè)函數(shù),并添加了一個(gè)UE_VLOG()宏調(diào)用來觸發(fā)日志記錄器的捕獲。


帶有示例數(shù)據(jù)的可視化記錄器

為了填充該工具的快照區(qū)域,您需要重載一個(gè)虛擬函數(shù)GrabDebugSnapshot()。 該函數(shù)是作為Actor的一部分實(shí)現(xiàn)的,所以如果您不想提供自定義信息,您可以跳過此步。 可視化記錄器可以根據(jù)您的編譯設(shè)置進(jìn)行編譯,所以您必須使用適當(dāng)?shù)念^文件封裝該函數(shù)。 以下是需要添加到GDCCharacter.h文件中的代碼,以添加快照支持:

#if ENABLE_VISUAL_LOG

    /** Appends information about this actor to the visual logger */

    virtual void GrabDebugSnapshot(FVisualLogEntry* Snapshot) const override;

#endif

該方法的實(shí)現(xiàn)請(qǐng)參照下面,添加了一個(gè)類別并在那個(gè)類別中添加了一項(xiàng)。 再次說明,該方法封裝在#ifdef中,以防版本設(shè)置編譯可視化記錄器支持。 該代碼添加到GDCCharacter.cpp中。

#if ENABLE_VISUAL_LOG

void AGDCCharacter::GrabDebugSnapshot(FVisualLogEntry* Snapshot) const

{

    Super::GrabDebugSnapshot(Snapshot);

    const int32 CatIndex = Snapshot->Status.AddZeroed();

    FVisualLogStatusCategory& PlaceableCategory = Snapshot->Status[CatIndex];

    PlaceableCategory.Category = TEXT("GDC Sample");

    PlaceableCategory.Add(TEXT("Projectile Class"), ProjectileClass != nullptr ? ProjectileClass->GetName() : TEXT("None"));

}

#endif

該函數(shù)僅當(dāng)Actor向可視化記錄器記錄日志時(shí)調(diào)用。 出于示范的目的,記錄了一個(gè)射彈的發(fā)射情形,以便可以輕松地觸發(fā)它并添加到第一人稱模板代碼中。 在下面的OnFire()函數(shù)中,請(qǐng)注意UE_VLOG()宏的應(yīng)用。 這是您告訴可視化記錄器您想如何捕獲Actor的數(shù)據(jù)的方式。 正如前面所述的,在首次使用那個(gè)宏時(shí),可視化記錄器將調(diào)用 GrabDebugSnapshot()來收集在快照面板中顯示所需的數(shù)據(jù)。 該宏像其他UE_LOG()宏一樣進(jìn)行編譯,所以不需要在 #ifdef中顯式地封裝它。

void AGDCCharacter::OnFire()

{

    // try and fire a projectile

    if (ProjectileClass != NULL)

    {

        const FRotator SpawnRotation = GetControlRotation();

        // MuzzleOffset is in camera space, so transform it to world space before offsetting from the character location to find the final muzzle position

        const FVector SpawnLocation = GetActorLocation() + SpawnRotation.RotateVector(GunOffset);

        UWorld* const World = GetWorld();

        if (World != NULL)

        {

            // spawn the projectile at the muzzle

            World->SpawnActor<AGDCProjectile>(ProjectileClass, SpawnLocation, SpawnRotation);

            UE_VLOG(this, LogFPChar, Verbose, TEXT("Fired projectile (%s) from location (%s) with rotation (%s)"),

                *ProjectileClass->GetName(),

                *SpawnLocation.ToString(),

                *SpawnRotation.ToString());

        }

    }

    // try and play the sound if specified

    if (FireSound != NULL)

    {

        UGameplayStatics::PlaySoundAtLocation(this, FireSound, GetActorLocation());

    }

    // try and play a firing animation if specified

    if(FireAnimation != NULL)

    {

        // Get the animation object for the arms mesh

        UAnimInstance* AnimInstance = Mesh1P->GetAnimInstance();

        if(AnimInstance != NULL)

        {

            AnimInstance->Montage_Play(FireAnimation, 1.f);

        }

    }

}

您不僅可以記錄文本信息,您還可以記錄像您之前在StrategyGame關(guān)卡視口中看到的可視化的圖形信息。 這是一個(gè)強(qiáng)大的功能,因?yàn)樗梢詭椭梢暬螒蛑挟?dāng)前的運(yùn)行狀態(tài)。 以下圖片顯示了您可以可視化記錄的不同形狀類型。


路徑信息、圓柱體、椎體、膠囊體、盒體式形狀。

以下宏提供了記錄形狀的支持。

clarisse搭建3D天空之城拉普達(dá)全過程 clarisse搭建3D天空之城拉普達(dá)全過程

朱峰社區(qū)網(wǎng)頁版
朱峰社區(qū)網(wǎng)頁版(手機(jī)掃描-分享-添加到屏幕)


朱峰社區(qū)公眾號(hào)
朱峰社區(qū)微信公眾號(hào)(微信掃一掃-關(guān)注)

資源說明圖文教程無法下載,只能觀看圖片和文字。
版權(quán)規(guī)則本站圖文皆來自互聯(lián)網(wǎng)共享資源,如涉及到版權(quán)請(qǐng)查看版權(quán)規(guī)則。本平臺(tái)提供圖文僅可用于個(gè)人學(xué)習(xí),如用于商業(yè)請(qǐng)購買正版。您必須遵守的版權(quán)規(guī)則

未知用戶

未知用戶

bozim

bozim

普通會(huì)員

棒棒噠,感謝分享

贊0

踩0

17年2月7日

qwe7610320

qwe7610320

VIP終身

繼續(xù)加油

贊0

踩0

17年2月7日

2005-2025 朱峰社區(qū) 版權(quán)所有 遼ICP備2021001865號(hào)-1
2005-2025 ZhuFeng Community All Rights Reserved

VIP

朱峰社區(qū)微信公眾號(hào)

回頂部

1.復(fù)制文本發(fā)給您的QQ好友或群、微信等;好友點(diǎn)擊鏈接以后,轉(zhuǎn)發(fā)就成功了。 2.如朋友點(diǎn)擊您的鏈接,您需要需刷新一下才行;同一個(gè)好友僅能點(diǎn)擊一次。
購買VIP,觀看所有收費(fèi)教程。