ProtoFlux (Documentation Request) #1392
Replies: 2 comments 1 reply
-
Additional question:
|
Beta Was this translation helpful? Give feedback.
-
ProtoFlux compiled or interpretedI think the best way to describe it is that it's kinda in between. It's compiled to machine code, but the raw nodes are used to build "acceleration structures" - evaluation and execution lists that help it run faster. It also builds mapping for the stack and other things, which are then used when executing the code, rather than having to be evaluated at runtime. If it's one or the other, then it's sort-of interpreted (but the actual code of the individual nodes is compiled). We are considering adding JIT compilation at some point. I don't think it really fits neatly into either category. If it is compiled, what does the compiler actually do, and what does it not do?See above How are ProtoFlux node graphs "grouped", and what is the function of the "link" node?Any nodes that directly reference each other (evaluation, impulses or references) must be in the same group What does it mean that ProtoFlux runs in a VM?Yes, it's a type of virtual stack-based VM. What happens to a running program when you make changes to the node graph?A new graph is build. Whatever code was running with the old one will be left to run and complete, but that's mostly just async stuff, any new invocations will use the new graph to build. When new graph is built, any (semi)-persistent values and states are remapped to the new graph to preserve "continuity" where possible. E.g. smooth lerp will keep its internal value. How does ProtoFlux tie into the FrooxEngine?This would be quite complex to answer fully, so I don't know what level of detail you're looking for. On the surface, we generate bindings, which create "shell" components representing the actual nodes in the ProtoFlux. Those are used by the custom code of the integration, to build the node setup in actual ProtoFlux, build it and then run/evaluate it when needed. What is the difference between the different types of calls?Which ones are you referring to? What are the differences between the different variable types?Which ones are you referring to? Like types int, float, string and so on? Or Value/Object? How are coroutines created and managed?Protoflux doesn't support coroutines. Do you mean async methods? |
Beta Was this translation helpful? Give feedback.
-
I frequently encounter a lot of uncertainty, speculation and misinformation surrounding ProtoFlux. For the sake of documentation and clarification, I want to request some explanations about what ProtoFlux is, what it is not and how code is executed under the hood.
Some specific questions I've seen pop up over time:
This is not an exhaustive list of questions. They don't have to be answered one-by-one, but should serve as some guidance for what I believe are topics that are surrounded by some uncertainty. If anyone else has questions, it might be good to add those here!
Beta Was this translation helpful? Give feedback.
All reactions