Skip to content

New Project Initialization

Alex Silaev edited this page Jan 28, 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(-80)]
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(-100)]
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.
  2. Create LogicInitializer prefab and place it on your scene
  3. Select Logic world type in LogicInitializer prefab
  4. Add NetworkModule and ViewsModule to LogicInitializer
  5. Leave ViewsModule only on VisualInitializer prefab
  6. All is done

Single-player 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