The Ultimate Card Game

_playground
My attempt at creating a deckbuilding game where players make the cards
Published

September 12, 2024

Game Setup/Layout

Traditional Deck + Hand style. How many in a hand? I’m thinking 7.

Players start with no mana, but can spend from life

Life: Players start with 16 life Life can also be used to cast cards, which is basically the only way to cast cards before “factory” type cards are on the field or via 0 or negative cost cards.

During the “block” phase of an attack, the blocking player can either cast 0 (or negative) cost cards, or cast cards using life. This makes cards effectively “instants”, allowing players to bring stuff on the field at the opponent turn, but at some price, as the cards must be either < 0 cost or paid with life.

Cards play in their “stunned” state. AkA: cards cannot attack first turn after playing (Might change if I adjust how cards do damage)

Players can pay production to nerf cards. It costs X * N where N is the total amount of aspect points a card has in that aspect, to reduce that aspect by one. N does not change. So to completeley destroy a 3 health card, it costs 27 production points. To remove one of an 8 aspect card, it’s 8 production points, 2 is 16, etc.

Gamemodes:

Best of 1, 16 life.

Best of 3, 16 life.

Alternate: Half of cards in graveyard go to exile, the other half go to the bottom of the players deck. Either completely random, pseudorandom, or complete player choice. Note: why is this better than multiple rounds? This could also be a seperate gamemode.

Players have no life, but instead have a shared number line that acts as life. But, if the players have a certain difference between their opponent, then they lose. This difference starts as 2^32 or some other arbitrarily high power of two. But, it halves with every turn (or maybe every half turn?), eventually reducing itself down to one where it stays there.

C*mmander: Players get to start with a 64 (more than legendary, or maybe 128) value card on the board. If it dies they lose? Or maybe they can recast it and they have player life.

Card Design

Round up (?)

Rarity system:

Legendary: 32 + cost

Epic: 16 + cost

Rare: 8 + cost

Common: 4 + cost

30 cards in a deck

Card ratios must be: (minimum 15/30 cards, probably 30)

2 legendaries, 4 epic, 8 rare, and 16 common for 30 total. You can have more, but you must maintain that ratio.

Negative cost cards give player production points to use, in addition to being instants.

Attack/defense:

5 card draws at the beginning of the turn: Can be used instead to the card effect.

Cards:


Card name, mana cost

Poorly drawn image

Detail text/keywords

Flavor text

————- Attack Power/Health/Production power

Alternate Card design:

Card Name

Either under or next to name: base costs + addons – (negative production cost increaste) – rarity cost add = mana/production cost

attack/ power, vertically down the left side of the card

(number) Card trait

Flavor text

Card “Shop”

Traits cost Trait Number * N where N is the total amount of traits

Offensive/Defensive Trait Spreadsheet

Offensive Trait Defensive Equivalent
Attack: This card does X damage, or has X health Health: This card has X health
Multi-Attack: During combat phase, this card can launch and extra attack (solo or with others?) up to X extra times Shield: This card has X sets of it’s health, and a single attack, no matter how much damage it is, can only break a single shield
Spellstorm: For every token applied to this card by the controller, actually X tokens are applied, and these applications count for the purposes of triggers Spellshield: For every X token applied to this card by opponent, this card is only affected by 1/X of them. If less than X-1 are applied, then this card isn’t affected at all
Weight: This card is equivalent to X-1 cards for the purposes of moving it Strength: This card can move X more cards than it could usually move, but they must be next to eachother OR could move X cards from further away, like a reach type mechanic
Agility: This card can move over X cards it wouldn’t normally be able to move over RestrictionTypeThing: This card restrict movement of cards over, or onto itself
MultiAttack (needs different name): This card can hold more than one card under it, and even move with more than one card under it, up to X extra cards MultiBlock (needs different name): This card requires X more cards on top of it to be able to move past it. The extra cards on top of it, fight the card independently, and do not deal cumulative damage (or take less damage than this cards whole attack stat)
Buyback: Pay base cost - X when casting this card or when it’s on the field. Then, when it dies, it returns to your hand instead of going to the graveyard. (too weak. maybe mtg storm?) Recursion: This card can be cast from the graveyard for the base cost - X recursion tokens on it (maybe X * N?)
Integrate: Pay N * N production points to combine this card with another card, stacking all values. Integrated cards count as one card, even when targeted by another integrate card, but the calculation becomes N3 * (N1 + N2) (Goals: Replace mtg archetype voltron, mtg keywords equip, fortify, enchant, mutate, merge, meld) Debuff/Attatch Curse: X: Pay N + N – X points to apply a debuff to a card with value N, where all the aspects of this card are subtracted from that card. Actives and Curses carry over. The card can be considered to be “recast” and curses activate immediately.

Offensive Aspects:

Attack: X Give this card the ability to attack, and 1 + X attack power. Cards need at least one attack to be able to block.

Double Tap: 1 + ??: Card has does a second attack which happens before the first one in an encounter, doing extra damage. Opponent can pay some porportion of production to remove some proportion of double tap from a card.

Alt idea: During each section of the combat phase, player can chose to do extra damage with this card towards cards it is over/under.

Goals: Shield-remove, replace mtg keyword deathtouch.

Spellbuff: tokens applied to this card by it’s controller are multiplied, and count as that many applications of that token.

Defensive Aspects:

Health: Base + X Give this card health trait and 1 + X hit points. (note: If a card has no health, it disappears at the end of a turn).

Multi Block: 1 + X block more than one attacker of a target, per target blocked, up to 2 + X

Multi-Target-Block: 1 + X: Block for more than one card, although only one attacker per target, up to 2 + X stacks with multi block with

Anti-AoE: Base:1 + X add this cards health power to hower many

Merged Block: Base:1 + X: This card can do a merged block, which is mostly treated as one block. The health of merged blockers is “pooled” where they all share damage. To kill all cards in the merged block, and attacker must outdamage the pool. (Should merged block allow merging of traits?) (and should merged block allow blocking multi-block?)

Idea: No merging of traits. Stacks with other defensive traits. Allows for multi-blocking, of one card, but doesn’t

Collective Block: 1 + X. If multiple cards are blocking one card, they gain a “health” pool, where they all share damage. To kill all cards pooling cards, they must deal enough damage to overcome the “health pool” This card can pool with X cards. Cannot health pool with cards with greater health than itself. Blocking is treated as a merged block, where something like “damage multiplication” can split up the health pool again.

Do I want collective block to merge traits as well?

Shield: X: Card gets a seperate “shield of X hit points. If they are damaged by one attack/encounter, it doesn’t rollover into their HP. Opponent(s) can pay production points to reduce the shield value. Shield points can also be spent to reduce active effects

Goals: Replace mtg keywork indestructuble. Replace clash royale shield mechanic Maybe replace hexproof with a resist spell mechanic?

Spellshield: X : X : For every X spell effects applied to it, it is only influenced by (X - 1 / X) of them. E.g: spellshield 2 means that it halves spell effects applied. 3 means it 1/3rds them and so on. This can be reduced by paying production (?)

Goal: replace mtg hexproof/ward. What’s offensive equivalent?

Misc Aspects:

Integrate: X: X Pay N * N production points to combine this card with another card, stacking all values. Integrated cards count as one card, even when targeted by another integrate card, but the calculation becomes N3 * (N1 + N2)

Debuff/Attatch Curse: X: Pay N + N – X points to apply a debuff to a card with value N, where all the aspects of this card are subtracted from that card. Actives and Curses carry over.

How to remove? Pay cost? Card death?

Active Traits:

Table

Active Cost (* N) : Output Application Cost? Effect
Mana Generation (probably call it just Mana for short) X : X * N (*N? probably not) N/A Generates Mana for casting things
Stealth X : X Don’t know. N/A
Necromancy (or maybe recursion?) X : X Don’t know, probably not Apply to cards in your graveyard. Then, those cards can be cast for base cost - amount of Necromancy/Recursion tokens applied to them again. (or maybe base cost - X*N?)
Scry/Tutor X : X (*N?) Don’t know, probably N/A yet. Probably look at X cards or look at cards with up to X production point cost
Polarity Reversal X : X (*N?) Probably not Change offensive abilities to their defensive equivalents defensive and vice versa, of a single card
Phase/Empherality X : X Probably not Decrease the amount that a card can interact, or be interacted with by X. Does X less damage, or but takes X less damage. How should this interact with
Counterspell X : X Maybe a mechanic where counterspell can take from existing aspects on board, but it costs production Either take a token that opponent is holding directly, or take a token on the board.
Replicate X : X Maybe a mechanic where replicate can take from existing aspects on board, but it costs production Copy a token that is in play or that anyone is holding
Gain Life X : X 1 production point per token Gain life when applied
Burn (direct damage) X : X probably Apply direct damage to any card or your opponent, as long as their is a card path from you to that card or your player
Arbitrary Aspect (trigger?)
Arbitrary Negative Aspect
  • So the idea behind “actives” is that they generate points/tokens that can be spent on things — but don’t have to be spent. The actives that cost production to use, only cost production on the application of the active, rather than the generation/creation of the points.

Mana Generation: X: X * N . Generate mana for casting things

Give opponent production points: Goal: replicate elixir golem mechanic from clash royale. Problems: Too weak. Decks which use less or no production won’t be affected by this. Needs an alternate ability along with give opponent production points, such as giving opponent another active.

Stealth: Base:1 + X Take 1 + X cards off the field… and then put them back on face down in new spots. Stealthed cards are revealed when they take action, attack, or are dealt damage. Stealth can also be used to move around cards during the blocking phase.

Cost:

Goal: Twofold: Obscure cards on board, but also allow to move cards in blocking (or attacking?) phases around. Blue idea, playing with information

Necromancy: Base:1 + X Search 1 + X through the bottom of the deck/graveyard. Cast a cards base cost, rather than their total creation point cost.

Goal: Play the roal of black deck, bringing cards back from the dead. Replace mtg https://mtg.fandom.com/wiki/List_of_Magic_slang#Recursion recursion

Tutor: Cost Base:1 + X, look at the top X cards of your deck and show them to your oppnent. You can cast directly from these cards. Problem: Recursive scry/tutor too op

Goal: Play the role of blue deck, increasing options player has.

Polarity Reversal: X: Change offensive abilities to their defensive equivalents defensive and vice versa, of a single card, up to X * N of a single trait

Goal: Buff and nerf at the same time. Can be used to reduce health, or increase attack.

Counterspell: Base:1 + X: You “take control” of 1 + X “spell” aspects targeting individual things. Problem: How will counterspell and react phases work? Do I want this? It adds extra complexity to casting. Idea: Counter either 1 + X damage/protection/production (distributed) or 1 + X spell effects targeting stuff.

Goal: play the role of the blue counterspell, while also allowing them to deny production points

Replicate: X: Duplicate active effects, excluding replicate effects. Can duplicate opponents effects, or own. Can replicate counterspell.

Aspect Enhancement: X: Enhance any aspect of card(s) up to X. Costs (initial aspect cost) + X * N production points. * Having this cost mana is kinda weak.

Gain Life: X: X and pay X production points to do so

Deny attackers. Some kind of stop attacker from attacking mechanic.

Also want active?

I want some kind of burn effect/direct damage, without it being broken.

Burn/Direct damage: X: X: Deal direct damage to opponent, but this requires that you must pay production for each damage done, and damage is limited by defensive cards under your cards along the path.

Abitrary Active/Trigger : Produce actives/triggers to place on cards. Should this cost production to apply?

Arbitrary Negative Active/Trigger: Produces negatives to put on cards. Negative health is straightforward, but negative damage, “agility”, and etc get interesting.

Empheral: Cause a card to not be affected by stuff, but also not be able to affect stuff. Basically mtg phase.

Triggers:

Trigger Name Output Multi-Activate Triggers on?
Instead of card draw X * N Probably Not Players decide to do this instead of drawing one of their five cards they can draw
On card play X * N No Generates actives when this card is played
Familier Friends X

Familiar friends: X: When you play a card with similar trait and valuet and value appears, including this specific trigger + active, Do up to 1 + X of an active trait, based on the common traits and values that are shared.

Note: Too op if it includes health, attack, and friends… but is it?

Also: Familiar friends… but on death?

Damage dealt via attacking or blocking (including or excluding overkill): X : X

Damage taken (including or excluding shield?): X : X

Goal: Replace elixir golem clash royale

Card enters play: X: X * N

Instead of card draw: X: X * N

Pay production points: I want this mechanic, but do not know how to balance it

Getting attacked by X cards: X: X

When XYZ active token is applied: X : X

Most notable of this is: “when lifegain” as that has very good synergy

Problem (?): Can go infinite.

When opponent takes damage: X : X

  • This could lead to going infinite with “burn” tokens.

Formation: When pattern created during attack/defense phase: Form a pattern of your own cards (must be on on top): X : X * (cards with same trigger in the pattern) * (amount of different patterns linked together):

Eg: A pattern can be a straight line, or a curved line, or a grouping of three, a lightning bolt or whatever. Orientation does not matter (?), only relative orientation does.

Probably a better way to do this.

Maybe: Outputs X * (total in chain) * (complexity of chain/amount of extra connections for every node with more than one connection) * (cards with same trigger in chain) * (Amount of overlapping cards that are also part of a different formation)

Maybe too powerful?

Goal: Replace tribal, allow for synergy without being contrived/artificial. The synergy is artificial, but players have to work for it.

Curses:

Constant Mana Cost: Take X mana from the player every turn, or if they can’t provide that, life. In exchange, offer X * N card creation points for players to use. Essentially for each negative mana point, they can add one of each trait for each negative mana point during the turn. Must be paid before the attacking step.

  • Should it die if no mana given?
  • Or should it take from life?
  • What about production? Probably not effect actives… but I like the idea of cumulative upkeep for a spell tower.

I think I need to separate this into two different curses: One which does damage, and one that doesn’t.

Day/Night: X from anything: X Opponent gains control of this card during their turn, except the card doesn’t have full stats. It only has X stats, X for each trait in place. It also gains X stats in the opposite section of held traits. So 4 hp, but 0 attack, but 2 X becomes 2 hp, 2 attack.

How to handle one time spell cards? * Day/night results in the card staying alive, even when it has 0 or less health * Opponent gets a portion of spell effects * Daynight straight up doesn’t affect actives ← I like this one

May need different name, mtg already has daynight. Traitor? Betrayal? Doublecross? Doubleagent?

Bounce:

Card on field goes to hand, in exchange for a card that has a base cost less than Cost – X base cost. If there is no such card, then this card goes to the graveyard. You can keep the card on the field in exchange for a sacrifice of at least Cost + X * N from your hand or the field, straight to the graveyard.

  • Beginning or end of turn (it would be nice to bounce immediately)
  • How to have card be persistent?

At beginning of turn, or when card is attempted to be played, take it off the field for a card in hand with base value < cost – X, or sacrifice card from field with cost + X?

AKA: some kind of bounce curse

At beginning of turn or before played, take cards on the field that are worth more/less than something off the field and put them back into your hand. If you cannot do this, because of a full hand or because of the value

On/before turn, bounce cards value back to hand. If you can’t do that, then bounce this card, exchanging it for something in your hand with less than X. If can’t do that, then graveyard.

On turn, and/or when this card is played, return this cards value +

Siege/Battle: X from anything: X card is cast as an X health card under an opponents control. They must defend it, if the attacking player manages to kill it, then it becomes the normal card

  • Allow spell damage to kill the battle?

Goal: replace siege/battle from mtg

Equality: X from triggers/actives: X times N this card gives opponent up to X*N of of “actives” it generates, when it generates them.

Goal: Allow for the creation of board wipe type effects.

Sacrifice X from anything : X You need to sacrifice cards with a base cost of X * N cards on the field when played.

Misc Notes and Workshopping:

Goals: Replace mtg creature tokens, mtg evasion mechanics (keywords flying, horsemanship, unblockable, trample, etc)

https://mtg.fandom.com/wiki/Evasion_ability

Resources (used to do stuff):

  • Mana/Production (can cast from life)
    • Life
  • Cards in hand (artificially increased by scry)
    • Draw counts
  • Cards on field
  • Cards in graveyard
  • Board space?

I want synergy to happen, but for the synergy to use up one of the other resources, preventing snowballing/ an infinite combo.

Maybe I need another resource?

Catch up mechanics?

  • I like the “equality” curse
  • But I want one more

Some kind of meta card attribute?

Potential keywords:

Recursion: X : X Pay Base Cost – X to cast this card from your graveyard

Buyback: X : X Pay Cost – X in addition to casting this spell to return it to your hand when you cast it.

  • Too weak

Banding/Splitting: Combine and divide mechanics somehow (or maybe I should build these into the game rules)

Anti-Actives

Take life: X :X

Idea is to have taxes or some sort of sin mechanic.

Gain +X +X when X: Idea is some conditional gain strength mechanic

In general, I want some kind of state based trigger, that can activate every turn.

When X cards on the field. When X cards in graveyard. X in hand? etc. How to make fair?

Okay, after watching A video about lifedecking, I’ve realized that it’s problematic to incentivize cards in the graveyard, because players want to play their cards, and a strategy which incentivizes sacrifice or something along those lines isn’t really that. But, this problem with lifedecking also applies to any incentive to maintain a “state” of the game. Although an ongoing incentive to maintain a certain boardstate is good to get to, it also incentivies players to keep that board state — which may not be fun. So this will be put on hold for a while, and instead, I will only incentivize actions by the players. Interesting =/= fun to play.

Alternate cost where players can pay other token types. Maybe decreases N or lets them pay base cost. This can be a curse type.

Tax and Stax: Fundamentally, a tax an opponent can’t pay to do something is like a stax: Some kind of opponent restrictions… actually, I don’t like this. I want a control archetype, but I confused control with stax/tax. Clash Royale manages to have control be a major archetype without s/tax.

  • Opponent can’t X doesn’t work because of the way my game is designed. However, opponent can’t do X fundamentally equivalent to a tax effect that the opponent can’t afford to play?

Formation application token: Allow for multiplication of tokens on the battlefield. Costs X1 * X2 * X3 * N where X1 is the multiplication and X2 is the formation size, and X3 is the total tokens it can take. So a 2 * 1 * 3 would double up to three tokens for a single card.

Some kind of sacrifice cards curse.

See also: MTG emerge

MTG Surge

MTG rebound

MTG storm: Pay X to duplicate the on-cast effects of this card?

Combat

Defensive player sets up layout at the end of their attacking turn, and cannot change it or reoganize it.

Attack player sets a layout, and then either chooses to make the first move, or to pick how the connections work.

Played on something equivalent to a hex grid, but not an actual hex grid. A square grid where each row is offset by ½, and touching squares are considered connected.

Moves cards can make:

Move: Move onto an adjacent card.

Swap: Replace adjacent card with this one

Pull: Pull connected card under this card.

  • Pull into spot, and move this card out of the way?

Push: Move card out of way? Maybe can push in place to move a card to an adjacent spot

Spawn: Spawn new piece in a blank spot adjacent to your own pieces, and only your own pieces

All of these moves can be done over a chain of your color’s cards, including attacking/defending ones.

Stacked cards are considered as attacking eachother, and cannot move on/off, but they can be moved over.

The attacker round ends immediately when a player stalemates is unable to make a swap, push, or pull move. ???

One hive rule (from hive): Players cannot make a move that results in their being two groups of cards.

https://en.wikipedia.org/wiki/Hive_(game)

So… how does a player actually do damage? And how should collective defense/attack and multi attack/defense work?

Two ways I am thinking of doing damage: Getting a card onto/past all defenders

Or creating a chain that connects it past defenders. Maybe like 1 damage for each card in the chain?

How should cards launch an attack against valuable cards? Surrounding them? Building a chain which accesses them?

Ideas:

  • Attackers cards deal (ATK + ATK + ATK) *N where N in the amount of cards surrounding a card, but those cards of that set can’t attack a player
  • Defenders cards can protect (DEF* )
  • Surrounding a card with 6 cards is an insta kill (can be on top cards as well)
  • This is in addition to the mechanic where cards on top of eachother battle.

Idea: replace mtg banding

Should cards being on top or below matter? Maybe? Only on top cards count for purposes of a chain, and also can surround other cards.

Anyway, this is good, but I need to calculate the fairness of this game. I think the only way to calculate fairness is to write a program that solves this game.

Combat ends immediately where a player cannot make another move (either attacker or defender).

What about drawish rules, like 3 fold repetition?

Combat Phase

It goes step by step. Steps go like

  • Offensive player moves cards, or plays cards into the combat zone. This one can only be done once.

  • Offensive player activates an “instead of draw trigger” Only done once, and mutually exclusive with the above.

  • Defensive player makes a move, or plays a card into the combat zone.

  • End step

Or maybe vice versa?

Regardless, cards only die at the end of each “step”, giving either player time to do things like counterspell and react with spell type abilities.

Infinite Loop Prevention: A trigger can only be triggered once per combat step (for both players).

Programming This

I think I need to convert this to a python program that will solve any set of rules I give it, in order to actually ensure my game is fair., I’ve done some testing on my own, but I don’t think just one person can play chess.

So… how can I make a hexagonal grid in order to calculate solutions to my game?

I really, really like the idea of representing hexagonal coordinates as a cube.

Pseudocode of what I want:

HexGrid = 2d array, or graph of nodes

CheckLegality: Function that checks if a hex grid config is legal (all nodes are connected)

GetMovesJump: Get Possible moves of the Jump on top of another card type

GetMovesShove: Get possible moves of the shove card out of the way type

GetMovesPull: Get possible moves of the pull card under type

GetMovesSwap: Get possible moves of the swap type

GetWin: Get the amount of damage a winning attacker would do

I would also need several other functions/features, like I would have to be able to detect if a set of moves is the same as an older set of moves. I think this is easier with a set of nodes than an infinitely large hex grid.

People at the San Fernando Valley LUG, said I should research “graph theory”, because there already exist algorithms to check if all nodes are connected, or to traverse a graph, or so on.