#archived-dots

1 messages ยท Page 289 of 1

rotund token
#

like only update graph XYZ every 4 frames

#

and evenly split that across the entities that own it

#

so only 1/4 of entities update every frame

#

making it about ~3x faster

#

(this was one of the original reasons I put it in a single job)

viral sonnet
#

that's a cool feature

#

single jobs rule unless you can optimize it with change filters

#

i've made signifcant improvements with splitting a job into better comps and filters

#

my spellcasting job on the other hand. no splitting makes any sense when everything runs anyway

rotund token
#

change filters are the best thing for performance

#

there's no better optimization than simply not running code

viral sonnet
#

yep, i've neglected them far too long ๐Ÿ˜„

#

nice thing about dod. implementing them is easy even on mature jobs

tranquil jay
#

Hello, after upgrading to 0.51, my trigger system does not work anymore.
What I am doing is having 1 car + 2 "standin" boxes on the side that check if they collide with another car. If they do, i prevent changing lanes because it's occuped.
A standin is just a box prefab with a collider on raises trigger events.

Code block: https://www.pastiebin.com/62d74953b880a

haughty rampart
tranquil jay
#

In the end I used a pastiebin

#

No idea what to do, I keep seeing PhysicsWorldIndex thrown around

haughty rampart
#

the struct doesn't need to be protected btw

haughty rampart
rotund token
#

are you creating physics objects by code or by authoring?

#

if you are doing it by code you need to add the new required components

tranquil jay
#

so authoring I guess

#

first is the standin (trigger raiser) and second is the contestant/cars

rotund token
#

ok well it wont be missing your physics world index then

tranquil jay
#

I assumed that prefabs with the most basic interaction wouldn't need extra spice on the code

haughty rampart
# tranquil jay

they are both kinematic. i don't think they will ever collide because of that

tranquil jay
haughty rampart
#

well it's not something that should be working

tranquil jay
#

ok so the logic is that the cars are kinematic as they behave like rollercoaster carts

#

each car has 2 standings on their sides to tell me if they are able to switch lanes

#

I guess I can remove them completely and check it via math, via boxA.intersect(boxB)

haughty rampart
#

why not just use a raycast

tranquil jay
#

I might have to, as there is a concept of a concrete barrier between lanes (every now and then)

#

so a car can't change a lane because either there's another car there, or there's a concrete barrier inbetween

#

seemed the trigger system would just work, and it did in 0.17

haughty rampart
#

oh wait. one is a trigger and one is a collider. well that should indeed be working though

tranquil jay
#

yeah the car hits boxes and missiles

#

the standins are only detectors

#

when you said raycast, you mean raycast 1 box right? @haughty rampart

haughty rampart
#

no i meant raycast

tranquil jay
#

let me rephrase, raycast a box-shape projection, or raycast "a laser" x4 in the corners?

haughty rampart
#

you can't raycast a box shape. that would be a boxcast

tranquil jay
#

ah ok

#

so 1 boxcast vs 4x raycasts?

#

I might need 9 for the centers too

#

here's how they look now, the green is the "car" and the black boxes are the standing triggers

haughty rampart
#

well like i said, the trigger + collider should be working

#

there's definitely an issue then

tranquil jay
#

do we have some popular examples about colliders / triggers with 0.50 +?

haughty rampart
#

no. samples will be available after 1.0

tranquil jay
#

in the interest of science, I will attempt a separate project to see what's going on

#

if anybody can hook me up with their trigger systems to see if maybe my issue is related to creating the job and scheduling it relative to the World loop

#

I would cherish you forever

drowsy pagoda
#

In a Parallel Job, I want to set a component to an entity that is NOT the one from ForEach but referenced by some data. Problem is, I have to specify entityInQueryIndex which is not valid for that entity. Is there a way I can accomplish this in a parallel job? Or is this a restriction?

rotund token
#

I have to specify entityInQueryIndex
what do you mean?

#

in an ECB?

#

ECB doesn't care about entityInQueryIndex at all

#

you pass it a sortkey for thread safety

#

this just needs to be a unique key per thread

#

it can be entityInQueryIndex, threadIndex, chunkIndex etc

#

as long as it's unique in that thread and no other thread will use it

remote crater
#

I almost have patch #2 in Starfighter General out, this is getting fun wiring in every tech I made over the last 1.5 years in dots: This one is Asteroids: https://www.youtube.com/watch?v=G3KGSYITLGg

In this patch, the dimensions are coalescing so they're destroying alternative realities and you mine some stuff...

Player data retained... Reality around you not...
Grind to get better for next versions.

โ–ถ Play video
#

How could this possibly be violating a write event? It looks to be all reads: if (onIgnoreList(entityA, World.DefaultGameObjectInjectionWorld.EntityManager.GetBuffer<TriggerIgnoreBufferElement>(entityB)))

#

InvalidOperationException: The ComponentTypeHandle<DroneDataEntity> has been declared as [ReadOnly] in the job, but you are writing to it.

#

Maybe back end UNITY stuff is dirty in how it handles stuff?

rotund token
#

you're looking at the wrong code

#

considering it's talking about
DroneDataEntity

#

which isn't even in your code you posted

remote crater
#

the error message referenced that line tho

#

I thought the same thing

#

at Assets/Scripts/DOTS3/TriggerHitSystem.cs:195

#

The error also says ComponentDependency.cs

#

Thats why I was wondering if it was low level, or the error message not giving full info

#

Is there a reason when I build addressables, it alters assets in my project reverted to pre edit?

#

Like straight I'm editing prefabs

#

And when I compile addressables, it reverts the prefabs to what they were

drowsy pagoda
remote crater
#

Turns out, some weird addressables bug that was fixed when I hit clean. I'll take it.

#

Game devving gets exciting once the hard parts are done and you just pushing content.

remote crater
#

This is so weird. When I compile my game, the addressables almost always reverts my project prefab data.

#

Why is addressables messing with my prefab data in my assets. I thought it was a one way translate.

#

Gonna restart Unity

#

I may have found a third Unity Addressables bug...

remote crater
#

Ah, I see the problem. Addressables must have a refreshed version of the project to build. This could be solved by having a build in addressables autorefresh.

solemn hollow
#

oh wow i wasnt aware that ecb.AddBuffer clears an already existing one on an entity. I assumed it would do nothing when it is already on there.

#

thats an easy way to get some raceconditions :S

devout prairie
rotund token
solemn hollow
#

yes makes sense. i just never noticed. i think i got some other cases where this might produce a racecondition i was not aware of but didnt have much effects on gameplay.
I have a case where 2 Abilities want to append to a possibly not yet existing buffer on a target in the same frame.
I want this for example for projectiles coming from different abilities but rotating around the same target in order to be able to space them out equally around the target. The target is maintaining a list of all orbiting projectiles but i dont want to keep that empty list around on entities where nothing is orbiting.

#

So now it seems i have to add the buffer in one job once (if anything wants to orbit and the target has no orbiting projectiles yet). Then in the next fill it with the actual orbiting projectiles.

rotund token
#

don't really understand the desire to just not keep the buffer on at all times

#

and avoid all this hassle

solemn hollow
#

because any entity that can be a ability target could be orbited around. but its a rare occurence

rotund token
#

what if you one system adds the buffer

#

then another removes it

#

you've just lost what's added?

#

i guess you just do your removals first just in case

solemn hollow
#

not sure if i understand but the buffer will only be removed if empty. the orbiting projectiles remove themselves from the buffer. whenever that happens id see if i need to remove the buffer cause its empty now

rotund token
#

buffer is empty
system A removes buffer via ecb
system B wants to add new projectile to buffer, so adds to buffer
buffer now removed by ECB

solemn hollow
#

hmm yep. thats a problem. no idea yet.

#

i havent thought too much about removal yet because leaving them on the entities that where a target once wouldnt be too bad in my case. since its a rare event and the entities that are targeted like that will die eventually anyways.

rustic rain
viral sonnet
#

the obvious question here, why go through a structural change and not have the buffer on the entity the entire time?

#

and i think, making threadsafe DB is impossible. maybe a interlocked on the length works

solemn hollow
viral sonnet
#

why not have a seperate entity for that?

#

and why can that change in runtime is my next question. wouldn't it be more simple to have a prefab for that?

solemn hollow
viral sonnet
#

do you really need that list? ๐Ÿ™‚ can't one orb be on its own?

solemn hollow
#

1 of those zombies with the strawhat = 5 projectiles.

#

and those projectiles orbit around an invisible player that you actually steer. the zombies follow that player as a kind of swarm

#

the next step is to only have one of those projectiles spawn for every zombie and assigning that projectile as a movement target for those zombies. then when that ability is used they build a meatshield circling around the invisible player including pathfinding

viral sonnet
#

so what holds you back from making them seperate entities? the info how many orbs a holder has can be done with an icomp. the orbs have a parent and position can be looked up or sraight up referenced with a lointer to parent ltw

#

(i like the artstyle btw ๐Ÿ™‚ )

solemn hollow
viral sonnet
#

can't praise the gameplay from a screenshot ๐Ÿ˜œ

tranquil jay
#

I saw that Enzi

viral sonnet
#

lol

#

what a typo ๐Ÿ˜„

solemn hollow
solemn hollow
# viral sonnet can't praise the gameplay from a screenshot ๐Ÿ˜œ

there is no real gameplay yet ๐Ÿ˜ฆ way too easy. you run around with a zombie horde and convert enemys to your group. based on what you eat/infect you get different zombietypes (and they can grow). each zombie has different abilities based on where it is positioned inside the horde. you basically assign them jobs.

viral sonnet
#

fixedlist in icomp might help for that problem

#

on of the problems in ecs is designing super entities that have all data. it's dangerous in that sense that they act like an oop class

#

an orb spawner could even be a totall seperate entity. maybe it even solves your buffer problem because an orb spawner would always need such a buffer

#

you could put all kinds of buffers on an orb spawner. the only reference is then from the main entity to the orb spawner

#

and the orb spawner manages spawning the orbs and maintaining the lists of spawned orbs

solemn hollow
#

the orb spawner is basically the ability itself.

rotund token
#

somehow every time i show you something new you find someone else to suggest it to enzi ๐Ÿ˜„

#

(not that i'm disagreeing but it's a pretty large use of chunk - may as well just throw a DB on all the time)

viral sonnet
#

learning from the best ๐Ÿ˜›

#

the spawner entity suggestion wouldn't need a fixedlist btw

solemn hollow
#

yes but im still struggling to understand the difference. the spawnerentity would be responsible for spawning all orbiting projectiles created by any ability that targets the target that is associated with the spawnerentity?

rotund token
#

i personally would look at spawning as a separate entity though it's an interesting problem with no obvious best solution at a glance

karmic basin
viral sonnet
#

the chunk capacity would indeed be a problem with fixedlist. db with internal cap 0 would be more lightweight

solemn hollow
tranquil jay
rotund token
#

anyone know how costly LOD groups are in hybrid renderer?

viral sonnet
#

btw. i would design the fixedlist to exactly hold the amount of different types of orbs that the game supports

solemn hollow
karmic basin
tranquil jay
viral sonnet
viral sonnet
rotund token
#

peformance

#

also i can't really figure out HLOD setup yet

viral sonnet
#

it would be nice now to boot up the megacity demo but i think it's broken beyond repair

rotund token
#

i loaded up megacity to compare and the current has more features but setting it up similar doesn't author properly

solemn hollow
#

i hope those megacity devs got fired too! /s

rotund token
#

it's a bit of a blast from the past loading this up though

#

bot showed you

tranquil jay
#

't was the perfect gif

misty wedge
#

Did something change from 0.17 to 0.51 for custom build configuration components? Having a class inherit from IBuildComponent does not seem to work anymore

#

Okay, nevermind, it seems the UI is just broken? Very strange

#

What's up with that

#

ah sec, wrong file

rotund token
#

yes UI is broken in 2021

#

next version should fix it

misty wedge
#

Ah, ok

rotund token
#

it's a reasonably easy fix if you need to do it yourself

misty wedge
#

Nah it's fine

#

I only have a single custom component for automatically building addressables since I always forget and then wonder why nothing works

rotund token
#

smart idea

misty wedge
#

Supposedly this could be done in early versions automatically, but they removed it for some reason. iirc because it took too long or something

remote crater
# devout prairie looking pretty cool Jim, is the project released on steam?

Yes, game is on Steam for years as Clash of Clans meets Xwing vs TieFighter, playable now! https://store.steampowered.com/app/658480/Starfighter_General/ Believe it or not, I wrote a fully functional professional quality 10 vs 10 player MOBA like League of Legends meets Xwing vs Tiefighter in ONLY 2 WEEKS having only did the Roll a Ball Tutorial! That's how good Unity was to get rollin back in the day! Now I have all the techs to be a MMORPG, but I need to wire them in slowly savoring it, since I been soloing mmorpgs since 1992.

#

I have a really fun to read scifi website with some of the crazy lore, tropes never used and tropes warped for insanity humor, it's just fun to poke from article to article and read: https://www.starfightergeneral.com

#

This is based upon a pencil and paper RPG I wrote in 1989 based on Wasteland/Spaceballs and Dungeons and Dragons that everyone who played said was the best RPG they ever played. I need to publish that, and have an online TTRPG that is better than D&D online and such I am sandbagging, lol.

hot basin
rotund token
#

i'm more interested in the overhead time to check what lod should be drawn

hot basin
#

do you mean just the calculation of the distance form the camera?

rotund token
#

each lod has a range that needs to check its camera distance

hot basin
#

or if you want to be correct, height of the model in the view

rotund token
#

yeah

#

mostly i'm just curious if i should put lods on like, things i fracture

#

say i destroy something into 10000 shards

#

am i really benefiting putting a lod on each of that for the short period it's alive

hot basin
#

I think there is not much of a difference in dots, of course it will be faster etc

#

but will you make LODs for it in the "MB world"?

rotund token
#

yeah my fracture pieces are precomputed

#

it wont fracture in the same way

#

but i fracture in advance with rayfire

rustic rain
#

oh god, the hardest part of gamedev is choosing
2D or 3D, lol

rotund token
#

always 3D

#

even in a 2D game

#

don't make our mistake at work

#

server is pretty much 2D

#

and it's causing us hell

#

4 years later designers decide they want some very specific 3d features

hot basin
#

๐Ÿ˜„

rustic rain
#

Obviously, everything is 3D

#

even graphics are just Quads, kek

#

but it's question whether it's only quads or different 3d models...
With main aim towards modding

rotund token
hot basin
#

I was thinking about it some time ago

#

is there really anything that will benefit from moving everything to the 2D world?

#

i see only downsides

#

like i.e. custom transforms

rustic rain
#

well, drawing and loading png is way easier, kek

hot basin
#

end even then camera and rendering is always 3D

rustic rain
#

once again, it's main aim is towards modding

#

meaning even low poly 3D will be way higher skill req

#

also questionable way of implementation through mods (meaning no editor)

#

for prefabs

#

oof

remote crater
# rotund token always 3D

You can always make everything a 2d UI layer right? Then throw in 3d later even if just particle effects for fireworks. Is there much of a 2d performance hit for making your project 3d?

solemn hollow
#

@rotund token dont know if that helps but i rolled my own very simple Simulation LOD system. I just check all distances to all relevant entities and tag them with the necassary LOD component. So it should be on the very slow end. for 6k entities in my scene it takes 0.03ms mainthread and 0.2ms across workers.

#

So with some acceleration structures and whatnot id expect it to be no issue with some 100k entities

rotund token
#

i really wasn't expecting a huge amount but from my quick look at source it didn't look that optimized

#

so was just curious if anyone had tested it before i do some myself

solemn hollow
#

yes i remember glancing over it and saying fuck it ill just do it myself until i can use an optimized version from unity

#

i needed a way to quickly filter for Simulation-LOD so i decided to go with tag components. ofc that means chunks do change alot.~~ i just added some hysteresis to avoid them changing back and forth on the borders every frame.~~. lol looking at the code again i threw that out it seems.

#

not sure if thats better done with sharedcomponents

rustic rain
#

will reduce checks to minimum

#

also makes enabling/disabling LOD query based

rotund token
#

I'm just going to stick to HR lods since it's built in and requires no structural changes

#

I reinvent the wheel enough as is, think i let someone else do this one

rustic rain
#

ain't reinventing the wheel is what this channel is about? xD

oak sapphire
#

My animation stress test uses the in build LOD system that was ~3% of CPU usage if I recall correctly, CPU was running at 100% with the rest:
#archived-works-in-progress message

devout prairie
devout prairie
safe lintel
#

@oak sapphire dont suppose you figured out blending between animations?

devout prairie
misty wedge
#

Do IL2CPP builds work atm? iirc they were broken but I'm not sure

oak sapphire
viral sonnet
misty wedge
#

It builds fine for me, but going by the error it seems to be stripping core entities code, is that fixable by changing the settings?

viral sonnet
#

i'm still on 2020.3 so can't check how the option is really called

misty wedge
viral sonnet
#

that kind of error will be fixed

misty wedge
#

I'll check it out, thanks

#

Welp, while that does work, NetCode is somehow crashing on me :X

#

Ghost ID 0 has already been added thonk

misty wedge
#

Are spawned ghosts in netcode not guaranteed to have the latest value of the server? I am creating an object on the server, and setting a value on a component, but when that ghost arrives on the client, the value is not initialized

#

Also it seems there are still some weird bugs in NetCode, no idea what is going on here:

#

There's also no stacktrace for it

devout prairie
#

๐Ÿ’ฌ Ok so let's talk about this...
๐ŸŽฎ Get my Steam Games https://unitycodemonkey.com/gamebundle
๐ŸŒ Get my Complete Courses! โœ… https://unitycodemonkey.com/courses
๐Ÿ‘ Learn to make awesome games step-by-step from start to finish.
๐Ÿ‘‡ Click on Show More

๐Ÿ”ด RELATED VIDEOS ๐Ÿ”ด
My Game Dev Journey (40+ Games! | mIRC to Flash to Steam) https://www.youtube.com/w...

โ–ถ Play video
drowsy pagoda
#

Help. I need to run some custom code when pressing Build and Run, where can I do this? The good ol IPreprocessBuildWithReport doesn't work for DOTS build.

haughty rampart
solemn hollow
#

How does prefetching behave at chunk borders? is every chunk border a cache miss because we have to chase a pointer and thus cant be prefetched or does it work since we are iterating over a chunk array in a linear way?

#

And about MegaEntities that occupy a large part of a chunk: Isnt there a certain maximum size of entity where prefetching would be just fast enough to cover for low chunk utilization? Say the fastest logic we run with a cache line is like 20 cycles and a memory read cost 200 cycles. wouldnt that mean that if my chunk contained 10 entities i wouldnt wait for data from main memory? So the chunk utilization can be worse without any performance impact for entities that have higher workloads per cache line?

rustic rain
#

use this

#

attribute on static method

rotund token
#

(does he not need PreProcess?)

rustic rain
#

oops

#

I read it wrong

rotund token
#

got a proof of concept of making net code not trigger change filters on client

#

before/after

#

now to beg netcode devs to revisit this problem

viral sonnet
#

good find and ouch!

rustic rain
#

hmmm, how should I implement rendering of 2D sprites through HybridRenderer?

viral sonnet
#

quad mesh and billboard shader(graph)

rustic rain
#

Billboard?

viral sonnet
#

so it faces the camera at all times

rustic rain
#

ah

#

it's not an issue

#

it's top down view always

#

I'm way more concerned about materials

viral sonnet
#

ah then you can pre-set

#

materials are fine in HR

rustic rain
#

I need to be able to request my materials by Texture2D

#

which would probably force me to make some MaterialPool

#

also I guess I won't be able to create atlas

#

thus, no perfomance benefits from that

viral sonnet
#

are the texture widths/height power of 2?

rustic rain
#

uuugh

#

well, I'm not sure what you mean by that

#

by widths and height shouldn't be related

#

as it would mostly be fixed through scale

viral sonnet
#

post some sprite you are planning to use

rotund token
#

(on client)

rustic rain
#

I'm confused, why it's relevant, tbh

viral sonnet
#

because of texture stretching

rustic rain
#

here just a test of how I'd want it to work

#

texture is 40/70

rotund token
#

and what's wrong with just converting this?

viral sonnet
#

ah you scale it yourself

rustic rain
#

I have my own conversion workflow

#

through XML prefabs

rotund token
#

oh well

#

you really need to convert htis through authoring so you can setup per instance components

rustic rain
#

so I need a way to build graphics entity through serialized request

rotund token
#

and you could just batch it all together super easy

viral sonnet
#

we should teach them how to do proper change filtering ๐Ÿ˜…

rustic rain
#
        public static void AddComponents(
            Entity entity,
            EntityManager entityManager,
            in RenderMeshDescription renderMeshDescription)
#

I'm mostly concerned about Materials

viral sonnet
#

what's your concern? batching and draw calls?

rustic rain
#

yeah

#

I probably need a way to have shared Material for same sprites

#

so HR batches them

#

but I'm confused over how I can and should implement this

rotund token
#

just atlas your textures and use the same material on huge amounts of your sprites?

rotund token
hot basin
#

and make UV override

rotund token
#

^

hot basin
#

is texture override available now?

rustic rain
#

Since I'd need to load all mod's textures as well

rotund token
#

atlas is just a normal texture

rustic rain
#

I know

#

It's just that it's only available in editor

#

afaik

rotund token
#

what do you mean

rustic rain
#

baking of atlas

#

with references to sprites

rotund token
#

i just made an atlas texture

rustic rain
# rotund token i just made an atlas texture

I know what atlas is, but point is that when some modder adds additional sprites, you wouldn't want them to combine it all to sprites and creating UV info for each sprite, that's way too complex

rotund token
#

you would if you want them to batch together

#

otherwise you gotta do it yourself

rustic rain
#

how do you even render it btw

#

how do you define custom uv

rotund token
#

texture packs on minecraft were required to be setup atlas for example

rustic rain
#

is that Sprite Specific property for shader?

rotund token
#

every material has a UV option i'm pretty sure

#

(this is HDRP/Lit looks may vary on pipeline)

rustic rain
#

bruh, bad part: selection tool won't work on cutout parts without custom code in editor

rotund token
#

you mean the part you can't see?

#

because that's kind of hte point of this whole selection

rustic rain
#

in sprite

#

but mesh exists

rotund token
#

yeah that's the whole point of the pixel perfect picking

#

it will only pick visible things

rustic rain
#

hmmm

#

I guess in EntityIDShader

#

all you'd need is just in frag shader

#

multiply color alpha by 0, in case initial color is 0

#

ooor

#

ah wait

#

there's no texture for it

#

to have UV

#

bruuuuuh

#

that's why 2D sucks

rare dew
#

I'm curious if anyone has written any wrappers for iJobParallel and UniTask

viral sonnet
rotund token
#

let him spiral a little more, he's only a few steps off redoing his entire game in 3D ^_^

#

who doesn't enjoy a huge rewrite!

rustic rain
#

kek

viral sonnet
rotund token
#

i see a space ship quad

rustic rain
rotund token
#

ship it

hot basin
#

@rustic rain I don't see any problem, just make tool for modders to generate UV of sprites in xml/json format and load that

#

2d is 100000% easier than 3d

#

especially animations

rustic rain
#

for example, 2D breaks my shader selection tool

rotund token
#

you realize it won't select transparent 3d objects either right

rustic rain
#

but it will

#

since it renders based on ID and mesh, not on texture

#

while 2D mesh, is quad, which takes all space, disregarding of actual graphics geometery

rotund token
#

oh wait yep i get your issue

#

it's the opposite of what i was thinking your problem was

rare dew
#

something like

struct MyJob <In, Out> : iJobForParrallel
{
  private readonly NativeArray <In> input;
  private NativeArray <In> output;
  private Function<In, Out> transform;

  public MyJob<Coll>(Coll input, Function<In, Out> transform)
    where Coll : IEnumarable<In>
  {
    // input to this.input here
  }

  void Execute(int index)
  {
    var temp = input[index];
    var outvar = transform(temp);
    output[index] = outvar;
  }
}

struct AsyncParallelForEach <T>: AsyncEnumarable <T>
{}

class MyBehaviour : MonoBehavior 
{
  private async UniTask MyTask()
  {
    await foreach (item in AsyncParallelForEach([
      1,2,3,4,5,6
    ]).Where(item => item % 2 == 0)
      .Select(item => item * 2)
      .ete
    ) {
      Debug.Log(item)
    }
  }
}
rare dew
rustic rain
#

I don't get the point of this either

#

if you want to await JobHandle of job

viral sonnet
#

what's that trying to do? mixing both won't work. what would work is run a UniTask after a job is completed. Although I don't see the point as you could just write a non-bursted job instead

rustic rain
#

you can do

#

UniTask.WaitUntil ( () => jobHandle.IsComplete());

hot basin
#

if you you use depth then it shoud just work?

#

oh I get it

#

do you render texture with color as object ID?

#

then it should be fairly easy to support transparency

rotund token
#

you render all meshes each with a different colour

#

then just read the pixel under the cursor

#

the issue is, each full quad is a distinct colour

hot basin
#

yeah, but you can blit textures in the same way

#

so you can add transparency support

rotund token
#

it doesn't know what the original texture / material is

#

at least not by default

#

getting that info would significantly slow down the algorithm

rustic rain
#

yep

rare dew
hot basin
#

in this case you know everything would be a quad so you can disregard mesh and focus on texture alpha?

rustic rain
#

You have entity with all rendermesh components and etc

#

you know original material

#

if you simply draw by mesh, you just create a job and draw all same meshes as instanced

#

if you don't...

hot basin
#

if you had mesh in 3d then access to texture data should be similar, then blit instead of render

rotund token
#

but you have to blit every single texture in the entire scene?

#

1 at a time?

rustic rain
#

that's the point

#

mesh already contains geometery

hot basin
#

just those in view and those selectable?

rustic rain
#

and that's all you need

rotund token
#

because what if something unselectable is in front of something selectable

#

it needs to block your selection

hot basin
#

if you want to block selection for items under then you're right

rustic rain
#

feels bad 2D loses in this one

#

implementing physics is not favorable

#

as it will be equally hard to implement colliders for modders

hot basin
#

but doesn't it mean all you need is something similar to depth texture but instead of depth you want ID?

rustic rain
#

I guess

#

I'll have to accept having no correct geometery

hot basin
rustic rain
#

problem is rendering

#

not retrieving data

rotund token
rustic rain
#

btw, about 3D and conversion workflow

#

I mean, I do get that game will be way faster with all native Unity way of doing it

#

but since I aim for modders

#

I need to implement things the way it will be easily modified from outside

#

this is my sole project and I doubt I will be able to finish game fully all by myself

#

that's why modding is probably the only way my game has a chance to have a life, kek

#

so I'd have to sacrifice certain things in favour of exposing data

rotund token
#

it all makes sense

#

though I kind of believe you can give modders a better experience by providing dlls to load into unity instead of having to trial and error edit some random text files

#

i'd like to see a world where modding is barely different to developing

rustic rain
#

I will load dll from Folder

#

and then run some custom code from it

rotund token
#

well yeah i'd like to let users load the dll into an empty unity project

#

and let them setup prefabs and use the same tools

#

(not claiming the possibility of this yet, i haven't tried hard enough. but it's what i'd like to see)

hot basin
rustic rain
#

it's all XML

#

and C#

hot basin
#

you can code behaviour

rustic rain
#

I wonder how it can be implemented though

#

I haven't though of it, ngl

#

I might even use it instead, then

#

kek

#

as soon as I figure out, how I can share dll between projects

rotund token
#

Library/ScriptAssemblies/
copy/paste

rustic rain
#

well, yeah

#

but it's all compiled

hot basin
#

there was an tool for editor layout overhaul, unity forma is using it I think - so you can make package with moder tools and your own editor GUI

rustic rain
#

and it might not have same level of my initial editor experience

#

so I'd probably have to design it around that assembly

rotund token
#

that depends if you give them your editor dlls ๐Ÿ˜„

#

anyway i dont know how feasible this is

#

this is just an idea in my head that has festered for a long time without ever being explored

#

there are probably 100s of pitfalls

#

but why reinvent the wheel when we have a great tool for developing games is my thought process

hot basin
#

if you include tool for building that mod that's reasonable approach I think

rustic rain
#

That would basically mean I'll have to share all authoring components data

#

which is not a prbolem

#

Problem is that I want to share it as compiled, not as sources

rotund token
#

hence the dll

rustic rain
#

but will Unity work fine with dll?

hot basin
#

yeah, assets from assetstore often comes in dlls

rustic rain
#

hmm

#

interesting

#

oh man

#

this happened so fast, kek

#

and now I'm suddenly overwriting my whole project

rotund token
#

mission success

rustic rain
#

but I will certainly favour that method

#

over any XML

rotund token
#

you need to figure it out though

rustic rain
#

I know

#

trial and error I guess

rotund token
#

they can't just build the project like normal

#

they need to build it and you need to link the new dlls + bundles or whatever

hot basin
#

why can't you just use harmony?

rotund token
#

i mean sure they could

rustic rain
#

kek

rotund token
#

it's nicer if you do it yourself to support burst assemblies though

rustic rain
#

Postfixes and transpilers were my best friends, kek

#

to load shaders you had to build asset bundle in editor

#

and then load it manually through code

#

terrible time...

rustic rain
#

@rotund token any idea would be a test task to test creating custom mod for existing assembly?
Just something abstract, simply for test

#

I want to try and test it

viral sonnet
#

override a cerain prefab with custom texture, effect, comps :)

rustic rain
#

yeah

#

I think the first task would be to read original prefabs

#

is that even possible to do natively?

viral sonnet
#

well that's what you wanted to figure out? how to provide a nixe environment for modding. you'd need some way to load a mod subscene and a way to mod that subscene in another unity project.

#

then you can overwrite original prefabs with modded ones

rustic rain
#

or actually by simply using API

#

of Entities

solemn hollow
#

this might be a very stupid question:
i have an Interface (IVectorizable) which basically makes components readable for my AI. It Implements a function GetValue() which describes how data inside a component is to be interpreted by AI. Now what if i wanted to read from the Translation component directly (instead of a Vectorizable copy of it). Is there any way i could make Translation Vectorizable?
Basically i want a way to somehow say that 2 IComponentData are actually aliasing the same underlying data (=use the same ComponentTypeHandle?).
That would be useful in some other ways too:
You could alias ComponentTypes from different Packages to quickly hook Systems up without Dependencies between the packages (aside from that GlueCode). I am still having trouble managing dependencies between packages that need the same data.
Let's say i want someone else to use my AbilitySystem. Atm that user would have to use my way of handling collisions or copy his collision data into my components. instead it would be so much better to be able to have some kind of AdapterPattern where he could link up his components with mine.
Sry that question is all over the place but i lack understanding to describe it better :S

#

Is there some magic i could do with Reinterpret?

rustic rain
#

Make some kind of TranslationMirror component with same fields

#

and interface you want

#

and voila

#

after all, it's all same bytes and bits

#

just interpreted differently in IDE

#

kek

#

this is actually a way to implement abstractions with primitive structs, huh

solemn hollow
#

hmm but in my AI each Vectorizable Component can have a different Size though. some hold a float3 to be vectorized some only a float. id need to reinterpret based on size or sth. this seems expensive to check and not very safe to use.

#

But as for the general use of an adapter pattern it could work. im just not sure how to implement that best. I would have to reinterpret every input component of every user facing system of a systemgroup to one of my components.

#

And i need a way to let the user define which component he wants to be reinterpreted as an input to a system. (which shouldnt be too hard)

#

Still a much nicer way would be able to define somewhere that different componenttypes actually are the same underlying data in the first place. Ofc Safety system would need to be aware of that too

rustic rain
solemn hollow
#

my generic system is not aware that it tries to vectorize the Translation component. but if it was then yes reinterpret would let me basically use an interface for it (which i then wouldnt really need because i know the concrete type and can work with the data directly)

jovial mantle
#

Hi guys, I am way too far ahead with the game to switch fully to DOTS. but still I'd like to use C# Jobs to improve performance here and there. Does it support rigid bodies/ physics ?
Thanks!!

viral sonnet
#

no

rotund token
molten flame
#

Hey @rotund token what kind of NAT solution are you planning on using for your netcode?
Unity gaming services has released Relay but no Aus servers ๐Ÿ˜ฆ
Also no DOTS integration but this is true for any NAT solution at this stage

rotund token
#

i thought netcode/transport had relay support

#

but anyway havent really thought about it

#

i'm not really making a game

molten flame
#

Ah ok. Yeah its based of the transport package so I assume its not hard to get it connected.

rotund token
#

i'd probably be looking to host a dedicated servers for most ideas i had anyway

elfin spire
#

Which version of unity or the job system has jobified meshcollider rebuild?

full epoch
#

that is strange that netcode does not have support for relay and netcode for go has