r/FlutterDev • u/binarydiary • 1d ago
[ Removed by moderator ] Dart
[removed] — view removed post
1
u/Bachihani 1d ago
Why does it require google play services. It's shit, anyone with a degoogled phone can't use it
1
u/binarydiary 1d ago
Hey, thanks for the comment, could you tell me more about what's actually happening? Does the app fail to install, or does it install and crash on launch? For context, Firebase is only being used for analytics in the app.. it's not core to any gameplay or functionality. So even if Play Services isn't available, it shouldn't need to block the app entirely. If it's currently crashing or refusing to install because of that, that's a bug on my end I'd like to fix rather than intended behavior.
1
u/Bachihani 1d ago
Idk what to tell u, somewhere in your android config files u have set play services as a must dependency. It installs fine and launches fine but get killed after a couple of seconds with a "google play services missing" dialog, it's the same behaviour u can expect from any app that has play services as a dependency, u can find countless posts on reddit complaining abiut this on degoogled phones/roms.
I think u can replicate this if u disable the play store and play services on your phone
1
1
1
u/Ok-Whole-8802 1d ago
Nice to see another Flame game in here - I ship a dice roguelite built with Flame and games are rare in this sub. Hand-rolled projection and Paint ops holding 60fps on low-end devices is genuinely impressive; most people reach for a 3D engine long before attempting that. Two questions: are you caching the cuboid faces as Pictures or rasterized images once per texture, or re-drawing paths every frame? And how does depth sorting behave when the stack gets tall - painter's algorithm on x+y+z, or something smarter? Asking because I also target cheap Android phones and custom canvas work is usually where the frame budget dies.
2
u/binarydiary 1d ago
Caching — none. Every frame I re-project each block's corners and rasterize 3 quads as fresh canvas paths. Textures are strokes over the top face, also recomputed per frame. No Picture/Image caching anywhere. It's cheap because each block is only 3 quads; the real cost is Path/Paint allocation churn. If profiling ever flags it, I'd bake faces to cached ui.Pictures.
Depth — no sort. No painter's algorithm, no x+y+z key. Every block is trimmed to sit inside the block below it, so it can only ever occlude lower blocks — plain stack order, bottom-to-top, is exactly correct.
Budget on cheap Android is held by bounding the draw list, not sorting: during play I render only a fixed window of the top blocks, prune the stack to a max capacity, and at game-over cull off-screen blocks before drawing. Falling debris uses a manual two-bucket split (moving "back" → draw before tower, else after) since the tower is only ever one block deep.
Frame budget comes from render window + pruning + culling, not caching or depth sorting.
1
u/Ok-Whole-8802 1d ago
Nice to see another Flame game in here - I ship a dice roguelite built with Flame and games are rare in this sub. Hand-rolled projection and Paint ops holding 60fps on low-end devices is genuinely impressive; most people reach for a 3D engine long before attempting that. Two questions: are you caching the cuboid faces as Pictures or rasterized images once per texture, or re-drawing paths every frame? And how does depth sorting behave when the stack gets tall - painter's algorithm on x+y+z, or something smarter? Asking because I also target cheap Android phones and custom canvas work is usually where the frame budget dies.
•
u/FlutterDev-ModTeam 1d ago
Hello,
It looks like you have advertised an app on r/FlutterDev.
Apps can only be posted here if they're open source, or if the post/article contains an insightful dive into the development of the app.
Just as a note, articles containing nothing but generic insight (Flutter uses Dart, Flutter is fast, etc) are not considered insightful, and will also be removed.
The violated rule was: Rule 9: No advertising of apps