diff --git a/dungeonGenerator.js b/dungeonGenerator.js index c537eeb..77186da 100644 --- a/dungeonGenerator.js +++ b/dungeonGenerator.js @@ -79,7 +79,7 @@ ${titles5.join("\n")}`, // Step 4: Flavor text const flavorRaw = await callOllama( `Write a single evocative paragraph describing the location titled "${title}". -Do not include hooks, NPCs, treasure, or instructions. do not use bullet points or em-dashes. Output plain text only, one paragraph. Maximum 4 sentences.`, +Do not include hooks, NPCs, treasure, or instructions. Do not use bullet points or em-dashes. Output plain text only, one paragraph. Maximum 4 sentences.`, undefined, 5, "Step 4: Flavor" ); const flavor = flavorRaw; @@ -92,7 +92,7 @@ Do not include hooks, NPCs, treasure, or instructions. do not use bullet points ${flavor} Generate 3 short adventure hooks or rumors (mix them naturally). -Output as a single numbered list, plain text only. +Output as a single numbered list, plain text only. Do not use em-dashes. Maximum 2 sentences per item. No explanations or extra text.`, undefined, 5, "Step 5: Hooks & Rumors" ); @@ -125,7 +125,9 @@ Output two numbered lists, labeled "Rooms:" and "Encounters:". Plain text only. ${JSON.stringify({ rooms, encounters }, null, 2)} -Generate 3 treasures and 3 NPCs (name + trait, max 2 sentences each). Each NPC has a proper name, not just a title. +Generate 3 treasures and 3 NPCs (name + trait, max 2 sentences each). +Each NPC has a proper name, not just a title. +Treasure should sometimes include a danger or side-effect. Output numbered lists labeled "Treasure:" and "NPCs:". Plain text only, no extra text.`, undefined, 5, "Step 7: Treasure & NPCs" ); @@ -149,8 +151,9 @@ Major NPCs / Encounters: ${[...npcs.map(n => n.name), ...encounters.map(e => e.name)].join(", ")} Suggest 3 possible, non-conflicting story climaxes or plot resolutions for adventurers exploring this location. -These are prompts and ideas for brainstorming the story's ending, not fixed outcomes. -Start each item with phrases like "The adventurers could..." or "The PCs might..." to emphasize their hypothetical nature. +These are prompts and ideas for brainstorming the story's ending, not fixed outcomes. Give the players meaningful choices and agency. +Start each item with phrases like "The adventurers could" or "The PCs might" to emphasize their hypothetical nature. +Deepen the narrative texture and allow roleplay and tactical creativity. Keep each item short (max 2 sentences). Output as a numbered list, plain text only.`, undefined, 5, "Step 8: Plot Resolutions" ); diff --git a/imageGenerator.js b/imageGenerator.js index e20e011..6dc3b99 100644 --- a/imageGenerator.js +++ b/imageGenerator.js @@ -72,8 +72,8 @@ function buildComfyWorkflow(promptText, negativeText = "") { }, "5": { "inputs": { - "width": 1000, - "height": 700, + "width": 640, + "height": 448, "batch_size": 1 }, "class_type": "EmptyLatentImage" @@ -157,7 +157,7 @@ async function downloadImage(filename, localFilename) { // 4c. Submit prompt and handle full image pipeline async function generateImageViaComfyUI(prompt, filename) { - const workflow = buildComfyWorkflow(prompt, "text, blurry, lowres, watermark"); + const workflow = buildComfyWorkflow(prompt, "photorealism, hyper-realistic, high detail, 3D render, CGI, ray tracing, glossy, polished, smooth shading, realistic lighting, digital painting, anime, cartoon, pixelated, noisy, cluttered, blurry, sharp focus, symmetrical, perfect perspective, detailed textures, high-resolution textures, high contrast lighting, lens flare, bokeh, camera artifacts, text, logo, signature, watermark, overexposed, underexposed, glowing edges"); try { console.log("Submitting prompt to ComfyUI...");