Game SD Emotion Prompt
One dropdown for a whole character's mood
- positive
- negative
- filename_prefix
- emotion_tag
The whole job here is "same character, different mood," and Game SD Emotion Prompt is the node that stops you from typing the same prompt skeleton a dozen times. Pick an emotion from a dropdown and it hands you the assembled positive prompt, the negative prompt, and a ready-to-use filename prefix. The name suggests some kind of model or API. It's a lie - there's no model, no key, no network call. It just builds strings. That's the entire point.
Why you'd reach for it
Character consistency is the most complained-about problem in this whole hobby - the model has no memory of the character it drew last time, and every run re-rolls the dice. The pack's strategy, straight from the README, is to lock everything that defines the character and vary only the emotion. You keep your character_core (hair, eyes, outfit - the appearance description that must not change) fixed, and you flip the emotion dropdown. It also bakes in the quality-tag boilerplate - high quality, best quality, chibi, game character sprite, solo, full body, centered - so every image in the set shares the same framing vocabulary instead of drifting.
How it works
The node joins a few prompt fragments into one positive and one negative string:
- Positive = base quality/sprite tags + your
character_core+ the emotion preset's positive + anything inextra_positive. - Negative = a base block (bad hands, bad anatomy, watermark, etc.) + the preset's negative +
extra_negative.
There are eleven presets baked in: default, smile, laugh, sad, crying, angry, embarrassed, surprised, pouting, worried, sleepy. The emotion_strength slider (0.25–1.75, default 1.0) is the knob you actually turn - when it's not 1.0, the emotion phrase gets wrapped in standard ComfyUI weight syntax, so sad expression becomes (sad expression:1.25). Push it up for a stronger mood, drop it for subtle.
Inputs worth knowing:
emotion- the dropdown. This is your main control.character_core- the appearance description. Don't change it per emotion. That's the consistency rule that makes the whole approach work.emotion_strength- the weighting, the one slider you'll touch run to run.extra_positive/extra_negative- append your own tags (a LoRA trigger word, a background tweak) without editing the presets.character_nameandfilename_prefix- only affect the filename output.
Outputs: positive and negative wire straight into a text encoder or an Efficient Loader's positive/negative slots. filename_prefix is a slugified {prefix}_{character_name}_{emotion} string (spaces become underscores, non-alphanumerics stripped) ready for a Save Image node. emotion_tag just echoes the emotion name, handy for metadata or file organization.
Installing it
Same as the rest of the pack - no dependencies beyond what ComfyUI already has, no model downloads, no requirements.txt to fight with.
Via ComfyUI Manager: search "comfyui-game-sd-character-pack", install, restart.
Or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/hyyyein/comfyui-game-sd-character-pack
# restart ComfyUI
You'll find all three nodes under "Game SD Character".
Common issues
- "I can't override the baked-in negative." The base negative includes
nsfw, nude, bare chest, and the base positive includessimple white background. These are hardcoded innodes.py. If you're doing a clean-SFW sprite workflow that's probably fine, but if you hate a specific baked-in tag, your options areextra_positive/extra_negative(additive only - later tags don't remove earlier ones) or editingBASE_POSITIVE,BASE_NEGATIVE, andEMOTION_PRESETSinnodes.pydirectly. The README explicitly points you there for adding emotions. - My filenames come out weird.
character_nameandfilename_prefixare slugified -Game Characterbecomesgame_character. That's the feature, not a bug, if your asset pipeline hates spaces. - Emotion looks the same across presets. Weak models or weak strength settings blur the difference. Raise
emotion_strength, and remember the README's advice: freeze checkpoint, LoRA, sampler, CFG, and resolution, and let only the emotion change. If poses need to stay identical too, you're into ControlNet/OpenPose territory - separate tools.
One honest note: this is a brand-new pack with basically zero community footprint yet - you may well be the first person in your corner of the internet to run it. What's here is simple, readable Python, and simple usually means it works. Give it a spin.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| character_name | STRING | character | — |
| character_core | STRING | 1girl, chibi, long hair, simple outfit | — |
| emotion | COMBO | default | 11 options: default, smile, laugh, sad, crying, angry, +5 |
| emotion_strength | FLOAT | 1.000.25–1.75 | — |
| extra_positiveopt | STRING | — | |
| extra_negativeopt | STRING | — | |
| filename_prefixopt | STRING | game_sd | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| positive | STRING | — |
| negative | STRING | — |
| filename_prefix | STRING | — |
| emotion_tag | STRING | — |