Top Related Projects
Pokémon battle simulator.
Database project of box and inventory sprites from the Pokémon core series games
Quick Overview
The veekun/pokedex repository is a comprehensive database and set of tools for Pokémon data. It contains detailed information about Pokémon species, moves, abilities, and more, covering multiple generations of the game. The project aims to provide a reliable and extensive resource for Pokémon-related applications and research.
Pros
- Extensive and detailed Pokémon data covering multiple game generations
- Well-structured database schema for easy querying and integration
- Includes various data formats (CSV, SQL) for flexibility in usage
- Active community and regular updates to keep the data current
Cons
- Large dataset size may be overwhelming for simple projects
- Requires some understanding of database structures to fully utilize
- May contain occasional inconsistencies or errors due to the vast amount of data
- Documentation could be more comprehensive for newcomers
Code Examples
from pokedex.db import connect, tables
session = connect()
bulbasaur = session.query(tables.PokemonSpecies).filter_by(name='Bulbasaur').one()
print(f"Bulbasaur's type(s): {', '.join(t.name for t in bulbasaur.types)}")
This example connects to the database and retrieves Bulbasaur's type information.
from pokedex.db import connect, tables
session = connect()
fire_moves = session.query(tables.Move).filter(tables.Move.type_id == tables.Type.id,
tables.Type.name == 'Fire').all()
print(f"Number of Fire-type moves: {len(fire_moves)}")
This code snippet finds and counts all Fire-type moves in the database.
from pokedex.db import connect, tables
session = connect()
legendary_pokemon = session.query(tables.PokemonSpecies).filter_by(is_legendary=True).all()
print("Legendary Pokémon:")
for pokemon in legendary_pokemon:
print(f"- {pokemon.name}")
This example retrieves and prints a list of all legendary Pokémon.
Getting Started
To get started with the veekun/pokedex project:
-
Clone the repository:
git clone https://github.com/veekun/pokedex.git cd pokedex
-
Install the required dependencies:
pip install -r requirements.txt
-
Set up the database:
python setup.py install pokedex load
-
Start using the database in your Python scripts:
from pokedex.db import connect, tables session = connect() # Your code here
Competitor Comparisons
Pokémon battle simulator.
Pros of Pokemon Showdown
- Active development with frequent updates and contributions
- Implements a full battle simulator with multiplayer functionality
- Extensive documentation and community support
Cons of Pokemon Showdown
- Larger codebase, potentially more complex to navigate
- Focused on battle simulation rather than comprehensive Pokémon data
Code Comparison
Pokedex (Python):
class Pokemon(object):
def __init__(self, id):
self.id = id
self.name = names[id]
self.types = types[id]
Pokemon Showdown (JavaScript):
class Pokemon extends Dex.ModdedDex.Pokemon {
constructor(set, side) {
super(set);
this.side = side;
this.baseTemplate = this.template;
this.species = set.species;
}
}
Key Differences
- Pokedex focuses on providing a comprehensive database of Pokémon information
- Pokemon Showdown emphasizes battle mechanics and online play
- Pokedex uses Python, while Pokemon Showdown is primarily JavaScript-based
- Pokedex offers a more straightforward data structure for Pokémon information
- Pokemon Showdown includes additional features like battle simulation and multiplayer functionality
Both repositories serve different purposes within the Pokémon community, with Pokedex being more suitable for data analysis and reference, while Pokemon Showdown caters to competitive battling and online play.
Database project of box and inventory sprites from the Pokémon core series games
Pros of pokesprite
- Focused specifically on Pokémon sprites and icons
- Includes shiny variants and gender differences
- Regularly updated with new generations and forms
Cons of pokesprite
- Limited to visual assets, lacking comprehensive Pokémon data
- Smaller community and fewer contributors
- Less extensive documentation compared to pokedex
Code Comparison
pokesprite:
const pokesprite = require('pokesprite-images');
const bulbasaurIcon = pokesprite.getPokemonIcon('bulbasaur');
pokedex:
from pokedex.db import connect
session = connect()
bulbasaur = session.query(Pokemon).filter_by(name="Bulbasaur").one()
Summary
pokesprite is a specialized repository focusing on Pokémon sprites and icons, offering a comprehensive collection of visual assets including shiny variants and gender differences. It's regularly updated but lacks the extensive Pokémon data found in pokedex.
pokedex, on the other hand, provides a more comprehensive database of Pokémon information, including stats, moves, and other game data. It has a larger community and more extensive documentation but may not offer the same level of visual asset coverage as pokesprite.
The choice between the two depends on whether the primary need is for visual assets (pokesprite) or comprehensive Pokémon data (pokedex).
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
pokedex
This is a Python library slash pile of data containing a whole lot of data scraped from Pokémon games. It's the primary guts of veekun.
Current status
The project is not dead, but it is languishing. It's currently being maintained by only its creator (eevee) and a couple of other contributors, who are also occupied with a lot of other things.
The project needs to be modernized and to have a lot of rough edges fixed that would also make it easier to maintain for the games and generations to come.
Status of the YAML migration
Update from 2017-06-18
@eevee started on an experiment with switching to YAML for data storage some time ago, for a variety of reasons. It's finally starting to show some promise â all of gen 7 was dumped to a YAML format, then loaded into the database from there â but it'll take a lot more work to get this usable. The intended upsides are:
- The data will include everything from older games, so you don't have to guess! Also, the veekun site will handle older games correctly, probably!
- Many more filtering and searching tools on veekun, since we won't have to fight SQL to write them!
- More interesting data we've never had before, like trainer teams and overworld items! And models? Maps, even? Who knows, but working on this stuff should be easier with all this existing code in place!
- A project that's actually documented and not confusing as hell to use!
- A useful command line interface that doesn't require weird setup steps!
If you're interested in this work, hearing about that would be some great motivation! In the meantime, veekun will look a bit stagnant. We can't dedicate huge amounts of time to it, either, so this may take a while, if it ever gets done at all. Sorry.
How can I help?
I don't know! Not many people have the right combination of skills and interests to work on this. I guess you could pledge to my Patreon as some gentle encouragement. :)
If you are a developer, you can of course also contribute to the development of this project via Pull Requests.
About editing CSV files
Fixing CSV data inconsistency or errors and putting that into a Pull Request it's also appreciated.
Even though, whilst for every new game that we integrate here the initial big dump of data comes directly from the disassembled game files and scripts that parse their data, there is still some data that needs to be fixed or introduced manually.
Pull Requests with manually-written modifications to the CSV files introducing data of new games without a trustful data source will be discarded.
As mentioned, for new games we always try to automate this process with scripts that parse the disassembled game's data data into CSV, excepting whenever we have to fix some data inconsistency or error.
Raw data can also sometimes come from external data miners, which have disassembled the game content and dumped all the information into human-readable text files.
Using the pokedex CLI
A guide is available under the project's Wiki.
Docker support
If you want to use the CLI but you don't want to install all python requirements yourself locally in your computer, you can use Docker and the provided Dockerfile will do everything for you.
You only need to clone this project, and under the project directory, use the docker helper script to run any pokedex CLI command:
Examples:
Generating the SQLite database from the CSV files:
bin/docker-pokedex setup -v
Dumping the SQLite database back into the CSV files:
bin/docker-pokedex dump -l all
You also have a special command to re-build the docker image (e.g. after editing files):
bin/docker-pokedex rebuild
License and Copyright
The software is licensed under the MIT license. See the LICENSE
file for full copyright and license text.
The short version is that you can do what you like with the code, as long as you say where you got it.
This repository includes data extracted from the Pokémon series of video games. All of it is the intellectual property of Nintendo, Creatures, inc., and GAME FREAK, inc. and is protected by various copyrights and trademarks. The author believes that the use of this intellectual property for a fan reference is covered by fair use â the use is inherently educational, and the software would be severely impaired without the copyrighted material.
That said, any use of this library and its included data is at your own legal risk.
Top Related Projects
Pokémon battle simulator.
Database project of box and inventory sprites from the Pokémon core series games
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot