Narzędzie · W rozwoju

Simply Signals

Zero-alokacyjny system komunikacji między systemami gry.

Silnie typowany, zero-alokacyjny system komunikacji między systemami gry, zaprojektowany tak, żeby komunikacja cross-assembly przestała być bólem głowy. Jedno wywołanie i dane trafiają tam, gdzie chcemy.

Zamiast trzymać referencje między modułami albo przepychać dane przez singletony, wystarczy jedno wywołanie — Signals.Send(...) — i dane trafiają dokładnie tam, gdzie trzeba, niezależnie od tego, w którym assembly siedzi odbiorca.

  • Podział pracy: Source Generator + CecilRoslyn generuje publiczne API i wewnętrzny stan (rejestrowanie/wyrejestrowywanie), a Cecil robi wyłącznie jedną rzecz — wstrzykuje wywołania rejestracji w Awake/OnDestroy. Każde narzędzie robi to, w czym jest najlepsze.
  • Okno edytorowe zamiast ręcznych interfejsówSygnały deklaruje się przez dedykowane okno, nie pisząc interfejsów ręcznie. Kolizje nazw między różnymi fasadami są blokowane już w momencie próby dodania, nie wykrywane później w generatorze.
  • Tryby łączenia bez DynamicInvokeZwykły multicast dla void, a dla wartości zwracanych — tryby None/All/Any z przeciążeniami po liczbie argumentów, zamiast kosztownej refleksji w runtime.
  • Zasada bezpieczeństwa WeaveraJeśli Cecil miałby generować pętlę albo rozgałęzienie — to sygnał, że logika powinna trafić do zwykłej metody C#. W planach: wizualny graf zależności pokazujący na żywo, kto z kim rozmawia w danym momencie gry.
Source GeneratorsIL WeavingCecilZero-Allocation
Status W rozwoju
Zakres Architektura / Source Generators
Zakres pracy
  • Podział pracy: Source Generator + Cecil
  • Okno edytorowe zamiast ręcznych interfejsów
  • Tryby łączenia bez DynamicInvoke
  • Zasada bezpieczeństwa Weavera
Następny projekt

QuickLoad