Post by Admin on Jul 16, 2016 4:40:28 GMT
Scott Richmond @strich Dec 14 2015 21:47
Just a bit curious: Is Entitas being actively developed at the moment? Roadmap progress seems a little slow and there isn't much external contribution.
Simon Schmid @sschmid Dec 14 2015 22:02
@strich Yes, it’s still in active development. We're constantely working on it. But you’re right, I should update the Roadmap every now and then, too
Scott Richmond @strich Dec 14 2015 22:04
Would you mind giving me a quick summary roadmap now? I'd love to know just where it is headed at the moment
Simon Schmid @sschmid Dec 14 2015 22:12
It’s what you can find in the Planned or in development section.
bitwise matchers and everything from the „uncertain“ section are on pause for now
there will be roslyn code generator in the future, so we can generate even with compile errors
Simon Schmid @sschmid Dec 14 2015 22:21
I also added functionality to reset the pool which is handy for soft restart of the game and added methods to help preventing memory leaks
Scott Richmond @strich Dec 14 2015 22:31
Interesting
Scott Richmond @strich Dec 14 2015 22:48
Have you guys had a chance to play around with uFrame?
Jan Thomä @derkork Dec 14 2015 23:00
I played a bit with uFrame ECS, but tbh i think their approach is unmanageable for projects larger than the usual "hello world".
Problem is, that their approach doesn't work very well with refactoring.
Entitas uses code in -> code out. So you can pretty much refactor anything within the IDE.
With uFrame ECS you have this visual editor and this then gets generated to code. And from this code you start to implement your own stuff.
If you need to refactor anything, you need to rename it in your graph, then re-generate and then fix all the stuff in your own code that has been broken by the change.
This gets out of hand quickly, in my experience.
Scott Richmond @strich Dec 14 2015 23:04
mmm. Yeah I am starting to get that in my tests. However I didn't imagine Entitas would be any different - I've yet to sit down properly with Entitas
Jan Thomä @derkork Dec 14 2015 23:07
well entitas is really a lot simpler under the hood than uFrame ECS
it's basically just two classes Pooland Entity.
the rest is just generated sugar on top
while on ECS every component you create is an own subclass of ECSComponent consisting of at least two partial files.
in Entitas if you want to rename a component property you can just do it in your IDE
all references will be fixed including the ones in the generated code
if you regenerate from this point, the generator will just issue the same code again so you don't have a problem.
in ecs you first have to change the property in code (if you can) and then have to update the graph
and then regenerate
and hope everything still works..
Scott Richmond @strich Dec 14 2015 23:11
That certainly sounds like a better way to do it from the coders perspective
Something I think would be better for us
Jan Thomä @derkork Dec 14 2015 23:12
i might be a bit biased here because i lost a crapton of work with ECS so far which made me switch to Entitas.
Scott Richmond @strich Dec 14 2015 23:12
uFrame seems like it would be fantastic if you wanted to make use of the full graph-based coding framework
hah I see. Well IMO uFrame ECS isn't prod ready yet
Jan Thomä @derkork Dec 14 2015 23:13
yes but this is not feasible... i mean even a simple if else is a chore to do with so-called visual scripting
Scott Richmond @strich Dec 14 2015 23:13
Well, that is only true if you can do if else in code in the first place (IE you're not really a coder)
Jan Thomä @derkork Dec 14 2015 23:14
i see, but then visual scripting would only make sense if you had some higher level logic blocks
e.g. a pluggable AI, or some resource management system for a game or something the like
because if you are able to do low-level if/else in visual blocks, you're probably able to do it in code as well.
Scott Richmond @strich Dec 14 2015 23:15
Indeed. I don't think our code team is really fond of such a GUI-based workflow
For the obv reason you stated - Takes more time
Jan Thomä @derkork Dec 14 2015 23:15
what i like about ECS is that it frees you from typing a lot of boilerplate code
Scott Richmond @strich Dec 14 2015 23:16
Are you saying that Entitas does still require quite a bit of boilerplate code writing?
Jan Thomä @derkork Dec 14 2015 23:16
also it has property change events and a more powerful grouping system.
no, it's not a lot of typing but the workflow is inherently convoluted.
go to the ide, create class, type, save, go back to unity, generate, go back to the IDE...
but that's because there is a generator involved, I wouldn't know how to improve this.
in ECS, you right-click, create entity, add some props and boom your code is there and you can start working.
Scott Richmond @strich Dec 14 2015 23:18
Yeah I see what you mena
Jan Thomä @derkork Dec 14 2015 23:18
also i very much like ECS's grouping
Scott Richmond @strich Dec 14 2015 23:19
I wonder if it can be improved with polling the Editor if its compiling and then auto-code generating, or something.
Jan Thomä @derkork Dec 14 2015 23:19
where you can say "give me all units having a health > 50"
which isn't doable with entitas as entitas only groups by "entity having/not having component X"
Scott Richmond @strich Dec 14 2015 23:20
I wasn't even aware ECS did that hah
Jan Thomä @derkork Dec 14 2015 23:20
for an RTS this grouping is really neat as you could create a component "Squad" with a property "index"
Scott Richmond @strich Dec 14 2015 23:20
So Entitas has no observable properties generation?
Jan Thomä @derkork Dec 14 2015 23:20
none that I'm aware of.
Scott Richmond @strich Dec 14 2015 23:21
Damn, that is a pretty major feature loss
Jan Thomä @derkork Dec 14 2015 23:21
yes... but you can somewhat emulate it otherwise
Scott Richmond @strich Dec 14 2015 23:22
Hrm there is a group observer
Jan Thomä @derkork Dec 14 2015 23:22
e.g Matcher.AllOf(Matcher.Unit, Matcher.InSquad).
gives you all units that are in squads
which is ok, but if you want to know all units in a specific squad
you need to iterate these units..
unless you want to have one component type per assignable squad
like Squad1, Squad2, etc.. but I wouldn't go that route
so yes, you only get matches on component types, not component properties.
which is my only major gripe so far.
Scott Richmond @strich Dec 14 2015 23:25
That I think I'm okay with - The lack of observable properties is a real bummer though. I wonder how hard it'd be to contribute and implement it
@sschmid @mzaks - How are you guys with accepting entirely new feature contributions? For example observable properties.
Jan Thomä @derkork Dec 14 2015 23:27
another thing that I'm not 100% sure of is the strict decoupling of the entity component system from Unity's gameobjects/monobehaviours
i would agree this might be helpful if you simulate a headless server
but it cuts out a lot of options
so if for example you want to use things like behaviour designer or chronos, which work on gameobjects and monobehaviours, you'll have to come up with some good ideas on how to make them work with Entitas.
or you'd have to roll your own..
I haven't yet found a strategy that would fully convince me...
but i definitely don't want to write my own behaviour tree implementation if there is a readymade solution available.
Scott Richmond @strich Dec 14 2015 23:31
Well one thing we really struggled with in War for the Overworld was the shear number of Monob gameobjects - If we had gone truly data-driven we probably could have freed a lot of resources by only having GOs for what we on screen and not the entire map simulation
Jan Thomä @derkork Dec 14 2015 23:31
oh so WFTO was made in unity?
Scott Richmond @strich Dec 14 2015 23:31
Yep
Jan Thomä @derkork Dec 14 2015 23:32
actually that game is still on my steam wishlist, haven't had time to play yet... but looks really cool
Scott Richmond @strich Dec 14 2015 23:32
We rolled our own physics system though. Which was a bit of a mistake, too. But that's another story
Jan Thomä @derkork Dec 14 2015 23:32
Yeah well you always know more after the fact..
Scott Richmond @strich Dec 14 2015 23:32
Indeed
Jan Thomä @derkork Dec 14 2015 23:34
yeah well ... but going 100% entitas means that most of the helpful stuff from the asset store isn't going to apply on you..
at least as far as behaviour is concerned.
which might not be an issue if you have a big enough development team though
do you use any kind of behaviour trees in WFTO ?
Just a bit curious: Is Entitas being actively developed at the moment? Roadmap progress seems a little slow and there isn't much external contribution.
Simon Schmid @sschmid Dec 14 2015 22:02
@strich Yes, it’s still in active development. We're constantely working on it. But you’re right, I should update the Roadmap every now and then, too
Scott Richmond @strich Dec 14 2015 22:04
Would you mind giving me a quick summary roadmap now? I'd love to know just where it is headed at the moment
Simon Schmid @sschmid Dec 14 2015 22:12
It’s what you can find in the Planned or in development section.
bitwise matchers and everything from the „uncertain“ section are on pause for now
there will be roslyn code generator in the future, so we can generate even with compile errors
Simon Schmid @sschmid Dec 14 2015 22:21
I also added functionality to reset the pool which is handy for soft restart of the game and added methods to help preventing memory leaks
Scott Richmond @strich Dec 14 2015 22:31
Interesting
Scott Richmond @strich Dec 14 2015 22:48
Have you guys had a chance to play around with uFrame?
Jan Thomä @derkork Dec 14 2015 23:00
I played a bit with uFrame ECS, but tbh i think their approach is unmanageable for projects larger than the usual "hello world".
Problem is, that their approach doesn't work very well with refactoring.
Entitas uses code in -> code out. So you can pretty much refactor anything within the IDE.
With uFrame ECS you have this visual editor and this then gets generated to code. And from this code you start to implement your own stuff.
If you need to refactor anything, you need to rename it in your graph, then re-generate and then fix all the stuff in your own code that has been broken by the change.
This gets out of hand quickly, in my experience.
Scott Richmond @strich Dec 14 2015 23:04
mmm. Yeah I am starting to get that in my tests. However I didn't imagine Entitas would be any different - I've yet to sit down properly with Entitas
Jan Thomä @derkork Dec 14 2015 23:07
well entitas is really a lot simpler under the hood than uFrame ECS
it's basically just two classes Pooland Entity.
the rest is just generated sugar on top
while on ECS every component you create is an own subclass of ECSComponent consisting of at least two partial files.
in Entitas if you want to rename a component property you can just do it in your IDE
all references will be fixed including the ones in the generated code
if you regenerate from this point, the generator will just issue the same code again so you don't have a problem.
in ecs you first have to change the property in code (if you can) and then have to update the graph
and then regenerate
and hope everything still works..
Scott Richmond @strich Dec 14 2015 23:11
That certainly sounds like a better way to do it from the coders perspective
Something I think would be better for us
Jan Thomä @derkork Dec 14 2015 23:12
i might be a bit biased here because i lost a crapton of work with ECS so far which made me switch to Entitas.
Scott Richmond @strich Dec 14 2015 23:12
uFrame seems like it would be fantastic if you wanted to make use of the full graph-based coding framework
hah I see. Well IMO uFrame ECS isn't prod ready yet
Jan Thomä @derkork Dec 14 2015 23:13
yes but this is not feasible... i mean even a simple if else is a chore to do with so-called visual scripting
Scott Richmond @strich Dec 14 2015 23:13
Well, that is only true if you can do if else in code in the first place (IE you're not really a coder)
Jan Thomä @derkork Dec 14 2015 23:14
i see, but then visual scripting would only make sense if you had some higher level logic blocks
e.g. a pluggable AI, or some resource management system for a game or something the like
because if you are able to do low-level if/else in visual blocks, you're probably able to do it in code as well.
Scott Richmond @strich Dec 14 2015 23:15
Indeed. I don't think our code team is really fond of such a GUI-based workflow
For the obv reason you stated - Takes more time
Jan Thomä @derkork Dec 14 2015 23:15
what i like about ECS is that it frees you from typing a lot of boilerplate code
Scott Richmond @strich Dec 14 2015 23:16
Are you saying that Entitas does still require quite a bit of boilerplate code writing?
Jan Thomä @derkork Dec 14 2015 23:16
also it has property change events and a more powerful grouping system.
no, it's not a lot of typing but the workflow is inherently convoluted.
go to the ide, create class, type, save, go back to unity, generate, go back to the IDE...
but that's because there is a generator involved, I wouldn't know how to improve this.
in ECS, you right-click, create entity, add some props and boom your code is there and you can start working.
Scott Richmond @strich Dec 14 2015 23:18
Yeah I see what you mena
Jan Thomä @derkork Dec 14 2015 23:18
also i very much like ECS's grouping
Scott Richmond @strich Dec 14 2015 23:19
I wonder if it can be improved with polling the Editor if its compiling and then auto-code generating, or something.
Jan Thomä @derkork Dec 14 2015 23:19
where you can say "give me all units having a health > 50"
which isn't doable with entitas as entitas only groups by "entity having/not having component X"
Scott Richmond @strich Dec 14 2015 23:20
I wasn't even aware ECS did that hah
Jan Thomä @derkork Dec 14 2015 23:20
for an RTS this grouping is really neat as you could create a component "Squad" with a property "index"
Scott Richmond @strich Dec 14 2015 23:20
So Entitas has no observable properties generation?
Jan Thomä @derkork Dec 14 2015 23:20
none that I'm aware of.
Scott Richmond @strich Dec 14 2015 23:21
Damn, that is a pretty major feature loss
Jan Thomä @derkork Dec 14 2015 23:21
yes... but you can somewhat emulate it otherwise
Scott Richmond @strich Dec 14 2015 23:22
Hrm there is a group observer
Jan Thomä @derkork Dec 14 2015 23:22
e.g Matcher.AllOf(Matcher.Unit, Matcher.InSquad).
gives you all units that are in squads
which is ok, but if you want to know all units in a specific squad
you need to iterate these units..
unless you want to have one component type per assignable squad
like Squad1, Squad2, etc.. but I wouldn't go that route
so yes, you only get matches on component types, not component properties.
which is my only major gripe so far.
Scott Richmond @strich Dec 14 2015 23:25
That I think I'm okay with - The lack of observable properties is a real bummer though. I wonder how hard it'd be to contribute and implement it
@sschmid @mzaks - How are you guys with accepting entirely new feature contributions? For example observable properties.
Jan Thomä @derkork Dec 14 2015 23:27
another thing that I'm not 100% sure of is the strict decoupling of the entity component system from Unity's gameobjects/monobehaviours
i would agree this might be helpful if you simulate a headless server
but it cuts out a lot of options
so if for example you want to use things like behaviour designer or chronos, which work on gameobjects and monobehaviours, you'll have to come up with some good ideas on how to make them work with Entitas.
or you'd have to roll your own..
I haven't yet found a strategy that would fully convince me...
but i definitely don't want to write my own behaviour tree implementation if there is a readymade solution available.
Scott Richmond @strich Dec 14 2015 23:31
Well one thing we really struggled with in War for the Overworld was the shear number of Monob gameobjects - If we had gone truly data-driven we probably could have freed a lot of resources by only having GOs for what we on screen and not the entire map simulation
Jan Thomä @derkork Dec 14 2015 23:31
oh so WFTO was made in unity?
Scott Richmond @strich Dec 14 2015 23:31
Yep
Jan Thomä @derkork Dec 14 2015 23:32
actually that game is still on my steam wishlist, haven't had time to play yet... but looks really cool
Scott Richmond @strich Dec 14 2015 23:32
We rolled our own physics system though. Which was a bit of a mistake, too. But that's another story
Jan Thomä @derkork Dec 14 2015 23:32
Yeah well you always know more after the fact..
Scott Richmond @strich Dec 14 2015 23:32
Indeed
Jan Thomä @derkork Dec 14 2015 23:34
yeah well ... but going 100% entitas means that most of the helpful stuff from the asset store isn't going to apply on you..
at least as far as behaviour is concerned.
which might not be an issue if you have a big enough development team though
do you use any kind of behaviour trees in WFTO ?