Conclusion

What our team learned last week is that working with hexagon maps is hard! We spent a lot of time weeding out bugs that were caused by rounding errors and errors caused by coordinate transformations. Using pygame also brought its own limitations as we had to be very careful about how many blits were made ver frame and how to correctly handle hexagonal overlapping sprites. In the end, we only had about 1 day to really focus on making maps and implementing enemy behaviour, so there are only a few maps, and the enemies don't do much.

We did however accomplish a few fun things. The hexagon map display is fully 'dirty rect' compatible and renders quickly, even at 1280x800. It supports mixed column sizes, collisions, and even draws all columns over sprites. There is a built in maze generator and point-and-click map editor that saves and loads to JSON. We have a simple event system using a python dictionary, a fast simple physics systems with friction and gravity, and we've leveraged the fysom module for implementing enemy AI.

This was our first collaborative game making effort and we are planning on joining next pyweek. Next pyweek we will devote more time to planning before we start coding and set a timeline so that we don't get bottlenecked by a feature that is taking too long to implement.