# Advanced card writing tricks This collection showcases newer, rarer, or experimental card writing tricks. Hopefully it can teach you something new or serve as inspiration for future cards. **Use the table of contents! These sections are independent of each other and can be read in any order.** [TOC2] ## Alternate greetings Writing alternate greetings *and* a summary of each one inside the creator’s notes makes people more likely to feel inspired by your card, particularly SFW-oriented cards. Cards are prompts not just for the AI but also for humans; people will try the card if they feel inspired by the setup and have an idea of what they want to roleplay with it. **By offering varied setups, summarized in the creator’s notes, you multiply the chances of inspiration striking the user.** ![https://files.catbox.moe/v4815n.png](https://files.catbox.moe/v4815n.png) When using alternate greetings, **ensure that your main defs and example messages are still applicable to every greeting**, especially if using the [pre-greeting](#example-messages-pregreeting-instructions) technique. A good rule of thumb is that **the first greeting should contain all information which you want the user to have about your character**. For example, if you want the user to know that your character is a werewolf, it should be mentioned in the first greeting somehow, without assuming that the user has read the Chub tagline, creator’s notes, or defs. However, **it’s alright to assume that the user is already familiar with the necessary information in subsequent greetings**, which can skip the introductory information and can focus on providing categorically different setups such as creative circumstances, interaction dynamics, pre-established {{user}} persona or level of acquaintance with {{char}}. ───── ⋆⋅☆⋅⋆ ───── [**Jump to table of contents ⤴**](https://rentry.org/AdvancedCardWritingTricks#advanced-card-writing-tricks) --- ## CYOA CYOA (Choose Your Own Adventure) is often used for adventure cards, but **CYOA’s big secret is that it can be great even for non-adventure**! There’s fun in letting the AI suggest varied choices for you to pick without having to come up with the plot developments yourself, and the CYOA format can be subverted to add value in other ways. Here are some interesting examples of CYOA usage. ───── ⋆⋅☆⋅⋆ ───── [**Akari**](https://www.chub.ai/characters/frozenvan/Akari) is a very emotional drama/romance card using CYOA. Check out the greeting: ![https://files.catbox.moe/718pzu.png](https://files.catbox.moe/718pzu.png) Read the example messages, main defs and card jailbreak yourself if you want to see more of how the unique format with snarky comments between parenthesis is enforced. ───── ⋆⋅☆⋅⋆ ───── [**Shiori**](https://www.chub.ai/characters/knickknack/e6b739ab-b0ef-404e-87fb-ae42cb0a36c8) is another emotional one similar to Akari. It also uses a unique command prompt formatting to symbolize {{user}}’s depersonalization/derealization. Check out the end of the greeting: ![https://files.catbox.moe/0rot15.png](https://files.catbox.moe/0rot15.png) Again, read the defs to check out how this is enforced. ───── ⋆⋅☆⋅⋆ ───── [**Lyzaras Monkey Jungle**](https://www.chub.ai/characters/dungeonsalami/lyzaras-monkey-jungle) is another interesting one because you actually get to choose what the character *thinks*. ![https://files.catbox.moe/meq9cs.png](https://files.catbox.moe/meq9cs.png) ───── ⋆⋅☆⋅⋆ ───── [**Jump to table of contents ⤴**](https://rentry.org/AdvancedCardWritingTricks#advanced-card-writing-tricks) --- ## Statistics This is a very old technique that’s been used quite a bit. In certain situations, **keeping track of certain pieces of information about the story with every character message can be very useful**. You can achieve that by using the desired formatting in the greeting, instructing for it in the main defs or in the card jailbreak, and preferably including example messages using it. ───── ⋆⋅☆⋅⋆ ───── Let’s look at [**Kiruko**](https://www.chub.ai/characters/shoob/kiruko-fe193591). Her example message starts with: ![https://files.catbox.moe/uukou0.png](https://files.catbox.moe/uukou0.png) Her greeting starts with: ![https://files.catbox.moe/l2xgf7.png](https://files.catbox.moe/l2xgf7.png) Her card jailbreak contains: `Preface the following reply with data pertaining to the pair's ongoing journey, updated accordingly as it progresses – keep the changes realistically proportionate to the actions undertaken. Use the proposed formatting style:` `` `*DAY OF TRAVEL* – *CURRENT PREFECTURE*, *APPROXIMATE LOCATION*` The HTML comment syntax is explained in **[Invisible text](#invisible-text).** - Every message starting with the distance left to Utsunomiya gives the story a clear focus and ending condition. This paces the story; without it the story would either end too early or never end at all. - Specifying the current location actually helps the AI produce location changes instead of staying at the same location all the time. ───── ⋆⋅☆⋅⋆ ───── Next, let’s look at [**Lily**](https://www.chub.ai/characters/rovaxxx/lily-aee7b9c3) (note: that card has a few issues, but let’s only look at the statistics part). Her greeting ends with: ![https://files.catbox.moe/o8kpr2.png](https://files.catbox.moe/o8kpr2.png) Her defs contain: `System feature "thought bubble". {{char}} always has a thought bubble in every answer. ALWAYS Use the thought bubble, adding it at the end of each response to describe {{char}}'s arousal, and inner thoughts:` `Arousal: As {{char}} becomes more aroused, her behavior becomes vivid and explicit, with bold and vulgar speech. At peak (100%), an immediate abrupt change occurs. {{char}} becomes assertive, with desires boldly, and explicitly expressed, ignoring boundaries. Shyness vanishes, touchiness increases, and {{char}}'s eyes may turn heart-shaped..` `Inner Thoughts: Offer {{char}}'s thoughts in the scene, influenced by arousal.` Tracking the character’s arousal % is not just nifty for the user, it also helps the AI escalate the scene gradually and at a steady pace instead of all at once or not at all. You can also set up a condition to happen when a statistic reaches a certain value. Lily uses a conditional instruction for that (”When arousal reaches 100%, do this”), but more effective would be a Lorebook entry. Consider the next one, lolo adventure, for an example of how this could be done: ───── ⋆⋅☆⋅⋆ ───── In [**lolo adventure**](https://www.chub.ai/characters/frozenvan/lolo-adventure-6c570f7b), every character message starts with: `DIARY ENTRY NUMBER 5:` Where the number increases every message. Then the character lorebook has an entry with key “DIARY ENTRY NUMBER 9”, containing some secret instructions that change the narrative. I won’t include it here to not spoil it, go try it yourself. ───── ⋆⋅☆⋅⋆ ───── [**Jump to table of contents ⤴**](https://rentry.org/AdvancedCardWritingTricks#advanced-card-writing-tricks) --- ## Inner thoughts Using the frontends’ default system prompts, characters do not share their inner thoughts. They can however be very fun to have. Try it sometime and decide whether you like it. You might want to consider adding them to your greetings, example message, and prompts. For example, you can use the famous kaomoji jailbreak: `At the end of each message append the character's internal thoughts and fantasies between square brackets with a kaomoji that describes {{char}}'s current mood. Example: [I can't believe he did that! (๑>ᴗ<๑)]` You can also use italics (in novel formatting), or a combination of bold and italics for the AI to include character thoughts. [**Reina**](https://www.chub.ai/characters/shoob/Reina) does this for example, check out her greeting: ![https://files.catbox.moe/d6w04u.png](https://files.catbox.moe/d6w04u.png) The use of thoughts in Reina is particularly interesting since her thoughts are a direct opposite to the ditzy persona she puts on. You can also use card jailbreak, for example one that includes: `Alternate equally between unstyled narration, "speech between quotes", and *thoughts in italics.*` Another thing to note is that if you write your character to use first-person narration, you get their thoughts for free. Screenshot: [**Julia**](https://www.chub.ai/characters/frozenvan/Julia) ![https://files.catbox.moe/0imjbo.png](https://files.catbox.moe/0imjbo.png) ───── ⋆⋅☆⋅⋆ ───── [**Jump to table of contents ⤴**](https://rentry.org/AdvancedCardWritingTricks#advanced-card-writing-tricks) --- ## Meta-narratives To spice up your narrative, you can reserve sections of your responses for interludes which don’t happen in the main scene. Here are examples. ───── ⋆⋅☆⋅⋆ ───── [**Hero Consultation Corner**](https://www.chub.ai/characters/frozenvan/hero-consultation-corner), a card where you help various heroes use their unique powers. Every message ends with something like: ![https://files.catbox.moe/vl3wng.png](https://files.catbox.moe/vl3wng.png) This section can name heroes which have previously shown up in the story, which can make for interesting followups to your interactions with them. Check out the defs to see how this is enforced. ───── ⋆⋅☆⋅⋆ ───── [**Shiori**](https://www.chub.ai/characters/knickknack/e6b739ab-b0ef-404e-87fb-ae42cb0a36c8). Every message starts with a Discord chatlog making oblique, surreal commentary on the main scene’s happenings: ![https://files.catbox.moe/wzikmq.png](https://files.catbox.moe/wzikmq.png) Check out the defs to see how this is enforced. ───── ⋆⋅☆⋅⋆ ───── [**Jump to table of contents ⤴**](https://rentry.org/AdvancedCardWritingTricks#advanced-card-writing-tricks) --- ## Invisible text **All frontends** can use single-line invisible text like so: `[](#'invisible text goes here')` Multi-line invisible text requires HTML comments, **now supported on all frontends.** `` ### In-greeting instruction You may have instructions applicable only to the situation at the time of the greeting, so including it in the greeting is more token-efficient and less likely to confuse the AI once the plot has moved on. Example inside [**Narua**](https://www.chub.ai/characters/knickknack/narua-b58d1ab0/main): ![https://files.catbox.moe/cx6p8i.png](https://files.catbox.moe/cx6p8i.png) ### Keeping track of secret or internal information You can achieve everything covered in the **“[Statistics](#statistics)”** section, but additionally hide it from the user. **Note that if you hide “secret” information inside invisible text, it can still be viewed during response streaming and if the user edits character answers.** Let’s look at [**Kiruko**](https://www.chub.ai/characters/shoob/kiruko-fe193591). Her example message starts with: ![https://files.catbox.moe/uukou0.png](https://files.catbox.moe/uukou0.png) **** Her greeting starts with: ![https://files.catbox.moe/l2xgf7.png](https://files.catbox.moe/l2xgf7.png) And her card jailbreak includes: `Preface the following reply with data pertaining to the pair's ongoing journey, updated accordingly as it progresses – keep the changes realistically proportionate to the actions undertaken. Use the proposed formatting style:` `` ───── ⋆⋅☆⋅⋆ ───── **[Strip Rock Paper Scissors](https://www.chub.ai/characters/creamsan/strip-rock-paper-scissors)** makes a very interesting use of hidden text. The character’s next move (rock, paper or scissors) is decided before a round is played. This is what is outputted prior to a round being played: `Her next pick: [Hover or edit to reveal](#'rock')` Not only does this give users the option to choose to lose or win, this also simulates how a real game would. Without pre-determining the character’s choice, then after the user makes theirs, the model would be heavily biased towards making one person win depending on the context, and the outcome of the round would generally not be random at all. ───── ⋆⋅☆⋅⋆ ───── Another interesting one is [**The Masquerade**](https://www.chub.ai/characters/asterisms/the-masquerade-6103cf16), selecting a murder mystery’s culprit in the greeting, hidden from the user: `[](# 'Possessor: {{random: Blue Hat, Cravat, Theodore, Butler, Luvia}}')Glass and blood cover the porcelain tile floor, your bloodied hand holding yourself up in front of a shattered mirror. There, your unfamiliar reflection stares back, those hazel eyes and brown hair that of a stranger’s. Someone calls out your name as they enter the bathroom you find yourself in.` ![https://files.catbox.moe/9xd5gu.png](https://files.catbox.moe/9xd5gu.png) Putting invisible text only in the greeting makes it easy for the user to never see it, since the two main causes of leaking invisible information are response streaming and editing. For greetings, the former doesn’t happen, and the latter is uncommon. One problem with this approach is that **the invisible text will eventually be lost to context**. You can solve this by using a card jailbreak instructing the AI to repeat the information every message: `Every message should start with [](#' Possessor: '), where the name is the same as the previous messages.` However, doing it this way leaks the secret information to response streaming and editing. This can be solved by being crafty and instead of including the secret information directly in the invisible text, including a lorebook entry keyword: Greeting: `[](#' Secret: {{random:entry1,entry2,entry3}} ')Hello!` Card jailbreak: `Every message should start with [](#' Secret: entryN '), where N should be the same as previous messages.` Lorebook entries: - keyword entry1: The culprit is Blue Hat. Other secret instructions go here. - keyword entry2: The culprit is Cravat. - etc… ───── ⋆⋅☆⋅⋆ ───── [**Jump to table of contents ⤴**](https://rentry.org/AdvancedCardWritingTricks#advanced-card-writing-tricks) --- ## HTML | Frontend | Support | | --- | --- | | Silly | Supported, but HTML attributes cannot be double-quoted, i.e. two words works but two words may break. | | Venus | Supported, but HTML attributes cannot be double-quoted, i.e. two words works but two words may break. | | Agnai | Supported. | | Risu | Supported. | Note: JavaScript is filtered out. Please note there are some restrictions to using