TO_mek
-
Postów
346 -
Dołączył
-
Ostatnia wizyta
-
Wygrane w rankingu
1
Typ zawartości
Profile
Forum
Wydarzenia
Odpowiedzi opublikowane przez TO_mek
-
-
Od groma rozwiązań na oficjalnym forum. Nie wiem po co zaprzęgać do tego GPU.
http://gmc.yoyogames.com/index.php?showtop...61#entry3584424
Ten pierwszy to przerobka tego drugiego. Niestety pierwszy nie dziala pod GM:S, tzn. działa ale efekt jest zupełnie inny (coś jakby "negatyw" zamiast desaturyzacji). Ktoś może podpowiedzieć dlaczego? W GM8 działa prawidłowo.
-
bo po to służy GPU, żeby go do takich rzeczy zaprzęgać? jest szybszy, wydajniej procesuje operacje na fragmentach, maniejszy narzut operacji niż CPU.\
Topic: https://www.dropbox.com/s/4rcye9ojwip9jzc/G...aleFragment.gmz
Czy ten przykład powinien działać na HTML5?
-
Witam!
W create obiektu inicjującego definiuję zmienna tlousera poprzez
GMLglobalvar tlousera;bez nadania wartosci
Następnie w dowolnym miejscu w kodzie daję
GMLif background_exists(global.tlousera) then background_delete(global.tlousera)Efekt:
___________________________________________
################################################################################
############
FATAL ERROR in
action number 1
of Key Press Event for L-key Key
for object zm_glob_obj:
Push :: Execution Error - Variable Get -5.tlousera(100034, -1)
at gml_Script_laduj_tlo_scr (line 3) - if background_exists(global.tlousera) then background_delete(global.tlousera)
################################################################################
############
--------------------------------------------------------------------------------------------
stack frame is
gml_Script_laduj_tlo_scr (line 3)
called from - gml_Object_zm_glob_obj_KeyPressed_L_1 (line 1) - laduj_tlo_scr();
Czy nie wystarczy sama deklaracja zmiennej globalvar? Musi być nadana wcześniej wartość?
-
napisz, co chcesz uzyskac - na pewno da sie to osiagnac prosciej i lepiej.
Robię puzzle.
Mam zdefioniowanego sprajta z matrycą puzli. Na razie jeden format - 32x32 + po 8px na "wypustki" czyli sprajty 48x48 (wersja najprostsza, łącznie 9 klatek bo 4 rogi, 4 boki i 1 środek). Wczytuję obrazek png (na początek 800x600 ale może później inne formaty) i z niego wycinam kwadraty 48x48 z których następnie wycinam gotowe puzle za pomocą sprite_set_alpha_from_sprite(wyciete_kwadraty_spr, matryca_puzzli_spr).
-
WItam!
Co będzie szybsze?
Utworzyć surface o wielkości 800x600, władować do niego raz backgrounda i wycinać z niego w podwójnej pętli kwadraty 32x32 jako kolejne klatki sprajta.
czy
utworzyć surface 32x32 i ładować do niego kawałek backgrounda (draw_background_part), wycinać kolejną klatkę sprajta i czyścić surface i powtarzać (ilość przejśc w pętli jest taka sama jak wyżej)?
-
Witam!
W jaki sposób wycinać sprity z obrazka wg jakiegoś szablonu? Przykładowo mam zdefiniowany kształt sprajta (czarny, nieregularny, z "dziurami"), otwieram dowolny obrazek png i z niego wycinam kolejne klatki już z "teksturą".
EDIT:
Sam sobie odpowiem dla potomnych:
sprite_set_alpha_from_sprite(ind, spr);
-
A może ktoś opisać nieco szerzej jak radzi sobie z tymi różnymi rozdzielczościami na andku.
-
GMLdirection= intercept_course(id_strzelajocej_wiezy,_wrog,p_speed);i jak mas detekcje wroga v porzodku, to bedzie swietne robic swoje :)
Mam jeszcze pytanko jak z tego uzyskać skorygowane współrzędne docelowe pocisku.
Nawiązując do pytania Dawidssa w komentarzach z tego wątku o obliczaniu przyszłej pozycji gracza.
"1. Chcemy obliczyć [odległość wieza - przyszła pozycja wojska], potrzebujemy do tego ofc:
-pozycji wiezy (mamy)
-przyszła pozycja wojska (nie mamy, liczymy)
2. Do obliczenia [przyszła pozycja gracza] potrzebujemy:
-kierunku wojska (mamy)
-jego prędkości (mamy)
-czasu, jaki zajmie pociskowi dotarcie do tej [przyszłej pozycji gracza] - (nie mamy, liczymy)
3. Do obliczenia [czasu jaki zajmie pociskowi dotarcie do tej [przyszłej pozycji]] potrzebujemy:
-prędkości pocisku (mamy)
-dystansu jaki musi przebyć pocisk, czyli właśnie [odległość wieza - przyszła pozycja wojska] - no jak nieciężko zauważyć, zapętliliśmy się."
Akurat przy zwykłym strzelaniu skrypt intercept_course nadaje kierunek pociskom i sparawa zalatwiona ale jak z tego wyliczyc punkt zderzenia pocisku i wojska?
-
jest mozlive ze origin vojska jest na 0,0?
to by linia drogi szla o jakies kilka pixeli v gore.
moze sproboj wyrysovac ktoredy script spravdza droge?
niech ci vyrysuje, bywa to pomocne.
nielatwo osodzic, co i kdzie jescze moze byc zle
Origin wojska jest 16,26 przy sprajcie 32,32 więc linia się zgadza z ta wyrysowaną. Zresztą dodałem rysowanie czerwonej linii (punkt po punkcie) podczas wykonywania skryptu i linie sie pokrywają wewnątrz zasiegu.
PS. Moment bo jednak coś sie rozsypuje dopiero gdy na ekranie jest więcej wież niż 1. Akurat ten skrypt liczy wszystko dobrze więc ja muszę mieć coś w kolejnych wersjach namieszane.
-
zobacyles moj przyklad?
Tak i nieco go zmodyfikowałem ale znowu mam dosyć istotny błąd.
Najpierw rysunek:
Z lewej fioletowy domek to baza gracza (CEL), z prawej niebieski baza komputera (ATAKUJACY), oraz 3 wieże. Linia to droga od atakującego do celu. Okregi to zasięg strzału wież.
Skrypt w obecnej wersji wywoływany jest z bazy wroga. Argument0 okresla tylko ktory skrypt ma byc wybrany z wielu wersji jaka powstala do tej pory. Argument 1 to ID docelowej bazy gracza (fioletowy domek), argument 2 to predkość oddziału (w moim przypadku 0.5 ale dla uproszczenia niech bedzie 1). Kolizja to licznik zliczający (w tej wersji skryptu) ile razy oddzial na drodze bedzie w zasięgu strzału wieży
GMLif argument0 == 0 then {//****************************** DROGA_W_ZASIEGU calkiem pierwsza wersja - ZMIENIANY
var _idc, _o_speed, _dist, _direct,_frames_to_hit, _p_ilosc, _p_moc, _x, _y, _kolizja, _o_speed;
_idc:=argument1;//ID Celu
_o_speed:=argument2;//Predkosc oddzialu
_kolizja:=0;
_direct:=point_direction(_idc.x,_idc.y,x,y);//odwrotnie ma znaczenie!!!
_dist:=point_distance(_idc.x,_idc.y,x,y);// point_distance(x,y,_id_nno.x,_id_nno.y) // jaka odleglosc dzieli bazy (atakujaca i docelowa)
for (i=0; i<_dist; i+=_o_speed){
_x=x-lengthdir_x(i,_direct);
_y=y-lengthdir_y(i,_direct);
var _nobj;
_nobj:=instance_nearest(_x, _y, wieza_obj);
// if (distance_to_object(_nobj)<_nobj.zasieg_x) then {
if (point_distance(_x,_y,_nobj.x,_nobj.y)<_nobj.zasieg_x) then {
_kolizja++;
//war_poi+=1;
}else {
//peace_poi+=1;
}
}
Każdą z wież analizowałem pojedynczo (czyli zasięgi się nie nakładały tak jak na rysynku).
I teraz dla wieży środkowej, której średnica zasięgu to równocześnie droga czyli w tym przypadku 416 pikseli skrypt liczy idealnie czyli _kolizja=415 (lub dla _o_speed=0.5 wynik to 831).
Dla wieży dolnej długość drogi w zasięgu wynosi dokładnie 286px i tu wynik kolizji też powinien wynosić 285 (lub dla _o_speed=0.5 dwukrotność czyli 571). Niestety wynik w tym przypadku to 164 (w przypadku _o_speed=0.5 wynosi 328).
Może mi ktoś wytłumaczyć o co tu chodzi?
-
ktos juz to zaprogramoval, to nie krepoj sie i uzyj ten script
i jak mas detekcje wroga v porzodku, to bedzie swietne robic swoje :)
Jest perfekcyjnie :)
PS.Mam nadzieje, że wiesz co to jest "czeski błąd" :) To taki wkurzający drobny błąd (np. zamias x dasz gdzies y) którego znajdowanie trwa bardzo długo a zwykle jest banalny. Ciekawe jak się u Was mówi na takie błędy.
-
Witam!
Mam taki oto skrypcik na celowanie pociskami do ruchomego celu. Niestety coś mi tu niedokładnie liczy i sporo pocisków nie trafia. Na ten tydzień limit poszukiwań czeskich błędów jest już mocno przekroczony więc proszę o pomoc tutaj.
GMLzasieg_x:=100; //zasieg wiezyczkivar _pocisk, _klatki_trafienie, _dystans, _droga_wroga;
_pocisk:=instance_create(x+lengthdir_x(8,direction), y+lengthdir_y(8,direction), pocisk_obj); //wystrzel pocisk
_pocisk.gracz:=gracz;//oznacz czyj to jest pocisk
_pocisk.sila:=sila;//moc pocisku (ile 1 pocisk zabija przeciwnikow)
_pocisk.speed:=p_speed;//1.2
_pocisk.alarm[0]:=zasieg_x/p_speed; //_pocisk.speed;//Zniszcz pocisk po wykroczeniu zasiegu strzalu wiezyczki
with (_pocisk) {
_dystans = point_distance(x,y,_wrog.x,_wrog.y) // jaka odleglosc dzieli pocisk od obcego
_klatki_trafienie = _dystans/speed; // po ilu klatkach pocisk doleci do obcego z predkoscia jaka ma nadany pocisk
_droga_wroga:=_wrog.speed*_klatki_trafienie; //odleglosc jaka pokona obcy w czasie w jakim poleci pocisk
direction = point_direction(x,y,_wrog.x+lengthdir_x(_droga_wroga,_wrog.direction),_wrog.y+lengthdir_y(_droga_wroga,_wrog.direction)) //korekta kierunku uwzgledniajaca przesuniecie obcego
x_docelowe_pocisku:=_wrog.x+lengthdir_x(_droga_wroga,_wrog.direction); //wspolrzedne docelowe w ktorym bedzie obcy gdy pocisk doleci do celu
y_docelowe_pocisku:=_wrog.y+lengthdir_y(_droga_wroga,_wrog.direction);
na_jaki_zasieg:=point_distance(xstart, ystart, x_docelowe_pocisku, y_docelowe_pocisku);//
}
naladowane:=false;
alarm[1]:=fire_spd; //zalezne od szybkostrzelnosci dziala od 1 per 4 sek do 5 per 1 sek</span></span>
-
A nie można jakoś wyliczyć tych dwóch punktów czyli poczatku i końca czerwonego odcinka? Potrzebuję to wyliczać jeszcze przed wysłaniem oddziału z pkt "K" do pkt "N" i jeśli straty będą zbyt duże to wybrać inny cel (np ten drugi pkt "N" na przykładowym rysunku).
Podobnie obliczam straty na odcinku od punktu przecięcia okręgu do jego środka (w momencie gdy celem oddziału jest jakś wieża czyli punkt "W"), ale to akurat jest prostsze bo gdy wiem, że celem jest wieża to wyliczam straty z długości promienia okręgu (czyli zasiegu strzału wieży, siły pocisków, prędkości tych pocisków i szybkostrzelności).
-
Nie, nie, nie. Nie ważne czy chcesz to robić przed czy podczas ruchu to korzystaj z point_distance(), i iteruj przez wszystkie obiekty W przy pomocy instance_find().
Musze sprawdzać przed wysłaniem i obliczyc jak długo oddział będzię pod ostrzałem aby oszacować opłacalność ataku. Czyli mam przeliczac sciezkę i dla każdego kroku sprawdzać point_distance dla każdego z wież? Jak to wpłynie na fpsy (zarówno wież jak i wysyłanych oddziałów będzie sporo więcej)?
-
Witam!
Mam kilka obiektów "W" - wieże, które maja kołowy zasięg strzału. W jaki sposób najprościej wyszukać obiekty "W", które podczas wysyłania oddziału z punktu "K" do punktu "N" (linia prosta) będa w stanie trafiać w taki oddział czyli wtedy gdy droga biegnie wewnątrz kolistego zasięgu strzału.
Najlepiej zerknąć na rysunek .
Czerwona linia to obszar w którym nasz wędrujący oddział jest narażony na strzał. Same obiekty mają niewielkie maski (załózmy, że wielkości ich symbolu "K", "W", "P", "N") więc proste collision_line nie wyszuka obiektów "W". Idelanie byłoby gdyby znaleźć oba punkty przecięcia się zasiegu wieży z drogą oddziału.
-
UP
Witam po dłuższej przerwie. Widzę nowy dział :) Czy nie warto przenieść tego wątku do działu GM Studio?
-
Jakie KONKRETNIE ograniczenia ma darmowa wersja programu? Czyli ile mogę mieć zdefiniowanych w "resources" skryptów bo to mnie najbardziej interesuje (właściwie to mojego grafika bo to on ma licencje GM8.1 i robi na free studio, nie ja). Obiektów, 10?, mniej, więcej? Obiektów ustawionych na roomie max DWA - to akurat sprawdzone, ważne że przynajmniej jeden.
-
Gnysek
-
Hej.
Chciałbym wiedzieć, jak wyłączać obiekty poza ekranem tak, aby wciąż sprawdzały swój x i y, bo po użyciu instance_deactivate dość problematyczne jest włączanie ich z powrotem :/
Pierwsza poprawna odpowiedź wygrywa 5kg bananów.
Jak wyłączysz to jest tak jakby nie istniały. Napisz wiecej w czym problem, moze instance_deactivate_region, instance_activate_region wystarczy.
-
Ciężko się w to gra. Jak mam dokładnie umyć zabawkę, skoro zbyt bliski kontakt powoduje utratę punktów? Nagraj może jakiś gameplay.
Proszę bardzo
.To mój debiut na YT :)
-
Nie możesz dać jakiejś wersji "podglądowej"?
Ok dodałem wersję HTML5 beta (link na górze).
Tak czy siak jak ktoś ma konto na steamie to poproszę o "lajka" (już bez zbędnych ceregieli z pobieraniem GM:Studio itd.)
-
Tytuł: Just On Time
Gatunek: symulator
Opis: Święta się skończyły ale ekipa Świętego Mikołaja ciężko pracowała. Zdążyli ze wszystkim na czas. Teraz czas na mycie. Zdążysz na czas?
Musisz umyć wybraną postać jak najdokładniej w jak najkrótszym czasie. Kolumna z myjką porusza się najpierw w lewo a po osiągnięciu lewej krawędzi powraca w prawo, Ty sterujesz prędkością. Punkty zdobywasz myjąc dokładnie (zielony wskaźnik). Także za mniej dokładne mycie zdobywasz punkty (żółty wskaźnik). Uwaga zbyt bliski kontakt z myjką kończy się punktami karnymi (czerwony wskaźnik).
Sterowanie:
ekran wyboru:
zmiana postaci poprzez kliknięcie lewym klawiszem myszy na miniaturce postaci
wybr postaci poprzez kliknięcie lewym klawiszem myszy na dużej postaci
podczas gry:
kursory lewo prawo - ruch kolumny
kursory góra dół - ruch myjki
spacja - zatrzymanie kolumny
P - pauza
S - dźwięk wł/wył
lub użyj myszy klikając na ikonach.
Gra powstała na konkurs YoYoCompDec2012. Duża prośa o pozytywne głosy na Steamie (i o brak negatywów ;) )
Download: adres z plikiem gry
Rozmiar pliku: 3,4MB
Autorzy:
Programowanie:Retrospect WorkshopFabuła:Retrospect WorkshopGrafika:Retrospect WorkshopMuzyka:Retrospect WorkshopScreeny:GAMEPLAYPS.Aby zagrać należy zalogować się na Steamie, kilknąć na linka do gry a następnie na guziku "Subskrybuj" i pobrać darmową wersję GM:Studio. Podaczas uruchamiania GM:Studio Steam wybrać PLAY i pojawi się lista "zasubskrybowanych" gier.PS2. Dodałem wersję beta HTML5 więc nie trzeba wchodzić na Steama by zagrać. -
Chyba jest tak samo jak w zwykłej wersji Studio.
A wytłumaczy mi ktoś jak zaktualizować GM:Studio Standard (free) ze Steama do wersji PRO. Mam swój kod ale nie wiem gdzie go wklepać. GMa nie kupowałem poprzez steama tylko sporo wcześniej, tradycyjnie.
EDIT: OK już wiem. To trzeba nie z poziomu GM zrobić tylko bezpośrednio ze steama poprzez "dodaj gre" i tam się podaje kod licencyjny GMa (ten pod steama).
-
Jest różnica gdzie kupuje się GM?? Ja kupiłem na stronce jojo i klucz do wersji steam był za darmo. Używam wersji steam od kiedy zwykła uznała się za piracką i nadpisała mi grafiki.
Threef ma rację. Automatycznie dolicza podatek, więc dlaczego miałbyś jeszcze raz coś dopłacać??
Czy wersja na Steamie działa tak, że na dowolnym kompie na ktrym zaloguje się na swoje konto steam będę mógł używać także GM:Studio w takiej wersji jaką zakupiłem?
pozbawienie kolorów
w Pytania zaawansowanych
Opublikowano
Efekt jest taki, że czy to na FF czy na Chromie jest szare okno, które reaguje zmianą koloru na żółty po najechaniu kursorem myszy w lewej dolnej części okna.
Kompilator pokazuje:
Saving HTML5 file... C:\Users\tomek\AppData\Local\Temp\gm_ttt_42001\GrayScaleFragment\html5game\GrayScaleFragment.js
0 Compressing texture... writing texture GrayScaleFragment_texture_0.png...
Compiling - gml_Object_objImage_Draw_0
Compiling - gml_Object_objOverlay_Create_0
Compiling - gml_Object_objOverlay_Draw_0
Compiling - gml_Object_objFilter_Create_0
Compiling - gml_Object_objFilter_Step_0
Compiling - gml_Object_objFilter_Draw_0
Compiling - gml_Room_roomStart_Create
Debug version skipping obfuscation...
Done!
Stats : GMA : Instance=2, Global=0
-----------------------------------------------------------
executing C:\Users\tomek\AppData\Local\Temp\gm_ttt_42001\GrayScaleFragment\index.html
-----------------------------------------------------------
Compile finished: 20:56:32
Debugger pokazuje coś takiego:
Max Texture Size=null
Windows Detected(0)
Firefox detected
Browser CAN play OGG
Loading: html5game/GrayScaleFragment_texture_0.png
Loading: html5game/particles/IDR_GIF2.png
Loading: html5game/particles/IDR_GIF3.png
Loading: html5game/particles/IDR_GIF4.png
Loading: html5game/particles/IDR_GIF5.png
Loading: html5game/particles/IDR_GIF6.png
Loading: html5game/particles/IDR_GIF7.png
Loading: html5game/particles/IDR_GIF8.png
Loading: html5game/particles/IDR_GIF9.png
Loading: html5game/particles/IDR_GIF10.png
Loading: html5game/particles/IDR_GIF11.png
Loading: html5game/particles/IDR_GIF12.png
Loading: html5game/particles/IDR_GIF13.png
Loading: html5game/particles/IDR_GIF14.png
Loading: html5game/particles/IDR_GIF15.png
ImageLoaded: http://127.0.0.1:51268/html5game/GrayScaleFragment_texture_0.png
ImageLoaded: http://127.0.0.1:51268/html5game/particles/IDR_GIF2.png
ImageLoaded: http://127.0.0.1:51268/html5game/particles/IDR_GIF3.png
ImageLoaded: http://127.0.0.1:51268/html5game/particles/IDR_GIF5.png
ImageLoaded: http://127.0.0.1:51268/html5game/particles/IDR_GIF4.png
ImageLoaded: http://127.0.0.1:51268/html5game/particles/IDR_GIF6.png
ImageLoaded: http://127.0.0.1:51268/html5game/particles/IDR_GIF7.png
ImageLoaded: http://127.0.0.1:51268/html5game/particles/IDR_GIF8.png
ImageLoaded: http://127.0.0.1:51268/html5game/particles/IDR_GIF9.png
ImageLoaded: http://127.0.0.1:51268/html5game/particles/IDR_GIF10.png
ImageLoaded: http://127.0.0.1:51268/html5game/particles/IDR_GIF11.png
ImageLoaded: http://127.0.0.1:51268/html5game/particles/IDR_GIF12.png
ImageLoaded: http://127.0.0.1:51268/html5game/particles/IDR_GIF13.png
ImageLoaded: http://127.0.0.1:51268/html5game/particles/IDR_GIF14.png
ImageLoaded: http://127.0.0.1:51268/html5game/particles/IDR_GIF15.png</span>
i trzy obiekty:
100000 (z widocznym kolorowym sprajtem)
x 0.000
y 0.000
depth 0.000
visible true
persistent false
vspeed 0.000
direction 0.000
speed 0.000
friction 0.000
gravity 0.000
gravity_direction 270.000
sprite_index sprImage
image_index 0.000
image_speed 1.000
image_blend -1
image_alpha 1.000
image_xscale 1.000
image_yscale 1.000
mask_index -1.000
path_index -1.000
path_position 0.000
path_speed 0.000
path_scale 1.000
path_orientation 0.000
path_endaction 0.000
path_end 0.000
path_xstart 0.000
path_ystart 0.000
alarm[0] -1
alarm[1] -1
alarm[2] -1
alarm[3] -1
alarm[4] -1
alarm[5] -1
alarm[6] -1
alarm[7] -1
alarm[8] -1
alarm[9] -1
alarm[10] -1
alarm[11] -1
1000000
x 0.000
y 0.000
depth -1000.000
visible true
persistent false
vspeed 0.000
direction 0.000
speed 0.000
friction 0.000
gravity 0.000
gravity_direction 270.000
sprite_index
image_index 496.000
image_speed 1.000
image_blend 16777215
image_alpha 1.000
image_xscale 1.000
image_yscale 1.000
mask_index -1.000
path_index -1.000
path_position 0.000
path_speed 0.000
path_scale 1.000
path_orientation 0.000
path_endaction 0.000
path_end 0.000
path_xstart 0.000
path_ystart 0.000
alarm[0] -1
alarm[1] -1
alarm[2] -1
alarm[3] -1
alarm[4] -1
alarm[5] -1
alarm[6] -1
alarm[7] -1
alarm[8] -1
alarm[9] -1
alarm[10] -1
alarm[11] -1
i trzeci 1000001
x 610.000
y 281.000
depth -100.000
visible true
persistent false
vspeed 0.000
direction 0.000
speed 0.000
friction 0.000
gravity 0.000
gravity_direction 270.000
sprite_index sprFilter
image_index 0.000
image_speed 1.000
image_blend 16777215
image_alpha 1.000
image_xscale 3.000
image_yscale 3.000
mask_index -1.000
path_index -1.000
path_position 0.000
path_speed 0.000
path_scale 1.000
path_orientation 0.000
path_endaction 0.000
path_end 0.000
path_xstart 0.000
path_ystart 0.000
alarm[0] -1
alarm[1] -1
alarm[2] -1
alarm[3] -1
alarm[4] -1
alarm[5] -1
alarm[6] -1
alarm[7] -1
alarm[8] -1
alarm[9] -1
alarm[10] -1
alarm[11] -1