2016-08-05 5 views
0

Derzeit verwende ich ein Blueprint-Skript, um rund 60 Akteure in einem Umkreis eines fliegenden Bauern zu generieren und zu löschen. Das schafft Framerate Spikes, und ich habe gelesen, dass dies ein ziemlich schwerer Prozess ist.Wie optimiere ich das Laichen von Schauspielern in der Unreal Engine 4?

Also natürlich möchte ich die Leistung dieses Prozesses erhöhen, indem Sie einfach die gleiche Logik in C++ platzieren. Aber ich möchte zuerst ein paar Dinge wissen, um sicherzustellen, dass das, was ich tue, richtig ist.

1) Ist die spawnActor Funktion in C++ von selbst - schneller - als der Blueprint-Knoten?

2) Welche Art von Eigenschaften des Blueprint, erhöhen die Verarbeitungszeit des Laichens? Ich weiß, dass zum Beispiel die Aktivierung der Physik die Prozesszeit erhöht, aber gibt es noch weitere Eigenschaften, die ich berücksichtigen muss?

Ich danke alle ihre Zeit nehmen, diese zu lesen, und jede Art von Hilfe ist sehr willkommen :)

+1

Eine Blueprint-exposed-Funktion ruft in der Regel nur das C++ direkt auf, was den Overhead im Zusammenhang mit Blueprints im Vergleich zu nativem C++ erhöht. Haben Sie eine Menge Logik (z. B. komplexe Algorithmen in Tick-Handlern) in Blaupausen? –

+1

[einige interessante verwandte lesen] (https://forums.unrealengine.com/showthread.php?3035-New-Twitch-livestream-with-Fortnite-developers-Thursday-April17&p=19464&viewfull=1#post19464) –

+0

@ MarcoA. Ich verwende überhaupt keine Ticks, alles wird auf einem beginOverlap-Ereignis generiert. Überprüfen Sie den Link jetzt :) – Sem

Antwort

1

Sie können nicht sagen, dass C++ 's SpawnActor schneller ist, da der SpawnActor schließlich des Plans in dem C++ SpawnActor führt. Aber natürlich, wenn Sie C++ - Codes direkt schreiben, dann speichert es die Zeit des Aufrufs mehrerer Funktionen Routing Blueprint-Knoten in C++ - Funktion. Daher denke ich, dass es für den Spike von SpawnActor nicht so ist, weil er Blueprint SpawnActor aufgerufen hat, d. H. Das Aufrufen von C++ wird es nicht beheben.

Der SpawnActor selbst hat seine Kosten, also ruft er 60 mal hintereinander auf, was sicherlich einen Spike ausmacht. Ich bin mir nicht sicher, wie viel Overhead in SpawnActor ist, aber zumindest kann ich erraten, dass die Speicherzuweisung für diese neuen Actors etwas Zeit kostet. Auch wenn Ihre Akteurschablone viele Bestandteile hat, dauert es mehr Zeit. Eine übliche Technik besteht darin, einen Actor Pool zu verwenden, um einige Actors vorab zu spawnen und sie wiederzuverwenden.

+0

Ein Schauspieler Pool huh, ich werde es sicherlich überprüfen, danke :) – Sem

+0

@Sem Ich wette, du hast bereits Schauspieler Pool bekannt, bevor ich gepostet habe, ich schrieb sie nur für eine Vollständigkeit meines Beitrags: p –

0

C++ wird immer schneller sein als Blueprints, weil die letzten auf Vorlagen basieren, so dass Ihre Kompilierung und Fehlerbehebung nicht einfach sein wird. Die Anzahl der Zeichen wirkt sich aufgrund der CPU-Zeit immer auf die Leistung aus, aber es ist in Ordnung. Sie müssen berücksichtigen, dass Sie Zugriff auf Zeichen erhalten, die auf UE4-Iteratoren und dedizierten Containern basieren, sodass sie bereits optimiert und Thread-sicher sind.

Verwandte Themen