Skip to main content

Scope and cut

Every mod I have shipped started smaller than the idea in my head. For Street Riders, the first version was a single NPC popping a wheelie in front of me. That was the whole thing on day one. Everything else came later, one increment at a time.

The beginner mistake is the opposite: you write down the dream mod, open the editor, and try to build all of it at once. Three days later you have half a spawning system, half a menu, nothing that runs, and no idea where the bug is. The error happened days earlier, when you chose the scope.

This lesson is about carving your idea into a stack of increments where every increment is playable on its own, and about the harder discipline: choosing what you will not build yet.

Every increment must run​

An increment is a version of the mod you can launch and watch. A task like "write the spawn function" is a piece, and a piece never runs alone. If you cannot press a key and see something happen, it remains an incomplete fragment.

Compare the two ways of cutting the same feature:

  • Fragment thinking: "the spawn code", "the state code", "the cleanup code". None of these runs alone. You only find out if they work when all three are done, which is exactly when a bug is especially hard to locate.
  • Increment thinking: "an actor appears in front of me", "the actor now has a phase I can see on screen", "the actor cleans up when I walk away". Each one runs. Each one is testable the moment you finish it.

Cut this way, a mod is not one big drop of code. It is a stack of playable increments, from the first actor appearing to the whole scene commanded by a menu.

Cutting a street encounter into increments​

Take the pitch of a street-encounter mod: a street corner comes alive, a rival approaches, shoves you, draws a weapon, a fight breaks out, bystanders panic, then it all winds down. That is far too much for one sitting. So we cut it, and each cut is an increment that runs:

  • an actor appears where I stand
  • the actor waits on the corner with an idle
  • a hostile rival appears and the two can fight
  • the actor gains a visible phase: calm, alert, engaged
  • I have debug keys to force and observe the scene
  • the phase becomes a real state machine
  • the machine is tested outside the game
  • the world reacts: bystanders flee, cleanup is guaranteed
  • a menu triggers and commands the whole thing

Notice what each line has in common: you can launch the game and judge it. That is the test of a good cut.

Deciding what you will not build​

Cutting scope is easy to say and hard to do, because cutting means saying no to parts of your own idea. Do it on purpose, in writing.

For this encounter, the honest cuts are:

  • no gang of riders arriving in formation, just the confrontation
  • no economy or territory ownership system
  • no branching dialogue, the confrontation is a short fixed chain
  • no custom animations authored from scratch, only clips the game already ships

Writing the cuts down does two things. It protects the increments you kept from swelling, and it gives you a backlog for later without cluttering the version you are building now.

The cut is the reason the mod ships at all.

Next, you check the game can do everything your increments ask of it: for each increment, the natives, animations and models it needs must actually exist. You confirm before you commit.