Tai rekisteröidy jo tänään!
Sivuja: [1]

Terraria-mato

0 jäsentä ja 1 Vieras katselee tätä aihetta.
Aloitusviesti: 06. Kesäkuu 2016, 18:36 (muokannut Igno 06. Kesäkuu 2016, 22:12)Peukku ylös +3Peukku alas -0
Tein matomoottorin. Sen tekeminen oli ketuttavaa. Ajattelin säästää muut vaivalta. Nauttikaa.
Matomoottori.zip

Projekti on puolivillaisesti kommentoitu kaikkialta.
Pyörii 2000 ruumiinosalla about 60fps mun koululäppärillä, että aika tehokas on. Voi lisäillä huoletta peleihin matoja :--------)

Ainiin hups, unohdin tehä tuen monelle madolle samaan aikaan, noh, lisään sen lähiaikoina. Jos jolllain on kiire omien matojensa kanssa niin voi tehdä kyseinen toimenpiteen heittämällä kaikki tietyn madon osien (obj_body) id:t  gridiin ja looppaamalla niiden läpi with(obj_body):n sijasta.

EDIT: Uusi versio päivitetty, joka tukee useita matoja samaan aikaan, sekä korjaa EHKÄ Dartin ongelman, en osaa sanoa, koska en itse kyseistä bugia ole saanut.

* Matomoottori.jpg (75.28 kilotavua, 1282x993 - tarkasteltu 239 kertaa.)
2x
Tykkään

#1: 06. Kesäkuu 2016, 20:01Peukku ylös +0Peukku alas -0
Crashaa heti

___________________________________________
############################################################################################
FATAL ERROR in
action number 2
of  Step Event0
for object obj_worm:

lerp argument 1 incorrect type (5) expecting a Number (YYGR)
 at gml_Object_obj_worm_StepNormalEvent_2 (line 23) -     x = lerp(x1,x2,rat); //Katsokaa lerp():in toiminta manuaalista, mun lempparifunktioitani
############################################################################################
Tykkään
#2: 06. Kesäkuu 2016, 20:43Peukku ylös +0Peukku alas -0
Hmm jännää ite en saanu tota kertaakaan, vaikka aika paljon tällä ehdin leikkimään. Googlekaan ei kovin avulias ole, mutta koita ainakin heittää tää createen ja kato jos toimis:
math_set_epsilon(0.000001);

Tuleeko tää siis aina vai vaan kerran?
Ja ihan Windowssilla tapahtu tää, etkä exportannu millekään muulle alustalle?
Jos ei auta vieläkään niin tuun jutteleen privassa, ettei tää ketju täysin floodaannu mun debuggailuun.
Tykkään

#3: 07. Kesäkuu 2016, 20:52Peukku ylös +0Peukku alas -0
Hei

crashaa kun pos arvo on negatiivinen ja ei löydä ds_lististä arvoa (undefined).

Madon voi potkaista liikkeelle korvaamalla tällä step event koodia tällä mutta varsinainen ongelma löytyy ilmeisesti create puolelta.


//Etsitään listalta solun arvoa (xx) vastaavat koordinaatit

for(var c = 0; c < cells; c++) {
    with(cell_grid[# c, 0]) {
        var pos, x1,x2,y1,y2,rat;
        xx += other.point_timer;
        pos = floor(xx);
       
        if (pos >= 0)
        {
            x1 = ds_list_find_value(other.pos_x, pos);
            y1 = ds_list_find_value(other.pos_y, pos);
            x2 = ds_list_find_value(other.pos_x, pos+1);
            y2 = ds_list_find_value(other.pos_y, pos+1);
            rat = xx - floor(xx);
       
            x = lerp(x1,x2,rat); //Katsokaa lerp():in toiminta manuaalista, mun lempparifunktioitani
            y = lerp(y1,y2,rat); //Laskee arvoja kahden muuttujan väliltä: lep(value1, value2,percentage)
           
            ang1 = ds_list_find_value(other.ang, pos); //Haetaan vastaava kulma listalta
            ang2 = ds_list_find_value(other.ang, pos+1);
            image_angle = lerp(ang1,ang2, rat)
        }       
    }
}

Tykkään
#4: 08. Kesäkuu 2016, 17:17Peukku ylös +0Peukku alas -0
Itse juuri latasin ja pistin käyntiin, ensimmäinen asia mitä tulee:

___________________________________________
############################################################################################
FATAL ERROR in
action number 2
of  Step Event0
for object obj_worm:

lerp argument 1 incorrect type (5) expecting a Number (YYGR)
 at gml_Object_obj_worm_StepNormalEvent_2 (line 24) -         x = lerp(x1,x2,rat); //Katsokaa lerp():in toiminta manuaalista, mun lempparifunktioitani
############################################################################################


Alustana 64bittinen windows 10, game maker studion asetukset: Target: Windows, Configuration: Default.

Createsta kyllä löytyy tuo epsilon -lauseke, mutta se ei korjaa ongelmaa.
Tykkään
Lainaus
private double getAlcohol() {
    return this.alcohol;
}
"Pain makes you stronger, tears makes you braver, heartache makes you wiser - and vodka makes you not remember any of that crap."
#5: 08. Kesäkuu 2016, 18:17Peukku ylös +0Peukku alas -0
Ongelma kuulosti hyvin tutulta ajalta jolloin päivitin GameMakerin uudempaan versioon, joten päätin katsoa jos saisin jotain selvyyttä asiaan.

Ongelman ydinhän on se että GameMakeriin on päivitysten myötä alettu tuoda <undefined> arvoa, joka ei ole lukuarvo eikä sitä myöskään voi verrata sellaiseen. Ennen vanhaan ds_list_find ja vastaavat palauttivat -1 tai jotain vastaavaa jos haku meni arvoalueen yli tai solmu oli alustamaton. Uudemmissa versioissa palautuukin välillä undefined, ja hommat lakkaavat toimimasta. Korjaus on kuitenkin jokseenkin helppo, käyttäkää is_undefined-funktiota. is_undefined palauttaa true jos muuttujan arvo on undefined, muussa tapauksessa false. Tässä tapauksessa voidaan siis ennen lerppauksia tarkistaa onko jompi kumpi arvo undefined tähän tapaan:

        if (!is_undefined(x1) && !is_undefined(x2))
            x = lerp(x1,x2,rat); //Katsokaa lerp():in toiminta manuaalista, mun lempparifunktioitani
           
        if (!is_undefined(y1) && !is_undefined(y2))
            y = lerp(y1,y2,rat); //Laskee arvoja kahden muuttujan väliltä: lep(value1, value2,percentage)
       
        ang1 = ds_list_find_value(other.ang, pos); //Haetaan vastaava kulma listalta
        ang2 = ds_list_find_value(other.ang, pos+1);
        if (!is_undefined(ang1) && !is_undefined(ang2))
            image_angle = lerp(ang1,ang2, rat)


Sitä en sen sijaan tiedä miksi välillä yritetään hakea arvoa jota ei ole.

Toivottavasti tästä oli kuitenkin hyötyä!
Tykkään
Tässä oli ennen uljas kokoelma badgeja.

Sivuja: [1]
 

Powered by SMF 2.0.11 | SMF © 2006–2009, Simple Machines LLC