Wpis z mikrobloga

#unity3d #gamedev

Mireczki drogie, dłubie sobie trochę hobbystycznie w unity3d i ostatnio utknąłem trochę w jednym temacie.
Próbuję zaprojektować sieć przesyłu prądu z wytwórcami energii, przekaźnikami i odbiorcami (Coś jak w Factorio i Cities Skylines). Jakiś wstępny pomysł jest tzn. każdy element posiada informacje o elemencie z którym jest połączony i na podstawie tego jest kalkulowany stan sieci, przy czym rekalkulacja odbywa się w momencie gdy ulega modyfikacji którykolwiek element sieci. O ile pewnie to zadziała dla małych sieci.. o tyle dla większych to będzie na bank killer wydajności i pewnie da się to zrobić 1000x lepiej... ( ͡° ʖ̯ ͡°)
Ogólnie podejrzewam że ktoś już miał ten problem i go rozkminił a fajnie było by nie wynajdywać koła na nowo.
Zrobiłem spory research i przekopałem googla wzdłuż i wszerz.. ale podejrzewam że albo "cannot into google" albo mam pecha bo nie potrafię poprawnie sformułować nazwy problemu.

Do tej pory natrafiłem tylko na ten wątek na forum (https://forum.unity.com/threads/cables-to-pass-eletricity-between-objects.203853/) z jeden wątek o budowie maszyny stanów i pojedyncze tutoriale na yt nt. wykonywania grafów.

Może ktoś z was natrafił kiedyś na jakieś ciekawe materiały na ten temat albo jakąś przykładową implementację na githubie / gdziekolwiek. Albo może podpowiedzieć jak nazwać ten problem i pod jakimi frazami szukać. (Jak znacie jakiś płatny kurs / materiały gdzie jest omawiany ten temat to też styknie).

Z góry dziękuję ( ͡° ͜ʖ ͡°)
  • 8
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@rossecki: właśnie robię coś co wymaga podobnego tworzenia łańcuchów z obiektów.
używam do tego nested lists. Każdy obiekt dostaję swoją listę gdzie na pozycji 0 jest on sam a na pozostałych mogą być przylegające do niego. Po dodaniu nowego obiektu do łańcucha można zmodyfikować zawartość list obiektów przylegających do niego dodając nowe obiekty do listy albo zastępując stare.
  • Odpowiedz
@LaserRock46AND2: Obliczam całą sieć dla przykładowej sytuacji:
1. Dodaje 2 łączniki i jednego odbiorcę, dodatkowy odbiorca przeciąża sieć która przestaje działać.
2. Usuwam tego nowego odbiorcę (Albo 1 z łączników do tego odbiorcy) i cała sieć zaczyna działać.

Raczej w obu przypadkach muszę przeliczyć / przebudować całą sieć żeby określić co się w niej znajduje po zmianach i czy sieć będzie działać czy
  • Odpowiedz
@rossecki: Nie jestem do końca pewien czy dobrze rozumiem co potrzebujesz zrobić i w jaki sposób chcesz obliczać obciążenie sieci itp.

Ale jakbyś po prostu zrobił jakiegoś managera sieci, który by przechowywał informacje o ilości elementów w sieci, czyli:
- Dodajesz nowy element sieci (łącznik/odbiorcę) to ten dodawany element musi sam się zgłosić do managera, że został podpięty. Wtedy Manager sobie go dodaje do puli i przelicza wydajność sieci (<
  • Odpowiedz
@tlustywalec: Dzięki za sugestię, managera sieci też rozważam i będę właśnie w jego kierunku próbował robić implementację.

Podstawowy scenariusz:
1. Mamy elektrownię która produkuje x energii, mamy również słupy pomiędzy którymi są kable które "przenoszą energię" i mamy odbiornik który zużywa energię.

Teraz mogą następować różne modyfikacje sieci, dodanie nowego odbiornika, dodanie nowej kolejnej elektrowni itd. usunięcie kabla który łączy słupy,
  • Odpowiedz
@rossecki: > o tyle dla większych to będzie na bank killer wydajności i pewnie da się to zrobić 1000x lepiej

Zmierzyłeś, że faktycznie to jest problem? :) Zaczalbym od najprostszej opcji, a jak faktycznie wyjdzie że to jest za wolne to wtedy bym się bawił w optymalizacje. Ale wszystko zależy od rodzaju obliczeń. Jeżeli są proste, to powinno działać nawet co klatkę dla tysięcy obiektów.
  • Odpowiedz
@Krzychu_: @tlustywalec: Posiedziałem i udało mi się osiągnąć co potrzebowałem.
Zrobiłem zgodnie z konkluzją z wcześniejszego komentarza no i jestem super dumny.
Dobrze działa dodawanie obiektów do sieci, łączenie sieci, usuwanie sieci.
Teraz kolejny krok, ogarnąć jak dodać krzywe do linii aby wyglądały realistycznie i jak poprawić obsługę kamery i stawiania obiektów na "terrain". Jaram się.

Dzięki pany kaczki za pomoc
rossecki - @Krzychu_: @tlustywalec: Posiedziałem i udało mi się osiągnąć co potrzebow...

źródło: comment_fW6ZOLLJV5rQzNXPc2mGL25C5rvGTEuI.jpg

Pobierz
  • Odpowiedz