Skip to content

hopeforsenegal/com.moonlitstudios.coordinator

Repository files navigation

Coordinator

License

Coordinator A dead easy way to coordinate multiple instances of Unity. Use Coordinator to boot up multiple Unity Editors in order iterate playmode sessions with your multiplayer game. You can choose to have stand alone Editors or Editors that go into playmode (with settings that help with testing and/or building your game).

Screenshot 2025-01-06 at 1 48 20 PM

Features

  • Standalone interact with your symlinked or hard copy editors manually as if you created them and opened them yourself (This is what most people do to test their multiplayer games but now we've organized this process for you). Symlinked Editors have the benefit of reflecting script changes across the Main Editor and other symlinked projects.
  • Playmode your additional editors will go into playmode when the original main editor goes into playmode. Perfect for getting into a multiplayer game with fewer steps.
  • PlaymodeWillEnd & AfterPlaymodeEnded is the solution to be even less hands on. The editors will go into playmode until the main editor calls Editors.TestComplete and then call a post test method for you (perfect for going through a set of tests and then uploading a build).
  • Scripting Defines so you can have one Editor run as Server and the other as Client (or perhaps Demo).

Installation

  • Add this GitHub URL to your package manager or, instead, in your 'manifest.json' add
  "dependencies": {
	...

    	"com.moonlitstudios.coordinator": "https://github.com/hopeforsenegal/com.moonlitstudios.coordinator.git",

	...
  }

None of that working? Honestly, just reach out us! (Links & methods towards the bottom).

Examples

if (Editors.IsAdditional()) {
Debug.Log("Additional said something like intended");
}else{
Debug.Log("Original said something like intended");
}
#if GLOBAL_SCRIPTING_DEFINE
Debug.Log("Respecting the Global scripting define");
#endif
#if ADDITIONAL_ONLY_SCRIPTING_DEFINE
Debug.Log("Additional said something else like intended");
#else
Debug.Log("Original said something else like intended");
#endif

[AfterTest]
public static void MethodToCallAfterPlayMode()
{
Debug.Log("This method is called after exiting Play Mode when 'Start Tests' is used");
}

How does it work?

Additional Editors are created with Symlinks or Hard copies. We use files on disk that allow each editor to communicate with each other (easier then rolling a socket solution or more elaborate interprocess communication... also benefits from surviving Domain Reloads). That's 90% of how it works. (Feel free to .gitignore these files on disk or extra projects that get created if they are picked up by your source control)

Need Help or want to chat?

Feel free to just drop us a line on Discord. It's always better to have a real conversation and we can also screen share there. It's also not hard to reach us through our various other socials. There we can talk about the individual needs that you might have with your multiplayer projects.



Other Unity Packages

Check out Immediate Style & Asset Stripper

Support this project

Please, please, please!! ⭐ Star this project! If you truly feel empowered at all by this project please give our games a shot (and drop 5 star reviews there too!). Each of these games are supported by this tool

Screenshot 2024-11-04 at 10 43 52 AM

Apple Android

Screenshot 2024-11-04 at 10 43 52 AM

Apple Android

Screenshot 2024-11-04 at 10 43 52 AM

Apple Android

Last but not least, drop some follows on the following socials if you want to keep updated on the latest happenings 😊

https://www.twitch.tv/caribbeandominoes

https://www.facebook.com/CaribbeanDominoes

https://x.com/moonlit_studios

https://x.com/_quietwarrior

About

A dead easy way to coordinate multiple instances of Unity

Topics

Resources

License

Stars

Watchers

Forks

Languages