Wpis z mikrobloga

Miruny, mam w planach grę, na backendzie #nodejs, chyba dodam #typescript w ramach nauki, będe zapisywał pokoje w pamięci jako tablica aktywnych gier. Muszę co chwile sprawdzać stan pokoi, czy np. czas nie upłynął. Czy while, który będzie miał timeout, zeby pętla która będzie sprawdzać te wszystkie pokoje wykonywała się powiedzmy co 100ms będzie dobrym rozwiązaniem? Może jakieś inne pomysły co do tego problemu?
#webdev #programowanie
  • 17
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Krucyfiks czas nie upłynął do czego? Wygaśnięcia pokoju? Czy kroku symulacji świata? Rzuć w ogóle więcej info. Sam robię coś podobnego w tym kierunku. Może będę mógł doradzić.
  • Odpowiedz
@SirSajko: Mamy pokój, startuje runda która skończy się po np. 50 sekundach (czas ustalony z góry przez serwer), ale w każdej chwili interakcja użytkownika może zakończyć runde wcześniej.
  • Odpowiedz
@Krucyfiks: czyli tym bardziej sam pokój powinien informować o tym czy jest expired. Oczywiście jego backendowa część. Settimeout przy starcie i metoda która obsługuje te dzialania ktore moga zakończyć wcześniej. No i metoda która to kończy
  • Odpowiedz
@nilphilus pokój który sam informuje o tym czy wygasł to bad design. Lepiej jest zrobić klasę RoomManager która się tym zajmie i będzie trzymać wszystkie pokoje
  • Odpowiedz
@SirSajko: jedno drugiego nie wyklucza, bo i tak manager by byl, ale w pokoju ktory za siebie odpowiada by bylo odwolanie. No i ladowanie logiki w jeden manager utrudni Tobie dodawanie funkcjonalność - np. Roznych zasad dla pokoju, kiedy i jak sie zamyka.
  • Odpowiedz
@nilphilus:

if (...)
this.manager.expireNow(this); // this instanceof Room == true

lepiej by manager handlował z całym standardowym wygasaniem, a o wszystkich niestandardowych wygasaniach może informować Room sam w sobie ale poprzez managera.
  • Odpowiedz
@SirSajko: rozmawiamy o dwóch roznych rzeczach teraz. Ogolnie manager ma miec liste i nia zarzadzac, ale same zasady kiedy ma sie zamknac juz pokój powinien wiedziec i informowac managera. Ew. Niech pokoj ma metode isExpired i manager sobie moze czyscic cyklicznie.
  • Odpowiedz