Skocz do zawartości

[DLL] GMThreads


Rekomendowane odpowiedzi

  • Odpowiedzi 172
  • Dodano
  • Ostatniej odpowiedzi

Top użytkownicy w tym temacie

Top użytkownicy w tym temacie

Heh, no to dopoki sam nie wykombinuje tego by dzialalo poprawnie jak kiedys zaczalem, to pewnie bede uzywal Twojego dllka Snake ;P

Odnośnik do komentarza
Udostępnij na innych stronach

Heh, no to dopoki sam nie wykombinuje tego by dzialalo poprawnie jak kiedys zaczalem, to pewnie bede uzywal Twojego dllka Snake ;P

Heh, masz tu gotowego, dobrego DLL-a, a Ty chcesz kombinować żeby stworzyć to samo ? ;D Rozumiem, że chodzi pewnie o to, by nie umieszczać mnie w credits ;D

 

masz tam małe niedopatrzenie w przykładzie - loading podczas ładowania się nie pojawia, bo nie użyłeś zmiennej globalnej jak sam wspomniałeś w pierwszym poście ;p

Rzeczywiście, to z przyzwyczajenia :)

 

BTW: Dzięki za oceny :D

Odnośnik do komentarza
Udostępnij na innych stronach

Snake: heh, nie tyle ze nie chcem dodawac Cie do credits, ale wiesz jaki jestem - jak juz cos robie wiekszego to wole calosc miec zrobiona przez siebie. taka choroba zwana zbyt wielka duma ;p

Odnośnik do komentarza
Udostępnij na innych stronach

Ja mam takie pytanie, czy YYG moze sie przypadkiem nie wkur** na tworcow uzywajacych takiego dlla? :P

Jak będą mieli pretensje, to Snake zhackuje mi kompy i będzie ich szantażował.

 

Co do programu: Nice. Widziałem tutek do Delphi jak zrobić wątki. BTW. Thx za przypomnienie nazwy. Zastanawiałem się jak to się nazywało i nie mogłem sobie przypomnieć.

Odnośnik do komentarza
Udostępnij na innych stronach

Snake: heh, nie tyle ze nie chcem dodawac Cie do credits, ale wiesz jaki jestem - jak juz cos robie wiekszego to wole calosc miec zrobiona przez siebie. taka choroba zwana zbyt wielka duma ;p

Hmm... ja w ChronoSwordzie używam biblioteki supersound i nie zamierzam robić jej substytutu, bo po pierwsze nie potrafię tak programować, żeby odtworzyć jakiś dźwięk odczytując dane - nie interesują mnie takie rzeczy, a po drugie... nie czuję żebym sam w całości tej gry nie robił bo używam czyjejś biblioteki do odtwarzania dźwięku ;D

 

Ja mam takie pytanie, czy YYG moze sie przypadkiem nie wkur** na tworcow uzywajacych takiego dlla? :P
Hmm... nie sądzę ;p Sam DLL raczej nie łamie EULA, tylko ja złamałem - dezasemblując aplikacje Game Makera, żeby stworzyć tą bibliotekę ;p
Odnośnik do komentarza
Udostępnij na innych stronach

To naprawdę jedna z najbardziej użytecznych bibliotek, jaką kiedykolwiek widziałem pod GM.

Jak miło to słyszeć od Ciebie ^^

Heh, ale widzę, że tu trzeba podmieniać sprita, a jak zrobię global.xxx = sprite_add(); to tak samo zadziała?

Lul, pewnie że tak :) To nie podmienia sprite'a tylko dodaje nowego i zwraca jego index od razu do sprite_index tamtego obiektu ;p

Wiem że jest sprite_replace ale częściej korzystam z sprite_add ;p

Odnośnik do komentarza
Udostępnij na innych stronach

Nowa wersja, dopisałem dwie nowe funkcje:

thread_get_priority( uchwyt ) - sprawdza jaki priorytet ma podany wątek, gdy wystąpi błąd przy sprawdzaniu zwraca -1.

thread_last_error() - zwraca ostatni kod błędu, ustawiony podczas zakończenia wątku ( 0 - brak błędu, 1 - błąd składni, 2 - Inny błąd w GML [nieznana zmienna itd.], 3 - wystąpił wyjątek w wątku ).

I poprawiłem trochę kod - nie powinien już występować wyjątek Access Violation przy zamykaniu gry przez "abort", ani ogólnie przy zamykaniu ;d

Download V1.2:

http://www.gmclan.org/up541_4_GMThreads12.html

Odnośnik do komentarza
Udostępnij na innych stronach

ten ostatni blad mozna bylo tez rozwiazac w inny sposob ;p a co do dllka to mysle ze przyda sie mozliwosc.. hmm, no po namysle to raczej jest juz tam wszystko co potrzebuje ;)

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności

Snake, a co z tymi wskaźnikiami na zasoby, żeby je capnąć z poziomu dlla? A Ty się za wątki musiałeś zabrać... ^_^ Testowałeś memory leaki oraz czy gra po dłuższym czasie się nie "rozejdzie"?

 

btw. Ja bym na twoim miejscu czym prędzej opublikował to na YYG jak i resztę programów w wersji angielskiej. Co z tego, że łamiesz licencję? Nic Ci nie zrobią, nie przyjadą do Polski i nie założą Ci sprawy. Przecież robisz to non-profit. Machną na to ręką, zobaczysz. A korzyści ujawnienia się będą niemałe:

1) Raz, że Polska scena GMa znów zatriumfuje. :)

2) Ci z YYG zobaczą, że ktoś na poważnie zaczyna hakować ich program, to może ruszą te swoje dupska i zaczną działać aktywniej. Naprawdę, trzeba im zacząć dawać do zrozumienia przez takie haki, że wytrwałość najbardziej wiernych użytkowników jest już na wyczerpaniu.

3) Zyskasz sławę. :)

Odnośnik do komentarza
Udostępnij na innych stronach

Ranmus, ale polak to w ogóle nie myśli żeby się rozpromować. Raz napisałem moda do Painkillera dodającego grę na punkty, ale w końcu nie dałem nigdzie i gdzieś przepadło po n-tym formacie dysku. :P

 

Anway, świetna robota Snake. Szkoda żeby się zmarnowało to na GMClanie, daj na YYG.

Odnośnik do komentarza
Udostępnij na innych stronach

Haha, mam dobrą wiadomość :D

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)

Dlaczego link nie działa? Też bym chciał przetestować.

Odnośnik do komentarza
Udostępnij na innych stronach

@Luksor: Zuploadowałem: http://www.gmclan.org/up541_4_ThreadLoadTest.html

 

Snake, a co z tymi wskaźnikiami na zasoby, żeby je capnąć z poziomu dlla?

Na razie się tym nie zajmuję ;p Przepisywałem ChronoSworda, trafiłem na część silnika odpowiadającą za ładowanie zasobów i zrodził się w mojej głowie pomysł z wątkami, bo freeze przy ładowaniu mnie dołował ;D więc wskaźniki do bitmap póki co poszły na bok ;p

Testowałeś memory leaki oraz czy gra po dłuższym czasie się nie "rozejdzie"?

Memory leaki tak, ale wiesz - większych testów nie robiłem (w grze czy coś), więc na razie nie wiem na ile to jest stabilne ;p

 

btw. Ja bym na twoim miejscu czym prędzej opublikował to na YYG jak i resztę programów w wersji angielskiej. Co z tego, że łamiesz licencję? Nic Ci nie zrobią, nie przyjadą do Polski i nie założą Ci sprawy. Przecież robisz to non-profit. Machną na to ręką, zobaczysz.

W sumie to masz rację ;p pewnie co najwyżej usuną temat jak coś im nie będzie pasować. Jak nabiorę ochoty na tłumaczenie pierwszego posta to opublikuję :) Resztę programów też ? Hmm... a czy tam przypadkiem nie publikuje się jedynie gier i programów zrobionych w GM ?

 

3) Zyskasz sławę. :)

:w00t:

Odnośnik do komentarza
Udostępnij na innych stronach

Nazwiesz to jako dodatek :P Albo coś :P

 

Ale Game Protectora nie publikuj, bo i do niego wyjdzie dekompilator :D

 

Co do bugów: napisałem z pamięci zegarek i ładowanie zasobów do gry. I nic się (przynajmniej na razie) nie "rozchodzi". Ale i tak jest pewien problem.

 

W Create inicjuje wątki, tworzę jeden o priorytecie 2. A w wątku, w pętli nieskończonej dodaje co milisekundę 1 do zmiennej global.time

 

Obiekt obj_hud zajmuje się wyświetlaniem czasu (no i funkcja przetwarzająca ilość milisekund na minuty sekundy i setki).

 

I czasami, tzn. raz na ok. 5-10 uruchomień gry pojawia się błąd: nieznana zmienna global.time. Klikam ignoruj, i już działa :P Ale to nie bug, po prostu stworzenie tego wątku trwa czasami tą jedną klatkę. Ale teraz przestawiłem na 3 i już (chyba) nie ma tego błędu :P

 

Będzie trzeba przy ładowaniu gry sprawdzać, czy wątek się już załadował. A z ładowaniem zasobów nie było żadnych problemów :)

 

PS: Mogłem tego nawet nie robić na wątkach, no ale... nie no podobają mi się te wątki :P Startuje wątek z odpowiednim kodem i już się niczym nie przejmuje :D

Odnośnik do komentarza
Udostępnij na innych stronach

Zdefiniuj globalną przed utworzeniem wątku ;p albo sprawdzaj czy zmienna istnieje za pomocą variable_global_exists( "zmienna" ) :P

 

Ale to nie bug, po prostu stworzenie tego wątku trwa czasami tą jedną klatkę.

Po prostu wątki nie są synchronizowane z grą ;p

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

Testy na Memory leak to pewnie najlepiej będzie zrobić dając w pętli ciągle sprite_add i sprite_delete wywoływane do tego alarmem co ileś sekund.

Zostawić to na 2-3 godziy niech w tle działa i zobaczyć jak mocno wzrosło zużycie pamięci.

 

Swoją drogą, wydaje mi się, że ten DLL mógłby porządnie przyspieszyć ładowanie Almory :P

 

Zdefiniuj globalną przed utworzeniem wątku ;p

 

Ja np. wszystkie globalne zawsze definiuję na starcie gry, a potem daję room_goto_next() i tam dopiero zaczynam dodawać jakiekolwiek akcje, obiekty itd. Dla pewności, że sie nie wykrzaczy coś.

Odnośnik do komentarza
Udostępnij na innych stronach

Jak nabiorę ochoty na tłumaczenie pierwszego posta to opublikuję smile.gif Resztę programów też ? Hmm... a czy tam przypadkiem nie publikuje się jedynie gier i programów zrobionych w GM ?

Właśnie Ci z nudów tłumaczę i jest tam dział extending game maker. Tam można umieszczać DLL, skrypty itd.

Odnośnik do komentarza
Udostępnij na innych stronach

Właśnie Ci z nudów tłumaczę i jest tam dział extending game maker. Tam można umieszczać DLL, skrypty itd.

Taa ;D Właśnie przeglądałem czy ktoś nie zrobił już czegoś podobnego ;p

Poza tym, z jakiegoś tematu na GMC wyczytałem że "Mark Overmars nie zrobi multithreadingu bo to jest trudne do zaimplementowania" - czyli jak opublikuję tego DLL-a to wyjdzie na to, że jestem jakiś pr0 programmer and reverse engineer xD

Swoją drogą, wydaje mi się, że ten DLL mógłby porządnie przyspieszyć ładowanie Almory

No i jak dobrze by się zakodziło cały system ładowania zasobów w Almorze to pewnie wymagania już by nie były takie wielkie ;p

Odnośnik do komentarza
Udostępnij na innych stronach

Snake, wlasnie koncze powoli PlayGate'a i chcem umiescic informacje o Twoim dllu - jaka strone podac? i czy dll ma jakies logo czy cos?

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...