Autor Wątek: Nieblokująca Lua  (Przeczytany 7716 razy)

Offline Xirdus

  • Redaktor

# Czerwiec 22, 2014, 17:23:53
Zaprawdę powiadam ci: jeśli do każdej tego typu drobnostki będziesz oczekiwał tutoriala, to będziesz posuwał się baaardzo powoli. Nie wiem też, co znaczy to "a jednak" -- wskazałem ci na dwie funkcje, których powinieneś użyć, użyłeś ich, działa -- nic w tym dziwnego :)
Z moich wcześniejszych prób i googlowania wynikło, że niemożliwe jest to co próbuję zrobić. O to mi chodziło z tym "a jednak". Wcześniej używałem pcallk(), bo w dokumentacji pisało, że ona właśnie umożliwia yieldowanie :L

Pamiętaj tylko, że rozwiązałeś póki co prostszy problem. Będziesz musiał jeszcze przestrukturyzować pętle główną w swojej grze i napisać API, które będzie się w nią odpowiednio wgryzało. Czuję tu nosem jakąś kolejkę eventów lub coś tym guście.
Architektura mojej gry wygląda tak, że mam stos stanów, i każdy stan ma metody parseInput(), update() i draw(). Pętla główna iteruje po tych stanach i najpierw wywołuje parseInput() na pierwszym, potem update() na wszystkich i draw() na wszystkich - przy czym stany nie są od siebie odizolowane i jeśli trzeba, trzymają do siebie referencje i wywołują na sobie metody. Odpalony skrypt zamierzam zrobić jako stan z pustym update() i draw(), a w parseInput() robiłby lua_resume(), a wywołania funkcji blokujących skrypt pushowałyby nowy stan, którego rolą byłoby zablokowanie parseInput() poprzedniego stanu do czasu aż można wznowić skrypt - wtedy pop(this) i skrypt jedzie dalej. Jedyny problem jaki tu widzę to wymyślić lepszą nazwę dla parseInput() - no i być może będzie konieczne rozdzielenie stosów stanów normalnych i parseinputujących, ale może uda się bez tego.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline rastabaddon

  • Użytkownik

# Czerwiec 22, 2014, 20:50:51
Hey ;-)

1. Mialem podobny "problem" i rozwiazalem go za pomoca eventow. (Dodalem wielowatkowosc i nieblokowalny system eventow, skrypty maja dostep do obiektow gry) wymagalo to troszke pracy ale dzieki temu mam szybki jezyk sktyptowy w swoim silniku)

2. Odradzam standardowa lue i proponuje odrazu przezucic sie na luaJIT.

Troche zjadlem na tym zeby, jezeli masz jakies konkretne pytania to z przyjemnoscia podzielie sie moimi rozwiazaniami.

Pozdrawiam