Skocz do zawartości

TO_mek

Użytkownicy
  • Postów

    346
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    1

Odpowiedzi opublikowane przez TO_mek

  1. Do usuwania jest specjalna opcja w preferencjach, ale to i tak słabo działa, dlatego stworzyłem program GMX Cleaner [ http://gnysek.pl/pl/app.php#gmx ].

    Może room ma dziwną nazwę, dziwne zmienne w creation code, czy coś takiego - no coś musi być. Jeśli masz odseparowane wszystko i naprawde mało zasobów to podeślij mi projekt (File > Export > GMZ) i zobaczę o co chodzi.

     

    Powiem tak. Obecnie już nic w kopii projektu nie ma oprocz tego jednego nieszczęsnego rooma o standardowej nazwie room1 (nie byla zmieniana od samego poczatku) oraz jednego tła. Wywaliłem wszystko, nawet obiekt sterujący, który robił zooma i zmieniał background_alpha oraz odtwarzal krótki dźwiek.

    I dalej debugger nie odpala.

    Okrojony ze wszystkiego projekt do pobrania jest tu

     

    PS.Twój program fajnie usunął sprajty i obiekty ale także pozostawia tła i dźwięki ale to na pewno mniejszy problem bo zazwyczaj tego jest mniej niż reszty.

    PS2.Upload nie przyjmuje plików z rozszerzeniem gmz, może czas dodać taką możliwość :)

     

     

    EDIT:

    Sprawdziłem właśnie na innym komputerze z wersja FREE v.1.1.676 i tam mój projekt działa bez problemu. Być może to ta konkretna wersja GMa (1.1.711) ma błąd związany z debuggerem (za chwilę ściągne aktualizację do tej wersji free) albo druga opcja to może jakieś zapamiętane zmienne w debuggerze go zawieszają bo na tej wersji FREE na drugim kompie debbuger nie pamięta tych wszystkich zmiennych, które śledziłem do tej pory w projekcie. Gdzie debugger w takim razie przechowuje info o tych zmiennych, może wystarczy je wyczyścić?

     

    EDIT2:

    Debugger przechowuje info o śledzonych zmiennych w katalogu C:\Documents and Settings\user\Ustawienia lokalne\Dane aplikacji\nazwaprojektu\Debug.ini

    Po wywaleniu (robiac wcześniej oczywiście kopię) tego ini debugger zaczął działać więc coś go wieszało. Na drugim komputerze na wersji 1.1.676 po wgraniu tego Debug.ini projekt się zawiesza (w trybie debug). Poniżej zawartość pliku:

    GML
    [DebugForm]

    Watch16=ds_list_find_value(global.dzialka_dsl,0)

    Watch15=lengthdir_y(point_distance(ship_obj.x,ship_obj.y,mouse_x,mouse_y),point_direction(ship_obj.x,ship_obj.y,mouse_x,mouse_y))

    Watch14=lengthdir_x(point_distance(ship_obj.x,ship_obj.y,mouse_x,mouse_y),point_direction(ship_obj.x,ship_obj.y,mouse_x,mouse_y))

    Watch13=point_direction(ship_obj.x,ship_obj.y,mouse_x,mouse_y)

    Watch10=background_alpha[0]

    Watch7=pocisk_obj.y

    Watch6=pocisk_obj.x

    Watch5=dzialko_obj.y

    Watch4=dzialko_obj.x

    Watch3=ship_obj.y

    Watch2=ship_obj.x

    Watch1=room_width/2

    Watch0=room_height/2

    FPSVisible=true

    NumWatches=18

    Watch8=collision_point(room_width/2 + drawer_obj.deltax, room_height/2 + drawer_obj.deltay, alien_obj,0,0)

    Watch9=part_particles_count(zm_glowne_obj.Sname)

    Watch11=i_drawer_obj.klatka

    Watch12=point_distance(ship_obj.x,ship_obj.y,mouse_x,mouse_y)

    Watch17=ds_list_find_value(global.dzialka_dsl,0).direction

    [GlobalsWindow]

    Visible=false

    [InstancesWindow]

    Visible=false

    [MessagesWindow]

    Visible=false

    [LocalsWindow3]

    Visible=false

    [LocalsWindow4]

    Visible=false

    [LocalsWindow5]

    Visible=false

    [LocalsWindow6]

    Visible=false

    [LocalsWindow7]

    Visible=false

    [LocalsWindow8]

    Visible=false

    []

    Visible=false

     

    EDIT3:

    Problem jest z linią:

    Watch16=ds_list_find_value(global.dzialka_dsl,0)

     

    Zgłosiłem na bugtrackerze

  2. Bo w HTML5 debugger polega na dodaniu textarea z logami ;) Co do problemów z debuggerem w Windowsowej wersji.... na gołym projekcie też tak jest? Może być jakaś śmieszna zmienna która wywala debuger (co oczywiście jest błędem krytycznym i należy zgłosić na http://yoyogames.com/) - nie mniej mam przeczucie, że na innym projekcie może działać OK.

     

    Na wersji z przed 2 dni działa. Co zmieniłem? Dodałem drugi, room ktory przestawiłem w resourcach na pierwsze miejsce. Room ten to na razie w zasadzie jednen background z logo + operacje na viewie (na poczatku 10% ekranu i zoom aż do 100%) oraz operacje na background_alpha. Ten wcześniejszy room to room głowny na którym dzieje się cała gra. W sumie ten dodany room jest niemal żywcem wyjęty z jakiegoś starszego projektu.

     

    Właśnie sprawdziłem i jest ciekawostka: gdy przestawie kolejność roomow debbuger odpala jakby nic się nie działo i działa nawet jak wywołam ten z logiem jako drugi.

    Na kopii usunąłem praktycznie całość, został tylko drugi room + tło i cokolwiek bym nie zaznazał na roomie (tlon on/off, widok on/off) to i tak błąd debuggera jest ZAWSZE.

     

    Przy okazji czemu jak coś usuwam z projektu to nie jest usuwane fizycznie z dysku z katalogu projektu? Zostały wszelkie skrypty, grafiki, dzwieki itp.

  3. Witam!

    Mam nagły problem przy odpalaniu projektu w Studio w trybie debuggera:

     

    "Wystąpił problem z aplikacją Runner.exe i zostanie ona zamknięta."

    Czyli standardowe okno windowsa XP przy zawieszonym programie z pytaniem czy wysyłać raport o błędach do ms.

     

    Na 100% dziś (właściwie to już wczoraj) działał na tej wersji co posiadam, od weekendu nie było nowej aktualizacji (mam v.1.1.711). Na kopii projektu z przed 2 dni debugger działa prawidłowo, na innych projektach także.

     

    Moje pytanie to czy sam projekt zawiera jakieś ustawienia dla debuggera?

    I też mi sie gdzieś przy jakieś aktualizacji wydawało, że coś pisano o tym aby nie zapomnieć o aktualizacji runnera - ktoś kojarzy o co dokładnie chodzi?

  4. Odpiszę sam sobie.

     

    Tworzenie pocisku w GlobalMiddleButton

    GML
    ds_queue_enqueue(global.q_pocisk, x+lengthdir_x(8,direction)); //x pocisku

    ds_queue_enqueue(global.q_pocisk, y+lengthdir_y(8,direction)); //y pocisku

    ds_queue_enqueue(global.q_pocisk, direction); //kierunek

    ds_queue_enqueue(global.q_pocisk, 5); //predkosc pocisku</span>

     

    Rysowanie w DRAW

    GML
    {// PETLA OBSLUGI POCISKOW NIEOBIEKTOWYCH

    var _xx, _yy, _di, _sp, _id;

    while !ds_queue_empty(global.q_pocisk) {

    _xx = ds_queue_dequeue(global.q_pocisk);

    _yy = ds_queue_dequeue(global.q_pocisk);

    _di = ds_queue_dequeue(global.q_pocisk);

    _sp = ds_queue_dequeue(global.q_pocisk);

    _xx+=lengthdir_x(_sp, _di);

    _yy+=lengthdir_y(_sp, _di);

    draw_sprite(pocisk_spr,0, _xx, _yy);

    _id:=collision_point(_xx, _yy, alien_obj,1,0);

    if _id > 0 then {

    score+=1;

    with (_id) instance_destroy();

    }else {

    if !((_xx > room_width) or (_xx<0) or (_yy>room_height) or (_yy<0)) then { //jesli nie wyszedl za room to zapamietaj pozycje

    ds_queue_enqueue(_q_pocisk, _xx); //x pocisku

    ds_queue_enqueue(_q_pocisk, _yy); //y pocisku

    ds_queue_enqueue(_q_pocisk, _di); //kierunek

    ds_queue_enqueue(_q_pocisk, _sp); //predkosc pocisku

    }

    }

    }

    ds_queue_copy(global.q_pocisk, _q_pocisk); //Kopiuje tymczasowa kolejke do glownej

    ds_queue_clear(_q_pocisk);//czysci kolejke tymczasowa

    }

     

    Testy jednak wychodzą sprzeczne. Tworząc ok 500 obiektów obcych oraz około 2000 pocisków mam różne wyniki na różnych kompach. Dla przykładu komp i5 750 3GHz z 8GB RAMu, winda 7 64bit i grafą GeForce GTX260 z prędkością początkową ponad 1000 FPS (przy 17 obiektach na start), lepiej obsługuje wersję na DRAW o jakies 10FPS niz komp C2D E8600 3,3GHz z 4GB RAM, winda XP i grafiką GeForce 8800GTS 512 (S istotna literka w tym modelu) z prędkością pocz. ~500 FPS. Inny komp zbliżony do tego słabszego ale z windą 7 64bit home także na korzyść obiektów.

    Możliwe, że jeszcze coś można przyspieszyć w rysowaniu (więcej tam obliczeń niż samego rysowania), może coś innego zastosować niż kolejki, lepiej zapisać warunki itp.

  5. Witam!

    Załóżmy, że:

    - mam 15 dział, które generuje 10 pocisków na sekunde każde.

    - każdy pocisk po 5ciu sekundach lotu rozbija się na kolejnych 10 odłamków a te utrzymują się przez 3 sekundy

     

    czyli po 8miu sekundach ciągłych strzałów na ekranie mam: 15dział x 10pocisków x 5sek lotu x 10odłamków x 3sek trwania = ~22 tyś. obiektów i fps ladnie leci w dół. Do tego dochodzi koło 500 przeciwników i w każdym kontrolowana jest kolizja z pociskiem. Oczywiście to wartości maksymalne i rzeczywista ilośc obiektów wyświetlanych na ekranie będzie sporo mniejsza ale też duża.

     

    Co tu zoptymalizować poza ograniczeniem ilości samych obiektów? Nie chcę wyrzucać lotu pocisku w kierunku celu na rzecz strzelania punktowego (strzał polegający na jednorazowym sprawdzaniu kolizji przez collision_line).

     

     

    Czy ma sens zamiast tworzyć te wszystkie obiekty, zrobić jeden obiekt rysujący wszystkie pociski na ekranie oraz przechowujący obliczenia aktualnych pozycji tych wszystkich pocisków i sprawdzający collision_point dla każdego z tych pocisków co steep? Coś w ten deseń tyle że razy ilość pocisków (max ~22K):

    GML
    deltax+=lengthdir_x( spd, dire )

    deltay+=lengthdir_y( spd, dire )

    draw_sprite(pocisk_spr,0, room_width/2 + deltax, room_height/2 + deltay);

    if collision_point(room_width/2 + deltax, room_height/2 + deltay, alien_obj,0,0) > 0 then "kasuj aliena oraz dane o pocisku z tabeli"

     

    PLUS do tego jakaś tablica czy grid przechowująca te wartości (kierunek, prędkość i aktualne pozycje x,y) dla każdego z pocisków.

    Kod powtarzany w jakiejś pętelce for i=1 to ilosc_pociskow, oczywiscie co steep.

     

    Będzie to szybsze czy wręcz odwrotnie, jeszcze opóźni całą grę.

  6. Czesc! Jak zrobic takie wyrzucanie monet z klocka w kierunku gdzie skoczymy - chodi mi cos w stylu gry internetoej "coin box" (na notdoppler.com) dzieki za odpowiedzi ;)

     

     

    Chodzi o to, żeby podczas uderzenia przez hero w klocek np. od dolu wyskakiwały górą monety? Coś jak w Giana Sisters czy Mario?

     

    W klocku w kolizji z hero wstaw:

    GML
    var _temp:

    _temp:=instance_create(x, y, moneta_obj); //tworzy monetę

    _temp.direction:=other.direction; //nadaje kierunek utworzonej monecie taki sam jaki ma hero</span></span>

  7. faktycznie robilem cos zle - dopiero teraz zrobiłem nowy przykład i na nim sprawdziłem, dzialalo. okazało się ze po prostu wcześniej 2 obiekty sklejałem w jeden i w ob.przyklad miałem ob.przyklad.zmienna zamiast zmienna

    sorry za zawracanie wam glowy xp

     

    A już myślałem, że chodzi Ci o to, że generuje kolory losowo ale przy każdym uruchomieniu losuje je tak samo bo 2 dni temu miałem podobnie w Studio, gdyż trzeba wygenerować podstawę generatora liczb losowych.

    GML
    random_set_seed(date_current_datetime()); //podstawa generatora to aktualny czas

    randomize(); //inicjuje generator liczb losowych</span>
  8. Witam!

    Ma to znaczenie dla optymalizacji jak zrobie coś takiego:

     

    - wstawiam na room:

    1 x obiekt_sterownik

    20 instancji obiekt_dzialko

     

    Opcja nr 1:

    obiekt_dzialko ma event global_middle_button w ktorym jest kod tworzący obiekt_pocisk

     

    czyli 20 kopii tego obiektu ma sprawdzany event global_middle_button

     

    Opcja nr 2:

    obiekt_sterownik ma event global_middle_button w ktorym jest kod tworzący obiekt_pocisk

    kod wywolywany jest tak:

    with (obiekt_dzialko) {ten sam kod tworzący obiekt_pocisk}

     

    czyli 1 obiekt odpowiada za event global_middle_button ale za to w nim wywoływane jest 20 razy tworzenie obiektu_pocisk

  9. Nie. Jeżeli nie jesteś pewny to nie pomagaj bo w błąd wprowadzasz.

     

    Fakt szybciej napisane niż pomyślane. Miałem na myśli coś takiego

     

    GML
    x:=mouse_x;

    if x<view_xview[0] then x:=view_xview[0];

    if x>(view_xview[0]+view_wview[0]) then x:=view_xview[0] + view_wview[0];

     

    y:=mouse_y;

    if y<view_yview[0] then y:=view_yview[0];

    if y>(view_yview[0]+view_hview[0]) then y:=view_yview[0] + view_hview[0];

     

    co sprowadza się do tego samego co u Gnyska tyle, że napisane bardziej dla początkujących.

  10. Witam!

    Właśnie się zorientowałem, że debugger w Studio nie ma opcji odczytu i zapisu wprowadzonych zmiennych do pliku tekstowego jak to było od zawsze w GMie (CTRL+S i CTRL+L tez nie działa).

    Dziwne bo nawet wersja HTML5 posiada te opcję.

    Ktoś wie coś więcej na ten temat? Czy Studio od początku nie miała tych opcji czy zgubiła przy jakiejś aktualizacji?

  11. Witam!

    Działa Wam room_caption? Szukam po opcjach jakiegos magicznego przełącznika i nic wciąż mam napis GameMaker:Studio. Może ja coś źle robie ale do tej pory wystarczyło dowolny obiekt z eventem DRAW i zwykły kod:

    room_caption="jakis teks byle nie GameMaker:Studio"

     

    Testowałem też window_set_caption ale też bez efektu.

     

     

    EDIT:

    Dobra sciągnąłem aktualizacje do 1.1.676 (z 1.1.520 czy jakoś tak) i window_set_caption działa prawidłowo. Nie miałem aktualnej wersji bo właśnie od 1.520 nie działa mi automatyczna aktualizacja. Nowa wersja się ściągała odpalała instalacja i zero efektu - sprawdziłem na 2 kompach i na obu był problem. Pomogło ręczne ściagnięcie instalki i instalacja (bez odinstalowania starej wersji).

  12. Witam!

    Testuje gierkę kompilując ją na androida (mam StudioPro bez modułu android ale z możliwością kompilowania na andka po kabelku lub wifi) i za każdym razem ustawiam mi się w pionie i nie działa obrót. Co i gdzie trzeba ustawić aby można było obracać ekran na andku albo przynajmniej aby gra domyślnie odpalała się obrócona o 90 stopni?

  13. Sernat, jak już się bawisz w kompilator to brakuje jeszcze prawego nawiasa w linijce suma += string( tablica[ni, nj]; :)

     

    Gnysek wydaje mi się, że w przypadku liczenia od punktu 0,0 jednak mx powinien wynosic dokładnie tyle ile elementów tablicy a nie pomniejszony o 1

     

    Po drugie działa to dla kolumn i wierszy ale na skosy juz nie bardzo gdyż wartości ni oraz nj przyjmują wartości rzeczywiste a nie naturalne gdyz tu juz powinno byc zwykle przypisanie ni:= i + add; oraz nj:= j + add; bez lengthdirow (dla 45, 45+90, 45+180, 45+270 stopni)

  14. Ok poszperałem jeszcze i zrobiłem na razie samo sumowanie przekątnych, reszta to już z górki. Dla tablicy 10x10

     

    GML
    var _i, _j, _ROZMIAR, _sumaprz;

    _ROZMIAR:=10; //aktualnie 0-9 kolumn/wierszy czyli (ds_grid_width lub height bo tabela jest kwadratowa)

    _sumaprz:=0;

     

    for(_j = -(_ROZMIAR-1); _j <= (_ROZMIAR-1); _j+=1){ //WYLICZA SUMY PRZEKATNYCH

    if(_j > 0) then {

    for(_i = 0; _i < _ROZMIAR - _j; _i+=1){

    _sumaprz += ds_grid_get(tablica,_i,_i+_j); //to liczy POD przekatna

    }

    draw_text(32+16+(9-_j)*32, 360, string(_sumaprz));

    _sumaprz:=0;

    }else {

    for(_i = 0; _i < _ROZMIAR - abs(_j); _i+=1){

    _sumaprz += ds_grid_get(tablica, _i+abs(_j), _i); //to liczy NAD przekatna

    }

    draw_text(360, 32+16+(_j+9)*32, string(_sumaprz));

    _sumaprz:=0;

    }

    }

  15. Witam!

    Pewnie prosta sprawa. Jak odczytać wartości z tablicy ukośnie czyli jakby po przekreceniu jej o 45 stopni.

    Przykładowo mam tablice 8x8 (tradycyjną szachownice) z której potrzebuje odczytać wartości po ukosie czyli te linie po których w szachach chodzą gońce (laufry).

    Interesuje mnie utworzenie 2 nowych tablic (8x8) jedna zawierajaca dane tylko z białych pól + dane nadmiarowe oraz druga z polami czrnymi + dane nadmiarowe.

     

    Moze prościej na przykładzie mniejszej tablicy:

    A B C D

    E F G H

    I J K L

    M N O P

     

    Wynik (zera to dane nadmiarowe):

    0 A 0 0

    I F C 0

    N K H 0

    0 P 0 0

     

    0 E B 0

    M J G D

    0 O L 0

    0 0 0 0

     

    Tablice będą mogły być różnej wielkości choćby i 100 x 100 więc potrzebna mi jakaś sensowna pętla która to automatem zrobi.

     

    A i jeszcze też potrzebuje w druga stronę czyli z tych 2 tablic (z danymi nadmiarowymi) zrobić tablice źródłową.

  16. witam jeśli było to już gdzieś to sorka

     

    chciałbym zrobić w grze na html5 z użyciem Game Maker Studio listę Highscore 10 najlepszych wyników zgaduje ze bez php i sql się nie obędzie (chyba) ale nie za bardzo wiem jak sprawić by wysłać wynik do php i odebrać go z sql do gry

     

    nie ma jakiejś wbudowanej metody ?

     

    Moje boje z HS w HTML5 w tym wątku powinny pomóc.

    A tutaj wykorzystanie tej metody obsługi HS dla prostej gry.

  17. Witam!

    Jak umieścić na stronie formularz wyszukiwarki oraz stronę z polityką prywatności aby było to zgodne z SEO (np. z testerem na tej stronie)? Trzeba to jakoś specjalnie otagować, użyć konkretnych słów kluczowych itp. aby było widziane przez tester (czyli by było zgodne z wytycznymi)? Obecnie mam wyszukiwarkę na kazdej stronie ale automat jej nie widzi i twierdzi, że nie ma.

     

    EDIT:

    Trochę to bez sensu ale wychodzi na to, że przycisk "submit" formularza wyszukiwarki MUSI mieć value="Search"

×
×
  • Dodaj nową pozycję...