This PHP script uses AI to generate new, random Pokemon cards by using
GPT
to generate a name and descriptionStable Diffusion
to create a visual- Pokémon TCG for accurate moves sets
- PokeApi for accurate element types
First of all, thanks to Jack for the amazing work on the Python equivalent of this repository. I was inspired by his creativity to generate Pokémon cards out of thin air, although I came up with a slightly different approach.
This repo | Jack's repo | |
---|---|---|
AI to generate name and description | OpenAI - GPT3, GPT4 | OpenAI - GPT3 |
AI to generate visual | Stable Difussion | Midjourney |
Generate multiple cards at once | ✅ | ✅ |
Generate cards of a specific element | ✅ | ✅ |
Generate cards of a specific creature | ✅ | ✅ |
Generate a series that evolve from one another | ✅ | ✅ |
Fully generate a card with one command | ✅ | ❌ |
Gallery with overview of generated cards | ✅ | ❌ |
> git clone git@github.com:robiningelbrecht/pokemon-card-generator.git
# Build docker containers
> docker-compose up -d --build
# Install dependencies
> docker-compose run --rm php-cli composer install
For this script to work you'll need two different API keys
- Set up an OpenAI account by navigating to https://beta.openai.com/signup
- Create an API key on https://platform.openai.com/account/api-keys
- Set up a Replicate account by navigating to https://replicate.com/signin
- Copy your API key from https://replicate.com/account
The model used for generating visuals is OpenJourney. It's a Stable Diffusion model fine-tuned on Midjourney v4 images.
Both accounts have free tiers at first, but after a while you will need to enter credit card details. It'll cost you around 1-2 cents to generate a card.
Copy .env.dist
and rename to .env
, it should at least contain following info:
OPEN_AI_API_KEY=your-open-ai-api-key
REPLICATE_API_KEY=your-replicate-api-key
At this point, you should be locked and loaded to generate your first Pokémon card by running
> docker-compose run --rm php-cli bin/console app:card:generate
Your CLI should output something along the lines of
You'll be able to view your card and all information used to generate it,
by navigating to the card gallery page: http://localhost:8080/
.
-t, --cardType The card type you want to generate, omit to use a random one. Valid options are dark, electric, fighting, fire, grass, normal, psychic, steel, water
-r, --rarity The rarity of the Pokémon you want to generate, omit to use a random one. Valid options are common, uncommon, rare
-s, --size The size of the Pokémon you want to generate, omit to use a random one. Valid options are xl, l, m, s, xs
-c, --creature The creature the Pokémon needs to look like (e.g. monkey, dragon, etc.). Omit to to use a random one
-e, --evolutionSeries Indicates if you want to generate a series that evolve from one another. Options "size", "rarity" and "numberOfCards" will be ignored
-x, --numberOfCards The number of cards to generate. A number between 1 and 10 [default: 1]
-f, --fileType The image file type you want to use. Valid options are svg, png [default: "png"]
-g, --gptVersion GPT version to use. Valid options are 3, 4 [default: 4]
-h, --help Display help for the given command. When no command is given display help for the list command
The PNG slightly differs from the SVG because the latter allows for more flexibility while generating the image
There's an example gallery available on https://pokemon-card-generator.robiningelbrecht.be/
Be sure to also check https://gotta-generate-em-all.com. It generates and publishes a new card every day 🥳. Cards are also publised to https://www.reddit.com/r/GottaGenerateEmAll/
Thanks to TheDuckTamerBlanks for the blank card templates.