#archived-dots

1 messages · Page 253 of 1

safe lintel
#

Is it a native array inside a shared component? As afaik there shouldn’t be native collections inside components

tribal juniper
#

to be frank iam into pure ecs so i need to manually attach the physics body and shape components

#

but i get your point. i will try it.

pulsar jay
safe lintel
#

You could put a managed list inside of one instead but that could be the source of your problems

#

Anyway that’s kind of the point there’s no built in safety mechanism to deal with disposing from entities that get destroyed, you could use it on a shared system state component to try to catch it and handle it

#

But tbh not sure of how internally how chunk management will affect it with regard to just continuing to use native stuff inside components

pulsar jay
safe lintel
#

You mentioned it keeps happening even with all systems disabled, what happens if you don’t spawn any entities that use that shared component?

pulsar jay
#

so maybe it is not connected to dots after all. but the only thing I can think of thats left is some kind of static hook (e.g. InitializeOnload) that still runs in the background

safe lintel
#

Maybe try copying all packages to a new project and see if it’s a unity bug

analog edge
#

Anyone had a problem with culling performance when using URP + Hybrid Renderer? I spawn literally one entity rendered with hybrid renderer and I lose 3ms of CPU time, looks like mostly on culling

stone osprey
#

Why doesnt private UnsafeList<UnsafeList<int>> test; compile ?

#

I have a small problem here...

public UnsafeList<BuildingRecipe> recipes; does not compile because UnsafeList somehow only likes primitive, non nested types... My struct BuildingRecipe contains two UnsafeLists aswell, so the approach basically looks like this public UnsafeList<UnsafeList<Ingredients>> recipes;

Is there anyway to bypass this issue ? I need to store a nested type in that damn unsafe list, i cant even solve it locally because i basically receive that by network.

analog edge
#

as a workaround you could flatten it to just UnsafeList<Ingredients> and hold a separate list/array of indexes of start of each recipe on the flat list

stone osprey
analog edge
#

for example, you have a list of lists:
<list of lists>
<list 0>
<flour>
<butter>
</list0>
<list 1>
<eggs>
<cinammon>
<coco>
</list1>
<list of lists>
and you flatten it to this:
<flat list>
<flour>
<butter>
<eggs>
<cinammon>
<coco>
</flat list>
and have another list, or maybe a dictionary if you want to key the recipes by name or something, that stores for example int2 that specify the index at which the list starts in the flat list and how many elements it has, so for example for recipe 2 it would be int2(2,3) because it starts at index 2 in the flat list and has 3 elements

stone osprey
#

Ah i understand... thanks ! But i guess this isnt possible because its probably a bit more complicated :

   /// <summary>
    /// Represents an ingredient.
    /// </summary>
    public struct Ingredient {
        
        public FixedString32 type;    // The item type... 3:1 is wood for example
        public byte icon;      // Its icon
        public uint amount;
        public bool consume;

        public Ingredient(FixedString32 type, byte icon, uint amount, bool consume) {
            this.type = type;
            this.icon = icon;
            this.amount = amount;
            this.consume = consume;
        }
    }

    /// <summary>
    /// The craftable result
    /// </summary>
    public struct Craftable {

        public FixedString32 type;   // The item type... 2:1 is gold for example
        public byte icon;
        public uint amount;

        public Craftable(FixedString32 type, byte icon, uint amount) {
            this.type = type;
            this.icon = icon;
            this.amount = amount;
        }
    }

    /// <summary>
    /// The recipe, containing ingredients and a craftable result. 
    /// </summary>
    public struct Recipe {

        public UnsafeList<Ingredient> ingredients;
        public UnsafeList<Craftable> craftables;
        public byte describtion;

        public Recipe(UnsafeList<Ingredient> ingredients, UnsafeList<Craftable> craftables, byte describtion) {
            this.ingredients = ingredients;
            this.craftables = craftables;
            this.describtion = describtion;
        }
    }

And well, each entity should have a "BuildRecipes" component which looks like this : struct BuildRecipes { public UnsafeList<Recipe> recipes; }
DynamicBuffer is a no go here, because it sucks with networking ( and i guess it cant store nested types either )... NativeArray is not allowed in a struct and UnsafeList cant handle nested types either :/

#

And normally i would save such shit locally somewhere, but in this case its fully networked and cant be saved locally... furthermore the server side ecs differs a bit from unitys ecs and this is why i need to put this shit into a component somehow

#

Any other ideas ?

analog edge
#

is it completely impossible to do with dynamic buffers?

stone osprey
#

If im correct buffers dont allow nested types either ( or do they ) ? In that case it would be impossible...

If its possible however, we still need to find a clean network way to implement this... our current solution is well, simple and efficient :
We basically serialize a component and send it over the network with a certain fitting command like "Add, Set, Remove".

However i have no idea how a clean way for networking a buffer looks like... i mean the serverside entity representation is 'public struct BuildRecipe { List<...> recipes; }' and thats how we basically receive in the client xD damn unitys ecs is way to complicated for such topics

analog edge
#

yeah, seems like some rather big changes would be needed - like just switching to dynamic buffers entirely, so you have dynamic buffers for the craftables, the ingredients and the recipes, so no unsafe lists anywhere, and then you can basically package it into a neat BuildRecipe class when sending it to the server by just getting all the buffers from the entity and "packaging" them

stone osprey
#

Damn this sucks, such damn unity doctrines always feel like a punch in the face.
The easiest way coming into my mind is to simply use a class for the "BuildRecipes" component, because classes allow normal lists and stuff... but our whole solution is struct oriented, so this doesnt make sense either :/

Does anyone know if a UnsafeList could be rewritten or modified to accept nested types which contains more UnsafeLists ? xD Thats probably a bit hacky but would solve a lot of problems

shell berry
coarse turtle
stone osprey
coarse turtle
#

I really only pin if I want a managed object to remain at the address its allocated so I can grab a pointer (works nicely with blittable arrays you want to implicitly convert for Jobs or interop with a C++ dll)

stone osprey
vital sandal
#

Hello 😄 If someone has a minute, I could use some guidance:
Question1: Is it ok to do myNativeArray1.GetSubArray(startIndex, length).CopyTo(myNativeArray2.GetSubArray(startIndex, length)) ?
Question2: I do this (see question1) because I iterate over different ranges of Index each frame. All my data is split in different arrays (ie.: positionArray, rotationArray, healtArray, etc.) Would it be more efficient (performance wise) to do this another way? Like using structs? thing is all the modules in my system don't use every data so it seemed like a waste of resources fill custom structs per module each frame. Although using lists to iterate over would be awesome for managing processing priorities of entities. I'm trying to have 5000+ AI running on screen with animations and all so it has to be efficient.

hot basin
#

Why do entity flicker at 0,0,0 position when I spawn it and setup other position using ECB?

rotund token
#

are you setting up LocalToWorld?

#

or just setting Translation/Rotation

#

if you don't set localtoworld then it won't be updated by transform system until the next frame and therefore the render, in presentation which updates after your ECBS, will render at 000

hot basin
#

Thanks!

inner estuary
#

how do you apply force to an entity without using its translation.value fucntion

hot basin
#

How to approach tilemap in ECS? dynamic buffer with tiles?

shell berry
hot basin
#

but is it feasible? small map 2k x 2k means almost 5kk of entities

haughty rampart
hot basin
#

still it seems like bad design as I would need to search for a tile everytime I need something from it

#

I mean it in contrast to array-like structure i.e. DynamicBuffer

rotund token
#

I don't like tiles as entities, it doesn't really provide any benefit - generally its pretty slow. The one exception would if you only had a small world grid, single screen kind of thing and individual cells were basically the game.

#

personally i like just writing your 'world' as a standalone data structure - not too dissimilar to the physics worlds
you can then attach this to a singleton entity via a pointer and use the safety system to ensure safety (I wrap any unsafe code so other devs do not need to use it)

stone osprey
#

Here we go again... when should something be an entity and when not ?
I would actually really implement tiles as entities and group them into some sort of chunk structure for blazing fast acess... like every huge world does ( Minecraft, Terraria... ) then its no problem

rotund token
#

It's not faster to access entities/chunks than a native array

#

In fact if you profile low performance hardware, mobile devices and previous gen consoles, you'll find entity lookup from queries is one of your biggest bottlenecks.

#

And it gets significantly worse as your archetype / chunk count increases.

rotund token
#

Something people always seem to forget when using voxels or tiles as entities is the memory overhead.
Let's take a minecraft style block game since you mentioned that, where you're loading a 1024x1024x256 = 268,435,456 voxels in world at any time

Cost of 1 tile in memory
Entity (2x int) - 8 bytes
Translation (3x float) - 12 bytes
Block type (ushort) - 2 bytes
Other Block Info (ushort) 2 bytes
= 24 bytes

World size of 1024 x 1024 x 256 = 268,435,456
Memory cost = 268,435,456 * 24 = 6,442,450,944 bytes or 6GB

Compared to storing in a NativeArray<int> (2x ushort for block type and other block info)
268,435,456 * 4 = 1,073,741,824 bytes or 1GB

Now you wouldn't store it in single array, you'd break it into chunks let's say 64x which leaves 16x16x4 chunks of position overhead, making the calculation 1,073,741,824 + 12, 288 (16x16x4 * 12)

You'd be much better to make each chunk a single entity with tile data stored in a buffer.

haughty rampart
#

memory is literally nothing to worry about. in todays time you have at least 64gb ram

rotund token
#

🧐

hot basin
#

isn't memory access all that DOTS is about?

dense crypt
#

Only have 16GB RAM on both modern consoles, and 2-3GB is used by the OS. Same on your average gaming PC, where even more RAM is most likely used by background stuff

tranquil jay
#

HI, I am using DOTS Physics with a racing game. I have damage-able barrels that explode when reaching 0, and I am having the issue that if they get lodged in front of the car, the car will spam damage it each frame and regardless of what high HP levels I add, it gets melted down in the blink of the eye.

I want to avoid having to implement a damage cooldown so I was wondering if there is a way to tell physics that if two objects are performing constant micro-collisions, to not spam them. Perhaps an impact power threshold of some kind? Looking for a global solution ideally ❤️ ❤️ ❤️ ❤️

rotund token
# tranquil jay HI, I am using DOTS Physics with a racing game. I have damage-able barrels that ...

By design unity physics is stateless, what you probably need is states though (OnEnter/OnExit). Conveniently Unity has already provided a sample of how to do something like this which you can either use directly or just as inspiration
https://github.com/Unity-Technologies/EntityComponentSystemSamples/blob/master/UnityPhysicsSamples/Assets/Demos/2. Setup/2d. Events/2d2. Collision Events/Scripts/DynamicBufferCollisionEventAuthoring.cs

haughty rampart
robust scaffold
haughty rampart
hot basin
haughty rampart
#

yes

hot basin
#

Ok

north bay
#

According to the last steam hardware survey only ~14 percent of users have more than 16 gigs of ram

deft stump
shell berry
#

I'm gonna be writing more of these. I have lots to share.

tranquil jay
#

Goal: Having a way for an Entity, that, once destroyed, spawn some Entities in it's place, at the same **Translation **and Rotation.
Attempt: Creating a **IBufferElementData **which holds and entity, with the goal of having 0, 1 or more to be spawned on it's death.
Issue: I cannot find a way to have a collection of Entity inside a MonoBehavior/Authoring in order to loop over the entities and add them to the DynamicBuffer.

Help please 😄

karmic basin
#

You can add a Prefab gameobject that you will register in a component at conversion time, and to be later used as Prefab entity

#

Having a look at the official ECS samples will show you a few ways to achieve that with more or less authoring

tranquil jay
#

@karmic basin It's just 1 "public Entity prefab", I want a collection, as the death of one Entity can spawn several. My other option is to have prefab0, prefab1, prefab2, etc....

karmic basin
#

can have a List in monobehaviour land that you iterate upon during conversion and add to a DynamicBuffer in a dedicated entity, like you were describing yeah

#

To give you more ideas, Netcode does exactly this with a collection component of spawnables Prefab

tranquil jay
#

If I reference a GameObject prefab as an Entity, is it the same thing as converting it in that Authoring ?

karmic basin
#

Can find you the link if you wanna study this path

tranquil jay
#

@karmic basin I understand you approach, I am only afraid that the same GameObject prefab will be converted into an Entity, multiple times in multiple places

robust scaffold
karmic basin
#

@tranquil jay I'll try to read again your messages, as I'm not sure I understand your concern anymore 😛

#

Welp I'm confused. If the collection of prefab does not suit your case, can you try to explain why/how ?

#

Regarding avoiding duplicates, it would just be a matter of ensuring you have singletons only. Singleton "manager" on the GO side holding a unique list, singleton Entity holding the DynamicBuffer on the ECS side

#

Or your own pattern like a Set to ensure uniqueness for example, whatever you see fit. Was that what the question was about ?

#

Damn now I fear I was off-topic and lost you 😓

#

If not, feel free to ask questions again

#

(you don't need their GhostAuthoringComponent you can just have a List<GameObject> to start with)

tranquil jay
# karmic basin Damn now I fear I was off-topic and lost you 😓

So I want that, when I destroy a Explosive Barrel, to spawn an Entity that is a PFX, multiple entities that shards of said Barrel, etc.
Right now I have a single "public Entity entity" for the PFX but I wanted several.

List<Entity> does not work, so I took your advice to use List<GameObject> and convert them inside of the authoring Execute.

karmic basin
#

Yes, you'll see in the code linked you then recursively add them to a DynamicBuffer like your gut was.

#

also you recursively add declare them as Prefab as per the Interface IDeclareReferencedPrefabs asks you

#

anyway yeah, looks to me that's what you need

tranquil jay
karmic basin
#

Great, have fun 👍

tranquil jay
prime widget
#

Im not sure if this qualifies as DOTS but im trying to learn ecs and Im wondering why nothing is appearing on my screen. I should have a little black square but I cant seem to figure out why its not working. Im new to unity so please forgive my lack of knowledge

haughty rampart
prime widget
#

I plan on having thousands of entities which is why im so concerned about performance

haughty rampart
prime widget
#

And converting them to entities is more efficient than just keeping them as gameobjects right? For rendering and everything else

haughty rampart
prime widget
#

I gotcha. I found a good tutortial that explains how to do it. Thankyou for your help!

#

The online resources arent always the greatest so sometimes its good to just ask someone

haughty rampart
sullen ether
#

When using the SceneSystem I am finding that my scene will not load unless I perform a Reimport All.
I see the SceneReference and the RequestSceneLoaded components appear, but the scene never completes its load.
The scene consists of a single game object with GhostCollectionAuthoringComponent on it.
Is there something I am missing for loading a scene consistently?

The following code is ran after creating the new server world. I have tried delaying 10 seconds between creating the world and loading the scene, but there is no change - the scene still fails to load.

SceneSystem sceneSystem = p_serverWorld.GetExistingSystem<SceneSystem>();
Unity.Entities.Hash128 sceneGuid = sceneSystem.GetSceneGUID("Assets/Scenes/GameScenes/GameX.unity");
Entity sceneEntity = sceneSystem.LoadSceneAsync(sceneGuid);
hot basin
#

of course needed for rendering

hot basin
#

Why can't I just multiply two quaternions? As far as I understand it means to add their angles

#

should I use math.mul()?

haughty rampart
#

yes.

prime widget
hot basin
prime widget
white island
#

Is the Havok Physics thing available to try? And also, does Unity automatically do LOD stuff to render meshes or do I have to figure that out myself

haughty rampart
#

yes. and you have to do it yourself

tranquil jay
#

Hello! I have a hybrid project where most of my game logic is inside ECS, but some is inside MonoBehaviors.

My questions are:

  1. Whenever I access my MonoBehaviors through singleton, when does it happen? Parallel to MonoBehavior.Update?
  2. If I run code inside of MonoBehavior.LateUpdate do I guarantee that all the World systems have finished running?
  3. If I do Debug.Log inside of jobs and lambdas, does it force them in the main thread?
hot basin
#

ad 1) it happens when you access it 😄 like when you do it you do it

#

as far as I know MB phases are just before it's ecs counterpart like ie: MB.Update()->ECS.OnUpdate()

#

ad 2) no, because at least part of presentation update group systems are after LateUpdate()

#

ad 3) I don't think you can use Debug.Log() with .Schedule()?

#

I'm checking it right now

hot basin
#

whole presentation group is after LateUpdate of MonoBehaviours

tranquil jay
#

Oh so Update and Late update from ECS has some correlation.

#

With Monos

karmic basin
#

Best way to know for sure in case it changes in the future is to debug.log and run, you'll see execution order for yourself

#

I meant put logs in every MB phase and each ECS system

#

system group *

#

dammit I'm tired I shouldn't write here byebye see you later xD

hot basin
#

i'm testing it and you can do Debug.Log() with .ScheduleParallel()

#

and I see that job is still on the thread

#

but surly Debug.Log is called by callback on the main thread

#

you should avoid Debug.Logs in your jobs

#

I mean it's fine for developing/debugging purposes but afterwards I would remove them

rotund token
#

Debug.Log is completely thread safe

haughty rampart
#

yeah, you don't really have to remove them, but make absolutely sure to put them in #if UNITY_EDITOR pragmas

rotund token
hot basin
safe lintel
#

Just not burst compatible @hot basin

rotund token
#

It's been burst compatible for a couple of years now

haughty rampart
#

it doesn't need to be because you put it inside #if UNITY_EDITOR anyway

rotund token
#

or just don't care about wrapping it?
if you want to log from a job, just log from it

#

there's no harm in it

#

can not imagine how gross my code would be if i had to wrap all my logs

robust scaffold
#

If debug.log is performance critical, there's something wrong with ya code

haughty rampart
#

it's also why you should never use Debug.Log, etc by itself. Always follow standard and have a logger wrapper with dependency injection

#

then you can conditional that and wrap it once

rotund token
#

Considering you can't inject your own logger in burst jobs (and therefore burst systems) in a burst heavy project imo you are much better off sticking with Unity's Debug.Log and replacing the default ILogger (Debug.unityLogger) with your own to handle the logs on the other side

#

As for the need to wrap your Debug.Log, if your console is being spammed so much this is required, especially if its logging every frame, stop! every dev on the team hates this. Basic logs on windows, can be extremely helpful tracking down user obscure issues. On platforms that don't allow logging, e.g. consoles, this logging is automatically removed by unity so you don't even have to worry about it.

#

As for standards, look at the most success unity game - hearthstone, it dumps a hell of a lot of logs for every every state and it's extremely helpful and many tools have been built from it.

haughty rampart
#

logs should never be shipped. they are development purpose only. anything telemetrics should be sent to the server only. not logged

#

you can log specific things to a custom in-game console, but never ever abuse Debug.Log or similar for this purpose

whole inlet
#

How do I get the transform values from an entity bone during animation? For context, I've got a model that has a rig, I use the default entity conversion system to convert the entire prefab into entities - I then get the model to play an animation. I have a system that queries all the bone entities and output all their transform positions every frame, however, what I've found is that they all are the original values - they don't ever change, even though the rigged animation is moving around meaning the bone entities should have their transforms constantly changing. But this isn't what I'm seeing, anyone have any ideas?

pulsar jay
haughty rampart
#

the data is probably inside the blobasset

whole inlet
whole inlet
pulsar jay
whole inlet
whole inlet
pulsar jay
#

if it writes translation you should see the bones translation components values change in realtime

haughty rampart
#

i'm not entirely sure. but what i know for certain is that dots uses linear blend skinning for animations. so it might very well just be purely on gpu

#

and / or compute deformations in never versions, which also would be completely on gpu

whole inlet
#

am I just out of luck in this case?

haughty rampart
#

what do you need the values for?

whole inlet
# haughty rampart what do you need the values for?

I have a shader(built using shadergraph) that I use to cut off the top of a character's hair model - so that I can then put on different "hat" models without the hair model points showing through. It works by getting the position of the hair model and hiding any points above a given arbitrary number (i supply this).
It works well when the character is static, however if I play any character animations (the character is a humanoid and is rigged) which changes the root bone position - ie. character walking, it appears the pivot point of the hair model isn't the hair model, but the root bone position, this causes the hair model to not always cut in the same place.
I'm hoping, by finding the root bone position, I can then account for this offset in the shader, to it to cut always in the same position in the hair model. (this is a skinnedmeshrenderer if that matters)

haughty rampart
#

ok? since you have to have a custom shader on the model for animations to work with dots anyway, why don't you just apply the linear blend skinning node in your shader and only use one shader then? then you can also get any values

whole inlet
haughty rampart
#

no you don't need the root bone

#

just modify your cut off with the vertex position

whole inlet
# haughty rampart no you don't need the root bone

How? The issue is that the pivot point appears to change when animating. So if I say for example to cut off all points 5 units from the pivot, the initial frame will be right, but when it animates to the next frame, the pivot point is now lower at say -1, meaning the cut off of the hair model is now lower at 4, instead of 5.
eg. see screenshots attached on what I mean

#

this is my shader i'm using if that helps:

pulsar jay
whole inlet
pulsar jay
#

Is there any way to figure out how many entities are handled per thread and why? It looks like one thread is doing all of the work here

haughty rampart
#

you probably are only using .Schedule()

pulsar jay
#

it just happens to either distribute them poorly or some of them just take a lot longer than the others

#

I guess it tries to separate threads per chunk so maybe the chunks are filled to unevenly 🤔

haughty rampart
#

Turn on synchronous compilation and test again

pulsar jay
#

But I figured the performance difference is the targeting entities that actually find stuff to target vs the ones that find none

haughty rampart
#

how many entities are you actually doing work on?

pulsar jay
#

its about 100 weapons targeting about 200-300 enemies

#

seems the performance problem is actually the collisionWorld.CalculateDistance call

#

if there are about 150 targets in range timing increases immensly

safe lintel
#

@whole inlet if you add a DefaultAnimationGraphWriteHandle or LateAnimationGraphWriteHandle to the unconverted hierarchy transform, it should write the actual bone position to the hierarchical entity bone. you could also get that via the AnimatedLocalToRoot/World buffer with some math

#

also @pulsar jay if you change the count for batches per chunk does it change the load? what kind of job is it?

pulsar jay
#

with ScheduleParallel

#

Managed to sneak into the profiler how many targets are actually found

safe lintel
#

oh not sure via foreach

#

id try changing the job to IJobEntityBatch and adjusting the batches per chunk param when scheduling

pulsar jay
#

ist there a way to use Profiler markers without managed string literals btw.?

#

Unity warns me about this. It seems to work regardless though

safe lintel
#

dont know, havent really had luck profiling inside of jobs

coarse turtle
#

could also pass in the profiler marker to the job if you're not already doing that

pulsar jay
#

How do I get a string pointer? You mean like this? new FixedString32("Test").GetUnsafePtr()

coarse turtle
#
fixed (char* c = "Sample") {
}
pulsar jay
#

oh just figured I was using Profiler.BeginSample which requires a string and that ProfilerMarker is a different API

coarse turtle
#

yea ProfilerMarker is a different API so you can pass it as a copy into your job

pulsar jay
#

yeah I see

#

sadly that wont help in this case where I misused the Profiler to output my hit count: Profiler.BeginSample($"Copy hits {targetCollector.NumHits}");

#

but it works in "normal" cases

coarse turtle
#

I guess FixedString.Append might work for something like that

#

it's kind of like a stringbuilder

rotund token
safe lintel
haughty rampart
#

not dots

#

maybe jobs, but not more

safe lintel
#

actually given some of the last big samples did make use of dots its not an unfair assumption that it will utilize it as a showcase

#

fps, megacity, nordeus all the big interactive showcase things for conference openers were dots

haughty rampart
#

but you could see they were using dots

#

this does not look like it is

tranquil jay
#

Hi! So I am trying to make it rain barrels. This is a Prefab which has PhysicsShape as well as MeshRenderer. I convert it the usual way, like you see below, but the instances that drop on the floor do not have colliders. What do i do?

[Obsolete("just for test")]
public class BarrelSpawnerDeleteme : MonoBehaviour
{
    public GameObject Barrel;

    public float spawnPerSec = 0.1f;

    private float accumulated;

    private World         world;
    private EntityManager entityManager;
    private Entity prefab;

    private Random rand;
    
    private void Start()
    {
        world = World.DefaultGameObjectInjectionWorld;
        entityManager = world.EntityManager;

        GameObjectConversionSettings settings = GameObjectConversionSettings.FromWorld( world, null );
        prefab = GameObjectConversionUtility.ConvertGameObjectHierarchy( Barrel, settings );
        rand = new Random( 1234 );
    }

    private void LateUpdate()
    {
        if( prefab == Entity.Null )
        {
            return;
        }
        
        accumulated += Time.deltaTime;
        
        while(accumulated >= spawnPerSec)
        {
            Spawn();
            accumulated -= spawnPerSec;
        }
    }
    
    private void Spawn()
    {
        var instance = entityManager.Instantiate( prefab );
        
        entityManager.SetName( instance, $"$Barrel" );
        
        //Pos;
        float3 posMin = new float3( -100, 0, -4000 );
        float3 posMax = new float3( 100, 0, -1000 );

        float3 pos = rand.NextFloat3( posMin, posMax );
        pos.y = 5;
        
        entityManager.AddComponentData( instance, new Translation() { Value = pos } );

        //Rotation;
        float3 rotMax = new float3( 1, 1, 1 ) * 360;
        float3 rotMin = -posMax;
        
        quaternion rot = quaternion.Euler(rand.NextFloat3( rotMin, rotMax ));

        entityManager.AddComponentData( instance, new Rotation() { Value = rot } );
    }
}
safe lintel
#

nothing looks "wrong" there though ConvertGameObjectHierarchy might be deprecated. did you check the entity debugger to see if the resulting prefab barrel entity is setup correctly?

tranquil jay
rotund token
#

GameObjectConversionSettings settings = GameObjectConversionSettings.FromWorld( world, null );
you're passing in a null blobassetstore but colliders are stored in blob asset memory

#

you need to setup and manually manage (dispose) your blob asset memory

safe lintel
#

now you could transition that code to a system and burst job it 🙂

tranquil jay
#

My issue now is that the meshes do not batch. Do I need to do code-based sharedcomponent shenanigans when spawning them? @rotund token

rotund token
#

are they in the same or different chunks if you look at entity debugger

amber flicker
#

Blog on some burst updates. Didn’t see it posted yet but can delete if it was: https://on.unity.com/3i5EQ1R … Mostly improved inspector and:
System.Span<T> and System.ReadOnlySpan<T> are now supported within Bursted code. These types are not allowed as entry point arguments.
Burst now uses LLVM Version 12.0.0 by default, bringing the latest optimization improvements from the LLVM project.

rotund token
tranquil jay
tranquil jay
#

Not very familiar with performance stuff, but shouldn't they all be batched together? Even their material has:

rotund token
#

Not really my area of expertise but I believe with SRP batcher you aren't meant to use GPU instancing?

safe lintel
#

huh thought we were always supposed to use that with dots

safe lintel
#

Ah hybrid v1 required gpu instancing

rotund token
#

i look forward to v1 + v2 being removed in 0.50 - causes so much confusion

safe lintel
#

did you see the gdc talk that mentioned how the dots editor package has some sort of logging of all component changes? looking forward to seeing that in action though I cant tell if its implied for 0.50 or 1.0

rotund token
#

going to enjoy peoples poorly created architectures creating 1mill logs a minute

hot basin
#

I wonder if .50 will drop at/after GDC

rotund token
#

think that's what most of us are expecting

robust scaffold
#

I dont want to get my hopes up but the training github has stopped creating new branches for employee training sessions last month so I think it's in its final stretch

rotund token
#

i'll just be sitting here unable to use it until they add 2021.3 support in 2025

robust scaffold
#

Honestly, I just piled up my NativeArrays into a single monobehavior and just used that as my ECS implementation. No need to fuck around with entity querying, iterations across chunks, and counter-performance mem-copies.

#

Surprisingly solved a lot of my issues. Now that I can guarantee indexing and array size so there's no wasted memory in chunk allocations.

#

I will need to open a new project using dots 0.50 just to see if they came up with something interesting, particularly the burst compiled systems.

#

I do need to test out whatever you did to burst compile job scheduling @rotund token someday.

safe lintel
#

i dont think the training samples even touched physics, i dont think they are a great indicator of the state of dots as a whole

tribal juniper
#

my dynamic physics body with capsule physics shape is falling out of the static physics body and cube physics shape floor . why is this happening and what can stop it?

karmic basin
#

🤔 hmmmm nothing wrong with what you said at first glance

#

did you forget to convert them to entities by any chance ?

#

could you tell us more about your setup ?

safe lintel
#

@tribal juniper dynamic rigidbodies cant be parented

devout prairie
#

Okay i opened the thread.. that thread is like opening the oven door and sticking your head in. Definitely easier to just ask here 'is it out yet' hehe

haughty rampart
#

its not

safe lintel
#

a bit under a week to go until "maybe disappointment, maybe changes" 😄

pliant pike
#

I don't suppose anyone has any idea how using SetComponent<Translation> can fail to work to set an objects position

#

I've tried several objects now and its setting the objects to majorly away from the actual position and its not an issue with parents and children and it even says the translation position is the correct position in the inspector but its not at all close in the game

#

nevermind it was a problem with the source object

#

I wish this programming crap wasn't so complicated leahHMM

haughty rampart
#

it really isn't

pliant pike
#

it is for me leahWTF

devout prairie
valid haven
#

I am curious what the deal with multiplayer will be... if the default DOTs model is now hybrid, which networking stack do we use 🙂

valid haven
#

I assume the dots one, but then I hope DOTs reaches feature parity

haughty rampart
#

dots will be hybrid until after 1.0

devout prairie
#

Also HybridRenderer, not heard much talk about that

haughty rampart
#

you can also write dots, but don't mix and match upper and lowercase

pliant pike
#

I prefer DooTs

haughty rampart
#

:anarchy:

valid haven
haughty rampart
#

just abbreviation rules

devout prairie
#

dOtS

#

EC's

#

😛

haughty rampart
#

:anarchy:

valid haven
devout prairie
#

i will go to hell for that

#

forgive me for my sins

haughty rampart
#

worst is that all the important packages, like dspgraph etc. likely won't be ready with 1.0

valid haven
#

I am also curious if 0.5 is going to drop for 2022.1 and if pre-1.0 drops for 2022.2alpha, or if we have to wait longer for the beginnings of 1.0

#

clearly 1.0 stuff has been in works for awhile, so its possible we will see code sooner than later.

haughty rampart
#

0.5 will first only drop for 2020. it will later drop for 2021

valid haven
#

I saw that note, but I didn't see them say it wouldn't get merged into 2021?

#

just that 0.5 was targeting LTS

#

although I suppose it makes some sense if they restrict 0.5 to 2020, depending on when 1.0 is targeted for release.

haughty rampart
#

it will be available for 2021 later on. not for 2022 though

valid haven
#

well I hope 1.0 drops at sameish time then.. as I am developing against 2022.

haughty rampart
#

1.0 will drop at the end of the year at the earliest

#

and 1.0 will also only support 2020 and 2021 at first

valid haven
#

I don't see the wisdom in that..

#

who is going to start writing a new game, 6 months from now starting with 2021... when game release cycles are measured in years

haughty rampart
#

1.0 will eventually be supported in 2022. but not at release

valid haven
#

sure, and if you are depending on features from 2022 and you are writing a game now... what do you do? you cannot very well retool your project for dots after the fact

haughty rampart
#

don't use dots

#

unity officially tells you not to write games with dots

valid haven
#

we will see what is announced in a couple weeks, because the wisdom in that line of thinking seems highly flawed.

haughty rampart
#

it's the official statement. it's an experimental package. unity tells you not to use experimental packages in production games

valid haven
#

my bad, I guess all real unity games avoids using non-LTS releases and experimental packages as part of their development cycle... and unity never promotes games that ignore this "official statement"

devout prairie
#

i wonder when Epic are going to buy unity engine along with everything else on the planet

#

didn't they just take over bandcamp

valid haven
#

unreal just added 64bit floating point precision to their world transforms 😦

haughty rampart
#

they'd never.

#

which is good

#

Also, if they did, it'd probably rather be tencent than epic

devout prairie
#

Hey they might, i wouldn't put it past them

#

Maxon are doing similar things right they bought Pixologic, or at least Zbrush, and some other stuff

#

Taking a leaf from the Autodesk playbook

#

buy the competition, then stop developing them 😛

verbal sky
#

Tencent already owns a good chunk of Epic. If Tencent bought Unity, then eh same difference

pliant pike
#

oh great late game capitalism leahSAD

#

suck up anything good that remains

devout prairie
#

the Great Reset of productivity software

pliant pike
#

not that I really like Zbrush anyway, maybe Maxon will finally decide to make the UI usable

devout prairie
#

yeah it's a pile of ass until you've spent a thousand hours learning it, which i haven't hehe

pliant pike
#

yeah and customised it to completely different than the default

devout prairie
#

Blender are doing a lot of amazing stuff which is great

pliant pike
#

yep at least they arent likely to be bought out leahS

hot basin
safe lintel
#

sidenote, 1.0 target is a window from 2022 - 25, that isnt even set in stone "The 2022 LTS cycle is our preferred target for this release, but we have yet to confirm it"

haughty rampart
robust scaffold
# devout prairie Also HybridRenderer, not heard much talk about that

Hybrid renderer is chugging along smoothly. Check the sub-forum. They just shipped an extremely experimental bleeding edge instancing rendering API that hybrid renderer 1.0 will be using with 2022.1 Beta. Performance is amazing, as expected, but there is none of the "features". No viewport or occlusion culling for example.

robust scaffold
# hot basin it's 0.50 not 0.5 😄

The forums are leaking... As I said on the forums, let people call it 0.5 or 0.50. Unity will 100% be renaming it to something unique with only 0.50 as internal marker simply because of the confusion with newcomers to DOTS.

robust scaffold
#

2025.3 Realistic. 2026.3 is what we'll be getting.

safe lintel
#

cant wait to see what unreal cooks up by then

robust scaffold
#

I'm basically just sticking around for Burst, Virtual Texturing, and sunk cost fallacy.

robust scaffold
# hot basin But for now it's 0.50 not 0.5.

But letting people say 0.5 or 0.50 is basically self-filtering between those who kinda know what they're talking about in DOTS and those who dont. Makes it really easy to discard any opinions they make on the drama forum thread with just a single omission of a 0.

hot basin
#

simple mistake of not knowing about versioning system used by unity tells you nothing about that person knowledge about DOTS thus it's better to fix

safe lintel
#

sunk cost fallacy & c# for me, so really Ill be here forever I think, always looking wistfully at greener ue5 pastures 😅

haughty rampart
#

'greener ue5 pastures' you are right. they steel green paper notes left and right

safe lintel
#

gotta admit, gets you some good stuff, megascans for free, isnt capturing reality also epic now? I assume thats probably free for ue5 users

coarse turtle
#

as much as I'd like to try out ue5, that install size just kills me 🙃

safe lintel
#

in contrast we got a video of the ziva girl, and a nice little blog post about speedtree and weta to just use our own imagination 🧠

#

im still on an old 500gb sata ssd, so its really a few unity installs and maybe try ue5 every now and then but gotta remember to delete it

tranquil jay
#

Hello peeps! new day, new issue!

I have a OnDeathDoSpawn component that, when my entity is killed, a system detects it and spawns another entity in it's place. same **Translation **and Rotation.

If I am using a childless Entity as a prefab, instantiating it is no problemo.
If I am using a Entity that has nothing on it but has children entities, it will duplicate the parent but none of the children (or grandchildren).

Is my only solution to recursively go in those children and spawn them, or is there a smarter / cleaner way to do it?

safe lintel
#

use a LinkedEntityGroup which spawns collections of entities

tranquil jay
safe lintel
#

works with both, you've verified that there is a linkedentitygroup on your entity?

tranquil jay
safe lintel
#

check the entity from doSpawnComponent[spawnIndex].prefab?

tranquil jay
#

this is a Job so I dont have access to EntityManager to GetComponentData from it

safe lintel
#

first: its a buffer that sits on the prefab. you dont need to use GetComponentData assuming your prefab is setup correctly

tranquil jay
#

so it's GetBuffer using EntityManager then, same hinderance being a Job

safe lintel
#

second: if you need to use GetComponentData inside a job you could use ComponentDataFromEntity

#

no, you dont get anything

#

that buffer sits there and you dont touch it when you instantiate or destroy the entity in question

#

ie: entityCommandBuffer/entityManager.Instantiate(myPrefabWithALinkedEntityGroup); now if you have a linked entity group on myPrefabWithALinkedEntityGroup, every entity is just instantiated or destroyed alongside that entity without you doing anything else. no need to get the buffer, no need to get component data, it just happens behind the scenes

#

so my guess is it comes down to how you got your prefab, because hierarchical transform entities should be automatically included during the conversion process. if you are doing some custom entity creation during conversion you can always just do the work manually, ie create and add a LinkedEntityGroup to your entity and add any other entities to it

tranquil jay
#

I have a prefab called WoodenBox, which has OnDeathDoSpawn with an Entity prefab property.
It references a prefab (no components) that has children (splinters of a broken box)

I actually have no idea when / where the conversion happens.

safe lintel
#

do you use the monobehaviour interface IConvertGameObjectToEntity, a GameObjectConversionSystem? or something else?

safe lintel
#

any custom behaviour on these prefabs at all?

tranquil jay
#
                    Entity spawn  = entityCommandBuffer.Instantiate( entityInQueryIndex, prefab );

                    BufferFromEntity<LinkedEntityGroup> a = GetBufferFromEntity<LinkedEntityGroup>(true);

                    if( a.HasComponent( prefab ) )
                    {
                        DynamicBuffer<LinkedEntityGroup> b = a[ prefab ];
                        Debug.Log( $"Spawning DynamicBuffer<LinkedEntityGroup> {b.Length}" );
                    }```

This gives me 101, the children are 100 in number and I assume +1 for the root
#

I deleted all other entities which I played around for testing and I can clearly say that the entities do spawn, only I cannot see them

#

{
"x": -0.6469584,
"y": -5169.043,
"z": -0.7376097
}

One of the children is at this position (and falling), so I think what happened is that all the children were spawned at 0, 0,0 and now they are falling under the world.

safe lintel
#

sounds like two separate problems

tranquil jay
safe lintel
#

just gonna paste this as an example of the previous topic

    /// <summary>
    /// Any time this entity is instantiated/destoyed, the discord entity and any childed entity will be created/destroyed.
    /// </summary>
    public class PrefabConversionBehaviour: MonoBehaviour, IConvertGameObjectToEntity
    {
        public void Convert(Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem)
        {
            conversionSystem.DeclareLinkedEntityGroup(gameObject);
            
            var additionalEntity = conversionSystem.CreateAdditionalEntity(gameObject);
            #if UNITY_EDITOR
            dstManager.SetName(additionalEntity, "Discord Entity");
            #endif
            dstManager.AddComponentData(entity, new JustAnEntityReference{ Value = additionalEntity });
        }
    }
    
    public struct JustAnEntityReference : IComponentData
    {
        public Entity Value;
    }
#

so this new problem.. are they physics entities?

tranquil jay
#

yup, splinters of a box

devout prairie
#

if they use Physics it could be weirdness

#

i did have a similar issue

#

i think you have to set the position or spawn after the physics group

safe lintel
#

just note you cant have hierarchical transforms with dynamic rigidbodies in dots, they get unparented

tranquil jay
#

that's an easy test, I will remove physics stuff off them, they should spawn correctly

safe lintel
#

I assume its something to do with that

tranquil jay
#

that sounds exactly what is happening, what a random rule

safe lintel
#

apparently its faster, but its definitely less convenient

tranquil jay
#

That was it @devout prairie @safe lintel I removed the physics pair of components and all the children were spawned at the correct position (relative to the parent position and rotation)

devout prairie
#

i think in my case, i think one issue i had was when units died i was unparenting the weapon and removing PhysicsIgnore, which would teleport the weapon to 0/0/0

tranquil jay
#

it's doing that to me! how did you solve it?

devout prairie
#

i think just added an additional step, which was setting the position once after the physics stuff

tranquil jay
#

[UpdateAfter( typeof( EndFramePhysicsSystem ) )]

#

already doing this !?

#

commandBufferSystem = World.GetOrCreateSystem<EndSimulationEntityCommandBufferSystem>();

devout prairie
#

so maybe in your case what you'll need to do is, grab the position of all of your 'fragments' relative to their parent... and then when they're spawned, run some code after physics which sets their position this relative pos + whatever the parent spawn pos was

devout prairie
#

this gives physics a chance to initialize your new physics objects ( which sets to 0.0.0 ), and then you tell it where you want them to be

tranquil jay
#

Quite a problem, as the spawning of the wooden splinters has the origin in a collision, which happens AFTER physics

#

So I'd have to delay the spawn till next frame I guess

#

Would be easier to add the two Physics by code after spawn

devout prairie
#

not necessarily delay the spawn, so long as your set-position happens after the next buildphysicsworld or whatever it's called

#

adding the physics components by code after spawn might have the same problem, not 100% sure

#

what i'd suggest is:

#

spawn your splinters whenever

#

add them all to a native collection, as well as their ideal/relative positions

#

then have a job that runs after physics, which iterates the collection of new entities and sets all positions, and then clears the collections

#

so basically the after-physics job is always there, but only actually does anything if the collection has stuff in it

#

actually have you disabled FixedRateManager ?

tranquil jay
#

@devout prairie First time I hear about this, what that

devout prairie
#

so what you find is the physics world group is being run multiple times per frame in some cases

#

which would give you an opportunity to set your positions mid-frame

tranquil jay
#

how do I disable it?

devout prairie
#

in my case i had it disabled ( FixedRateManager = null ), which meant i only had one single physics group update per frame

#

i'm not 100% sure if it's advised to disable it, but i freed up a chunk of fps and found it to be more manageable without it

tranquil jay
#

I shall not disable it then but thanks for making me aware of it

#

The solution sounds pretty painful 😄 I think what I will do is use the PFX with physics to spawn the splinters. I try to go with the K.I.S.S. principle

#

I appreciate your help @devout prairie & @safe lintel !

safe lintel
#

unity really need to up their documentation game⏳

tranquil jay
#

I am waiting for the promised 0.5 perhaps it fixes a lot of this QOL

#

Any news on that?

safe lintel
#

next week monday stuff should drop

#

gdc and all

#

if stuff doesnt happen sometime that week, i guess its never 😩

tranquil jay
#

@safe lintel That sounds nice!

#

@devout prairie What if instead of instantiating the root+children, I spawn the children individually through DynamicBuffer<LinkedEntityGroup> and set the position and rotation then and there?

devout prairie
#

let us know if it does i'm curious tbh

#

i think it should, as normally spawning for example physics projectiles at specific positions isn't an issue

#

i think it's when parenting is involved it becomes an additional step

tranquil jay
#

Yeah I have another gameplay prop which is an explosive barrel. It doesn't have any children

tranquil jay
#

@devout prairie It works, but I think the math is bad. I add the prefab's child position and rotation to the destination's position and rotation.
I think what really needs to happen is math related to transform matrix blablabla. More stuff to google >.>

devout prairie
#

yeah stupid matrixy stuff

tranquil jay
wicked stone
#

I'm doing some super basic stuff with DOTS, just spawning some entities with physics like this:```cs
private void Update()
{
if (!Input.GetKeyDown(KeyCode.F)) return;

var blobAssetStore = new BlobAssetStore();
var settings = GameObjectConversionSettings.FromWorld(World.DefaultGameObjectInjectionWorld, blobAssetStore);
var prefab = GameObjectConversionUtility.ConvertGameObjectHierarchy(dicePrefab, settings);
entityManager.Instantiate(prefab);
}
```And I'm getting a A Native Collection has not been disposed, resulting in a memory leak.. Did I miss something obvious?

tranquil jay
#

@wicked stone Move your "new blobassetstore" in awake or start

wicked stone
tranquil jay
#

and do bloblAssetStore.Dispose inside OnDestroy

wicked stone
#

And it makes sense that I have to dispose it, but why does it give me an error during the game and not when I close the scene? Does it detect that I'm making too many of them?

tranquil jay
#

putting it inside of Update with new BlobAssetStore will spawn a few thousands of those 😄

wicked stone
tranquil jay
#

perhaps it's a different place generating the memory leak

wicked stone
#

well lemme try what you suggested first then

tranquil jay
#

I have to go sleep, hope somebody else finds and can help ❤️

wicked stone
#

What is BlobAssetStore used for?

devout prairie
wicked stone
devout prairie
#

Other thing i'd suggest is create entity prefabs from the objects you want to spawn, similar concept to normal unity prefabs but you normally create them within a SubScene during authoring

#

then it's just one line of code to instantiate the prefab - EntityManager.Instantiate(myECSPrefab);

#

or ecb.Instantiate()

safe lintel
#

@wicked stone no, that utility is unofficially deprecated

#

i think you need blobassetstore.dispose() after you use it

wicked stone
safe lintel
#

GameObjectConversionUtility

wicked stone
#

okay thank you

#

So it achieves the same thing as simply instantiating a regular gameobject prefab with ConvertToEntity

safe lintel
#

yeah, i think its less flexible in terms of advanced use

wicked stone
#

(for initialization and stuff)

#

It's interesting that you can GetComponent the instantiated gameObject even though it has ConvertToEntity, I guess it turns it into an entity after my code rather than right when you call Instantiate

solar spire
rotund token
rotund token
solar spire
#

It's nice to see it's source generators

rotund token
#

Remove Animations package
The Animations package (com.unity.animations) isn't supported in 0.50. You should remove the package and any related scripts from your project.
that's the opposite of what i wanted to hear

#

a good animation solution was like the 1 thing i was hoping for

rotund token
#

yeah not happy about that. i was really hoping to see a solid implementation (and audio) then i'd have been happy with dots as a whole

#

instead both just flat out removed

solar spire
#

who needs to move or hear

rotund token
#

on a more positive note, relationship window is nice

devout prairie
#

i thought with the move towards more integrated editor workflow etc, they'd be porting as much as possible right off the bat so for example animation

#

but i guess just having the foundational editor toolsets/integration is more the goal initially

rotund token
#

how am i going to bloody keep all these windows in my editor though

devout prairie
#

yeah it does look as thoug live debugging will get a lot easier

rotund token
#

before anyone tries, entities 0.50 won't compile on any current unity editor release

coarse turtle
#

i guess Entities relies on platform 0.50 but I don't think I see it released :/

rotund token
#

yeah 0.50 is not out

dull copper
#

@rotund tokeneven 2020.3 ?

rotund token
#

but even if platforms 0.50 was out

#

entities has references to stuff inside UnityEditor JobsUtility that just doesn't exist in 2020.3.30f1 (latest)

dull copper
#

ah

#

makes sense

#

probably scheduled to release next week for gdc

rotund token
dull copper
#

someone f*cked up tho since the package still has ```json
"name": "com.unity.entities",
"displayName": "Entities",
"version": "0.50.0-preview.24",
"unity": "2020.3",
"unityRelease": "0f1",

solar spire
#

Who needs to make dependency resolution like... work

rotund token
#

it's worse than that, it has a dependency on
"com.unity.serialization": "1.7.0-preview.1",

but when you run it, "com.unity.serialization": "1.7.0-preview.1" has a compile error due to FixedString changing

#

and needs to be updated

#

so any fresh project is going to compile error after installing entities

dull copper
#

so.. expect new 0.50 soon

devout prairie
#

maybe deliberate to throw people off?

rotund token
#

i updated to serialization 1.8.2 and it was fine

solar spire
#

Release a broken version to get a read on reactions before you finish writing your GDC talk 😆

rotund token
#

but yeah silly

devout prairie
#

actually no i've had so many stupid dependency issues with std packages i doubt its deliberate hehe

#

2d animation samples was a recent one

rotund token
#

don't get how their basic testing before releasing a package is simply, load package into fresh project

#

does it compile?

devout prairie
#

me 'okay its all official now safe to install and try the samples'
unity 'error'

#

tbf it must be painful having to support multiple versions of multiple packages across multiple editor versions

solar spire
#

Oh yeah, painful as hell. Still I'll happily shame 😄

devout prairie
#

haha ofcourse 😛

#

they should have a solid system for that really by now i'd think

#

but yeah the complexities would be, quite vast

#

i worked on a plugin for a couple of years that transferred scenes between different dcc apps

#

so like export from 3dsmax and import into c4d for example, and it used fbx as the underlying format

#

the problem is you have multiple versions of 3ds max, multiple versions of cinema4d, multiple versions of the fbx format

#

and different apps interpret fbx differently

#

so yeah, it teaches you something about being overkill with avoiding future technical debt

solar spire
north bay
#

DOTS Physics: [0.10.0-preview.1] - 9999-12-31
Yea that's how it felt

karmic basin
#

The system relationship inspector is nice and felt much needed. Hope they'll push it further to some kind of graph representation (read-only is enough) or someone writes a nice editor extension for it 🙂

hot basin
minor sapphire
#

Curious what this means: Support WithScheduleGranularity with Entities.ForEach to allow per-entity scheduling

minor sapphire
#

ok makes sense 😄

karmic basin
#

before that you could use a IJobEntityBatch to set your own batch size with an int, but couldnt mess with that in foreach if I'm not mistaken

#

Woooot structural changes module for the profiler. Nice !

hot basin
#

strange, I can't update because of dependency error. Did I missed something?

coarse turtle
#

platforms 0.50 is not out yet

devout prairie
#

is that an editor update?

pulsar jay
full epoch
#

which unity version is recommended - i use currently 2020.3.30f ? does it work with 2021?

solar spire
#

It currently works with no versions as far as we've seen.

hot basin
devout prairie
full epoch
#

damn

hot basin
devout prairie
#

ahhhh

pulsar jay
coarse turtle
#

yea the archetype one looks useful

viral sonnet
#

Source-generators replace code-generation

#

What's the difference? 😄

hot basin
#

sooooo there is nothing to do until platforms package gets to v0.50?

viral sonnet
#

seems so

#

funny that 0.50 is already half a year behind, titled with 2021-09-17

#

new unity versions usually release on Wednesday, right?

#

i've to say, all those new tool windows look helpful AF

haughty rampart
karmic basin
#

Wow you guys are already jumping right into it ? I think i'm gonna wait a few weeks, let people figure out the main issues

verbal pewter
#

It's not working for anyone right now.

haughty rampart
#

🤣 unity version names

hot basin
#

does it count as "releasing entities 0.50" they never said anything about other packages xD

calm edge
haughty rampart
#

they also provide lots of additional benefits

calm edge
#

Does anyone know if windows x86 is supported for entities? The last time I tried using the build configuration there wasn't an option for it

verbal pewter
haughty rampart
#

why the fuck would you ever build for x86 these days?????

haughty rampart
haughty rampart
#

o_O toggle support? is that component disabling?

calm edge
haughty rampart
#

? you still build a linux version for x64

#

anyway, as far as i can remember (vaguely) dots was never intended to run on non x64 hardware

viral sonnet
calm edge
#

The joke was that both are a small number of players 😛 But we do it because we want as many people to be able to play

calm edge
haughty rampart
#

x86 can not run natively on x64

haughty rampart
# viral sonnet Any difference to how Netcode was generating its code? It wrote out perfectly fi...

source generators are a .net native thing as of .net 5 and are more lightweight, powerful and usable than the emitting solutions unity used before. they also run in realtime while writing any character in your script, like a roslyn analyzer. the generated source can also not be edited which is important and they allow for easy extendability. there's also many more aspects why they are beneficial

calm edge
#

We build windows x86, windows x64, linux x64 and macos x64. But x86 runs on an x64 CPU fine so I'm not sure what you're getting at there

haughty rampart
calm edge
#

At the CPU level it runs natively, so I'm not sure what you're saying is emulated

haughty rampart
#

it's not running natively

#

there's actually a good discussion on that

devout prairie
#

guys, guys.. let's not bicker and argue about who killed who..

haughty rampart
#

it's 2022 for fricks sake

devout prairie
#

it was a monty python reference but can't post the gif

haughty rampart
#

YAY, you can now install 0.50

devout prairie
#

they updated the platform package?

calm edge
#

Like I said, we build x64 so noone is missing out, we just make it available to more players by providing an x86 (which has entities working fine btw)

haughty rampart
#

working for me at least......

haughty rampart
viral sonnet
#

i don't quite get why 0.50 doesn't need a new unity version. I thought the whole point of not releasing a new dots was because they made engine changes.

calm edge
#

separate repos, the same as other platforms

#

they could have added any needed changes to 2020.3 in a hotfix?

haughty rampart
#

no i think they just didn't release any updates because there were no big changes. and they didn't release for 2021 anymore becuase of incompatibility

viral sonnet
#

so that's the thing. if 2020.3 runs, why is a new unity version incompatible?

haughty rampart
#

because unity changed between 2020 and 2021

viral sonnet
#

would be interesting what exactly and why they don't bring the necessary changes at least to the 2022.1 beta

haughty rampart
#

seems to work in 2022 actually

#

nah, spoke too soon

viral sonnet
#

meh, got my hopes up 😄

haughty rampart
viral sonnet
#

anyway, the whole dots going dark debacle for over one year is just strange at this point - especially when reading the new patch notes. it's like, same same but different. Hope the baseline performs better at least but usually they mentioned performance improvements in the notes. 0.50 just seems like a middle of the road update with the basic groundwork laid out.

#

and whatever the basic groundwork may be. for one, code generators, the rest, I don't know. Doesn't seem worth a year of development, although 0.50 is already half a year old.

haughty rampart
#

it's not. it just released

viral sonnet
#

it says so in the changelog: [0.50.0] - 2021-09-17

hot basin
#

the second option is, they started it at that date

#

and updated until now

haughty rampart
#

internal build for libraries or any application are always available waaay before released to the public. public release is what counts

viral sonnet
#

the point is, internally they are half a year ahead then

haughty rampart
#

yeah, and they're already way working on 1.0

hot basin
#

and that seems right as I saw posts form UT members like "oh right you don't have current version"

calm edge
#

it wouldn't be surprising if they had two branches and were working on them side by side

haughty rampart
#

afaik, they are

coarse turtle
#

neat looks like com.unity.platforms 0.50 is out

hot basin
#

did someone upgrade it successfully?

haughty rampart
#

yeah, quite some minutes ago

verbal pewter
#

Does anyone know if they plan to release more frequent updates now, or are we waiting until 1.0 is released?

haughty rampart
#

1.0 only

calm edge
#

I'm getting compiler errors, also Mathematics 1.2.6 doesn't exist yet

haughty rampart
#

what errors?

calm edge
#

Library\PackageCache\com.unity.entities@0.50.0-preview.24\Unity.Entities.Editor\Unity.InternalAPIEditorBridge.002\ProfilerModules\StructuralChangesProfilerModuleBridge.cs(4,23): error CS0234: The type or namespace name 'Editor' does not exist in the namespace 'Unity.Profiling' (are you missing an assembly reference?)

#

Unity hung while updating Entities so I'm trying to clean up all the references

#

also I just realised I'm using 2020.3.27 so maybe it needs 2020.3.30?

hot basin
#

I'm getting 13 different errors from com.unity.enities but i''m on 2021.2.12 so that's may be the issue

haughty rampart
#

mathematics 1.2.5 works perfectly with 0.50 and i have 0 errors

coarse turtle
#

I guess 2022.1b needs some work to make entities work haha

hot basin
haughty rampart
#

yes

calm edge
#

which hotfix?

haughty rampart
#

hotfix? just latest 2020.3.30f1

hot basin
#

well shit... I need at least 2021.1 for URP features

#

I guess I just keep trying 😄

haughty rampart
#

just wait a few more weeks / months

hot basin
#

years*

haughty rampart
#

nah. 0.50 will be released for 2021 soonish.

calm edge
#

ok, using 2020.3.30 those compile errors go away (so I'd say it's required), but I get new ones

haughty rampart
#

what errors?

calm edge
#

stuff in serialization, but there's a newer package I'm trying

#

ok, that takes it down to just one:
Library\PackageCache\com.unity.entities@0.50.0-preview.24\Unity.Entities.Hybrid\GameObjectConversion\BlobAssetComputationContext.cs(138,24): error CS0618: 'Extensions.GetUniqueKeyArrayNBC<TKey, TValue>(NativeMultiHashMap<TKey, TValue>, AllocatorManager.AllocatorHandle)' is obsolete: 'Burst now supports tuple, please use GetUniqueKeyArraymethod fromUnity.Collections.NativeMultiHashMap` instead.'

`

hot basin
#

are you using burst version above 1.6.4?

calm edge
#

exactly 1.6.4

haughty rampart
#

yeah, you can just use tuples there now

calm edge
#

these are the packages I have installed:

#

that's in entities though?

viral sonnet
haughty rampart
#

not tried

calm edge
#

I was on 2020.3.27 and that wasn't working, though it's still not working so maybe it wasn't the issue 🤷‍♂️

haughty rampart
safe lintel
#

no animation, do they really expect us to use mecanim until 1.0? some sort of sick joke 🤡

haughty rampart
haughty rampart
viral sonnet
haughty rampart
#

not really managable

safe lintel
#

its kind of awful working in both tbh

hot basin
#

if you port skining to GPU you can easly use HR for everything

haughty rampart
haughty rampart
hot basin
#

it also port mechanim to ECS I think

haughty rampart
#

ok, time to unseal every of my systems classes

calm edge
haughty rampart
safe lintel
haughty rampart
#

what are you struggling on @calm edge?

calm edge
haughty rampart
#

no

calm edge
#

I think we have warnings as errors, that would explain it

haughty rampart
#

i don't even have warnings

calm edge
#

I guess you would only see it on first compile of the package

haughty rampart
#

i did not have any errors even on first compile

#

i just upgraded my second ecs project and had no package related warnings or errors again

calm edge
#

disabling warnings-as-errors in the csc response file fixed the issue

#

so it's just that they're using an obsolete method in 0.50

#

which isn't a problem unless you mess with the compiler response file

haughty rampart
#

is there a reason you are using a csc file? since a relatively recent unity version you can just add compiler arguments in the project settings

calm edge
#

because that's how was it was done originally and there has been no need to change

karmic basin
#

@calm edge you are ahead for some packages. Like Serialization one. Try to downgrade maybe ?

haughty rampart
#

ow that hurts. right. 2020 does not have net standard 2.1 compatibility

haughty rampart
#

i want .net 6 compatibility unity

hot basin
#

it's like step forward with DOTS and 2 steps backwards with all other unity features 😄

haughty rampart
#

WHOOOO being able to easily look at the generated code is so POG. .......although i don't necessarily agree with unity on how the generated code looks

hot basin
#

some idea how to get vertex ID in shadergraph in 2020.3?

haughty rampart
#

no idea

hot basin
#

in 2021.1 there is already node for that

haughty rampart
#

yeah i know

haughty rampart
#

thank god though. hybrid renderer v1 is finally gone

hot basin
#

I think I didn't even used it

calm edge
#

Change any place that the input dependency was used or returned, to use the Dependency field on SystemBase. This might mean you need to change some logic of your system’s OnUpdate method.
Does this mean I take Dependency at the beginning of the function as the input, and then set it as the output?

robust scaffold
#

Holy shit. They just dropped 0.50 literally out of nowhere

hot basin
#

If you use .ForEach I belive it's automated for you

robust scaffold
#

No announcements, no fanfare

calm edge
#

well it's probably not officially released yet...

hot basin
safe lintel
#

@robust scaffold no audio, no animation either 😩

calm edge
haughty rampart
#

i mean csc is fine. just wanted to make sure that you know there's another way

hot basin
haughty rampart
#

since it's a relatively recent addition

haughty rampart
#

i'm definitely looking forward to csproj unity solutions. then no more csc or compiler arguments 😄 @calm edge

hot basin
#

is there new sample repo or it's just not updated yet?

robust scaffold
#

Just read through the 0.50 (and 0.19) changelog. Nothing stood out as revolutionary and worth reinstalling entities. The inability to asynchronously update worlds is just crippling for my simulation game.

haughty rampart
#

but i think there's one new sample

haughty rampart
robust scaffold
hot basin
haughty rampart
robust scaffold
# haughty rampart you could tune the generation now

The problem with lambda jobs in general is that you can not manually adjust the entity iteration code to maximize Burst vectorization and optimization. Specifically fast float and non-deterministic operations like MADD which require a specific pattern of coding to be recognized.

#

Oh well, just my griping. 0.50 is alive and wow, from Havok Physics changelog: [0.10.0-preview] - 9999-12-31. Unity spent all their time developing a time machine I see.

haughty rampart
#

XDDDDDDDD they just moved the thread to a new one

hot basin
#

it's a good practice

haughty rampart
#

whoooo

#

i don't like the archetypes icon though. doesn't look like archetypes to me

robust scaffold
#

Update to 2021.3 dots? So soon? No way.

calm edge
#

my performance characteristics have completely changed (in the editor), now I get a higher fps for a fraction of a second then a tiny freeze

hot basin
#

"soon"

haughty rampart
#

i am actually only seeing a speedup in my project. no freezes for now

hot basin
#

All SystemBase-derived classes must be defined with the `partial` keyword, so that source generators can emit additional code into these classes. Please add the `partial` keyword to MoveAlongPathSystem, as well as all the classes it is nested within.
do I need to do it for every class? D:

haughty rampart
#

every class that is a system

hot basin
#

so pretty much all of them 😄

haughty rampart
#

yeah. that's so awesome

hot basin
#

can I do it automatically somehow?

calm edge
#

it's supposed to update them if you selection the option from the DOTS menu

viral sonnet
haughty rampart
calm edge
#

Looks like major editor time

#

this is in the upgrade guide so just follow it

viral sonnet
#

Additionally, this release requires the use of Unity 2020.3.30.

#

So confirmed now

haughty rampart
hot basin
#

3 months is not soon

robust scaffold
robust scaffold
viral sonnet
robust scaffold
viral sonnet
#

right, well I need to test it when I find the time. GetNativeArray had some overhead with a big chunk, that's for sure

robust scaffold
#

ComponentTypeHandle.Update() is a rather interesting addition. It was profiled by Tertle (iirc) that creation and obtaining the component type handle during job scheduling was quite costly. Now you can store a CTH and simply reuse every scheduling action.

#

I need to run some tests Burst compiling job scheduling in monobehavior. These changes in DOTS are promising but lack the flexibility provided by a pile of native arrays and lists.

#

New IJobEntity job interface, for implementing re-usable and burstable jobs that iterate over entities
Is this the return of IJobEntityForEach?

#

That interface dies and gets revived seemingly every other update.

haughty rampart
#

and maybe has some new implementation stuff

robust scaffold
#

Holy shit, they finally done it, they cleaned up the stickied posts on the top of the DOTS forum

#

this is the real 0.50 DOTS

#

No longer is half the front page of the DOTS forum taken up by ancient announcements and posts

robust scaffold
haughty rampart
#

oooooooooh, excited for that

robust scaffold
haughty rampart
robust scaffold
#

ComponentDataRef<>
Oh, that's nice. Seems like they're abandoning the forced handholding by way of mem-copying structs and instead handing over direct references

haughty rampart
#

what's strange about a partial struct?

robust scaffold
haughty rampart
robust scaffold
#

Personally, from this tiny sample, seems like Aspects is going back to OOC style. Which is strange.

haughty rampart
#

yeah you can't inherit from other structs obv

haughty rampart
robust scaffold
#

Aspects though seems like source-gen'ed archetypes... which actually doesnt seem that bad.

#

If the power of source gen can bridge the communication gap between mainstream OOC to performance focused DOC, that's actually revolutionary.

#

I'm starting to see why this took a year to release

haughty rampart
#

aspects are not released yet btw. that's for 1.0

robust scaffold
#

Yea. But that's definitely what they're aiming for. Very excited to see how it plays out. Would make answering questions here on this channel a lot easier, kinda.

#

It seems like Unity is developing their own language inside C#.

#

Not counting HPC# of course

hot basin
haughty rampart
hot basin
#

so authoring AI would be same as always but generated code faster

robust scaffold
robust scaffold
robust scaffold
haughty rampart
robust scaffold
#

There's also basic burst jobs, which is fully stable and released, for those who want to have near assembly level control over job performance.

haughty rampart
robust scaffold
haughty rampart
#

F bevy

robust scaffold
#

If this pans out, people will look at bevy and ask, why should I bother learning an entirely new way to code when unity code gens for me.

haughty rampart
#

i wouldn't even begin to think why you'd even use bevy over unity. even now

haughty rampart
#

rust is.........meh

#

WTF???

robust scaffold
haughty rampart
#

animation is 'planned'? the heck happened with the progress on the animation package?

haughty rampart
#

XD and project tiny is also dead for the time being

#

i mean.....that's not that big a deal for me

robust scaffold
haughty rampart
#

OOOOOOOOOF. that's bad

robust scaffold
#

Audio not even planned. Hahahaha

haughty rampart
#

OOOOOFFF. also 'under consideration'

void girder
#

Is anyone going to try using 0.50 with 2021.2?

robust scaffold
#

Well, ECS Terrain is dead.

haughty rampart
robust scaffold
void girder
#

ty

robust scaffold
#

And on the upgrade guide:

Remove Audio Package
Remove Animations Package

haughty rampart
#

@safe lintel

haughty rampart
rotund token
#

Guess I'll go finish off my nav mesh library

#

Basically put it on hold because I wasn't sure of plans

#

Really just needs front end

robust scaffold
viral sonnet
#

@robust scaffold ComponentDataRef replaces our CDFE GetPtr() ?

#

Seems it does more under the hood but this seems very nice

rotund token
#

Anyway 0.51 when am I right?!

robust scaffold
safe lintel
#

huh? 🙂

#

oh the planned/under consideration roadmap of animation?

haughty rampart
#

animation and audio and navigation

safe lintel
#

i was like in the middle of gathering my(very annoyed) thoughts for a post requesting a real update to animation

viral sonnet
#

Not sure what IAspect is about. Seems to me like another abstraction layer over archetypes

robust scaffold
robust scaffold
viral sonnet
#

IAspect seems interesting. Archetypes are nice but to have them decoupled even more makes some nice code abstractions. I'm just not sure how far they go. CDR<Strength> on the same archetype, okay, fine. Then the big question, how do they handle a CDR<Entity> Target.

safe lintel
#

they actually have some rough Aspect stuff in the animation(🥲 ) package, which could be the precursor to that

robust scaffold
void girder
#

There's now a VariableRateSimulationSystemGroup

#

So I'm guessing that simplifies running a system every x frames

karmic basin
#

Noice

rotund token
#

what could possibly go wrong downgrading my project to 2020.3

whole bobcat
#

I downloaded the DOTS sample project from github and tried to open it in Unity 2020.3.0f1, but I can't run it. I'm getting this in the console. Any suggestions?

haughty rampart
#

i'm not sure the old example will even remotely work

whole bobcat
#

i tried to just download the package into a blank project but got compile errors there too...

#

is there a workable quickstart guide somewhere that actually works?

rotund token
#

yeah so they fucked up dependencies

#

is it an error on serialization? just update that package in the package manager

whole bobcat
#

it was something with the profiler

#

lemme try it again, sec

rotund token
#

2020.3.30?

whole bobcat
#

yeah

#

3.0f1

rotund token
#

i just did an install into a blank project, get the obvious burst errors which require a unity restart

whole bobcat
#

not 3.30 🙂

rotund token
#

and then serialization errors

#

it needs to be 2020.3.30f1

haughty rampart
whole bobcat
#

ugh... don't even know how i got the wrong version here. gonna upgrade.

rotund token
hot basin
haughty rampart
# rotund token 🤷‍♂️ 🤣 Unity things

waiting for packages until the end 🎶 getting errors i can't comprehend 🎶 working with code that is ancient and bad 🎶 thinking new systems are real super rad 🎶 upgrading projects will break all the links..... 🎶 these are just unity thingssssss.... 🎶

rotund token
hot basin
#

main issue for me that it broke my gpu animation instancing

haughty rampart
#

XD

hot basin
#

@haughty rampart how to check shadergraph node code?

haughty rampart
#

right click the node, show generated code

frosty siren
#

why is code generators are so important? Can someone explain to me what we get with this?

haughty rampart
hot basin
haughty rampart
#

oh, well i guess it doesn't work on input only nodes

void girder
#

How are ya'll serializing native containers? Just convert from NativeArray to an array or use something like BinarySerialization?

rotund token
#

serialized to what

#

our saving system converts everything to 1 giant nativearray and then just writes that to disk (after compressing it)

#

so nativearray is our serialized format 😅

void girder
#

Right now I'm just copying my native arrays to arrays for my scriptableobject

devout prairie
#

how far du guys normally get into a fresh project before you start saying 'ffs unity hurry up'

#

not dots related sorry

safe lintel
#

Every time I compile stuff

rotund token
#

i've been finding my library in 2021.2 compiled really fast

hot basin
#

and i.e. put everything under one folder

rotund token
#

i have 3-8s compile times

hot basin
#

without any asmdf files

devout prairie
rotund token
#

how long are you talking?

devout prairie
#

I mean it's manageable, but definitely waiting on scripts compiling etc eats into dev time quite a bit

rotund token
#

even our really large, terribly organized, project at work only takes me 15 seconds to compile

hot basin
devout prairie
#

This is 2021.2 which does feel a bit quicker than 2020.3 and older tbf

#

15 seconds is a long time if you're dipping in and out of VS, adding lines of code, testing, bugfixing

#

all those 15s add up

#

but yeah in this case, probs just a few seconds, not as much as 15

#

but just enough to be annoying

karmic basin
#

I agree with Krajca, asmdef help a lot. Also if you use a bunch of assets, put them in their own asmdef.

#
  • disabling domain reloading if you don't use static references
#

Eventually letting burst compile asynchronously if you'd rather trade compile time for runtime "warming up" but I'm not sure yet how much of an improvement on that last one

hot basin
#

still faster than unity's reload

haughty rampart
#

@robust scaffold i've found it. IJobEntity replaces BOTH IJFE and IJFEWE

safe lintel
#

well drat, tried updating the animation package for 0.50. all compile time issues fixed but it spits out errors about generic jobs not being initialized during runtime

rotund token
#

IJobEntity is the best thing in the update

#

i can't see myself using many entities.foreach except for tiny tiny jobs

worn valley
#

Thank goodness for IJobEntity. I was really pushing for that in the forum post. Glad they did that. I don't like Lambdas.

hot basin
rotund token
#

have you read the documentation about it?

hot basin
#

not yet

rotund token
#

it provides the boilerplate free setup of Entities.ForEach but lets you organize methods and data much better

rotund token
#

No, it is not being scrapped. In the past we have showed early work on an ECS-based animation system. That work is not part of the scope for our Entities 1.0 release as we focus first on delivering a fully supported ECS foundation. We intend to then build on that foundation with systems like ECS-based animation, and will share more concrete details as they get refined.
oh god animation isn't even part of 1.0

hot basin
#

look at the roadmap

#

it's "planned"

#

bonus fun fact is audio landed into "under consideration" 😄

white island
#

yeah the more I try dots the more I have come to accept it is Not production ready at all

hot basin
#

it is, but not in "pure" mode

#

jobs+burst are released

#

and you can make nice things with it

white island
#

yeah I should have been more specific

hot basin
#

ecs is surprisingly stable too

#

don't know how it behaves in builds

rotund token
hot basin
#

but only thing that prevents usage of "pure" ecs is lack of out of the box features

white island
#

while I am using a GameObject based system for my game, I do plan to use Entities for a few things (Like keeping track of and updating positions of unloaded NPCs)

#

Did 0.5 just come out? is there a blog post with the changelog?

rotund token
#

out years ago mate 😉

hot basin
#

it's 0.50 and yes

white island
#

oh, yeah, last year. nuts

hot basin
#

the saddest thing is I need 2021.1+ so I need to wait another ~3 months

white island
#

Wait is there actually a time plan and road map? i almost thought they gave up on the whole thing

safe lintel
#

@rotund token does IJobEntity work with managed things?

worn valley
# hot basin what's so good in IJobEntity?

It's similar to the old system in ECS around 0.4 where you could specify which components you wanted to bring into a job. I just never like the Lambda expressions. Not enough control with what I am doing. This also allows you to write reusable code so you can use the code in multiple places.

rotund token
#

i'd be hopeful it would under the same rules as Entities.ForEach but yeah haven't tried

worn valley
safe lintel
#

ah fuck me just read that response regarding animation

#

ugh do they even read that productboard feedback? almost feels like throwing something into a blackhole

coarse turtle
#

the new entity inspector is very nice to edit data 👀

safe lintel
#

@coarse turtle you can definitely edit data this time around?

white island
#

tried upgrading to 0.50, and I dont even have anything made using Entities yet... thats not good...

rotund token
#

sounds like you aren't on the right version of unity

#

it must be unity 2020.3.30f1

coarse turtle
white island
rotund token
#

0.51 in Q2 will support 2021 - probably whenever 2021 LTS comes out

coarse turtle
#

no wait i lied, I guess you can edit it in realtime @safe lintel some components of mine end up throwing an error, but not all 🤔

white island
#

ok cool, because being able to use LOD with hybrid renderer would help me a lot

deft stump
#

Oh it's out!?

deft stump
#

ty ty

rotund token
#

i've spent 8 hours today updating my own libraries + still in progress of work and i've run into a lot of stuff

safe lintel
#

ugh want to update but I was just beginning to start a major transition from mecanim to animation after more or less figuring out how to do everything I think I need from it

#

all the profiling stuff looks really handy too

rotund token
#

i was intentionally not touching animation because i was expecting big changes and improvements

#

i wasn't expecting them to just cut it though 😐

safe lintel
#

yeah i was planning on just gritting my teeth to need to redo stuff, not that it would be dropped

#

ugh cant they just go back to experimental releases? whole thing feels like its already hit 1.0 unofficially in the sense it feels like they are locking things down

#

1.0 wont feature any new packages or features barring this "adaptive game architecture" which kinda sounds like marketing buzzwords for investors rather than something tangibly useful

#

I also wish it were someone from the animation team who answered, im still not satisfied with that answer

#

or joachim

white island
#

Wow, look at all that. When it comes to unity 2021 later, I'm gonna have to play with authoring more. I doubt I'll truly be able to entity-authoring-ize everything seamlessly, but it would help to potentially get a lot more critters on the screen without breaking the player's computer (Or re-architecting the entire game)
Also amped about Hybrid 2- I wanted to have distant objects use Entities since they were just a mesh that stayed put, but I didn't want to write my own LOD system (retopo is a bit above my pay grade), so I'm grateful that that issue may be out of the way soon.

rotund token
#

positive news is the old runtime ui toolkit package in 2020.3.30 appears to place nicely with entities so you can have entities + runtime ui toolkit without 2021.2 to tide you over until entities 0.51 comes out

rotund token
#

have a bunch more, just haven't got around to writing them up yet

haughty rampart
#

I'm still more or less at a loss on how to allow for mods in a dots project. (How do I inject custom systems?)

rotund token
#

you can inject burst so think 1 step further, bursted systems!

haughty rampart
#

I'm pretty sure I read that before and it's like for burst only. How're you going to get entity queries etc into the code?

rotund token
#

because you can do entity queries in burst!

#

but yeah you can probably load systems the old fashion way

#

something i'm going to be experimenting with in a few months anyway~

#

for now too many other things to work on

karmic basin
#

Another way might be using addressables maybe ? I know nothing about that yet and need to find a way to have more than 24h a day to explore that, but that's my best guess for now other than injected burst code

rotund token
#

addressables can only load assets

#

not code

#

but you can make your assets change how code works though

#

i.e. you can expose configuration etc via addressables

#

so if you have a very data driven architecture then yeah, you could do a lot of things with addressables

karmic basin
#

Oh I see. Still a lot to learn. Anyway I'm off topic I guess but thanks for the hints ;)

uncut rover
#

Youhou 🎉 ! fully updated, last version of unity 2020.3.30, last package of everything. All works as before, sub-scene even works now that entities and UITK play nice together ! Still have the nested generic blob issue that I need to work out to avoid having a local copy of the entity package...
Now I can start breaking stuff 😈

rotund token
#

i read that response to your question

#

i find it a bit annoying

#

just give us a "let us fuck it up option we know what we're doing and won't use pointers in our blobs"

#

i gave up with blob hash maps and have just been using a DynamicHashMap I wrote which is actually just a DynamicBuffer under the hood and manages its own memory.

#

been meaning to release this hash map actually

#

i think a lot of people would find it really useful

#

being able to attach a [multi]hashmap to an entity without having to manage memory

uncut rover
#

yeah

rotund token
#

someone remind me tomorrow 😄

uncut rover
#

I would even like to be able to nest them but that's yet another level of issues...

#

maybe if I flatten my storage I would not need to have a nested generic type... I'll have to have a look at it tomorrow (took the day of for that ^^)

gusty comet
#

That animating thing is a head scratcher. Didn't the animation team announce forum hiatus a year ago to focus on animation stuff?

#

Half of the milestone post reads like an investor report :S

hot basin
pliant pike
#

cool so entities 0.5 is here leahWTF

pulsar jay
#

I really hoped for a prefab solution similar to subscenes but for prefabs. This is really a missing piece when going full conversion workflow. Best case would be to have preconverted entity prefabs loadable via addressables. At least they didnt deprecate runtime prefab conversion as our current solution is a wrapper that can load and convert an addressable.

robust scaffold
pliant pike
#

its fine I'm just going to wait for 1.0 before updating.... not

#

although looking at tertles post I may wait a bit before trying to update

safe lintel
#

just going by the roadmap, 1.0 may not be all that different?

pliant pike
#

fewer bugs maybe

#

and enabled components?

safe lintel
#

stuff that does stand out to me:
save changes during runtime
new (easier?)api for handling stuff(managed?)
scene picking, more seamless dots editor
dots addressables
netcode(i dont use it so no idea if that stuff is new or not)
more/better documentation

#

but it leaves out core features that make an engine whole. so idk, seems to me that 1.0 wont be the game changing update that it collectively has been building up to be, or at least from my perspective

pulsar jay
safe lintel
#

it is, under the scene streaming and on demand asset streaming

#

On-demand asset streaming: the DOTS-based Addressables system provides APIs to package and deploy content that can be downloaded on-demand. This enables developers to regularly update their games with new content (character skins, weapons, etc.) without bloating the initial distribution size.

#

but if you look at the other windows, 50-90% of that stuff is things that are already in 0.50 already so 🤷‍♂️

tranquil jay
#

Havent looked through 0.5, enable/disable components is not here yet?

haughty rampart
#

no it's not available

gusty comet
#

I hope that "adaptive game architecture" is a huge workflow improvement and not a buzzword soup to bait investors with.

#

Because this looks way lackluster after so many years.

#

I expected much more from 1.0

haughty rampart