[DLL] GMThreads, Wielowątkowość w GM ;D |
Uwaga!
To forum służy do zamieszczania gotowych przykładów i silników, nie do poszukiwań!
![]() ![]() |
[DLL] GMThreads, Wielowątkowość w GM ;D |
31.07.2008 - 22:43
Post
#1
|
|
![]() Elite ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Wiek: 20 lat Grupa: Użytkownicy Postów: 1,417 Dołączył: 16.12.2005 Ostrzeżenia: (0%)
|
![]() Last update: 29.12.2009: CYTAT Features: - Wsparcie dla GM8 - Dodano funkcję thread_wait, służącą do oczekiwania na zakończenie wątku - Dodano możliwość sprawdzenia błędu danego wątku - DLL został napisany od nowa w MASMie - Wydano kod źródłowy (na LGPL) Compatibility issues: - Zmiany w nazwach funkcji (thread_priority, thread_affinity_mask, thread_ideal_processor, thread_num_of_processors) - Usunięto funkcje thread_last_error i thread_is_suspended - Teraz po utworzeniu wątku trzeba zamykać jego uchwyt (za pomocą thread_close). Dzięki temu można przechwycić kod błędu wątków (thread_get_error). FAQ style Co to jest ? GMThreads to biblioteka DLL dzięki której można wykonywać podany kod GML w... wątkach ;D Właściwie, to to jest eksperyment i trzeba to przetestować. Co to są "wątki" ? ;o Hmm... nie chce mi się tego opisywać więc zacytuje: Do czego te wątki mogą mi się przydać ? Cóż, kod wykonywany w wątkach jest cały czas tzn. nawet gdy okno gry jest zminimalizowane, przemieszczane, wyświetla wiadomość [show_message] itd. Poza tym, dzięki nim można ładować zasoby, wykonywać obliczenia i tak dalej w tle, przez co główne okno się nie "zawiesi" w czasie ładowania (FPS-y mogą spaść, chociaż to też zależy od priorytetu wątku). Hmm... więc jak tego używać ? Może najpierw wymienię funkcje: Znane bugi: - W wątkach GM-owych okienek wiadomości (show_message*) nie można zamknąć. - W wątkach wszystkie otwierane okna nie blokują głównego okna gry. Download (V2.0): http://www.gmclan.org/up541_4_GMThreads2.html (~9KB) W archiwum jest prosty przykład, DLL i kod źródłowy. Jeśli chcesz używać tej biblioteki - umieść mnie w credits ;D Podziękowania dla Maxpayna, za testowanie nowej wersji na swoim procku (Quad) Jeśli masz konto na GMC, możesz napisać w tym temacie swoją ocenę: ;D http://gmc.yoyogames.com/index.php?showtopic=390517 Testujcie i zgłaszajcie bugi ;d DLL działa tylko z GM6.1, GM7.0 i GM8.0 -------------------- |
|
|
|
31.07.2008 - 22:43
Post
#
|
|
![]() Wiek: |
|
|
|
|
31.07.2008 - 22:47
Post
#2
|
|
![]() prostokonciki ! =D ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Wiek: 18 lat Grupa: Redaktorzy Postów: 3,100 Dołączył: 28.11.2006 Skąd: Gdańsk Team: ni mam. Ostrzeżenia: (0%)
|
Zapowiada się zaje.iście!
"DLL działa tylko w wersją 7.0 Game Makera" - ;/ nie możan by tak pod 6.1?? ;( -------------------- Dla kumatego nic trudnego..
Moje prace: |
|
|
|
31.07.2008 - 22:50
Post
#3
|
|
![]() Elite ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Wiek: 20 lat Grupa: Użytkownicy Postów: 1,417 Dołączył: 16.12.2005 Ostrzeżenia: (0%)
|
Później się zajmę wersją 6.1 ;p
-------------------- |
|
|
|
31.07.2008 - 23:01
Post
#4
|
|
![]() prostokonciki ! =D ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Wiek: 18 lat Grupa: Redaktorzy Postów: 3,100 Dołączył: 28.11.2006 Skąd: Gdańsk Team: ni mam. Ostrzeżenia: (0%)
|
Nasz Snejkuś znów nam usprawnia gm'a :*
rozumiem, że taki wątek wykonuje sprawniej(szybciej) kod niż gm =P btw co to ma być. 2 min, 213 sek ? -------------------- Dla kumatego nic trudnego..
Moje prace: |
|
|
|
31.07.2008 - 23:05
Post
#5
|
|
![]() Elite ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Wiek: 20 lat Grupa: Użytkownicy Postów: 1,417 Dołączył: 16.12.2005 Ostrzeżenia: (0%)
|
QUOTE btw co to ma być. 2 min, 213 sek ? lul xd zapomniałem modulo pewnie ;D QUOTE rozumiem, że taki wątek wykonuje sprawniej(szybciej) kod niż gm =P Nie szybciej tylko asynchronicznie z grą ;p nie może być szybciej bo okno GM-a rysuje obraz w trakcie wykonywania kodu w wątkach ;p No chyba że ustawisz priorytet na time critical ;D -------------------- |
|
|
|
1.08.2008 - 10:53
Post
#6
|
|
![]() Elite ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Wiek: 20 lat Grupa: Użytkownicy Postów: 1,417 Dołączył: 16.12.2005 Ostrzeżenia: (0%)
|
K, nowa wersja:
- Teraz GMThreads będzie działał na GM6.1 ;p http://www.gmclan.org/up541_4_GMThreads11.html -------------------- |
|
|
|
1.08.2008 - 11:34
Post
#7
|
|
![]() prostokonciki ! =D ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Wiek: 18 lat Grupa: Redaktorzy Postów: 3,100 Dołączył: 28.11.2006 Skąd: Gdańsk Team: ni mam. Ostrzeżenia: (0%)
|
super!
czyli teoretycznie jak np. zmrożę grę i dodam wątek w którym zapiszę sprita do pliku bmp(ręcznie) to rezultat z takiego wątku będzie taki sam jak by to robił gm?? -------------------- Dla kumatego nic trudnego..
Moje prace: |
|
|
|
1.08.2008 - 13:03
Post
#8
|
|
![]() Elite ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Wiek: 20 lat Grupa: Użytkownicy Postów: 1,417 Dołączył: 16.12.2005 Ostrzeżenia: (0%)
|
Jak zamrozisz/wyłączysz rysowanie obrazu w GM to tak. Ale chodzi tu o to hmm... np. używasz supersound.dll (taki DLL dla GM który odtwarza dźwięk) i chcesz załadować jakiś plik z muzyką, to okno gry się zamrozi dopóki muzyka się nie załaduje. A jeśli załadujesz muzykę przez wątek to zamrozi się tylko wątek dopóki się nie załaduje, a gra będzie normalnie chodzić ;p
Szybciej niż normalnie w GM może działać jak zmienisz priorytet wątku na "Czasu rzeczywistego", bo użyje wtedy całego procesora. -------------------- |
|
|
|
1.08.2008 - 13:21
Post
#9
|
|
![]() Forum Infiltrator ![]() ![]() ![]() ![]() ![]() ![]() ![]() Wiek: 25 lat Grupa: Użytkownicy Postów: 943 Dołączył: 15.10.2006 Skąd: Warszawa Ostrzeżenia: (0%)
|
Wow! Jeśli to faktycznie będzie działać bez problemu, to niemal na pewno zastosuje Twój .dll w ArcMagi
Mógłbym zaoszczędzić sporo pamięci wgrywając zasoby tylko kiedy są faktycznie potrzebne, jednocześnie nie powodując drobnych "przeskoków" w czasie gry. Świetna robota, Snake! -------------------- |
|
|
|
1.08.2008 - 13:29
Post
#10
|
|
![]() Elite ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Wiek: 20 lat Grupa: Użytkownicy Postów: 1,417 Dołączył: 16.12.2005 Ostrzeżenia: (0%)
|
Trzeba sprawdzić dokładniej z tym ładowaniem, bo np. jak użyłem sprite_add() z zaznaczoną opcją "Preload", to samo załadowanie do pamięci pliku nie zawiesiło gry, ale ten "preload" jest wykonywany poza wątkami i dlatego przetwarzanie załadowanego sprite'a już przywiesiło ;[ (a samo ładowanie w sprite_add bez opcji preload nie zawiesza okna)
-------------------- |
|
|
|
1.08.2008 - 13:33
Post
#11
|
|
![]() Forum Infiltrator ![]() ![]() ![]() ![]() ![]() ![]() ![]() Wiek: 25 lat Grupa: Użytkownicy Postów: 943 Dołączył: 15.10.2006 Skąd: Warszawa Ostrzeżenia: (0%)
|
Auć
Ech... nie ma lekko. -------------------- |
|
|
|
1.08.2008 - 13:40
Post
#12
|
|
![]() Master of nothing ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Wiek: 15 lat Grupa: Redaktorzy Postów: 1,840 Dołączył: 21.09.2007 Skąd: stamtąd Ostrzeżenia: (0%)
|
Ale wypas
Jak nie będzie będów no to... Snake, powinieneś pracować w YYG Dobra, idę testować =D |
|
|
|
1.08.2008 - 13:41
Post
#13
|
|
![]() Elite ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Wiek: 20 lat Grupa: Użytkownicy Postów: 1,417 Dołączył: 16.12.2005 Ostrzeżenia: (0%)
|
Może spróbuję zrobić hacka z tym ładowaniem sprite'ów/backgroundów, dodałbym oddzielną funkcję która tworzyłaby wątek i w nim ładowałaby obrazy razem z preload. ;p
-------------------- |
|
|
|
1.08.2008 - 13:53
Post
#14
|
|
![]() Master of nothing ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Wiek: 15 lat Grupa: Redaktorzy Postów: 1,840 Dołączył: 21.09.2007 Skąd: stamtąd Ostrzeżenia: (0%)
|
Snake ty serio pomyśl o pracy w YYG
Mam wrażenie, że jakby nad GM'em pracowali jego użytkownicy to byłby lepszy niż jak YYG nad nim pracuje.... Teraz tylko czekać, aż Snake naprawi ten preload =D |
|
|
|
1.08.2008 - 14:13
Post
#15
|
|
![]() Elite ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Wiek: 20 lat Grupa: Użytkownicy Postów: 1,417 Dołączył: 16.12.2005 Ostrzeżenia: (0%)
|
Tia, mogli by mnie pozwać za praktykowanie reverse engineeringu na ich aplikacjach ;D
Tworząc Game Protectora, Instant Player Offline i GMThreads złamałem ich "End User License Agreement" ;p -------------------- |
|
|
|
1.08.2008 - 14:25
Post
#16
|
|
|
Executioner from Hell ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Wiek: 18 lat Grupa: Użytkownicy Postów: 1,950 Dołączył: 15.01.2007 Skąd: z Piekła Ostrzeżenia: (0%)
|
A co robić, gdy ich zabezpieczenie jest nieudolne?
-------------------- |
|
|
|
1.08.2008 - 14:28
Post
#17
|
|
![]() Elite ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Wiek: 20 lat Grupa: Użytkownicy Postów: 1,417 Dołączył: 16.12.2005 Ostrzeżenia: (0%)
|
To nie uprawnia mnie do łamania umowy licencyjnej ;p
-------------------- |
|
|
|
1.08.2008 - 14:32
Post
#18
|
|
![]() prostokonciki ! =D ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Wiek: 18 lat Grupa: Redaktorzy Postów: 3,100 Dołączył: 28.11.2006 Skąd: Gdańsk Team: ni mam. Ostrzeżenia: (0%)
|
Snake zrób proszę to ładowanie spritów zanim Cię zamknął
-------------------- Dla kumatego nic trudnego..
Moje prace: |
|
|
|
1.08.2008 - 15:02
Post
#19
|
|
![]() Forum Infiltrator ![]() ![]() ![]() ![]() ![]() ![]() ![]() Wiek: 25 lat Grupa: Użytkownicy Postów: 943 Dołączył: 15.10.2006 Skąd: Warszawa Ostrzeżenia: (0%)
|
Snake, jakbyś zrobił odzielną funkcję, która by ładowała sprite do zasobów i od razu do pamięci graficznej, to to by było cholernie dobre. Kurde, nowa jakość resource managmentu w GM
-------------------- |
|
|
|
2.08.2008 - 10:12
Post
#20
|
|
![]() Elite ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Wiek: 20 lat Grupa: Użytkownicy Postów: 1,417 Dołączył: 16.12.2005 Ostrzeżenia: (0%)
|
Haha, mam dobrą wiadomość
Nie wiem czemu mi wcześniej zamrażało okno, ale... właśnie chciałem spróbować zrobić tego hacka na grafikę, dla testu dopisałem sprite/background add/replace w wątku i... załadowało się bez żadnej przycinki xD Ale przetestujcie ten przykład (gm6 i gmk) dla pewności: http://www.gmclan.org/up541_4_ThreadLoadTest.html (ładuje 2MB plik JPG w wątku) -------------------- |
|
|
|
2.08.2008 - 10:19
Post
#21
|
|
![]() ╭∩╮╭∩╮ ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Wiek: 20 lat Grupa: Użytkownicy Postów: 1,943 Dołączył: 17.06.2004 Skąd: Czę-owa --> My-ów. Team: http://twitter.com/ihooypl Ostrzeżenia: (100%)
|
jak dla mnie? działa perfect
-------------------- |
|
|
|
2.08.2008 - 10:28
Post
#22
|
|
![]() Szpan Bot ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Wiek: 20 lat Grupa: Administratorzy Postów: 4,359 Dołączył: 25.06.2006 Skąd: Z fabryki części używanych :) Team: Native Studio |
u mnie przycina, gdzies na 0.5 sekundy, dziwne o.o
-------------------- |
|
|
|
2.08.2008 - 10:33
Post
#23
|
|
![]() ╭∩╮╭∩╮ ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Wiek: 20 lat Grupa: Użytkownicy Postów: 1,943 Dołączył: 17.06.2004 Skąd: Czę-owa --> My-ów. Team: http://twitter.com/ihooypl Ostrzeżenia: (100%)
|
normalne, że jak się sprite zmieni na tak duży to spadnie o 1 fps.
-------------------- |
|
|
|
2.08.2008 - 10:34
Post
#24
|
|
![]() Elite ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Wiek: 20 lat Grupa: Użytkownicy Postów: 1,417 Dołączył: 16.12.2005 Ostrzeżenia: (0%)
|
PsichiX, a spróbuj się przyjrzeć, czy nie rysuje przez to pół sekundy obrazu, czy może blokuje całego GM-a (kod gml też się nie wykonuje)
Kurde, u mnie i u Pietera działa ;/ Aha, i jak możesz to porównaj ładowanie bez wątku tego pliku z ładowaniem w wątku ;p -------------------- |
|
|
|
2.08.2008 - 10:41
Post
#25
|
|
![]() Minimal ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Wiek: ? Grupa: Moderatorzy Postów: 2,169 Dołączył: 10.09.2005 Skąd: Lublin Ostrzeżenia: (0%)
|
Snake, kocham Cię.
Oczyma wyobraźni widzę już grono zastosowań dla systemu wątków. Cholera, przecież to szalenie usprawni pracę GMa. Edit: Przykład sprawdzałem, ładuje się bez zająknięcia. -------------------- |
|
|
|
2.08.2008 - 10:43
Post
#26
|
|
![]() Szpan Bot ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Wiek: 20 lat Grupa: Administratorzy Postów: 4,359 Dołączył: 25.06.2006 Skąd: Z fabryki części używanych :) Team: Native Studio |
w sumie to chyba tylko wina rysowania, no ale fpsy ciagle na maxa po zmianie mialem. mnie to tylko interesuje czy Ty ten kod gmla assemblerem wstrzykujesz do watku czy jak, bo nie moge zrozumiec jakim cudem to dziala - sam sie swojego czasu z tym bawilem. PS. fakt, do YYG nie startuj bo pociagna Cie po sadach - idioci zamiast doceniac wklad innych i pomoc w ulepszanie oraz poszerzanie mozliwosci gma, sami sobie utrudniaja zycie - chociaz w koncu kto by chcial by ingerowano w ich dzielo.
-------------------- |
|
|
|
2.08.2008 - 10:54
Post
#27
|
|
|
Typical noob ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Wiek: 13 lat Grupa: Użytkownicy Postów: 1,051 Dołączył: 6.02.2007 Ostrzeżenia: (70%)
|
PsihiX, to nie jest jedyny przypadek gdy firma ciągla ludzi po sądach za to że usprawniają prace ich dzieła, np. był przypadek z Creative jak ktoś napisał sterownik, to na oficjalnym forum odrazu usuneli temat, a autor miał problemy z prawem. Szara rzeczywistość.
Co do pomysłu, zajebiście ogólnie, nigdy nie wiedziałem o co chodzi tak dokładnie w wątkach, ale już kapuje. ;p BTW Snake wejdź na gadu? -------------------- CYTAT(Bagno) Kofel to pedał |
|
|
|
2.08.2008 - 11:12
Post
#28
|
|
![]() Elite ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Wiek: 20 lat Grupa: Użytkownicy Postów: 1,417 Dołączył: 16.12.2005 Ostrzeżenia: (0%)
|
QUOTE mnie to tylko interesuje czy Ty ten kod gmla assemblerem wstrzykujesz do watku czy jak, bo nie moge zrozumiec jakim cudem to dziala Nieważne jak to zrobiłem - ważne że działa ;D QUOTE Edit: Przykład sprawdzałem, ładuje się bez zająknięcia. QUOTE w sumie to chyba tylko wina rysowania, no ale fpsy ciagle na maxa po zmianie mialem. To świetnie -------------------- |
|
|
|
2.08.2008 - 11:49
Post
#29
|
|
![]() prostokonciki ! =D ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Wiek: 18 lat Grupa: Redaktorzy Postów: 3,100 Dołączył: 28.11.2006 Skąd: Gdańsk Team: ni mam. Ostrzeżenia: (0%)
|
fajniście to wyszło
ni drgnięcia przy przeładowaniu -------------------- Dla kumatego nic trudnego..
Moje prace: |
|
|
|
2.08.2008 - 12:19
Post
#30
|
|
![]() Master of nothing ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Wiek: 15 lat Grupa: Redaktorzy Postów: 1,840 Dołączył: 21.09.2007 Skąd: stamtąd Ostrzeżenia: (0%)
|
Nie no pięknie
Ty.... zapomniałem dać 5 gwiazdek Edit: To można wykorzystać nie tylko do zasobów =D |
|
|
|
![]() ![]() |
|
Wersja Lo-Fi | Aktualny czas: 3.09.2010 - 18:50 |