Skip to content
  • English
  • Polski
Digital Karabela
Digital Karabela
Primary Navigation Menu
Menu
  • Strona główna
  • Produkty
  • DevBlog
  • Castle Engine
  • Kurs bash
  • O firmie

Mierzenie upływu czasu w Androidzie

Castle Game Engine Logo

Podczas testowania gry, nad którą właśnie pracuję natrafiłem na dziwny błąd. Czasami, raz na 10-20 minut gra zawieszała się na moment. Najpierw zauważyłem, że silnik wypluwa w tym momencie dużą liczbę wierszy debugu:

Time: Detected gettimeofday() going backwards on Unix, workarounding. This is known to happen on some Android devices 

Ograniczyłem więc debug, do jednej linijki, co znacznie skróciło czas przestoju, lecz występował on nadal. Podobnie jak Michalis założyłem, że to pewnie wada mojego telefonu. Jednak ciągle zastawiało mnie dlaczego inne gry działają płynnie.

Zegary w Androidzie

Po krótkim dochodzeniu okazało się że czas w androidzie można pobierać na kilka sposobów. Domyślny zegar zwany „ściennym”, dość często synchronizuje się z siecią co może powodować skoki do przodu i do tyłu. Tego zegara używa właśnie funkcja fpgettimeofday(), z której korzystało CGE i silnik fizyki Kraft.

Monotoniczny zegar w Androidzie

Aby skorzystać z zegara, który gwarantuje monotoniczną ciągłość należy użyć funkcji clock_gettime(CLOCK_MONOTONIC) z modułu Linux. Po wprowadzeniu tych zmian gra zaczęła działać idealnie bez żadnych chwilowych zamrożeń.

Poprawki Castle Game Engine i Kraft

Jeżeli, planujesz stworzenie gry dla Androida pamiętaj, że w Castle Game Engine problem został rozwiązany 18 sierpnia 2019r.

W oficjalnym repozytorium Kraft został naprawiony 21 sierpnia 2019r.

2019-09-02
Poprzedni wpis: Strumieniowanie muzyki w Castle Game Engine
Następny wpis: Kompilacja i uruchamianie gier Castle Game Engine na Raspberry Pi

Wypróbuj moją nową grę! Zupełnie za darmo!

Logo Bricks Color Pick

Bricks Color Pick to zupełnie nowe podejscie do klasycznego arkanoida! Brak dolnej belki! Zasady gry są bardzo proste: Twoim zadaniem jest zmienianie koloru piłki na kolor cegły, z którą piłka się zderzy. Gdy kolor będzie taki sam cegła zostanie zniszczona, w przeciwnym wypadku stracisz życie.

Pobierz z Google Play

Zrzut ekranu pozimu 37/40 5-6 kolorów

Dodatkowo można zmienić kierunek ruchu piłki, przez co nie musimy czekać wieczność aż trafi w ostatni blok.

QR Code Google Play Bricks Color Pick

Zrzut ekranu poziom 62/80 (Tryb relaks)

Ostatnie wpisy

  • Jak skompilować bibliotekę OpenAL z Oboe dla systemu Android
  • Lazarus 2.0.12 wydany
  • Jak naprawić zamrażanie GUI LMMS w systemie Linux?
  • Jak zaktualizować wine do wersji 5.0.0 w Linux Mint 19 / Ubuntu 18
  • Agile Commander 1.2.3 wydany!

Kategorie

  • DevBlog
  • Linux
    • Kurs bash
    • Narzędzie WoeUSB
  • Programowanie
    • Język D (dlang)
      • Kontrolki DlangUI
    • Język Object Pascal
      • Lazarus (pl)
    • Narzędzie make
  • Promocja
  • Tworzenie gier
    • Castle Engine (pl)
    • Godot
  • Windows 10
    • Narzędzie WoeUSB

Produkty:
Agile Commander
Bricks Color Pick

 

 

Digital Karabela – Andrzej Kilijański
76-015 Wyszebórz 32, Poland
https://digitalkarabela.com
Kontakt
Polityka prywatności