Skocz do zawartości

Utermiko

Użytkownicy
  • Postów

    796
  • Dołączył

  • Ostatnia wizyta

Treść opublikowana przez Utermiko

  1. Utermiko

    Pętla gry

    Wydaje mi się, że ten dział będzie odpowiedni. Otóż chodzi mi o to, która pętla gry jest wg. was bardziej optymalna? Z góry mówię, że czytałem już to: http://www.koonsolo.com/news/dewitters-gameloop/. Wszystko przedstawiam w pseudo kodzie. 1) Pętla ze stałą ilością aktualizacji, która redukuje fps'y jeśli mamy za mało mocy. const int FRAMES_PER_SECOND = 60; const int SKIP_TICKS = 1000 / FRAMES_PER_SECOND; int next_game_tick = GetTickCount(); int current_time = GetTickCount(); int sleep_time = 0; bool game_is_running = true; while( game_is_running ) { current_time = GetTickCount(); if (current_time >= next_game_tick) { next_game_tick += SKIP_TICKS; update(); if(current_time < next_game_tick) render(); } } 2) Pętla w której obiekty poruszają się na podstawie czasu ostatniej klatki, czyli z użyciem delta time int prev_frame_tick; int curr_frame_tick = GetTickCount(); bool game_is_running = true; while( game_is_running ) { prev_frame_tick = curr_frame_tick; curr_frame_tick = GetTickCount(); update( curr_frame_tick - prev_frame_tick ); render(); } (pewnie gdzieś walnąłem błąd w kodzie bo szybko przepisywałem :P) Z góry dzięki za pomoc. @EDIT Jeszcze znalazłem: http://gamedev.stackexchange.com/questions...iable-time-step. Chyba lepszym wyborem będzie opcja pierwsza, ale czekam na inne opinie.
  2. Ty również. https://forum.gmclan.org/index.php?showtopic=29832
  3. :thumbsup: KISS Moze odpowiedzia na twoje pytania bedzie to, ze nie my to przenieslismy do tego dzialu. Nie pomyslales, ale wystarczylo zapytac. W takim razie po co to wstawiasz skoro nikt nie może skorzystać? Rozumiem, gdyby był to jakiś fajny efekt graficzny czy coś.
  4. Z tego co wiem to CrackGM zrobił coś podobnego. Proponowałbym dać jakiś "celownik" dla ułatwienia unikania kolizji. Zdawało mi się, czy szybkość gry wzrasta wraz z ilością punktów?
  5. postawienie wordpressa dużo czasu nie zajmuje
  6. No dobra ale gdzie jest ten skrypt, bo mi tylko execa pobiera. @EDIT I do tego lekko zbugowane. Po ok. 30 sec było widać tylko żółtą kropkę na dole ekranu a contact id cały czas wzrastało.
  7. Konkretnie to Huderowi chodziło o funkcję: GML filename_name(fname) Returns the name part of the indicated file name, with the extension but without the path. Nie siedzę w GM to nie kojarzę większości funkcji ;p
  8. Dobra, sprawdziłem u siebie. Stwórz sobie skrypt o nazwie get_file_from_path. GML //SKRYPT get_file_from_path //wyodrębnia nazwę pliku z pełnej ścieżki //argument0 - ścieżka var len, last_char; len=string_length(argument0); last_char=-1; for(i=0; i < len; i+=1) if (string_char_at(argument0, i) == '\') last_char=i; //wyszukiwanie ostatniego ukośnika return string_copy(argument0, last_char + 1, len); i użycie dla twojego przypadku: GML wtyczka = get_open_filename("Wtyczka AldStream Biblioteka DLL ( *.dll )|*.dll","") if wtyczka != '' { global.wtyczka = get_file_from_path(wtyczka); } else {exit}
  9. Utnij se. https://gmclan.org/index.php?wiki=article&zm=32 Mniej więcej to wygląda tak: GML global.wtyczka="C:\Users\Paffcio\Pictures\jakies_zdjecie.png"; var len, last_char; len=string_length(global.wtyczka); last_char=-1; for(i=0; i < len; i+=1) if (string_char_at(global.wtyczka, i) == '\') last_char=i; //wyszukiwanie ostatniego ukośnika global.wtyczka = string_delete(global.wtyczka, 0, last_char + 1); Nie sprawdzałem czy działa.
  10. pętla lub użyj kolejek GML for(i=0; i < 6 - 1; i+=1) global.a=global.a[i+1]; Indeksuj tablice zawsze od 0.
  11. Przecież nie musisz używać wszystkiego. Jak zależy Ci na samych input boxach (tudzieć text boxach) to wywal niepotrzebne funkcje.
  12. 1) wysyłasz pakiet informujący, że wszystko dotarło i voila. Co do paska postępu to odbierasz mapę - ustawiasz pasek na 25%, odbierasz pozycje obiektów - ustawiasz pasek na 50% itd. 2) https://forum.gmclan.org/index.php?showtopic=27748
  13. Utermiko

    Pobieranie pliku

    Zgraj swojego IE na dyskietkę i daj mu.
  14. GML //EVENT: kolizja z graczem alarm[0]=room_speed * 1; GML //EVENT: alarm 0 instance_destroy();
  15. Robisz skrypt update_game, gdzie umieszczasz całą logikę, tzn. przesuwanie tych potworów itp. Dajesz obiekt o_control i stawiasz go na roomie. Dodajesz eventy które przechwytują wejście z klawiatury, przesuwasz gracza i dajesz skrypt update_game (w tych eventach ofc).
  16. Proponowałbym inne rozwiązanie do spowolnienia: GML if(i >= n_razy) { xy= ds_stack_pop(stosx) yx= ds_stack_pop(stosy) i=0; } else i+=1; W przypadku kodu Threefa liczba mogłaby osiągnąć duże wartości jeśli dosyć często używamy cofania.
  17. Nie zauważyłem, że dałeś x zamiast mouse_x oraz y zamiast mouse_y GML if(mouse_x >= parent_tlo.x && mouse_y >= parent_tlo.y && mouse_x <= parent_tlo.x + 100 && mouse_y <= parent_tlo.y + 100)
  18. GML if(x >= parent_tlo.x && y >= parent_tlo.y && x <= parent_tlo.x + 100 && y <= parent_tlo.y + 100) Mała pomyłka w moim kodzie :P
  19. 1) Inaczej można GML x1=100; y1=100; x2=300; y2=200; if(mouse_x > x1 && mouse_y > y1 && mouse_x < x2 && mouse_y < y2) { //kod } 2) GML if(obiekt1.x >= obiekt2.x && obiekt1.y >= obiekt2.y && obiekt1.x <= obiekt2.szerokosc && obiekt1.y <= obiekt2.wysokosc) { //cos } Pod obiekt2.szerokosc i obiekt2.wysokosc podstawiasz rozmiary. @EDIT No i origin sprite musi być ustawiony na 0,0.
  20. 1) collision_rectangle 2) GML if (obiekt1.x == obiekt2.x && obiekt1.y == obiekt2.y) { //cos sie dzieje }
  21. Utermiko

    Slap

    Dobra, to zostawię obecne funkcje i zrobię aliasy z dopiskiem AsCharPtr które konwertują każdy typ. Nie wiem co może być przyczyną, że musisz coś tam dopisywać. Mi normalnie się importuje przez P/Invoke z C#. @EDIT Proszę https://gmclan.org/up8194_3_DotNetSlapCross...1_0_fixed2.html. Wszystkie funkcje z dopiskiem AsCharPtr przyjmują i zwracają char* oprócz funkcji związanych ze wskaźnikami (LPVOID). Pamiętaj, że to wszystko odbywa się kosztem wydajności.
  22. Utermiko

    Slap

    Mogę zrobić, ale czy nie lepsza by była konwersja po stronie Slapa? @EDIT Funkcje LoadDll, CreateObject, RemoveObject, Add***Argument też mają zwracać char* czy zostawić int?
×
×
  • Dodaj nową pozycję...