Udało się zbudować FlightGear na Termux (Android). Za mało FPSów mam na Zink (zamienia OpenGL na Vulkan, ale sterowniki są od Freedreno; Android nie ma OpenGLa), przedział 3-5 FPS na low.


Z jednej strony Flightgear nie jest zoptymalizowany, z drugiej smartfon raczej jest "średni" pod względem mocy procesora, GPU itd., a z trzeciej wydaje się, że użycie "Android Vulkan wrapper" z Zink może dać dodatkowe kilka - kilkanaście FPSów


Pobawię się jeszcze


#linux #android

28aa4a48-acd7-4b85-8067-666f3541ac43

Komentarze (10)

koszotorobur

@fervi - ciekawy eksperyment

fervi

@koszotorobur Troszkę Szczególnie, że telefon (dzięki DeX, Ready Now) może robić za komputer. A jeszcze mieć do tego kolekcję aplikacji i gier Linuksowych (ARM) ... a w przyszłości Windowsowych (Hangover Wine / Windows for ARM). Może będzie można się pozbyć komputerów

FoxtrotLima

@fervi napiszesz krok po kroku co i jak?

PS. X-plane spróbuj. Lepiej zoptymalizowany i też jest na linuxa.

fervi

@FoxtrotLima X-Plane tutaj nie zadziała (sensownie) z dwóch powodów


  • Aby zbudować aplikację na Termux, potrzebujesz kodu źródłowego. Gdyż o ile te aplikacje są "Linuksowe", to de facto są Androidowe. Po prostu na Androida masz większość rzeczy jak na Linuksie, ale niekompatybilnych z Linuksem. X-Plane nie udostępnia kodu (chyba :D)

  • Można za pomocą chroot / proot odpalić sobie Debiana (na podobnej zasadzie jak Termux, że tak powiem), ale X-Plane jest na procesory x86 (Intel, AMD), a smartfony mają architekturę ARM (Snapdragon, Exynos, m1 itd). jakby przygotowali wersję na ARM Linuksa, to by można było odpalić.


Ogólnie chcę by Flightgear trafił do repozytorium Termuksa, wtedy łatwiej będzie wgrać, bo teraz to trzeba kompilować, a to spooooro czasu zajmuje.

FoxtrotLima

@fervi no tak, x-plane nie jest otwartoźródłowy. Nie wiedziałem, że musiałeś kompilować FG ze źródeł.

Poczytam sobie trochę o tym bo sam lubię tego typu zabawy.

baklazan

@fervi A tak z ciekawości - jeśli API andka jest oparte o Linucha (bo to w końcu fork jego kernela...), to w jakim zakresie jest niekompatybilne?


  • te same metody ale inne parametry?

  • metody których nie ma w API linucha i a są w Andku i odwrotnie?

  • różnice w zakresach wartości zwracanych?


Zastanawiam się jak ciężko byłoby napisać warstwę abstrakcji na Andka żeby był "linux-compatible".

fervi

@baklazan Ogólnie nie jestem programistą


  • Sporą różnicą jest inny Libc. W Linuksie jest to zazwyczaj GNU Libc (glibc), a w Androidzie - Android libc

  • Android Libc obsługuje tylko język angielski (XD), dlatego Termux jest po angielsku

  • Sama budowa niskopoziomowa systemu potrafi być inna. Np. Android to system typu atomowego, gdzie core systemu się nie zmienia (read only). Tak więc domyślnym katalogiem w Linuksie jest /, a w Termux - /data/data/com.termux/files (i aplikacje muszą to uwzględniać)

  • Pthread nie jest przeniesiony jeden do jednego

  • Inne usługi potrafią być

  • Init jest inny

  • Ogólne podejście do security w Androidzie jest na wysokim poziomie w porównaniu do systemów typu Linux czy Windows. Oczywiście mówię o domyślnej konfiguracji, bo jak ktoś zechce to se zrobi fortecę.


Jednakże jeśli mówimy o takich ogólnych dysfuncjach na linii Termux <-> Linux to ich nie ma dużo. No prócz angielskiego i braku dostępu do niskopoziomowych rzeczy + nie pracujesz na root to wszystko z grubsza jest. Chcesz mieć Firefox? Możesz. Chcesz mieć Chromium? Możesz.


___


Co do warstwy abstrakcji, to Termux takową jest. Nie jest on kompatybilny bezpośrednio z Linuksem, ale pośrednio tak (no bo to apki Linuksowe zbudowane w środowisku Androida). Możesz Chroot / Proot użyć, by "wejść" do kontenera Linuksowego. Czyli możesz sobie wgrać Linuksa i za pomocą tych komend "przejść na niego" z poziomu Termux. Natomiast Termux pracuje nad tym, by była jakaś kompatybilność z Androidem, np. Android ma inne API dźwięku (OpenSL ES). Więc w Termux jest tak, że pulseaudio ma sterownik, który przykazuje dźwięk do OpenSLES).


Jak chcesz zrobić, by był dźwięk w tych Linuksach Chroot, to musisz zrobić "most" z pulseaudio Linuksowego do Termuksowego, bo Linux nie jest do tego przeznaczony domyślnie (do wsparcia środowiska Androidowego).

dotevo

@fervi no chyba bionic jest głównym problemem, ale w świecie linuksa jest wiele alternatyw dla libc. No i tak jak mówiłeś. Da się odpalić standardowe libc e chroot bo też kiedyś odpalałem debiana na androidzie. Dziwię się, że nie powstała jakaś dystrybucja albo która kompiluje paczki z bionic.

kkdawid

Super robota, gratulacje! Takie zabawy zawsze są świetne. Kiedyś odpaliłem open source grę strategiczną na komputerze aplikacyjnym w samochodzie na ARMie XD

fervi

@kkdawid Plan hipotetyczny jest taki, by przeportować wszystkie gry Open Source Inni portują dużo programów, a ja chcę stricte na grach się skupić

Zaloguj się aby komentować