XBlacKX Opublikowano 10 Listopada 2015 Udostępnij Opublikowano 10 Listopada 2015 Faktycznie, ale i tak nadal nie działa... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Ignatus Opublikowano 10 Listopada 2015 Udostępnij Opublikowano 10 Listopada 2015 W pewnym momencie gry (jeszcze nie odkryłem dokładnie w którym) gra zaczyna zwalniać- cały czas mam 60/60 nagle z każdą kolejną mapą spada kilka fps.Jeżeli zresetuje grę dana mapa która spowolniła już np do 40fps ma już normalnie 60/60- tak więc proces następuje wraz z czasem grania- i tutaj kluczowy element i pytanie używam sobie "show_debug_overlay" i wraz ze spadkiem fps drastycznie rośnie mi żółty pasek , według opisu funkcji to : "Yellow - The time required for the draw event" Co to oznacza w praktyce? Praktycznie nie używam funkcji draw (poza jakimś wyświetlaniem fps itp).Co może spowalniać? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am vader Opublikowano 10 Listopada 2015 Udostępnij Opublikowano 10 Listopada 2015 jaka platforma? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Amaterasu Opublikowano 10 Listopada 2015 Udostępnij Opublikowano 10 Listopada 2015 @XBlackX: GML if collision_point(128,122,object0,true,false) {with(object1 instance_destroy()} 1. Co oznaczają liczby 128 i 122? 2. W jakim evencie w którym obiekcie masz ten kod wpisany? 3. with(object1) spowoduje usunięcie wszystkich instancji obiektu object1 (czyli wszystkich object1 na mapie). Użycie with(other) spowoduje, że zostanie usunięty tylko obiekt kolidujący. Funkcja collision_point zwraca ID obiektu, z którym następuje kolizja w danym punkcie, lub -1, jeżeli żaden obiekt nie wywołuje kolizji. Powinieneś przypisać wartość collision_point do jakiejś zmiennej, dzięki temu pisząc with(zmienna) {kod} kod zostanie wykonany tylko dla tego obiektu, który wywołuje kolizję w punkcie. To może brzmieć nieco skomplikowanie, ale tak to jest, gdy chce się załatwiać kolizje samemu, zamiast korzystać z eventu Collision with (zakładam, że twój kod nie znajduje się w Collision with). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 11 Listopada 2015 Udostępnij Opublikowano 11 Listopada 2015 object0 po kolizji na środku sprite z object1 usuwa object1 GMLif collision_point(128,122,object0,true,false) {with(object1 instance_destroy()} ten kod nie działa, obiekt swobodnie przelatuje przez to... Twój punkt [128,122] jest punktem na mapie, nie na sprite co widocznie chciałeś uzyskać. Każdy instance ma swoje wewnętrzne zmienne takie jak: speed, direction, image_xscale, ale też x i y. Pewnie to już wiesz. Ale jeżeli gdzieś w obliczeniach chcesz odnieść się do pozycji instance to musisz podać jego x i y. Poza tym mam nadzieję że nie masz tego kodu w evencie kolizji? Wtedy on prawie na pewno się nie wykona, bo najpierw będzie musiał sprawdzić kolizję masek, a dopiero potem twój kod. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Ignatus Opublikowano 13 Listopada 2015 Udostępnij Opublikowano 13 Listopada 2015 Jest jakiś sposób na proste zabezpieczenie .ini przed ingerencją użytkownika? I ponownie proszę o przyjrzenie się mojemu poprzedniemu pytaniu,może ktoś wie o co chodzi Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sutikku Opublikowano 13 Listopada 2015 Udostępnij Opublikowano 13 Listopada 2015 Jest jakiś sposób na proste zabezpieczenie .ini przed ingerencją użytkownika? I ponownie proszę o przyjrzenie się mojemu poprzedniemu pytaniu,może ktoś wie o co chodzi Tak, szyfrujesz zapisywane dane, a przy odczytywaniu odszyfrowujesz. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Ignatus Opublikowano 13 Listopada 2015 Udostępnij Opublikowano 13 Listopada 2015 A jakieś konkrety:D? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sutikku Opublikowano 13 Listopada 2015 Udostępnij Opublikowano 13 Listopada 2015 Jestem prawie pewien, że był tu jakiś poradnik bodajże od Gnyska. O, znalazłem https://forum.gmclan.org/index.php?showtopic=31450 Od Kriso i skrypt od Gnyska. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Ignatus Opublikowano 15 Listopada 2015 Udostępnij Opublikowano 15 Listopada 2015 thx Teraz ważniejsze pytanie Jak zrobić system mikrotranzakcji w grze na androida? Muszę jakoś to ustawiać w google play?Jak się do tego zabrać? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Uzjel Opublikowano 15 Listopada 2015 Udostępnij Opublikowano 15 Listopada 2015 thx Teraz ważniejsze pytanie Jak zrobić system mikrotranzakcji w grze na androida? Muszę jakoś to ustawiać w google play?Jak się do tego zabrać? :) :) :) O tym można książkę napisać :) Sorry, ale tu masz link do helpa. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Ignatus Opublikowano 15 Listopada 2015 Udostępnij Opublikowano 15 Listopada 2015 A jest jakiś najprostszy sposóbt żeby mnie nakierować?Nie chcę tydzień grzebać po to żeby się dowiedzieć że można to w 5minut ogarnąć tak jak miałem w przypadku ustawienia reklam na andku-totalny banał ale żeby dotrzeć do 1 linijki kodu którą musiałem wstawić w odpowiednim miejscu poświęciłem kilkadziesiąt godzin:/ Rozumiem że najlepiej ogarnąć te tematy?: http://help.yoyogames.com/forums/22944718-IAPs Chce tylko 1 opcję dodać, możliwość kupowania "monet" za realne pieniądze. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Gibki Kaktus Opublikowano 16 Listopada 2015 Udostępnij Opublikowano 16 Listopada 2015 Jak jest z zapisywaniem na androidzie? Działa ds_list i ds_map zapisywane do pliku? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
CyberZoGA (ZombiesWillBack) Opublikowano 16 Listopada 2015 Udostępnij Opublikowano 16 Listopada 2015 Witam :) Mam małe pytanko :) Jak lepiej jest przechowywać dane z gry? Pliki ini czy rejestr ? Dziękuje za odpowiedz i pozdrawiam :) Jakub Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 16 Listopada 2015 Udostępnij Opublikowano 16 Listopada 2015 Witam :) Mam małe pytanko :) Jak lepiej jest przechowywać dane z gry? Pliki ini czy rejestr ? Dziękuje za odpowiedz i pozdrawiam :) Jakub Wszystko zależy od rodzaju danych. Pliki ini są do danych konfiguracyjnych. Takich jakie użytkownik może sam zmieniać. Bo ich jedynym plusem jest to że są bardzo czytelne po otwarciu. Pliki tekstowe wymagają dobrego zaplanowania danych. Możesz sobie zapisywać każdą daną w osobnej linijce i tylko pamiętać co jest w której. Np w pierwszej linijce jest hp gracza, w drugiej złoto, etc. Możesz przechowywać dane w ds_map i zapisywać je do stringu dzięki specjalnej funkcji. Wtedy wystarczy że w ds_map masz klucze "hp gracza", "gold". Taki string jest zapisany w sposób nie do odczytania przez człowieka (ale łatwo go odszyfrować) Najpotężniejszy i bardzo przyjemny po opanowaniu jest zapis w formacie JSON. Jest łatwy do przeglądania, bardzo prosty do zapisu i odczytu i ma strukturę drzewa. Możesz np.: zrobić tablicę w tablicy w tablicy. Więc nie ma problemu żeby zrobić tablicę postaci, w jednej postaci zrobić tablicę ekwipunku, która będzie miała pozycje inventory zapisane jako ds_map z różnymi właściwościami jak "dmg", "cena" i w środku kolejną tablicę na efekty. Problem z JSON jest taki że sprawia bardzo dużo kłopotu pilnowanie w GM żeby wszystkie dane były traktowane jako JSON. Wszystkie pliki można szyfrować poza ini. Zaszyfrować ini można na 2 sposoby: Szyfrując wartości (tak jak Sutikku pokazał kilka potów wyżej) albo szyfrując cały plik, ale żeby to zrobić trzeba go pierw otworzyć jako plik tekstowy, odszyfrować, zapisać jako niezaszyfrowany ini, dokonać operacji zapisu,otworzyć ponownie jako plik tekstowy, zaszyfrować i zapisać. Bardzo dużo głupich operacji. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
CyberZoGA (ZombiesWillBack) Opublikowano 16 Listopada 2015 Udostępnij Opublikowano 16 Listopada 2015 Wszystko zależy od rodzaju danych. Pliki ini są do danych konfiguracyjnych. Takich jakie użytkownik może sam zmieniać. Bo ich jedynym plusem jest to że są bardzo czytelne po otwarciu. Pliki tekstowe wymagają dobrego zaplanowania danych. Możesz sobie zapisywać każdą daną w osobnej linijce i tylko pamiętać co jest w której. Np w pierwszej linijce jest hp gracza, w drugiej złoto, etc. Możesz przechowywać dane w ds_map i zapisywać je do stringu dzięki specjalnej funkcji. Wtedy wystarczy że w ds_map masz klucze "hp gracza", "gold". Taki string jest zapisany w sposób nie do odczytania przez człowieka (ale łatwo go odszyfrować) Najpotężniejszy i bardzo przyjemny po opanowaniu jest zapis w formacie JSON. Jest łatwy do przeglądania, bardzo prosty do zapisu i odczytu i ma strukturę drzewa. Możesz np.: zrobić tablicę w tablicy w tablicy. Więc nie ma problemu żeby zrobić tablicę postaci, w jednej postaci zrobić tablicę ekwipunku, która będzie miała pozycje inventory zapisane jako ds_map z różnymi właściwościami jak "dmg", "cena" i w środku kolejną tablicę na efekty. Problem z JSON jest taki że sprawia bardzo dużo kłopotu pilnowanie w GM żeby wszystkie dane były traktowane jako JSON. Wszystkie pliki można szyfrować poza ini. Zaszyfrować ini można na 2 sposoby: Szyfrując wartości (tak jak Sutikku pokazał kilka potów wyżej) albo szyfrując cały plik, ale żeby to zrobić trzeba go pierw otworzyć jako plik tekstowy, odszyfrować, zapisać jako niezaszyfrowany ini, dokonać operacji zapisu,otworzyć ponownie jako plik tekstowy, zaszyfrować i zapisać. Bardzo dużo głupich operacji. Wszystko pięknie wytłumaczone, dziękuje Bardzo :) A co do plików JSON. Może korzystać z nich GameMaker 8.1 ? Czy to dotyczy się GM:Studio? Za znajomiłem sie ze sposobem szyfrowania danych Gnyska i kriso99. Masz racje że dużo z tym zachodu. Co do gry to chodzi mi o takie małe zapisywane plików jak: - ilosc żyć - ilosc amunicji w danej broni - ilosc amunicji w magazynku etc Porzebuje tego do swojej gry. a problem jest taki że zazwyczaj korzystałem zer skryptu: GML if room == level1 { //i tu tworzylem zmienne ktore nie maja sie pojawiac na nowo gdy przechodzi do kolejnego pokoju np: hp = 100; global.ammo_pistol = 0; // etc... } A teraz, niby wszystko działa ale nie bochater nie chce strzelać.... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 16 Listopada 2015 Udostępnij Opublikowano 16 Listopada 2015 Obsługa JSON jest tylko w Studio. Ale w poprzednich GM było już ds_map_write() i ds_map_read(). I tego użyj. Jest niesamowicie łatwo, wygodnie, i bezproblemowo. Tylko nie ma plusu struktury drzewa. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Uzjel Opublikowano 17 Listopada 2015 Udostępnij Opublikowano 17 Listopada 2015 Jak jest z zapisywaniem na androidzie? Działa ds_list i ds_map zapisywane do pliku? tak Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Ignatus Opublikowano 22 Listopada 2015 Udostępnij Opublikowano 22 Listopada 2015 Ponawiam bo nadal nie mam pojęcia o co chodzi "W pewnym momencie gry (jeszcze nie odkryłem dokładnie w którym) gra zaczyna zwalniać- cały czas mam 60/60 nagle z każdą kolejną mapą spada kilka fps.Jeżeli zresetuje grę dana mapa która spowolniła już np do 40fps ma już normalnie 60/60- tak więc proces następuje wraz z czasem grania- i tutaj kluczowy element i pytanie używam sobie "show_debug_overlay" i wraz ze spadkiem fps drastycznie rośnie mi żółty pasek , według opisu funkcji to : "Yellow - The time required for the draw event" Co to oznacza w praktyce? Praktycznie nie używam funkcji draw (poza jakimś wyświetlaniem fps itp).Co może spowalniać? " Ktoś wie? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Amaterasu Opublikowano 22 Listopada 2015 Udostępnij Opublikowano 22 Listopada 2015 jak używasz draw_getpixel albo surface_getpixel, to przestań w przeciwnym wypadku nie da się niczego wywróżyć bez konkretów, np. jakiegoś podejrzanego wg ciebie kodu Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 22 Listopada 2015 Udostępnij Opublikowano 22 Listopada 2015 Ponawiam bo nadal nie mam pojęcia o co chodzi Tu nie chodzi o to że nie używasz funkcji draw. Event draw jest wykonywany dla każdego obiektu który ma visible=true. Rysowanie sprite, tekstu, zmiana alpha, ustawienie blend. Każda akcja dodaje więcej czasu obliczeń, a event draw jest najcięższym do wykonania i to on prawie zawsze spowalnia grę. Nie mam pojęcia czemu dzieje się akurat coś takiego że FPS spada z czasem. Może dodajesz grafiki z plików zewnętrznych? Tak czy inaczej odsyłam cię na http://www.yoyogames.com/tech_blog/30 gdzie znajdziesz wytłumaczenie, a potem http://www.yoyogames.com/tech_blog/61 gdzie omawiana jest optymalizacja draw dla Androida. Edit: Przy czym pierwszy artykuł jest z 2013 i np Nest "if" jest nie aktualne bo mamy już Short Circuit Evaluation. ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Ignatus Opublikowano 22 Listopada 2015 Udostępnij Opublikowano 22 Listopada 2015 thx, to już jest jakiś trop Teraz 2 pytanka na szybko 1.Kiedyś pytałem czy można jakoś ominąć global lub usunąć wartość po wykorzystaniu, tak żeby cały czas nie zaśmiecała pamięci mimo że dawno jest niepotrzebna.Wpadłem na taki pomysł.Jakby tak stworzyć obiekt który będzie parentem dla wszystkich obiektów na które dany global miał oddziaływać i w tyb obiekcie użyć var zmienna a w danych obiektach inherited event().Takie coś ma jakikolwiek sens? 2.Jaka jest realna opcja promowania i reklamowania gier na android market? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 23 Listopada 2015 Udostępnij Opublikowano 23 Listopada 2015 To już nie są drobne pytania więc następnym razem zastanów się nad napisaniem nowego tematu. Niech ten temat zostanie na pytania które można odpowiedzieć w jednym zdaniu. 1.Kiedyś pytałem czy można jakoś ominąć global lub usunąć wartość po wykorzystaniu, tak żeby cały czas nie zaśmiecała pamięci mimo że dawno jest niepotrzebna.Wpadłem na taki pomysł.Jakby tak stworzyć obiekt który będzie parentem dla wszystkich obiektów na które dany global miał oddziaływać i w tyb obiekcie użyć var zmienna a w danych obiektach inherited event().Takie coś ma jakikolwiek sens?To nie ma sensu. Użycie global i tak jest już bardzo optymalne bo możesz mieć tylko jedną zmienną globalną o danej nazwie w całej grze. To co opisujesz to zwykłe dziedziczenie zmiennych. Tak powinieneś to robić dla zmiennych które nie są globalne a maja być wspólne dla bratnich obiektów. Tylko jeżeli ta zmienna ma się zmieniać tak samo dla każdego z tych obiektów (np.: buff prędkości dla wszystkich przeciwników) to wtedy nie ma to sensu. W takim wypadku warto mieć jeden obiekt kontroler który tym zarządza i nie jest rodzicem, a inne obiekty odnoszące się do niego. 2.Jaka jest realna opcja promowania i reklamowania gier na android market?Zapytaj 10 producentów z top 10. Nikt z nas nie zna odpowiedzi na to pytanie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności Chell Opublikowano 23 Listopada 2015 Autor Filar Społeczności Udostępnij Opublikowano 23 Listopada 2015 jak zamienić reala na stringa? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Gibki Kaktus Opublikowano 23 Listopada 2015 Udostępnij Opublikowano 23 Listopada 2015 GML string(x) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sutikku Opublikowano 23 Listopada 2015 Udostępnij Opublikowano 23 Listopada 2015 Może głupie pytanie, ale czy repeat(15), wykona się w ciągu 15 stepów, czy to zależy? Ok, drugie podejście. Chcę podejść do strzelania w drugi sposób. Zawsze odległość pomiędzy strzałami ustawiałem sobie alarmem i sprawdzałem czy jest wyzerowany. Im na większy ustawiłem alarm, tym dłużej czekałem. Wiadomo, proste. Ale chciałbym teraz osiągnąć, że mam jakąś wartość. I to będzie moja prędkość strzelania. Im większa, tym szybciej strzelam. I jak takie cudo wykonać? Podejrzewam, że to jakiś prosty szybki trik. Próbowałem robić coś w stylu 180-wartość, ale to miało limit. Powyżej 180 przestawało działać. Mogę jakoś inaczej to zrobić? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Gibki Kaktus Opublikowano 23 Listopada 2015 Udostępnij Opublikowano 23 Listopada 2015 W ciągu jednego stepu. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sutikku Opublikowano 23 Listopada 2015 Udostępnij Opublikowano 23 Listopada 2015 Nie chciałem robić double posta, to edytowałem wyżej, piszę jakby ktoś nie zobaczył. To jakieś prostsze zagadnienie z tym strzelaniem, czy robić oddzielny temat? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Uzjel Opublikowano 23 Listopada 2015 Udostępnij Opublikowano 23 Listopada 2015 Odpowiedz sobie na pytanie, co ma oznaczać szybkość strzelania równa 100, a co równa 1000? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Gibki Kaktus Opublikowano 23 Listopada 2015 Udostępnij Opublikowano 23 Listopada 2015 Możesz dawać odwrotność. Dawaj room_speed jako wartość sekundy. Jeśli masz 60, to będziesz miał 60 I ustawiaj se alarm[x]=room_speed/speed. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
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ę