Ask Epic: Verse - March 28 @ 10:00 AM ET

No good reason. This is a bug related to how for syntax is currently pattern-matched, rather than evaluated in the way MaxVerse describes.

1 Like

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.

2 Likes

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.

1 Like

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".

2 Likes

thanks very much for that!

1 Like

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.

1 Like

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.

1 Like
  1. Is Play in editor going to be available anytime? if yes, any idea on the timeline?
  2. 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. :slight_smile:

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.

1 Like

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.

1 Like

@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 :white_check_mark: 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. :slight_smile:

2 Likes

@UltimateLambda I am very glad you answered so many of my questions. Thank you very much!

2 Likes

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!

6 Likes

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” :person_shrugging:

  • 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?

1 Like

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.

1 Like

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.

1 Like