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

Répondre à