Sabbatical Log: November 15thPosted: 2018/11/23
This blog series is running about a week behind my actual work, giving me time to clean things up. The date the actual work was done is in the title, horizontal lines indicate when I stopped writing and started coding.
I’ve wrapped up my performance work for now, making the following changes:
- Looking up stateful components of entities is now O(1) instead of O(number of stateful components)
- Special cased some FixedPoint multiply and divide operations to avoid extra work
- Added a coarse first pass to collision detection that excludes whole sets of polygons that could not possibly be colliding with anything before going into polygon-by-polygon checks
- I already had a quick bounds check for individual polygons, but adding a coarser first pass reduces the number of polygons considered by 50-90%
Debug build performance is quite snappy again, so I can get back to what I’d been wanting to do yesterday – responding to collisions.
Real life intervened today and I didn’t get nearly as much coding time in as I’d hoped, but I did manage to get animation switching for the player working. To illustrate, I did standing and walking animations for the cardinal directions.
They’re kind of janky, but they’ll do for now. Making any sort of animation is time consuming, if only because there’s a lot of little fiddling to make things line up. Again, hot reloading of assets and animations really increasing the iteration speed but these 24 animations (up/down/left/right x standing/walking x head/body/feet) still took ~2 hours to get to “good enough”.