
ereg
Użytkownicy-
Postów
253 -
Dołączył
-
Ostatnia wizyta
Typ zawartości
Profile
Forum
Wydarzenia
Treść opublikowana przez ereg
-
jak mowi Lechu4444 jelsli jest drugi przypadek, to wylicz nove scalovanie dla fullscreena naprzyklad:jesli masz grafike rysowano dla 800x600 dawasz fullscreen 1280x720, to vylicz koeficient scalovania(up) 800/600=1,33(okres) dla szerokosci 1280 zatem powinenesz dac drugi rozmiea 720*1,33(okres)=960 tedy prawidlowy fullscreen jest 1280x960 ALBO dla wyszokosci 720 drugi prawidlowy fullscreen jest koeficient scalowania(down) 600/800=0,75 1280*0,75=960 tedy 960x720 wtedy grafika zachowa proporcje, ale masz ciemne paski i jest fajne zmienic tez rozmiar rooma/wiev tak by jak najbardzej pokryc te "plagy" :thumbsup: jezeli uzywasz 32x32 bloki to 800/32=25blokow ale dla fullscrena trza 1280/32=40 blokow tak mozna prosto pozwolic graczovi lub grze samej by zmienial sie window/fullscreen i nawet pomiary scalowania rooma bez zniekstalcienia grafiky, w zaleznosci na checi lub sprzetu grajocego(gracz nawet niemuszi wiedziec ze to sie dzieje)
-
@HuderLord fajne tylko poprav draw_set_colour(0); dla copy/paste ludzi :thumbsup: jak by mialo byc dla slabszych kompow/notebookow/etc to chyba bedzie problem s videoram jezeli by nieskodzila troche grubsza siatka, to mozna pograc sobie z przykladem HuderLorda i zmiejszyc surface od 1/2 do 1/8, miejszy chyba bylo by juz przesada. wystarczy uzyc draw_surface_stretched
-
jezeli rozumiem, to chcesz by rozpoznac kiedy jest 100% pokolorowany ksztalt kazdej czesci kolorowanki moze zrob test na kolizje z staro barwo, to ktorej niepowinno byc. jesli jest kolizja, to niepokolorowano wszystko na kolizje robisz maske kolizyjno z surface w ktorym kolorujesz testowano czesc. tak mowi teoria, ale praktycznie duzo nieporadze, bo v domu problemy technicne <_<
-
jak bys pokazal cale info to zaraz by bylo jasne jak zarodzasz zmienno hspeed bo wartosc hspeed decyduje jaki sprite sie pokazuje hspeed = zmienna ktora movi gre jako szybkosco sie porusza object v poziomu horyzontalnym. (horizontal speed) jescze jest vspeed ( vertical speed) dalej mozna uzywac zmiennej speed= objekt poruzsza sie v kierunku danym zmienno direction
-
jak mowi Lechu4444 dobra rzecz jest podanie informacji z menu Edit/Show Object Information jest to info o wszystkich objektach. (scripty nieuzywasz to niewazne, ze export jest na innym miejscu v menu) :)
-
Poziom trudności i proceduralny generator poziomów
ereg odpowiedział(a) na Koval temat w Pytania początkujących
nietrzeba byc nerwowy 1, na forum odpowiadajom ludzie zadarmo v wolnym czase, to poprostu poczekaj tez troche nie? 2, jezeli twe pytanie jest dla nas mniej zrozumiale, mozesz sprobovac formulovac go inaczej 3, mozemy sie domyslac co wlasciwie chcesz, ale v gm jest czesto wiecej mozliwosci jak cos zrobic. pisac te glowne jest dosyc czasochlonne. 4, tracic nerwy bo odpowiedzi nieso takie jakie sobie przedstawowalesz, jest oznako, ze niewarto dac wiecej czasu(punkt4) niz niezbendne bo i tak niewytrzymasz do konca tlumaczenia. dlatego radze: wez gleboki oddech i sproboj punkt 2 potem zastosuj punkt 1, cierpliwie szerokim kregiem omin punkt 4 a moze doczekasz sie punktu 3 :) -
mnie bardziej sie podobaly kontrastowe solid objekty :) przypomina stare gry ;-)
-
dziekuje wszystkim za ocene :) bo fajnie jest widzies ze ktos doceni wszystkich staran. to co na foru robie, robie dla wewnentrznej satysfakcji, ze czasami moge pomoc. dlatego dzieki, jest to mila niespodzianka
-
ktory punkt z tego tutaj ci nejest jasny a konkretne co w nim jest problem? chyba niechcesz odrazu gotowy przyklad? :) 1.1, zapis objektu do file -mowis sobie struktura file bedzie taka: -- id_objektu(1byte), x(2byte), y(2byte), hp(1byte), direction(8 axis ... 1byte), speed (1byte) . 8 byte na jeden objekt a na 9. byte jest drugi objekt. i tak dalej. - otwierasz file_xxx_open (xxx = bin/text/ini. bin jest fajny) - zapisujesz wszystkie objekty wedlog struktury ktoro sobie ustaliles. - zamykasz file_ 1.2,do rooma by wczytac takto zapisane objekty robisz to samo, ale zamiast zapisiwac zmienne objektu do file, to je wczytujes z file do zmiennych _id, _x, _y, _hp, _direction, _speed. te uzyjesz do stwrorzenia instancji v roomie -- id_instancji=instance_create(_x,_y,_id_objektu) -- id_instancji.hp=_hp -- id_instancji.direction=_direction -- id_instancji.speed=_speed 2, ... 3, podobno jak objekty tylko zapisujesz inne zmienne poczytaj o: room_add() room_instance_add(ind,x,y,obj) room_set_ 4, dla working directory+ subfolder przeczytaj tutaj 5, obecnie zrob: 5.1, zrob gre 5.2, w niej zrob roomy i instancje 5.3, otworz file wedlog 4, 5.3, wybrane roomy zapisz wedlog 1.1, 5.4, dokoncz czego treba i gra gotowa. tylko dac graczowi. 5.6, gracz odpala gre 5.7, gra wczyta roomy wedlog 1.2 i 3,(room_add) 5.8, zrobi objekty w grze wedlog object_add(), object_event_add() 5.9, wlozy instancje do rooma wedlog 3,(room_instance_add) 5.10, gracz moze grac nikt niemowil, ze bedzie proste :)
-
raczej mialem na mysli: GML xy=x+10000 +y; ds_grid(_dsgrid, grid_pos_x, grid_pos_y, xy ) jezeli bys chcial tak ulozyc kilkanascie instancji v real time to chyba nie najlepsze rozwiozanie. ale jest to sposob jak miec dve lub wiecej zmiennych v jednynej komorce ds_grid bitove operacje so szybsze dlatego o nich vzpominalem, ale niewazne :) jesli osobne ds_grid to rozwaz wedlog zadania, ale z ds_grid bych nierezygnowal
-
nie. ds_grid_set zapisuje jeden string albo numer do komorky jestli muszis miec viecej wartosci v jednej komorce ds grid to jedynie tak, ze vszystkie zakodujesz do jednet zmiennej a te zapiszes do ds_grid. jesli niechodzilo by o bitowe informacje to zalety so wotpliwe :)
-
nierozumiem. "pasku u góry" ma byc view u gornej granicy screenu/window, lub ma byc gorny pasek okna(title bar) ? kazdy view pokazuje czesc roomu(view) na zadanym obszarze(viewport) screenu/window. event draw rysuje do roomu co ty chcesz na zadane miejsce i viewy zmieniajo to co rzeczywisce widzis. mozes miec u gory pasek view0 dla score itp. i pod nim restze view1 gla gry samej view0moze pokazowac obszar roomu kdzie draw rysuje score itp i jest mimo obszaru roomu kdzie so rysowane instancje gry prosty przyklad: screen/window - 800x600 room - 0,0 az 800,650 gra - view1 - 0,0 az 800,600 - viewport 0,0 W800 H50 pasek - view0 -0,601 az 800,650 - viewoport 0,0 W800 H50 co ma byc v pasku (800x50) rysujesz do prostokotu v roomu na pozicje 0,601 az 800,650. view pokaze TO u gory screenu/window gra sama toczy sie v roomu v prostokotu 0,0 az 800,600 pasek view0 jest rysowany priewszy to tez instancje gry bedo rysowane nad score(jak zrozumiesz fungowanie, to poprawa bedzie dla ciebie pesta :) ) aha jak pasek view0 niebedzie widac to napewno niewyloczylesz rysowanie brackground v room/background/ draw background :) zyce milej zabawy. polecam sprobowac zrobis z view minimape(latwe i efektne)
-
tak instance_create(x, y+128, choose(potionmana, potionhp, potionhp)) ma szanse 30% poitonmana i 60% poitonhp choose ma limit argumentov 16, ale niema problemu zrobic choose(a, b, b, c, c , c, d, d, e, e, e, e, e, e, e, choose(f, g, g, h, h, h) ) taka ciekawostka :) co do debugowania: -run debbug mode fajna zrec jak jest problem z instancjami, zmiennymi itp -show message jak jest problem z zmiano zmienne przy akcji lub mniemanym niewykonaniem akcji -draw_text na kontynualno kontrole zmiannej v step/draw -show_debug_message niebardzo uzywam, bo wyzej mianowane mi zawse starczyly, ale ma swe mozliwosci.
-
1,2, niewiem jesli symbole bedom objekty bo mogo byc tylko sprite, ale radze zaplanowac kontrole v ds_grid jak poczytasz sobie help poznasz ze to bardzo fajna datowa structura :) oczywisce mozna i array jesli tak zrobisz to nietrza sprawdzac instancje(objekty z GM teraz dane do room) na pozycjach x,y ale tylko przesowasz instancje wedlog danych z datowych structur. naprz. dla 3 reel slot: 1, losujesz typ symbolu dla kazdej kolumny i linijky a1, b1, c1 a2, b2, c2 a3, b3, c3 2, zapisujesz do ds_ (data structure napr ds_grid, lub array) 3, czyscisz screen od nieportzebnych rzeczy(starych instancji symboli) 4, tworzys instancje wylosowanych symboli wedlog ds_ 5, sprawdzasz zgodnoscz na wszystkich symboli w pozycjach mozliwej wygranej 6, pokazujesz vynik, liczsysz punkty, itp. 7, i odnova goto 1, w tym wypadku mozna poloczyc 3, i 4, jesli zamiast instance_destroy i instance_create uzyjesz instance_change
-
na poczotek. {} to znaki dla poloczenia wiecej linijek kodu do jednego bloku. GML // jedna linijka a+=1; if (a== true) a+=1; // skrocona verzja if // jest to samo jako if (a==true) {a+=1; } //wiecej linijek // tutaj zawsze vykona sie b i c bo tylko a+=1 jest objete niewidocznym blokiem if (a== true) a+=1; // skrocona verzja if b=56; c=a+b; // by if vykonal b i c to musisz tak if (a== true) { a+=1; // skrocona verzja if b=56; c=a+b; }; jak piszesz kod to uwazaj na ; jest on konciem comendy mozest na jednej linijce napisac GML a=irandom(5); show_message(string(a) ); osobisce blok {} biore za jednom takom linijke i dlatego uzywam ; w if tak GML // dla prostego if if (a==1) { a+=1; b=56; c=a+b; }; //dla if/else if (a<=1) { a+=1; b=56; c=a+b; } else if (a>1) { a-=1; b=56; c=a+b; } else { a=0; b=56; c=a+b; }; // dopiero tutaj koncze pierwszy if :)</span> znaido sie ludzie ktorzy bedo miec inny poglod na ten syntax, ale chcialem tym wyjasnic, ze zapis ma byc zrozumialy dla innych i dla ciebie :) scryptow sie nieboj, bo szybko przywykniesz w zasadie scrypt moze byc dany objektu(objekt w roomu jest instancja) do jego eventu. event vykonuje ten script w chvili kiedy jest jego kolej na netu znajdziejs game maker event ordres" dalej game maker ma scripts( tam jak so object, sprite itp.) to so scripty ktore so dostepne globalnie( znaczy ze so zawsze do dyspozicji) tutaj trza tylko uwazac ze taky script ma dostep do lokalnych zmiennych w zaleznosci od instancji ktora script wola. jesli scriph sc_zmien_hp(-10); vola gracz to script zmniejszy graczovi o 10 hp, ale jesli zawola ten sam script potwor sc_zmien_hp(-20); to mu hp sie zmienszy potworowi o 20 hp GML // script sc_zmien_hp(hp) hp-=argument0;zaraz masz uniwerzalny scipt ktory mozna volac z roznych typow instancji(gracz/wrog/ mob/ npc) kazdy script ma argument0-12 i niedefinovane so 0 ( nieprobowalem v GM:S) script na a+b moze wyglodac tak GML _licz_numery(nr1, nr2); GML a=argument0; b=argument1; c= a + b; return c; // ta linijka niejest wymagana. tylko zwraca wynik scriptu</span> mozew uzyc takGML // jakis event mouseclick lub keyboard_release show_message(string( _licz_numery(irandom(10), irandom(50)) ) ); string tylko zrobi z numeru strinyg by show_message mogla go wysietlic na screenie
-
jasiek_209: tak naprawde jedyny blod byl, jak piszo chlopaki v zamianie irandom za random. jak bys dal irandom to twoj pierwotny kod jest sprawny. bezdie dzialac, ale mozna go ulepszyc jak juz jest pokazane :) niema tylko verzji s choose, to podam jak bym ja napisal: GML //CREATE otwarte=0; GML //STEP if (!otwarte && keyboard_check_pressed(ord("E")) ) { if (distance_to_object(obohater) < 64 ) { instance_create(x, y+128, choose(potionmana, potionhp)); otwarte=1; }; };
-
na forum pisze wedlog dispozicji czasu i jak mysle ze mam co napisac. cos przydatnego i poki mozliwe pozitiwnego :) jestem tu niedlugo ale imponuje mi YXE swo niezwyklo wiedzo i Gnysek swoimi postami. pozostali so dobrzy, ale tych dwuch czuje jakos wiecej niz normalnie. dlatego dalem glos YXE.
-
dla myszky ci wystarczy zmienac angle. 1, chyba najlepszy + dobre jesli animujesz max. czesci ciala + mozesz zrobic main objekt( ale niejest 100% potrzebne) ktory ma wazne zminenne, decyduje o polozeniu danych sczesci ciala atp. + mozesz brac jako mian naprz. nogi, jesli nieistnieje mozliwosc ze bohater je w czase gry moze stracic ;-) + uzywasz obracanie jak pisal Van ANtY lub angle + mozes zmienac i angle czesci ciala + nietrzeba tyle sprite by pokryc wieksosc pozycji postaci - musisz dobrze kodem spawoac kontrole nad pozicjo czesci i testami koliji z otoczeniem - wieksa mozliwosc bugow mozesz tez miec hp dla kazdej czesci ciala i jak ma 0hp czesc jest zniscona i znika :) 2, tez sie da, ale jak jest prostszy, tak jest wiecej pracochlonniejszy + kod niejest tak komplikovany + dobre jezeli animujesz postac - potrzeba duzej ilosci grafiky, by miec potrzebne wizerunki postaci. mozna uzyc tez wycinania sprite by moc zblizic sie do 1,
-
moim zdaniem sen odzwierciadla stan umyslu z ostatnich dni, bysmy mogli sprobowac przezyc alternativne versje vaznych zdarzen, ktore podwiadomie nadal mamy w glowie :) nawet najgorsze sny mogo byc pomocne, jesli clowiek sproboje znalezc na nie swoj sposob. jest to sposob na jego strachy. niewiem jak wam, ale spostrzeglem, ze v snu niema za duzo dzwiekow. nie so nieme, ale niema zadnych zbendnych zdwiekow. napr. jak bym v snu uciekal przed kims, moge slyszec swoj dech, tupot nog i moze jakies trzaski, ale nie zaduzo. niema dzwiek spadajocego glazu przedemno, wiatru, niewidocznych zwierzot. v realu prawie zawse cos jest slychac, nawet v prawie zupelnej ciszy. juz bardzo dlugo podle tego jakos jestem v stanie v snu rozpoznac jego nierealnosc i uzywac sobie navet grozne sny. jak w kinie :) raz przy katastroficnym snie, kdy spadaly duze ogniste meteory za domem, staralem sie o lepsze misejse do obserwowania . niedobry sen: w dziecinstwie mialem sen, kdy bylem na brzegu rzeki. szerokiej i plytkiej. i zobaczylem wielkiego aligatora podozajocego powoli ku kmnie. brzeg byl kopio zrecziwystego brzegu pobliz ktorego w tym czasie mieskalem. ucieklem na schody wiodoce ku domu( schody nierealne bo masywne kamienne i wysokie sciany. aligator podozal powoli za mno. wybieglem do dzrwi i probowalem zrocic kamieno kule wiekso odemnie ze schodow na aligatora. kola powoli potoczyla sie na niego i jak spadal z schodu na schod to zacela podskakiwac jak v pingpongu :) az odskoczyla od skory aligatora jak pravdziwa pilka do pingponga. v tedy raczej sie obudzilem,ani raz niemialem zamiaru sprawdzac czego mogl aligator odemnie chiec :) sen snil mi sie wiecej razy prawie taki sam. zdisaj chyba juz domyslam sie jego znaczenia(ale to juz priwatne) dobry sen: natomiast najlepszy sen byl kdy snilo mi sie ze znalazlem doma w sufladzie dosyc spore moje osczendnosci, na krote juz zapomnialem. zabawne bylo ze dalem je w snie na to same miejsce i staralem sie zapamietac kdzie one so, by moc je znow znalesc. jak sie obudzilem to mnie rozsmucilo, ze byl to tylko sen. chyba za duzo w tej dobie potrzebowalem kasy :D
-
moze niedokonca ogarnolem twoj cel, ale jezeli pl1 ma view0 i pl2 ma view1 i te dva view poruszajom sie niezaleznie, to particles bedom v samym roomie i pokuzujom sie v view0/1 tylko vtedy kdyz te viewy pokazujom wlasciwo czesc rooma. tylko niewiem co ma byc v view 2, mogly byc w nim particles dla screenu i obu view0 i view1, ale piszales, ze niechcesz by przechodzily z jednogo do drugiego(0 <=>1) view sie nakladajom na siebie, tak vystarczy vyloczyc draw background by byl vidoczny view pod nim( jesli zajdzie taka portzeba npr dla view2). jesli sie myle to sprecyzuj zadanie :) @ karolo320: view jeste genialne dla prostej i szybkiej minimap :)
-
jezeli chcesz byc grafikiem podobnej gry i innego grafika potrzebojesz tylko do wypomoci, to powinienesz rzucac wokol siebie obrazkami jak milioner dolarami :) powinienes umiec narysovac jakis dowolny(w temacie) obrazek na popytanie. A musi TO byc dla ciebie nie tylko pestka, ALE zabawa ktoro lubisz i pragnies sie podzielic z innimi, tak mozesz zbudowac sobie ime jako grafik/porzodny clowiek(nie tylko v GMclanie, ale na necie kdzie so specjalne servry dla grafikow etc.) to jest TO co sie liczy v ziciu. a potem znalezienie ludzi do spolpracy bedzie bardzo latwe. zatem zyce wszystkiego co napisalem bys mial a sie ci powiodlo.
-
calkiem prosty sposob(trza go dostosowac do twych potrzeb i napisac kod :) ) : 0, vybor jednostek 1, polecam przechowywac id vybranych jednostek v datowych strukturach jako so ds_ (viz help) 2, ilosc_linii_v_oddzialu = sqrt(_suma_vybranych_jedn) viz. help 3, licbza_zlonierzy_v_linii = ceil(suma_vybranych_zolnierzy/ilosc_linii_v_oddzialu) viz..help 4, wykonaj for dla ilosc_linii_v_oddzialu i v nim for dla licbza_zolnierzy_v_linii i kazdej jednostce zapisz jej miejsce v oddzialu (linia, mijsce v linii) 5, niezapomnij, dla 4, jest wazne by testowac exystencjezolnierzy bo niezawsze vybierzesz oddzial o pelnych linijach :) 6, jak na umiescienie jednostki na pozicje v oddziale 7, definuj punkt/instancji vodza, ktory trzyma pozycje calego odzialu i wszystci zolnierze trzymajo swo relatywno pozycje dla tego punktu/instancji 8, vylic relatiwno pozycje(offset) kazdego zolnierzy i zapisz go do zolnierza, tu mozesz aplikowac dowolno przerwe jak v miedzy linijami tak i miezdi z 9, kazdy zolnierz od teraz ma zmienac swe x,y na instnancja_vodza.x+jednostka.x_offset etc. napisalem z glowy, ale chyba nic waznego nieopominolem :) obroty oddzialu so jak od 6, tylko v 8, liczysz pozicje uwzglendniajoc direction instancja_vodza i uzywajoc sin/cos moze niejest to co chcesz takie proste, jak sobie wyobrazales, ale nic bez pracy niema wartosci. :thumbsup:
-
tak, wiem i sugeruje, ze mozna pomyslec o innym rozwiozaniu niz deaktywacja za kazdo cene. tym niemowie ze deaktywacja jest zla, tylko musi sobie dobrze pokombinowac co i jak.
-
moge sie mylic, ale chyba so programy do wyszukiwania zasobow z gier/programow a znalezienie obrazka bez naglowku to dla nich bulka z maslem :) pamietam takie cos zpred 7-10lat lepiej szyfrowac caly obrazek