No good reason. This is a bug related to how for
syntax is currently pattern-matched, rather than evaluated in the way MaxVerse describes.
The goal is for partial updates through a var
of immutable data structures to be efficient, lessoning the need for mutable versions. That is not currently the case - there is nothing about the underlying representation that allows for anything other than a full copy on partial update. However, this requirement is being kept in mind for the new VM.
Runtime errors will never be able to be caught (they are often used for cases that MaxVerse may have semantics for but we haven’t yet implemented). However, try
/catch
with user-defined exceptions is being discussed.
That looks like a bug (I’m making a bug report for it currently). It won’t act at all like the version in an archetype instantiation, but instead will just act like a plain function invocation, producing a new instance of cat
with Name
as "foo"
and Sound
as "boo"
.
thanks very much for that!
The scene graph will support dynamic instantiation of entities, components, and prefabs. So anything built using the new framework will be dynamically instantiable. The existing devices are not currently part of that set as they’re internally built using other means. As the scene graph improves we will start to build devices using the new framework which will enable dynamic instantiation of those devices.
In terms of access to values through Verse for the scene graph, every value you see on a component will be available to Verse and can be set dynamically through gameplay.
Verse runtime errors are not intended to be observable from Verse. Currently, with some effort they are observable, but this should not be relied upon. Doing anything short of halting execution everywhere would allow them to be observed.
For the foreseeable future, yes. There is currently no plan for support for any other editor.
- Is Play in editor going to be available anytime? if yes, any idea on the timeline?
- Are you planning to allow the usage of plugins on UEFN?
thanks again
Hi Hero! We’re going to work on ways to get more tutorials surfaced. For now, we’ve been updating the documentation site and we’ll be featuring more tutorials.
From our documentation team:
Programming with Verse | Unreal Editor for Fortnite Documentation | Epic Developer Community.
Great video tutorials:
We also post Verse snippets in the [snippet repository]
(Code Snippet Repository for Epic Developer Community). For example, Merge Sort and generic queues
Thanks to @summergrrrl for her help with this question.
Also look for more events coming in the near future!
We haven’t started designing any procedural elements for scene graph yet, such as how it will look when exposed to PCG, but we are thinking about it. The scene graph constructs (entity, component, prefabs) are all dynamically instantiable so programmers will be able to procedural generate their own content through Verse.
The scene graph framework isn’t currently planned to directy support data oriented design styles. Internally we may utilize these types of techniques for optimization of the system.
@Incredulous_Hulk thank you for answering so many of scene graph related questions. Awesome stuff, and we are really excited for the future of UE and UEFN. I’ve updated my post with to mark all the major questions that has been addressed. If you still have some time and capacity to answer the few remaining, I think we all will appreciate it.
@UltimateLambda I am very glad you answered so many of my questions. Thank you very much!
Hi Everyone!
Thank you so much for your many and thoughtful questions! The devs are stepping away for other duties. We’re going to leave the thread open so they can answer in the upcoming week, when they have time.
They won’t be able to answer everything, but they’ll answer what they can.
Thanks again to everyone!
I love that you guys just added the SpawnParticleSystem()
method, but this method makes it impossible to use existing epic provided particle systems like Gernade Explosion and Gas Explosion. Is this planned to be implemented (either through editables, or allow us to drag those systems into our projects to be used by assets)?
Thanks for the answers!
-
I actually have a script that detects crashed devices, and it’s important since I can restart the round whenever it occurs, we don’t have any other means to do that, a crash on an important verse device will basically create a zombie server by default. So I guess my actual question was “why isn’t a crash just causing a local crash somehow instead of crashing the whole device”
-
Also forgot to ask you “Why do we need to use a failure context to mutate a map value ?”
Will we be able to cast to a parametric type in the future?
For writes like:
var X:[int]int = map{}
if {set X[0] = 1}
the set
will never fail, and you can ignore the possible failure the compiler assumes may occur via if {...}
. For:
struct1 := struct<computes>:
Data1:int
Data2:int
var X:[int]struct1 = map{}
set X[0].Data1 = 1
the set
will always fail. Put another way, complete assignments of the particular entry in the map will never fail, but partial assignments may.
Yes, this will be supported, but will have some limitations. In particular, subtyping of parametric types is determined by first matching on the traditional inheritance graph. Then, once a match is found, structurally matching. For example,
class1(t:type) := class {}
X:class1(int) = class1(float){}
succeeds - class1
is via the traditional inheritance graph a subtype of class1
, and there is no structure to match, so the subtyping succeeds. That same behavior would need to occur at runtime for casting. However, that structural match is much harder to deal with at runtime where static types may not be present for a variety of values - functions, in particular.