TO_mek
Użytkownicy-
Postów
346 -
Dołączył
-
Ostatnia wizyta
-
Wygrane w rankingu
1
Typ zawartości
Profile
Forum
Wydarzenia
Treść opublikowana przez TO_mek
-
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
-
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.
-
Tak tylko przez debuggera, normalnie odpala ok. W trybie html5 odpala zarówno normalnie jak i przez debugger.
-
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?
-
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.
-
Szkoda, że nie chciało Ci się użyć opcji "szukaj". Było dziesiątki razy. Choćby tu, tu czy tu.
-
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ę.
-
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>
-
zmienna inna dla kazdej instancji tego samego obiektu
TO_mek odpowiedział(a) na Elevator temat w Pytania początkujących
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> -
To samo opcja "execute code". Kurcze niech się chłopaki bawią ale na wersjach beta a nie robią z produkcyjnej, płatnej wersji półprodukt, mimo woli użytkowników.
-
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
-
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.
-
Rozumiem, że chodzi o window_set_size a nie window_set_width
-
A nie wystarczy sprawdzac GML x=mouse_x if x>view[0] then x=view[0] if x<0 then x=0 i to samo dla y ?
-
Niby tak ale przy kompilacji ERROR Obsolete function. GM:Studio. Jesli chcą usnąć tą opcję to co w zamian?
-
W GM8.0 też był problem z TABem. Tu była o tym mowa.
-
Witam! Czy jest możliwe ustawienie z poziomu kodu keep aspect ratio / full scale?
-
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?
-
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).
-
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?
-
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)
-
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; } }
-
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ą.
-
Moje boje z HS w HTML5 w tym wątku powinny pomóc. A tutaj wykorzystanie tej metody obsługi HS dla prostej gry.
-
Zgodność z SEO a wyszukiwarka i polityka prywatności
TO_mek opublikował(a) temat w HTML, PHP, mySQL, JavaScript
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"