Severe palette limits. Chunky read. Sprite logic.
Constraints
Very low color count, high contrast characters, simple props, avoid gradients unless dithered.
Recipe
Target NES-like 256x240 internal render, 3 colors plus transparency per sprite (about 25 on screen), 2 hard bands, 8 px tiles, no gradients.
- Camera:
iso_camera.pyprojection"military" withpixel_tile8 (flat 45 degree view reads like a top-down sprite). - Shading:
toon_material.pywithbands2,rim0,outline0 and a saturated base color. - Render preset:
render_preset.pystylized_flat, thenps1_look.pywithsnap0,resolution[256, 240],flatTrue,fogFalse. - Palette limit:
comp_grade.pywithpreset"clean" andposterize4 (Posterize node, 4 steps per channel, at most 64 colours); keep 3-4 flat material colours per object. - No anti-aliasing:
scene.render.filter_size = 0andscene.eevee.taa_render_samples = 1(the stylized_flat preset uses 32 samples).
import runpy
skills = "<skills_dir>" # parent folder of this skill (the plugin's skills/ directory)
target = "SM_Asset" # object to style / dress
r = {}
r["camera"] = runpy.run_path(f"{skills}/isometric-style/scripts/iso_camera.py", init_globals={"ARGS": {"projection": "military", "target": target, "pixel_tile": 8}})["result"]
r["toon"] = runpy.run_path(f"{skills}/stylized-style/scripts/toon_material.py", init_globals={"ARGS": {"name": "MAT_Toon_8bit", "base_color": [0.9, 0.2, 0.2], "bands": 2, "rim": 0.0, "objects": [target], "outline": 0.0}})["result"]
r["render"] = runpy.run_path(f"{skills}/rendering/scripts/render_preset.py", init_globals={"ARGS": {"preset": "stylized_flat"}})["result"]
r["pixel"] = runpy.run_path(f"{skills}/lowpoly-style/scripts/ps1_look.py", init_globals={"ARGS": {"objects": [target], "snap": 0, "resolution": [256, 240], "flat": True, "fog": False}})["result"]
r["grade"] = runpy.run_path(f"{skills}/compositing/scripts/comp_grade.py", init_globals={"ARGS": {"preset": "clean", "posterize": 4}})["result"]
import bpy
bpy.context.scene.render.filter_size = 0.0
bpy.context.scene.eevee.taa_render_samples = 1
result = r