You may have noticed some recent changes in the main DOTS samples repo (EntityComponentSystemSamples). It’s all listed in the root README, but here I’ll explain what’s changed.
First, new and existing beginner material has been put into a series called “DOTS 101”:
Unity Job System 101: Repackaging of the existing “Jobs tutorial” that was in the EntitiesSamples project.
Unity Entities 101: Repackaging of some existing markdown docs and the HelloCube, Firefighters, Kickball, and Tornado samples that were in the EntitiesSamples project.
Unity Physics 101: New intro doc and sample project.
Unity Netcode for Entities 101: New intro doc, video, and sample project.
Additional content: Two new documents: “Misconceptions about DOTS and Entities” and a “Performance checklist”.
Aside from the parts of EntitiesSamples moved to Entities101, the package sample projects have not otherwise been changed.
You’ll also notice the text content is now in Google Docs instead of Github Markdown. Eventually, this content will likely be moved to an integrated Unity docs platform, but hopefully the Google Doc format is serviceable enough until then.
Why the changes?
The main idea behind this restructuring is to make the intro path clearer for learners by separating out the beginner material from the more advanced samples.
The 101 materials have many overlaps with the package manuals, but unlike the manuals, they are designed to be sequential reads for beginners. So while they’re less comprehensive, they should be more approachable.
The package samples are used for internal testing purposes, and this sometimes conflicts with educational goals. For example, the package sample projects are cluttered in a way that can be confusing for learners. The new 101 sample projects are deliberately much sparser.
As for future additions and changes, possibilities include:
Character Controllers 101 (for the Character Controller package)
Physics and Netcode 201 (followups to 101 that cover more APIs and use cases)
I have limited exposure to XR, but as far as I know, it’s largely an independent topic from DOTS: if you learn both separately, putting them together shouldn’t present notable obstacles. Maybe you’ve experienced otherwise? If there are specific friction points you have in mind, I’d be interested to hear.
I haven’t used ECS much myself, but afaik all XR tools like XRIT work with monobehavior based systems. So makings something with ECS would require you to write all interactions from scratch, or do a lot of back and forth.
I might misunderstand how this would be put together, but I assumed it would be a big undertaking to get simple interactions working
As I understand the XR Interactive Toolkit, the 4 main features are input, locomotion, UI interactions, and 3d interactions. Because the first three can largely be decoupled from your world simulation, they seem pretty orthogonal to ECS. I can see how 3D Interactions would be a problem, though: if your world objects are entities, you can’t add the interactable GameObject components to them. I wouldn’t be surprised if creating a bridge layer were feasible, but I’m not sure if anyone has done this (and obviously it’s not as nice as having a built-in solution).