Tat Thang

03 / Films

The Last Little Call

My first film. Six minutes and forty seconds, made with AI tools, and a list of everything I got wrong making it.

2026 6:40 1080p · 24 fps · watercolour and ink in competition

This is the first film I have ever made. Watch it first. Everything below is about how it got made, not about what happens in it.

Six minutes and forty seconds. 9,612 frames. 131 hard cuts. I went in assuming the hard part would be generating footage. It was not. The hard part was throwing footage away, and learning that almost everything I believed about talking to these models was wrong.

Here is what cost me the most.

Telling a model not to do something plants the thing

I wrote does not eat. It ate. I wrote nothing hanging from it. Something hung from it. Naming the forbidden action puts the action in the context, and the model reaches for what is in the context.

The fix is not a stronger ban. The fix is to describe what occupies that space instead. Not “the doorway is empty” but “the doorway is a dark rectangle, dark and unmoving.” You cannot subtract. You can only fill.

One exception held every single time: bans aimed at the camera work. no pan, no zoom, locked-off. Those were obeyed on every generation. It is bans aimed at content that backfire.

Positive instructions plant the wrong thing too

I learned the ban rule, then walked into the mirror image of it. I wanted a character to move without hesitating. I wrote that it holds still for a beat first, ears up, head turned. The engine did exactly that. It hesitated.

I had ordered the precise thing I did not want, in positive language, and it was my fault, not the model’s. To get “no hesitation” you describe one unbroken movement and never mention stopping in any form, banned or otherwise.

Words cannot lock a face

Three attempts at a character sheet, three different faces. My instinct was to describe harder. Three facial details became eight. The eight I added came out right. The underlying face structure still drifted.

That is a ceiling in the method, not in the effort. A face is roughly seventy to eighty geometric relationships: eye spacing, cheekbone height, jaw angle, the width of the nose against the width of the face. Language reaches maybe ten or fifteen of them, and only in adjectives, never in numbers. The model fills the remaining sixty from its own priors.

Worse: five descriptions all pushing the same direction stack up. Slim, narrow, high, pointed, long. Each one is individually reasonable and together they drag the face somewhere I never asked for. Describing more densely made it less accurate, not more.

The professional answer turned out to be embarrassingly simple. Do not generate the face. Crop a face you already have and feed it in as the image. Anything that already exists as a picture should be supplied as a picture. Words are for the things you do not have a picture of yet.

The frame decides behaviour, and it outvotes every sentence

One shot kept failing. A character was supposed to move toward a destination, and kept stopping to interact with a nearby object instead. I rewrote the sentence many times.

The sentence was never the problem. I had put the camera between the character and the destination, so the destination was outside the frame. The only thing visible was the object. An animal, a thing it wants, and no other visible goal equals it goes for the thing. That is the logic of the composition, not a failure of the model. No amount of language beats a frame that says otherwise.

Rule I now check first: if a shot contains “move toward X,” then X has to be inside the frame.

A reference sheet is not a reference image

I built a clean location sheet: four wide panels of the same two towers across the top, three close details underneath. I fed it in to generate an establishing shot. The result had four towers.

The model does not read a sheet as “four views of one thing.” It reads it as one picture and rebuilds what it can count. This is the sharpest single lesson of the whole production. Multi-panel sheets work for characters, where what gets extracted is identity. They fail for environments in video, where the panels get counted as objects.

And the cheapest option turned out to be the correct one. The original plain image had the architecture right from the start. Three rounds of regeneration existed only to damage it.

The measurement I skipped, and the error that shipped

I had already written down a lesson about checking both edges of any scene I move. I did check. I checked by eye.

Four frames, one sixth of a second, an orphaned fade left over from an earlier edit order, sitting inside the version I had already submitted. Hiding inside a dark passage, which made it easier to miss rather than harder, because eyes adjust and stop reporting.

A lesson written as a sentence is a lesson you will skip under pressure. It only holds if it comes with a command that returns an exit code. I wrote the scanner the same night. It now runs after every reordering, before any export, and it fails loudly instead of politely.

Two numbers that stopped me guessing

Rebuilding the final master from the original source pieces instead of the assembled file recovered essentially nothing: 28.45 percent high frequency energy against 28.48. And upscaling to 1080p added no detail whatsoever. It presents the same information in a larger frame. I did it anyway, for one honest reason, which is that the festival watermark is authored at 1920x1080 and I wanted it composited at its native size rather than stretched.

I would have guessed wrong on both. Measuring took ten minutes.

What I would tell myself at the start

Decide everything on paper before spending anything on generation. The work is selection, not production. Write the lesson down as a command you can run, not as a sentence you intend to remember. And when a shot keeps failing, stop rewriting the sentence and go look at the frame.

It is a first film. I am certain a real filmmaker would find plenty to argue with in it. I would rather publish it with the mistakes attached than wait until I am good enough to pretend I never made them.

The record

Completed
August 2026
Running time
6:40