Latest ECS Activity
Thanks for the detailed follow up. I tried to keep my post relatively brief and so skipped some context that should addres your callouts:
1. The game is a 2D top-down action with up to 5 players (4v1) on a small procedurally generated map, hence the need to transmit what I expect to be small packets…
I second Juliean,
To me the meshdata isn't an actual game data, it is just an asset like a texture of some sorts. It should then be loaded, stored and destroyed only by the associated library. Graphically-wise (just made that up) your components are just here to keep track of what's happing in the s…
@hplus0603 @frob Hey there!
I just went through both of your messages. There's obviously precious insight in both, but I believe I will have to iterate on the implementation to consolidate my understanding. I imagine I could question or challenge some aspects, but that'd require a hindsi…
just for some closure, upon further research i found that a true ECS isn't really feasible in unreal engine without extensive modification of source of code - though in my case I was only looking at these different programming structures for benefit of maintainability. Low-level optimizations isn't…
@aressera Thank you! That sounds like the best solution. I will definitely try it. Thank you.
Check out our OO web game engine.
https://www.otakhi.com/public/document
We allow users to wrap lower level code, scripts, and GUI components into Objects that can be shared online.
Our approach is top-down using UML which is more natual since object design requirement comes f…
Getting back to the pickable component of the topic rather than the weeds of what is or is not ECS, or components that have nothing to do with the question…
Remember it is little more than a collection. Objects have a collection holding zero or more things.
It is okay to ask the container about its p…
If your events are similar enough, what you store per component could be, instead on an ugly object, a bare function pointer. The system processing your components can then call these functions with the same parameters (possibly just the component).
The two “queues” can be decoupled by a list …
For something that is “one big thing,” you can build it as a subsystem, or you can build it as a series of interacting components.
Having each tile be a separate object is generally not going to work out well, if for no other reason than because calling a virtual function for each tile to do anythin…
I ended up with using Behavior Trees as actualization process only, I calculate the AI's decisions using Utility-esque process.
I agree with @frob statements of the Behavior Tree not being a swiss knife, the reference I've posted sums it up pretty well - it's a good tool but many times used wrongly/…
But if you plan to use it for spawning a large number of effects at the same time, performance quickly becomes an issue.
Say, for instance, you want to use Visual Eff…
Thanks both, good input. This may very well work for my game, need to think it through some more.
(What I meant I thought could be tricky was for the generic case where some items are composed from multiple components and the Human could carry multiple such items. If I understand correctly part of t…
While ddlox makes a number of good points about Ecs in general, I'd approach this from a different perspective. From the top level, the key bit is how to handle two very different game states and from that the rest of the questions tend to be left more as a game design decision rather than an…
@Juliean I've made no decisions yet, just hoping someone have up with clever solution on how to associate a renderable with camera during the render phase.
So the Unity way is to assign renderables to an (indirect) “layer” concept instead of directly to a camera, stored as a bitset, possibly in an e…
KarimIO said:
and either way I need to manage the dependencies and order
In an ECS environment, Systems should never ever have dependencies onto each other. In this case your ECS desing is simply wrong! Entities are carrier objects that don't have data nor code but belong to components. Components ha…
inJuly said:
I can imagine the player having an InputComponent that detects keypresses, and the InputSystem takes care of that. But what happens from there ? and where does the code for the `cast_fire_ball` spell live ?
First of all, typically you would have a separate component of some kind that rep…
This tutorial covers Conway's game of life in Unity 21019.3.0f3 with entities 0.4.0 preview.10 . Checked against 2019.3.5f1 & Entities 0.8.0 Preview.8 on March 13, 2020. Packages used are shown here Note: platforms are not the latest. it is only 0.2.1 preview 4 because Enti…
In this series of posts I will be testing architectures and algorithms for ECS simulation. Particular those related to procedural generation and worlds with a large number interacting agents. I think about the simulations controlling things like a sim city style game or ecological simulation as opp…
Kylotan and Juliean have already given great advise. They also have helped me several times when I have questions here.
I still want to add some more …
To handle child-parent transform, I use the similar approach as Ogre3D. My gameplay has to be split into 3 phases :-
This tutorial covers writing unit tests for ECS. This is a practical tutorial on the process not an essay on what to test. If you read nothing else read the IMPORT: box below on pressing apply.
Checked against 2019.3.5f1 & Entities 0.8.0 Preview.8 on March 13, 2020. Pack…
<<Previous Tutorial Next Tutorial>>
This tutorial covers SharedDataComponent & Chunk Components. This will be an attempted speed optimization by reducing the number of calls to render GameObject by having each GameObject cover a 2x2 square of cells. It will show usage of SharedCompon…
<<Previous Tutorial Next Tutorial>>
This tutorial covers using CommandBuffers, Tags and WithAll() to reduce the number of entities processed in some steps. Also using [UpdateAfter()] and [UpdateInGroup()] to set the systems updating order.
Build tested on entities 0.4.0 preview.10 . Check…