Skocz do zawartości

Ice Cube

Użytkownicy
  • Postów

    208
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    2

Odpowiedzi opublikowane przez Ice Cube

  1. 16 godzin temu, Ice Cube napisał:

    Mój komputer ma windows 10 polska wersja

     

    1 znajomy ma komputer z windowsem 10 polska wersja

    2 znajomy ma komputer win 10 english version

     

    i tylko u mnie pokazuje dobrze pl znaki ąęćśń itp

    Może to być wina czcionki , która tylko ja mam na komputerze zainstalowaną ?

  2. W dniu 26.05.2021 o 22:58, gnysek napisał:

    A jaka wersja GameMakera ? W studio 2 ustawiasz prędkość w game properties, nie ma speeda per room.

     

    No i skoro wyskoczyło u kolegi 60FPS, to znaczy, że u niego działa normalnie a u Ciebie zamula :)

    Właśnie niestety gm8, ale muszę w nim skonczyć projekt, bo konwersja na gm2 nie wchodzi w grę.

    Muszę znaleźc złoty środek, by gra działała na słabych i mocnych kompach, tak by fps był w granicach 15-30.
    Czytałem coś o delta time, ale nie wiem jak to ugryźć.

     

    Dawno dawno temu jak programowałem w assemblerze aby spowolnić program stosowało sie pętele opóźniające z instrukcją NOP .

    ale muszę mieć jakiś odnośnik czasowy do danego komputera na którym gra będzie odpalana.

    Myślę nad czymś takim by :

    1.sprawdzić jak szybki jest dany komputer

    2.jeżeli za szybki to spowolnic odpowiednio do 30 fps stosując w kodzie coś co będzie odpowiednio zamulac kompa.

    3.jeżeli za wolny to poprostu wyświetlic napis, że procek nie daje rady :D

     

     

  3. Hej

    Gdy odpaliłem moja grę na kompie u kolegi z 15 fps nagle wskoczyło do 60 fps!!, w grę nie dało sie grać.. wszystko działało za szybko.

    Na moim kompie max fps to 15 i tak gra sie dobrze.

    jak to ograniczyć? , czy wystarczy w roomie wpisać speed =15  i wtedy wszędzie na szybkich kompach będzie te 15 ?

    czy idzie dać obiekt z kodem co będzie pilnować prędkości gry, by nie przekroczyła danego progu?

     

    pozdro

     

     

  4. bloki:

    //1

    d3d_draw_wall(1880,1310,80,1940,1310,0,background_get_texture(blok1),1,1);
    d3d_draw_wall(1940,1310,80,1940,1410,0,background_get_texture(blok1),1,1);
    d3d_draw_wall(1940,1410,80,1880,1410,0,background_get_texture(blok1),1,1);
    d3d_draw_wall(1880,1410,80,1880,1310,0,background_get_texture(blok1),1,1);
    //2 
    d3d_draw_wall(1990,1420,106,2190,1420,0,background_get_texture(blok2),1,1);
    d3d_draw_wall(2190,1420,106,2190,1580,0,background_get_texture(blok2),1,1);
    d3d_draw_wall(2190,1580,106,1990,1580,0,background_get_texture(blok2),1,1);
    d3d_draw_wall(1990,1580,106,1990,1420,0,background_get_texture(blok2),1,1);

    itd..

     

    player/camera:

     

    DRAW:

    d3d_set_projection(    x, y, z,  x + global.camcos, y + global.camsin, z + global.campitch, 0, 0, 1);

     

     

     

     

    grafiki nie umiem dodać ,pisze ze max grafiki to 808 b mb ,  a plik ma 46 kb..

  5. W gierce 3d mam sporo budynków różnej wielkości i pod różnym kątem porozrzucanych po planszy.

    gdy jestem blisko jakiegokolwiek budynku to wygląda on dobrze, natomiast jeżeli sie oddale od niego dosyć daleko

    to jego boki migotają, nakłądaja sie na siebie textury scian.

    bloki sa zbudowane z 4x d3d_draw_wall

    textury starałem się by miały wymiary 256x256  lub 256x128 pix.

     

    Idzie to jakoś poprawić ?

     

  6. Chciałbym aby w ciągu 60 sekund jeden obiekt pojawił się, a drugi zniknął przy uzyciu alpha, oczywiście uwzjgędniając w obliczeniu

    by nie dzielic przez zero.

    Drugi obiekt jakos nie działa.. nie mam pomysłu na niego

     

     

    sekunda+=1 if sekunda>59 end

     

    draw_set_alpha(sekunda*0.016666)

    draw obj1

     

    draw_set_alpha(1/sekunda)

    draw_obj2

  7. 24 minuty temu, gnysek napisał:

    A co ma kasowanie do odtwarzania? Jak się nie odtwarzają, to może nie są prawdziwymi wav.

    Właśnie w tym problem, ze dzwięki to prawdziwe wavy.

    Odkąd zacząłem stosować odtwarzanie dzwięków z zastosowaniem sound_add(),które po odtworzeniu są gumowane sound_delete()

    niektóre nie grają.. i to jest jakby losowo, gdy podopisuje coś w kodzie... 

    Zastanawiałem się, czy komputer nie potrzebuje więcej czasu na wyczyszczenie dzwieku z ramu jakąs komendą typu (nic nie rób przez jeden takt)

    ewentualnie czy moja karta muzyczna nie wyrabia..

      

  8. Dnia 15.03.2021 o 16:49, gnysek napisał:

    sound_delete po odtworzeniu :)

     

    Pojawił sie pewien problem z sound_delete ,poniewaz nie odtwarza niektórych dżwieków.

    przykladowy kod:

     

    wiadomosc=choose(0,1,2,3,4,5,6,7,8,9)
    if wiadomosc=0 { m=sound_add(working_directory+"\gra\1.wav",0,0) sound_play(m) show_message("1")
    sound_stop(m) sound_delete(m)}
    if wiadomosc=1 { m=sound_add(working_directory+"\gra\2.wav",0,0) sound_play(m)show_message("2")
    sound_stop(m) sound_delete(m)}

    itd..

     

    czasem nie odtwarza w ogóle dzwięku 7 i 5, w podobnych kodach tez niektóre dzwieki nie są odtwarzane

    a niektóre dłuższe pod koniec odtwarzania lekko sie przytną..

     

    Gdy sound_delete zamieniłem na sound_discard problem jakby wstępnie zniknął

    z czego bierze się ten błąd ?

     

    czy sound_delete() potrzebuje jakiegos czasu by opróżnić pamięć?

     

  9. 5 godzin temu, gnysek napisał:

    Nie piszesz nic o usuwaniu po pobraniu dźwięków, więc zakładam, że tego nie robisz, więc załadowanie wszystkich plików w projekcie gry na start dałoby ten sam efekt. Co więcej, tak mi coś wygląda, że w ten sposób który tutaj pokazałeś, niektóre dźwięki załadujesz ponownie pod nowym ID i będą zamulać niepotrzebnie RAM :) pamiętaj o zwalnianiu zasobów.

    jak to zwalniać ?

  10. 10 minut temu, adam014 napisał:

    Nie wiem jaka jest idea ładowania plików, ale ja bym je dodał przed załadowaniem gry w pierwszym roomie i potem się odwoływał do jakiejś zmiennej globalnej, bo w takim ifie to będzie za każdym razem wczytywany pliczek. Jak chcesz w locie to lepiej dllką, GM ładuje cały plik do pamięci i będziesz miał freeza zanim wczyta, a tak odtwarzanie będzie asynchroniczne ;) 

    Stworzyłem małego rpg-a ,ala Gothic :P są w nim postacie , mają sporo do powiedzenia więc  będą przemawiać XD,

    dlatego potrzeba ładowania plików. Pozostanie chyba if ze względu na ilość plików , a będą to w miare krótkie zdania :) 

  11. 21 minut temu, adam014 napisał:

    sound_play działa tylko na referencje zasobu a nie na plik :) Więc albo dodasz sobie pliki przez sound_add i potem je odtworzysz albo zrobisz odtwarzanie z dysku jakąś dllką :) 

     

     

    i=show_message_ext (" Graj ","kruk","muzyka2","muzyka3")

    if i =1 {m=sound_add(muzyka/kruk.wav,0,0) sound_play(m)}

     

    unknown variable !

     

    nie wiem jak to rozgryźć :(

    -------------------------------

     

     

    Masz dostęp do jakichś extensions odtwarzaczy plików muzycznych ?

    ale na gm.8 :D 

     

  12. Hej

     

    Chciabym odtwarzać dźwieki z katalogu "muza" dołączonego do gry ( będzie tam bardzo dużo dźwięków/głosów i nie mieszczą mi sie one jak pakuje je do gry w sound).

    Ponizej przykładowy kod, który myślałem, że zadziała:

     

    i=show_message_ext (" Graj ","kruk","muzyka2","muzyka3")

    if i =1 {if file_exists(muza/kruk.wav) sound_play(muza/kruk.wav)}
    if i=2 {if file_exists(muza/muzyka2.wav) sound_play(muza/muzyka2.wav)}
    if i=3 {if file_exists(muza/muzyka3.wav) sound_play(muza/muzyka3.wav)}

    show_message("koniec")
    game_end()

     

    macie jakieś pomysły ?

     

  13. Hej

     

    Czy spotkaliście się z tym, że przy przejściu do innego roomu jego heigh i width był zupełnie inny niz w jego setting ?

     

    player/step:

    jezeli nacisniesz escape:

    room_goto(room_pauza)

     

    room_pauza

    setting:width 1280 ; width:853

     

    room jest jakby mniejszy, nie widać wszystkich obiektów z prawej strony.

    room ma też background rozmiaru 1280/853 i jego tez nie wyswietla poprawnie jest obcięta prawa strona.

     

    Dodam, że niektóre roomy wyświetlają się poprawnie.

     

    Eksperymentowałem z show_message(room_heigh) show_message(room_width) i komunikaty pokazują poprawne wartosci,

    ale mimo tego obcina prawą strone...

     

    jakieś rady ?

     

     

     

    rozdzielczosc mojego ekranu w laptopie 1377/768

     

  14. Teraz, gnysek napisał:

    Ok, jeśli zwiększyłeś jedno i drugie równo, to problemu nie będzie i wtedy collision line nie jest potrzebne, o ile korzystasz z image_angle, zeby obrócić i grafikę i maskę. Wtedy wystarczy zwykły event kolizji, z jakimś obiektem-rodzicem wszystkich przeciwników.

     

    a jak obliczyć te x2,y2 w funkcji collision_line by działała analogicznie do pierwszego przykładu?

  15. 1 godzinę temu, gnysek napisał:

    to nie może być tak, ze jest długi na 20 pikseli, gdyż pocisk ma też swój "speed", który jeśli jest większy niż 20px, to wtedy "przeskoczy" niektóre obiekty. Wybierzmy więc to, co akurat jest większe:


     

    
    var _list = ds_list_create();
    
    var _num = collision_line_list(x, y, x + lengthdir_x( max(20, speed), direction), y + lengthdir_y( max(20, speed), direction), all, false, true, _list, false);
    
    if (_num > 0) {
        for (var i = 0; i < _num; i++;) {
            instance_destroy(_list[| i]);
        }
    }
    
    ds_list_destroy(_list);

     

    to jak to jest z tym speed ?,

    myślałem, że jeżeli speed=1 to obiekt co takt przesuwa się o jeden pixel..

    dlatego zwiększając speed,zwiekszałem maskę kolizji aby łącznie na drodze pocisku tworzyła sie jedna linia,która kolidowała by z kazdym obiektem bez "przeskakiwania"

    to pierwszy sposób w jaki chciałem to rozwiązać.

     

    Drugi sposób to sprite pocisku ma 1 pixel łącznie z maską,ale kolizje wyłapywała by funkcja collision line

    z tym, że jak napisałem wyżej nie wiem jak obliczyć wektor x2,y2 w tej funkcji,aby wydłużyć kolizje do 20 lub więcej pixeli w zależności ile pixeli musiała by wyłapywać funkcja przy speed=20

     

     

     

  16. dobra mała zmiana koncepcji

    a gdybym pominął spritea i dał zwykły pixel jako maske i draw

    speed pocisku np. 20

     i zrobił to na collision line to jak napisać aby pocisk kosił wszystko w promieniu 20pixeli niezależnie od obrotu playera

    bo narazie kosi tylko wszystko co 20 pixeli a reszte omija.

     

    pocisk /step

     collision_line(x,y,x+20 ??,y+20??,1,1)  - to nie działa,ale dałem poglądowo

     

     

    chodzi o to by pocisk był cienki na pixel,a długi na 20 pixeli

×
×
  • Dodaj nową pozycję...