Skip to content

New Project Initialization

AntonKalatski edited this page Jan 29, 2025 · 6 revisions

Multiplayer Project

  1. Use Create/ME.BECS/Create Project menu to create and initialize default project template
  2. Rename ProjectInitializer to VisualInitializer
  3. Create LogicInitializer script and open it:
[DefaultExecutionOrder(-100)]
public class LogicInitializer : ME.BECS.Network.NetworkWorldInitializer {

    public static LogicInitializer instance;

    public static ME.BECS.Network.NetworkModule GetNetworkModule() => LogicInitializer.instance.networkModule;

    protected override void Awake() {
        instance = this;
        base.Awake();
    }
            
    protected override void DoWorldAwake() {
        this.world.parent = LogicInitializer.instance.world;
        base.DoWorldAwake();
    }

}
  1. Open VisualInitializer script:
[DefaultExecutionOrder(-80)]
public class VisualInitializer : WorldInitializer {

    public static VisualInitializer instance;
        
    protected override void Awake() {
        instance = this;
        base.Awake();
    }
    
    protected override void DoWorldAwake() {
        this.world.parent = LogicInitializer.instance.world;
        base.DoWorldAwake();
    }

}
  1. Now your worlds are connected like this:
Logic.parent = Logic
Visual.parent = Logic

So you can access them at any time by this inheritance.

  1. Create LogicInitializer prefab and place it on your scene
  2. Select Logic world type in LogicInitializer prefab
  3. Add NetworkModule and ViewsModule to LogicInitializer
  4. Leave ViewsModule only on VisualInitializer prefab
  5. Create LogicFeatureGraph and assign it into the field in LogicInitializer prefab. Use this graph for your logic systems.
  6. Use ProjectFeaturesGraph for your input and local visual systems.
  7. All is done

Singleplayer Project

  1. Use Create/ME.BECS/Create Project menu to create and initialize default project template
  2. Select ProjectInitializer on the scene and leave ViewsModule only
  3. All is done
Clone this wiki locally