October 2024 Update
Alex Dumouchelle
October, 02 2024
Try it out - Install 0.0.3
For the first time, a monthly release is coming with an installer! Note that there are bugs and this code is not production-ready. Use at your own risk and have fun!
Update Video
What’s changed?
0.0.3 is close to completion!
Lines
After some trial and error, writing a lot of code and deleting a lot of code, I found a method for line creation that strikes a great balance between usability and maintainability. Originally, I imagined shapes to be their own separate entity stored in the database like a marcher would be. With this method, shapes could be moved on their own, persist across pages, and be edited with marchers automatically adjusting to them. While I think this is a great feature and lends a lot to creativity, it was getting really hard to implement. My history table (what handles undo/redo) wasn’t set up to handle more objects easily, the listeners on the canvas don’t really know how to handle editing anything except marchers, and my code to handle all of these changes was turning into a mountain of technical debt.
What I settles on instead is what I will call the “Alignment Event” feature. This is how it works:
- Select a group of 3 or more marchers
- Click the
Draw Line
button in the marcher editor or pressL
- Draw a straight line
- Snaps to nearest step by default. You can hold
Shift
to make fine adjustments.
- Snaps to nearest step by default. You can hold
- Adjust the order the Marchers will be on the line by dragging them around
- Press
Apply
in the alignment editor orEnter
to apply the changes
Rather than having a line be a persistent object, it only exists in an alignment event. This allows me to utilize all of the undo/redo logic I already have and take advantage of the canvas’ ability to handle marcher selection.
There may be a day when persistent shapes are added in addition - perhaps “Quick Shapes” vs “Persistent Shapes”. But in the interest of not solving a user story before it exists, I went with the lowest hanging fruit.
New field types
There’s a new button in the topbar that allows users to pick from six different field types.
- High school (with or w/o end zones)
- College (with or w/o end zones)
- Pro (with or w/o end zones)
My choice to make end zones separate field stems from many drill writers likely never needing them. I thought for a long time about which to do over the other (and almost making a snapchat poll to make the decision for me), so I decided to just do both and let the user choose.
It’s important to note that the way coordinates are handled right now don’t support switching between fields of different sizes (with and w/o endzones) while maintaining the same position on the field. Coordinates right now are based off of the top left corner, so if you switch from a non-end zone field to an end zone one, your marchers will be offset by two yard lines.
Perhaps in the future I should make coordinates based on the center-front point. You can switch between fields of the same size with no issue.
Goals accomplished this month
- Refactor electron database code
- To avoid premature abstraction, I didn’t do this once I removed the persistent marcher lines
- Draw and distribute lines of marchers
- Ability to switch to high school football field (and pro + with and w/o end zones as a bonus)
Plans for November
Must haves -
- Fix the weird marcher list errors
- Add curves
- Ability to add measures manually
Nice to haves -
- “Snap to grid” mode where marchers can only move by whole step
Remember, you can always check the GitHub project to see what current issues are in the queue.