Finally felt confident enough to get started on building an open-source animation curve editor that works inside Game mode. Or maybe I just couldn’t handle the idea of stalling this any further since my next exhibit of the Interactive Energy Ball is less than two weeks away.

I started by cloning Sebastian Lague’s Curve Editor project and updating it to work with Unity 6.

In Sebastian’s repo, the actual Unity project was in a subdirectory called “Unity Project”; I initialized Claude in that subdirectory. However, a pet peeve of mine is when I open Unity Hub and don’t see the correct names for my Unity projects. Therefore, I gave Claude the task of moving the Unity project files up to the main directory. It did so successfully, but after finishing, all my attempts to communicate led to bash.exe errors. I tried closing and reopening Claude and resuming the previous convo, but there didn’t appear to be any conversations in Claude’s history. Moral of the story: always initialize Claude in the project’s parent directory.


Sebastian Lague is known for his Coding Adventures series. If you’ve never seen them, please do check them out. He’s incredible. Me, on the other hand—I’m working on a vibe-coding adventure. This runtime animation curve editor is getting quite involved.

I’ve been spending so much time debugging by copying my logs from the Unity Editor over to Claude. I’m not trying to use up my tokens quickly so using the Editor.log in AppData\Local\Unity\Editor log won’t work. Instead, I’ve been tediously clicking each log entry in my editor, highlighting the first line of the log trace, pasting it into my prompt.txt, and repeating until I’ve captured the entire relevant log.

I finally reached my breaking point and had Claude build me a utility for writing my logs to a text file in my project. It took all of 5 minutes to get it working. Sheesh, work smarter.


Almost a full day’s work, and I feel like I’m starting to get this thing to where I want it to be.

The control points do shift a bit from their visual representation whenever I release after clicking and dragging. Apparently, this shift is needed in order to convert these curves into a format that can be used by AnimationCurve.Evaluate().

Then, I went and tested AnimationCurve.Evaluate() against my new system’scurveEditor.CurrentCurve.Evaluate() to ensure it worked. It did!

The square uses CurrentCurve.Evaluate() and the circle uses AnimationCurve.Evaluate().

The best part about this working curve conversion is that I can select an AnimationCurve in the inspector and have it show up working in my curve editor!


I tried showing off my auto-optimization and deployment command to my coworker Rob, and of course, something went wrong. I swear, no matter how many times I think I’ve fixed my workflow, I discover a new edge case to screw things up. This time, it was because my convert-videos script was assuming all .webm files had already been converted and resized, but all the videos in this post were saved as .webm directly from Screen2Gif. I had to edit my conversion scripts so that the mark of an unconverted file is its lack of a proper naming format rather than a lack of a proper file format. This should be more bulletproof because I run my conversion scripts before my renaming script.

I’m already imagining the scenario where I run the optimization process on a machine without ffmpeg installed and the conversion fails yet still moves on to the renaming, and then I can’t get my conversion script to work even after setting up ffmpeg because my files are already renamed.

Thank you for this foresight Lord—I have just patched this edge case.

 Missing required dependencies!
📋 FFmpeg is required for video conversion. Please install it:
🚫 Aborting media conversion to prevent file corruption.
 Optimization tasks failed: Command "node scripts/media-optimization/convert-media.js" failed with exit code 1
🚫 Please fix the issues and try again.
 FFmpeg detected and available
 Sharp detected and available
📸 Phase 1: Converting images to WebP...
🎥 Phase 2: Converting videos to WebM...
🏷️  Phase 3: Renaming media files systematically...
🎉 Media conversion process completed successfully!

Now, I actually logged back on tonight not to fix my optimization bug, but to get in the habit of ending these posts with a summary of what I need to do next (this is what I told myself, anyways).

For my runtime animation curve editor, my next steps are to make curve preview buttons that look like the editor AnimationCurve previews. When pressed, these previews should open the curve editor with the preview curve loaded in. I’m sure this will take some refactoring (sigh) since (I think) my custom curve editor isn’t designed to be shared by mutliple curve objects, but I’m sure Claude can handle the challenge. Ah, the joys of vibing.


Tags: unity animation claude debugging opensource gamedev workflow