October 2024 Update

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:

  1. Select a group of 3 or more marchers
  2. Click the Draw Line button in the marcher editor or press L
  3. Draw a straight line
    1. Snaps to nearest step by default. You can hold Shift to make fine adjustments.
  4. Adjust the order the Marchers will be on the line by dragging them around
  5. Press Apply in the alignment editor or Enter 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.