Hi, just to sum up what has happened with my changes during the past weeks: - reduce memory usage due to unnecessary copies - do progressive loading of map ground image (avoid a 8-30MB duplicate image sitting in memory) - try to have all Surface in display format (leads to more optimized SDL software functions being called, or some memory savings) - more touchscreen-friendly widgets/controls - have special code for the Tile/TileItem objects in 16bits mode: use of colorkey instead of alphablending leads to both less memory used and improved framerates (6/10 -> 12/18 on my android target)
Note: it seems I have broken the big endian support in 24bits; I suspect it has to do with my loading code for the image ground. I'd like to fix that, but my only big endian device available is not debugging-friendly, so this will take time. Future work is about the Double class. It is killing performance on ARM targets: by changing code to use only floats (thus breaking network games of course), I bumped speed from said 12/18 fps to 16/24fps, and noticeable reduce lag (I suspect IA to freeze game up to 1-3s sometimes). Therefore, I will modify the parts that only need float: so far, linked to display, such as member/movement/surface/widget, or are only on one side (some part of IA). The parts that should not be modified: physics, network related code. There are some parameters stored as Double in for instance the Character class. As they can be safely cast to Double, I think they can be stored as float. Once this is done, I'll check if the internal storage can be changed from fixedpoint 48.16 back to 16.16. Having it has (16+x).(16-x) is too troublesome though. Regards, Christophe _______________________________________________ Wormux-dev mailing list Wormux-dev@gna.org https://mail.gna.org/listinfo/wormux-dev