⚠️ The guidelines of this project are voluntarily strict to avoid any drift, please read carefully to avoid any disappointment
⚠️ Keep in mind that Gracidea is NOT A GAME PROJECT, only an artistic project. All suggestions related to introduction of game mechanics (player, battles, captures, etc.) will be systematically rejected.
- Perform a search on this repository to ensure that:
- Nobody is working on it currently
- It has not been already suggested or ruled out
- Open a
discussionbefore starting any changes- Be respectful
- Wait for feedback from other people
- Wait for an approval by a maintainer (an associated issue will automatically be created)
- Perform editions and open pull request
- Ensure that all builds are passing
- Preview you changes through the Vercel deployment link
- Wait for reviews
- Pull request will be merged if approved, thanks for contributing 🥳 !
ℹ️ For easier maintaining, inactive issues and pull requests will automatically be closed after a certain amount of time
⚠️ Any change must be motivated through official supporting references, such as games, anime, manga or promotional artworks (in this prefered order).Not following this instruction may result in a pull request closure without notice
ℹ️ Apart from first generations core games, other mapping sources will require a bit of creativity and adaption. The aim is to be faithful while making these custom maps integrate nicely. Most of the time, it means:
- Making important building or features present
- Respect more or less the map scale
- Not bloating a map section with too much tiles
- ✔️ Fix maps and/or textures errors
- ✔️ Add or create new maps (in the following preference order):
- ✔️ From core games
- ✔️ From spin-offs game
- ✔️ From anime or manga
- ✔️ From promotional artworks
- ✔️ Custom fillers maps
- ✔️ Add or create new textures
⚠️ New textures styles are allowed provided they respect a given core game style
- Mapping knowledge
- Tiled map editor general knowledge
- Mapping environment
- Tiled map editor
- TexturePacker
⚠️ A license may be required to regenerate textures
- Any image editing software
GitHub users having access to GitHub codespaces may directly use the custom container with all dependencies installed (this also include Tiled map editor which is accessible through NoVNC)
Open Tiled map editor and load maps/gracidea.world.
Start editing a new map file or an existing map file.
- Maps filenames must follow this convention:
${region}/${location-area}.tmxfor official maps, wherelocation-areais defined in pokeapi.co/api/v2/location-area${region}/anime-${name}.tmxfor anime locations${region}/manga-${name}.tmxfor manga locations${region}/fill-${number}.tmxfor custom filler maps, wherenumberis an unused number
- Maps layers must follow this convention and have:
creaturesobject layer for area with wild encounters- Create a new polygon having name set to an
encounter-methoddefined in pokeapi.co/api/v2/encounter-method - ℹ️ Encounter rates are auto-generated and do not need any further editions
- Create a new polygon having name set to an
peopleobject layer for human NPCs- Create a new polygon having name set to a supported NPC texture, and type set to a supported NPC pattern
${X}tiles layer whereXis a number between1and4- Use the tileset to fill this map, with these guidelines:
1Ground tiles2Secondary ground tiles (road paths, flowers, grass, etc.)3Objects (houses, trees, panels, etc.)4High objects (roof, tree top, etc.)
- Sea must not be mapped
- Use the tileset to fill this map, with these guidelines:
ℹ️ A world map must then be added to
gracidea.worldand saved
Open Tiled map editor and load maps/all/worldmap.tmx.
Start editing file.
- World map layers must follow this convention:
linksobject layer for location link- Create a new polygon and set name to
${region}/${location-area}wherelocation-areais defined in pokeapi.co/api/v2/location-area
- Create a new polygon and set name to
interests.*tiles layer is used for interests pointscities.*tiles layer is used for cities and townsroads.*tiles layer is used for roads${region}image layer needs to reference a supported regionroads.seatiles layer is used for sea roads which needs to appear below regions render*.extlayers are used to define locations from extended sources, such as spin-offs, anime, manga, etc.*.corelayers are used to define locations from core games
Open copyrighted/textures/${style}/tileset.png where style is a supported style (any folder except all).
Start editing file.
Create new tiles on "MissingNo" placeholders and try to group related tiles together.
⛔ Do not resize
tileset.png, its dimensions are used internally for other applications
⚠️ Other files such ascreatures.{json,tps,webp},npcs.{json,webp}andtileset.{json,tps,tsx,webp}should not be edited directly. They are either generated automatically or rebuilt with TexturePacker
Textures located in copyrighted/textures/all are handled differently than style texture packs.
For regular tilesets, edit the associated .png file and create new tiles on "MissingNo" placeholders and try to group related tiles together.
For world regions, create a new .png file in copyrighted/textures/all/regions.
⚠️ Please open adiscussionfirst and wait for feedback and approval before starting to code.Not following this instruction may result in a pull request closure without notice
- ✔️ Performance improvements
- ✔️ Features additions
- ⛔ All "gaming features" will systematically rejected
⚠️ Complex features may be rejected, this is why it is required to open adiscussionfirst
- ✔️ Data externalisation
⚠️ Any external source used must be trustworthy and be "established"
- ✔️ Tests additions
- ❌ Build scripts refactoring
- ❌ Repository-level files editions (
LICENSE,CODE_OF_CONDUCT,.github)
- Development knowledge
- TypeScript fluency
⚠️ Including typing system, usinganyeverywhere is not allowed!
- Vanilla JavaScript general knowledge
⚠️ Including ESNext features and syntax, future is now!- ⛔ External libraries (except
pixi.js) are not allowed to avoid bloating, as this app is already quite heavy
- PixiJS rendering engine general knowledge
- TypeScript fluency
- Development environment
- Deno runtime
- Velociraptor script manager
- Basic tools (
git,npm,tar, ...)⚠️ Windows Subsystem for Linux is required for Windows users
GitHub users having access to GitHub codespaces may directly use the custom container with all dependencies installed (this also include Tiled map editor which is accessible through NoVNC)
Use vr build and then vr start to start a local instance.
⚠️ Note that by default, already generated data are not rebuilt if files are already present. Pass--cleanflag to ensure that cache is fully reloaded
Changes should pass vr fmt and vr lint.