Skip to content

Directories and Assemblies Structure

Mikhail Agapov edited this page Oct 5, 2023 · 7 revisions

Encapsulated Features

Every feature can contain an arbitrary range of Assets which can include but are not limited to:

  • Scripts
  • Textures
  • Models (FBX, OBJ, etc.)
  • Audio
  • Prefabs
  • Scriptable Objects

The default place for a feature is a subdirectory at Assets/DCL path.

In order to maintain a reasonable number of assemblies and a manageable number of dependencies between them consider the following rules:

  • By default introduce one and only one assembly per feature.
  • Control exposed members by public access level: if members should not be exposed make them internal instead.
  • if assemblies have cross-dependencies to avoid unnecessary granularity of assemblies group several features together by Assembly Definition References. They should be reasonably close enough and otherwise undisconnectable to be qualified for such a merge. Otherwise, there should be just a one-directional reference between their assemblies.
  • Use Assembly Definition References to connect different directories together to a single assembly.
  • Use different directories for Unit Tests but connect all of them to the single "DCL.Tests" assembly. We don't care about the number of dependencies in the case of Tests as any other assembly never references Tests.

Pure technical implementations

TODO

Container, Plugins, and Global code

TODO

Clone this wiki locally