Skocz do zawartości

hgter

Użytkownicy
  • Postów

    122
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    3

Treść opublikowana przez hgter

  1. Nie wiem co masz na myśli. Próbowałem oba te narzędzia (PNGGauntlet wykorzystuje optipng). Brałem pliki png z folderu sprites i je kompresowałem. Po kompilacji ich wielkość rosła (choć nie tak bardzo jakby były tylko w GM obrabiane). Patrzyłem też jak wygląda wnętrze apk w przypadku gm. Pliki z Include Files leżą sobie luzem w katalogu assets. Natomiast cała gra jest zawarta w jednym oddzielnym pliku "game.droid". Myślałem, że nie za bardzo da się do tego dobrać. I tu czekała mnie 3 godzinna przygoda. Opisałem ją oddzielnie tutaj: https://forum.gmclan.org/index.php?showtopic=33346 Ale tak czy siak nie udało mi się na chwilę obecną znaleźć prostego sposobu na podmianę grafik w apk i exe już po kompilacji - to raczej jest możliwe, ale przekracza moje umiejętności.
  2. Walczyłem sobie z kompresją grafik użytych w grze (szczegóły tutaj: https://forum.gmclan.org/index.php?showtopic=33325). Jednym z pomysłów, które się przewinęły była podmiana grafik po kompilacji projektu na lepiej zoptymalizowane. Ze słów Ferviego wynikało, że da się to zrobić w projektach html5. Otwartą kwestią było czy da się też w apk. Najpierw podejrzałem co jest w samych plikach apk: tu jest prosto: trochę bibliotek i oddzielny katalog assets. W nim luzem leżą pliki Include Files oraz jest jeden duży plik game.droid. Nie dawało się go niczym otworzyć. Poszperałem trochę i znalazłem info, że z którego wynikało, że po kompilacji wersja windowsowa gry z Gm zawiera plik "data.win" a androidowa "game.droid". https://www.reddit.com/r/Undertale/comments...memaker_studio/ Według tego dawało się podmienić wzajemnie pliki i np. uzyskać wersję gry stworzonej pod windowsa, która uruchomi się pod androidem. Z tego co pisało w tym wątku to działało (mam wrażenie, że obecnie już nie działa - przynajmniej mi nie udało się tego zreplikować na swoich projektach). Uznałem to za zabawne, ale nie przybliżało mnie do celu odczytania plików game.droid. Udało mi się znaleźć (link) narzędzie, które w teorii pozwalało na rozpakowanie i ponowne zapakowanie plików data.win. Nazywa się gmktool link i jest napisane w języku Rust. Po tym jak już nauczyłem się kompilować programy w tym języku (nie jest to najbardziej intuicyjna rzecz na świecie) i odkryłem, że aby się ono kompilowało trzeba używać wersji testowej Rusta, okazało się, że narządzie nie działa:) Uruchamiać się uruchamia, ale wywala błędy przy odczycie. Wyszperałem (link2) drugie narzędzie czyli Altar: https://gitlab.com/PoroCYon/Altar.NET/tree/master Jest napisane w C# i ładnie się kompiluje pod Visual Studio. Da się nim rozpakować pliki data.win wyciągając w sumie wszystko co się chce. Wszystkie możliwe dane zapisane są w jsonach (nie wiem czy to specyfika programu czy zapisu przez GM). I tam rzeczywiście jest plik z texturami w png. Czyli można by próbować coś działać. Natomiast na chwilę obecną nic z tego bo program pozwala tylko na dekompilację stworzonej gry, ale nie pozwala spakować tego ponownie. Zresztą nawet, gdyby pozwalał, to myślę, że byłby kłopot bo bawiłem się prostymi zmianami grafik Include Files w plikach apk i takie pliki po zmianie się nie instalują. W wersja windowsowych nie da się podmienić grafiki (a przynajmniej 7-zip nie pozwala podmienić zawartości instalatora tworzonego przez gm). Czyli jeżeli chodzi o kompresję grafik w apk i exe to nie udało mi się tego osiągnąć. Natomiast ten program Altar pozwala podejrzeć naprawdę wszystko, w tym pełny kod już utworzonych gier. Patrzyłem też na to czy radzi sobie z plikami po yyc (tylko apk - nie chciało mi się konfigurować yyc dla windowsa). I tu nadal da się odczytać bardzo wiele. Kodu nie, ale całe ustawienia roomów, obiekty itp. tak. Czyli w skrócie - nic nie uzyskałem, ale że było to całkiem zabawne to się dzielę. Może komuś się przyda.
  3. Rzeczywiście png powinno być bezstratne. Natomiast na próbę korzystałem z https://tinypng.com/ i z tego co tam piszą to jednak robią to stratnie (przynajmniej oni). I efekt był różny - czasem okropny. Gdy korzystałem z narzędzi lokalnych (PNGGauntlet i pngcrush) jakość była ok, ale pliki duże (w porównaniu do jpeg). Zresztą tak czy siak po kompilacji GM przekształcał je po swojemu i były jeszcze większe.
  4. Ogólnie bardzo się lubię z png, ale akurat tutaj niestety mam zdjęcia. I różnica zarówno w jakości jak i wielkości jest na korzyść jpg wyraźnie. Co do problemu: Na chwilę obecną rozwiązanie z użyciem texture page z wepchniętymi 6 pomniejszonymi zdjęciami na każdą, działa całkiem zadowalająco. Apk jest małe dzięki jpg w Include Files, działa znośnie pod względem szybkości a zużycie ramu jest akceptowalne póki co. W dalszej perspektywie będę jeszcze pewnie bawił się tym rozszerzeniem, ale do tego projektu raczej odpuszczę. Dzięki za wszystkie rady.
  5. Na początku pomyślałem, że to ciekawe info, ale u mnie nic nie zmienia bo mi zależy na androidzie. Ale tak się teraz zastanawiam jaka jest struktura apk od GM. Muszę sprawdzić wieczorem. Ciekawe czy podmieniając assety w apk całość się uruchomi.
  6. Tak podejrzewałem. Teoretycznie nauka tego do prościutkiej gierki nie wygląda opłacalnie, ale jeżeli nie obejdę problemu inaczej może spróbuję - warto chyba znać na przyszłość. W związku z tym muszę jeszcze sprawdzić jak GM radzi sobie z wczytaniem przez add_sprite plików png, które utworzył sam. Bo jeżeli jest to szybsze niż jpg to może warto rozważyć rozwiązanie, w którym przy pierwszym uruchomieniu wczytuję wszystkie jpg jeden po drugim i zapisuję je na dysku przez save sprite. I potem korzystam z nich przez add_sprite. W ten sposób, co prawda gra będzie zajmowała sporo miejsca na dysku po instalacji, ale apk będzie mały. Czy jest jakiś sposób żeby sprawdzić ile wolnego miejsca ma użytkownik pod androidem? W razie problemu to też obejdę próbując najpierw zapisać coś większego niż sprity po "rozpakowaniu" i jeżeli się uda to dopiero puszę save_sprite. Raczej tylko przy próbie bo w debugerze po pamięci było widać, że nie wczytał wszystkich spritów naraz. Nie opłaca się dawać jako sprity bo je przekonwertuje do png i tak. Ale jako include files już się opłaca o ile rozwiążę kwestię szybkości działania. Bo apk będzie 5 razy mniejszy nawet. Ok. Mam trzy możliwe rozwiązania poza dodaniem zdjęć jako zwykłych sprites w edytorze: 1) Wczytać wszystko do pamięci (ponieważ w miejscu, gdzie potrzebuję szybkiego wczytywania mogę być niższej jakości to uda mi się przez surface wepchnąć 6 na jedną texture page) 2) Rozpakować jpg do png przy pierwszym uruchomieniu o ile ich wczytywanie jest szybsze. 3) Spróbować z rozszerzeniem. Dzięki za wszelkie info.
  7. Witajcie <AKTUALIZACJA>Działa wariant, w którym stworzyłem oddzielny sprite dla każdego zdjęcia i dałem do oddzielnego texture group. I ram pozostaje mały a zdjęcia przełączają się dużo szybciej. Jedyną wadą jest olbrzymi plik wynikowy. W związku z tym problem kompresji staje się kluczowy. Jak zmniejszyć sprity na dysku? Czy one musza być zapisywane w png? Czy to nie może być jpg? A jeżeli nie to w jaki sposób sprawić aby były tak małe jak jpg?</AKTUALIZACJA> <AKTUALIZACJA2>Jeszcze na to muszę spojrzeć: http://gmc.yoyogames.com/index.php?showtopic=669935. Ktoś może korzystał?</AKTUALIZACJA2> <AKTUALIZACJA3>To jest po prostu śmieszne. Ok zmniejszyłem rozmiar przez jakąś stronę. Plik png ma 947kb. Podmieniam w GM (przez nadpisanie w katalogu). Po kompilacji plik zwiększa swój rozmiar do 1348kb. Ten sam plik w lepszej jakości w jpg ma 265kb czyli jest 5 razy mniejszy tyle, że przeklęte add_sprite jest za wolne (i zużywa masę ramu). Serio poradźcie coś.<AKTUALIZACJA3> Z góry uprzedzam, że moja wiedza odnośnie kwestii związanych z pytaniem jest mała, więc z wdzięcznością przyjmę krytykę. W projekcie na androida, którym się teraz bawię mam mieć dużo grafik (zdjęć) w stosunkowo dużej rozdzielczości: 1720x1080. Miałem je w png i początkowo dodawałem je po prostu jako sprity. Tylko jak łatwo się domyślić wielkość apk nie była fajna. Przekonwertowałem je do jpg (jakość wyszła super a wielkość parę razy spadła), ale po dodaniu jako sprite GM i tak konwertował je do wielgaśnych png. W kolejnym podejściu dodałem je w Included Files jako jpg i ładuję sobie przez sprite_add. I było fajnie. Apk jest mały, zdjęcia się wczytują. Tyle, że teraz pracując dalej wyszło, że chciałbym w miarę szybko zmieniać zmieniać zdjęcia wyświetlone na ekranie. I tu pojawił się kłopot. Bo sprite_add okazało się bardzo wolne. Da się je jakoś przyspieszyć? Mogę sobie oczywiście na początku wczytać w pętli wszystkie grafiki do pamięci, ale wtedy wychodzi mi na oko 16mb na zdjęcie po wczytaniu (jak rozumiem GM wpycha moje zdjęcia wtedy każde do oddzielnego texture pages?). Gdzieś wyczytałem, że można kompresować png trzymane przez GM w katalogu sprites. Czy to może mi pomóc? Jak będzie wyglądały kwestie prędkości, wielkości w apk i wielkości w ramie? Początkowo uznałem, że mi nic nie da bo GM przechowuje spirty w formie rozpakowanej w pamięci czyli w moim przypadku na każdy sprite pójdzie oddzielne texture pages ile by nie zajmowały na dysku. Ale teraz zastanawiam się jak GM decyduje, które Texture Group wczytuje. Czy jedynym kryterium jest przypisanie do targetu i GM wczyta zawsze wszystkie Texture Group czy można jakoś je aktywować i deaktywować np. między roomami? Bo może jeżeli da się nie załadowywać tylko część Texture Group to może przełączania między nimi będzie szybsze niż sprite_add? Jeżeli da się coś tu ugrać to czy znacie jakieś sensowne narzędzia do kompresji tych png? Bo spróbowałem jakiegoś stratnego z netu (na stronie) i co prawda png jest mały, ale jakość jest śmieszna. I jeszcze jedno pytanie: sprite_add wydaje się nie przejmować ustawieniami wielkości texture pages. Bo zmieniłem sobie testowo na 1024x1024 i po wczytaniu przez sprite_add mojego zdjęcia w debugerze i tak mam je w texture page 2048x2048 (myślałem, że je przeskaluje). Czy da się jakoś prosto wczytać plik jpg w Include File, ale do przeskalowanej wielkości i żeby GM przechowywał je na jednej texture page? Bo obejście to mogę jakoś napisać: narysuję do surface o wymiarach texture page kilka przeskalowanych spritów jeden obok drugiego i zrzucę surface do sprita a potem będę rysował odpowiedni kawałek. Wychodzi mi, że jak użyję skali 0.55 to mi wejdzie 6 na jedną texture page 2048x2048. Już się nie mogę doczekać błędów przy pisaniu.
  8. Zerknij na początek - tam opisałem jak to wychwyciłem (3 post od góry). Każde wykonanie serii instrukcji w stylu: GML global.testowa='' global.testowa[1]=1 w skrypcie (u mnie były to pierwotnie zmienne lokalne - potem testowałem też globalne po sugestii Threefa) powodowało przyrost zużywanej przez program pamięci (obserwowałem w debugerze). Na początku zaobserwowałem spadek prędkości z czasem (całość była wykonywana w kontrolowanych warunkach - tylko ten jeden skrypt był wywoływany wiele razy) w przypadku jednego testowanego skryptu, w debugerze okazało się, że w miarę wykonania zużycie pamięć rośnie (przy innych skryptach tego nie było). Po poszukiwaniach okazało się, że przez wiele przeróbek przeoczyłem fakt, że inicjowałem go jako string a wykorzystywałem jako tablicę. Dopiero potem zacząłem sprawdzać inne sytuacje, kolejności itp.
  9. Jeżeli chodzi o GML global.testowa[1]=1 global.testowa='' to się w pełni zgadzam - po prostu błąd (choć tak czy siak powinien być obsłużony poprawnie - gml z założenia pozwala na zmianę typu zmiennej -ale nie mogę znaleźć w dokumentacji "oficjalnego" przyzwolenia). Rzecz w tym, że jest to zgodne z dokumentacją:
  10. To chyba nie o to chodzi. Sprawdziłem czy to się powtórzy jeżeli będę miał utworzoną wcześniej zmienna globalną i to na niej będzie zmiana typu. Wyszło mi, że jest tak samo i że nie ma znaczenia czy zmieniam string w tablicę czy tablicę w string. Wyciek: GML global.testowa[1]=1 global.testowa='' I tu też: GML global.testowa='' global.testowa[1]=1 Ale jest różnica, jeżeli chodzi o "naprawienie": Brak wycieku: GML global.testowa='' global.testowa=0 global.testowa[1]=1 Wyciek: GML global.testowa[1]=1 global.testowa=0 global.testowa='' Ale brak wycieku: GML global.testowa[1]=1 global.testowa='' global.testowa=0 Wyciek: GML global.testowa[1]=1 global.testowa='' global.testowa=0 global.testowa='' Serio nie wiem o co chodzi. Nic głupota, ale warto na to uważać.
  11. Testuję teraz wydajność kilku wersji różnych moich skryptów rozwiązujących ten sam problem. Przygotowałem "środowisko testowe" składające się z prostego obiektu, który w stepie wywołuje ten skrypt w pętli po kilkaset wywołań i patrzę ile "faktycznych klatek" wciąga dana wersja. Przy jednej z nich zaobserwowałem, że prędkość spada w czasie. Sprawdziłem w uruchomieniu z debbugerem ile pamięci zużywa mój program (wyświetla się to na dole debugera w czasie rzeczywistym) i w przypadku użycia tego konkretnego skryptu widać, że zużycie rośnie - a nie powinno - uruchamiam wiele razy ten sam skrypt i program nie robi nic innego poza tym. W innych wersjach skryptu użycie pamięci jest stałe. Metodą prób i błędów szukałem co w skrypcie daje taki efekt i znalazłem właśnie to co napisałem. Piszę bo może komuś się przyda - a ponadto ciekaw jestem czemu gm tutaj tak się zachowuje.
  12. Witajcie, w sumie to nie szukam żadnej odpowiedzi, ale może ktoś mi wyjaśni. Mam sobie skrypt. W nim inicjuję zmienną wynik, która potem będzie przechowywać tablicę. I tu okazało się, że może być wyciek pamięci w zależności od tego jak ją inicjuję. Jeżeli zrobię to poprawnie albo nie zrobię zupełnie (inicjacją będzie pierwsze przypisanie wartości do danej komórki w tablicy) np. Trzy "dobre" sposoby: GML var wynik var wynik=0 wynik[17]=23456 To jest ok. Ale jeżeli coś skopię i jako tablicy użyję zmiennej, która przechowywała string bez wcześniejszego wyzerowania GML var wynik='' wynik[17]=23456 To mam wyciek. Jeżeli daną zmienną wcześniej wyzeruję: GML var wynik='' wynik=0 wynik[17]=23456 To będzie dobrze. Kurde ja wiem, że to błąd sztuki z tym użyciem stringu jako tablicy, ale dlaczego tu jest wyciek. Czemu po prostu nie zmieni się typ zmiennej i koniec?
  13. Dzięki za info. Rzeczywiście, za stroną New Functions List: Ale nie mogę znaleźć tam informacji jak miałby wyglądać odczyt w takiej sytuacji. Jest może dostępna jakaś większa dokumentacja do gm2? I całkiem z ciekawości: czy to jest tak, że w gm2 doszły tablice w tablicach czy po prostu doszła nowa możliwość ich inicjowania? Bo nie mogę w dokumentacji gm1 nic znaleźć. Ponadto, skoro mówisz, że runner będzie ten sam, to czyli jeżeli udało się uzyskać dostęp do jakiejś nowych możliwości gm2 z poziomu gm1 (tak jak teoretycznie mi teraz z tymi tablicami w tablicach) to będą działać, ale nowe funkcje dostępne w gm2 nie będą możliwe do wywołania z poziomu gm1?
  14. Ech mam podobnie :D Nawyki z innych języków czasem dają śmieszne efekty. Najbardziej brakuje mi operacji na macierzach z matlaba. Coś nie mogę się do ds_ przekonać choć na chłodno wyglądają na bardzo przydatne. Ale walcząc z tym problemem teraz, przynajmniej nauczyłem się żeby bardzo uważać w gm z przypisywaniem tablic typu x=y. Można sobie zrobić cholerny problem masakrycznie trudny do znalezienia.
  15. Tu masz oczywiście rację - jeżeli po wykonaniu w=q[0] zmienimy zawartość "w" to nie zmieni się "q". EDYCJA Okazało się to bardziej skomplikowane. Na końcu sam siebie poprawiam. EDYCJA Choć całość dziwnie się zachowuje przy zapętleniu. Serio danie t[3]=q powinno wygenerować błąd albo po prostu przypisać aktualny stan "q" do t[3] a nie tworzyć samozapętloną tablicę. I ponadto "t[3]=q" tworzy zapętloną tablicę także w "q"! Czyli działa tak jakby jednak przechowywany był adres a nie same wartości. Bo zmieniam "t", ale zmiana pojawia się w "q" (w dodatku zapętlona). Co więcej jeżeli przed "t[3]=q" zrobię kopię tablicy "q" np. dając "tt=q" to po "t[3]=q" zapętlenie pojawi się także w kopii. A jeżeli po tym wszystkim dam t[0]=999999 to wartość 999999 pojawi się we wszystkich miejscach (czyli w t,q i tt). Jeżeli to nie jest przechowywanie adresu a nie wartości to nie wiem co jest. EDYCJA Na końcu postu udało mi się to w końcu zrozumieć. EDYCJA Już druga osoba mi to pisze więc może się rzeczywiście mylę. Ale powiedzcie mi gdzie. Wykonuję taki kod: GML t[0]=12 t[1]=13 t[2]=14 u[0]=45 u[1]=46 u[2]=47 q[0]=t q[1]=u q[2]=88 q[3]=99 Na końcu (patrzę w debugerze) mam zmienną q oznaczoną jako tablica, która po rozwinięciu w komórkach 0 i 1 ma tablice a w 2 i 3 wartości 88 i 99. Potem robię GML w=q[0] a=w[0] I pojawia mi się zmienna "w" która jest opisana jako tablica (array) i zawiera 3 komórki (o wartościach 12 13 i 14), oraz zmienna "a" o wartości 12. Dlaczego twierdzicie, że "w" nie jest tablicą? EDYCJA: Ale jak zmienię po wszystkim "t" to zmiana przeniesie się do "w". Natomiast wyzerowanie "t" już się nie przeniesie (podobnie jeżeli coś zmienie w "w"). Czyli rzeczywiście pierwotnie "w" nie jest tablicą tylko zawiera odniesienie do tablicy t (przechowywane w q[0]). Dopiero po zmianie jakiejś wartości w "w" albo usunięciu tablicy t tworzy się oddzielna kopia danych. Muszę przyznać, że dowiedziałem się czegoś nowego. Myślałem, że jeżeli mam tablicę "x' i zrobię "y=x" to w "y" pojawi się kopia tablicy "x" a nie tylko odniesienie do "x". A wychodzi na to, że dopiero jakaś zmiana wykonana na "y" tworzy oddzielną kopię. I to nie jest do końca tak, że po y=x po prostu x i y zawierają odniesienie do miejsca w pamięci. Bo zmiana x zmieni też y, ale zmiana y nie zmieni x. Teraz szukam o tym i znalazłem https://www.reddit.com/r/gamemaker/comments..._copying_works/ EDYCJA
  16. No wiesz skoro gm pozwala przechowywać tablice w tablicach (a pozwala - w debugerze widać to dokładnie - w miejscu komórek 0 i 1 są tablice) to zakładałem, że jest bezpośrednia droga dostępu, analogicznie jak np. podczas przechowywania id obiektu w tablicy i odczytu jego zmiennych. Skoro pod q[0] tak naprawdę jest tablica, to odniesienia q[0[0]] i q[0][0] mogłyby być logiczne (tu drugie o ile się nie mylę działa np. w JavaScript w podobnej sytuacji). A gdy nie działały, użyłem metody dostępu takiej jak przy przechowywaniu id obiektu: q[0].[0] Wynikało to z tego, że gm pozwala to zapętlić: GML t[0]=12 t[1]=13 t[2]=14 u[0]=45 u[1]=46 u[2]=47 q[0]=t q[1]=u t[3]=q ///O dziwo to nie daje błędu!</span> Po tym mam tablicę t w tablicy q, która jest znowu w tablicy t i tak parę razy (nie w nieskończoność - około 4 razy). Czyli wygląda, że gdy damy tablicę w tablicy to przechowywane jest tylko odniesienie (bo się zapętla potem). Tym bardziej, że w debugerze przy tablicach jest kilku znakowy kod (nie wiem czy to id czy jakiś adres), który jest inny dla każdej utworzonej tablicy, ale przy takim "zapętleniu" tablice w niższych pętlach mają taki sam numer jak w wyższych. Stąd próba jak przy obiektach. Nie masz racji. To jak najbardziej działa. I po tym "w" staje się tablicą. I na końcu "a" ma wartość 12. Tyle, że chciałem prościej.
  17. Witajcie W gm mogę przechowywać tablicę w tablicy: GML t[0]=12 t[1]=13 t[2]=14 u[0]=45 u[1]=46 u[2]=47 q[0]=t q[1]=u Tylko jak potem odczytać zawartość? Wszystko poniżej nie działa: GML //chcę odczytać wartość 12 w=q[0][0] w=q[0].[0] w=q[0[0]] Czy jedyny sposób to: GML w=q[0] a=w[0] ?
  18. Ech miało być w początkujących, źle wybrałem. Jak możecie to przenieście Witajcie Taka kwestia: kombinuję na temat soft bodies w GM. Jestem na etapie wykorzystania particles group. Sam pomysł działa fajnie a particles group ładnie koliduje z obiektami fizycznymi. Natomiast nie mogę zrobić dwóch rzeczy: pobrać pozycji particles group oraz wpływać na tę groupę inaczej niż przez kolizję z obiektami. Jeżeli chodzi o pozycję particles group to w dokumentacji jest info, że id grupy uzyskujemy w physics_particle_group_end GML physics_particle_group_begin(flag,phy_particle_group_flag_solid,x+60,y+60,0,0,0,0,c_white,1,1,1); physics_particle_group_circle(64); mLastGroup = physics_particle_group_end(); No i jest funkcja physics_particle_group_get_x Natomiast, gdy jej użyję: GML xtmp=physics_particle_group_get_x(mLastGroup) ytmp=physics_particle_group_get_y(mLastGroup) To pobierany jest zawsze punkt utworzenia grupy a nie pozycja aktualna. Da się jakoś to uzyskać? Druga kwestia jest taka, że powinno dać się jakoś wpłynąć np. przez physics_apply_force ale to nie ma wpływu na grupę. Czy jedyną możliwością jest kolizja z jakimś obiektem? O ile drugi problem sobie ominę w razie czego przez kolizję z niewidzialną fixture tak pierwszy jest trochę problematyczny.
  19. Ech udało się. Ale było to naprawdę dziwne. Cała sprawa działa się na Nexusie 7. Threef: Spróbowałem Twojego rozwiązania dając GML display_reset(0, true); Niestety to nie pomogło. Próbowałem naprawdę wszystkiego co się dało. Między innymi patrzyłem na innym urządzeniu i tam o dziwo było ok. Ale zwróciłem uwagę, że mam inną prędkość na Nexusie i drugim urządzeniu. Sprawdziłem fpsy i okazało się, że na nexusie jest 30 fpsów mimo, że room speed miałem na 60. Kurde dziwne to było. Sprawdziłem inne moje projekty i też kurde na nexusie miały inną prędkość. Na szybko stworzyłem projekt z pustym roomem i na wszystkich urządzeniach ok, a na naxusie fps cap na 30. Przeszperałem w sieci wszystko co mogłem. Myślałem, że to jakiś bug gm. I gdzieś na jakiejś stronie koleś pisał, że miał na naxusie podobnie (ale on pisał bez GM). I że w jego przypadku pomógł hard reset. Uznałem to za głupotę, ale niech będzie. I kurde pomogło. Zarówno na fpsy jak i na skakanie napisów. Ech dobrze spędzone parę godzin. W sumie aż się prosi: :)
  20. Witajcie Takie pytanie. Chcę przesuwać napis z dołu na górę ekranu. Wydawało mi się to proste. Stworzyłem obiekt. Dałem w stepie zmienną w stylu GML ytext=ytext-10 a w draw GML draw_text(50,ytext,"Tekst") Pod windowsem działa jak powinno, natomiast pod Androidem niektóre litery testu jakby szarpią (wygląda to tak jakby kawałek napisu wyświetlał się w poprzedniej pozycji a kawałek już nowej). O co chodzi? Szperałem i wyszło, że draw tekstu jest marny pod względem wydajności i żeby używać surface. Ale może da się to jakoś prościej rozwiązać?
  21. Hej A próbowałeś http://distrowatch.com/? Tak patrzę, że jak wejdziesz w podstronę danej dystrybucji to tam jest jaka jest wersja danego pakietu. I wersja jądra chyba też w tych pakietach jest (jako linux), ale nie wiem czy to Ci wystarczy? Analogicznie da się też wyciągnąć jakie jest środowisko (jest w podstawowych informacjach a w pakietach wersja). Ale nie wiem czy to pokryje się na 100% z wersjami na płycie danej dystrybucji. Np.: http://distrowatch.com/table.php?distribution=slackware
  22. Witajcie {EDIT: na dole sam sobie częściowo odpowiadam) Planuję reklamy do gry na Androida. Jednym z pomysłów, które chciałbym wykorzystać jest wyświetlanie graczowi reklamy video w zamian za pewne korzyści w grze. Macie jakiś pomysł jak to uruchomić optymalnie? Póki co skupiam się na AdColony. Jeżeli dobrze zrozumiałem do tego służą opcje V4VC (Videos For Virtual Currency). Opisane to wszystko jest tutaj: http://help.yoyogames.com/hc/en-us/article...-AdColony-v1-3- Natomiast tam pojawia się informacja, że należy używać opcji Client Side Only z ustawieniem na off i żeby wykorzystywać zewnętrzny serwer do obsługi tego bo tak będzie bezpieczniej. Kurde, ale to jest paranoja. W grę zagra może z pięć osób i oni mi radzą stawianie oddzielnego serwera? Tylko nigdzie nie mogę znaleźć opisu jak to rozwiązać, gdy damy Client Side Only na on. Da się to w Game Makerze zrobić? Może ktoś z Was robił takie reklamy u siebie? Albo z innej strony: Czy jeżelibym olał zupełnie mechanizm V4VC i po prostu, gdy użytkownik sobie kliknie na przycisk w stylu "Chcę 1 ładny diament za obejrzenie reklamy", wyświetlał mu filmik przez AdColony_ShowVideo a potem dawał diament to coś się złego stanie? Może z jakimiś zasadami AdColony to jest niezgodne? Będę wdzięczny za wszelkie sugestie. PS: Ech, uwielbiam te sytuacje gdy znużony szukaniem wrzucam post na forum a potem szybko sam znajduje odpowiedź. Okazało się, że zamiast czytać najlepiej sprawdzić. Po założeniu konta na AdColony i pobraniu dema z yoyo (pisząc powyższego posta zapomniałem, że są) udało mi się sprawdzić, że video reklamy za korzyści dla gracza działają także bez zewnętrznego serwera. I to całkiem sprawnie. Jedyne ograniczenie jest takie, że przed wyświetlaniem reklamy pojawia się okno z pytaniem od Adcolony i po reklamie kolejne z informacją, że dodano tyle a tyle danej jednostki płatniczej (np. diamentów). To ogranicza trochę zastosowanie w sytuacji, gdy chcę zamiast dodawania waluty dać jakiś efekt w grze (np. podwoić zyski na jakiś czas) bo zawsze będzie ten komunikat o dodaniu waluty. Ale to już projektowo da się obejść. Czyli AdColony działa, a korzystaliście może z podobnego mechanizmu w jakiś innych sieciach reklamowych?
  23. hgter

    Pipes Ultimate Plumber

    Rzeczywiście film bardzo fajny. A co do gry to planujesz jakieś formy zarobku? Rozumiem, że reklamy? Jeżeli tak to zdradzisz może jak to rozplanowałeś? I pytanko o "marketing". Działasz coś w tym kierunku poza filmem (zamierzasz gdzieś go wrzucić/wysłać)? Przepraszam za wścibstwo, ale to są te rzeczy, których nie znoszę, a chyba są konieczne. Chętnie bym coś podłapał od tych doświadczonych.
×
×
  • Dodaj nową pozycję...