Skip to content

[WIP] A fan-made, text-adventure Pokémon game in Python 3. If you want to Fork it, leave feedback too!

License

Notifications You must be signed in to change notification settings

nasserkessas/Pokemon-PythonRed

 
 

Repository files navigation

Pokémon

PythonRed Version



Summary & Important Notes

  • This is a game written in Python 3 and based on the Pokémon Red game. However, it is not intended to be a perfect recreation; think of it as a remix.
  • Prior in-depth knowledge of the Pokémon franchise, especially the video game series, is recommended and may be required to fully enjoy this game.
  • This project (@Pokemon-PythonRed and anything found within) is not endorsed by Nintendo, GAME FREAK, Creatures Inc., or The Pokémon Company. This is an independent, fan-made game.
  • This game's plot is a work of fiction! Any references to real people or events are completely coincidental.
  • Pokémon PythonRed is a work-in-progress and is intended to be a long-term project. The owners feel no rush to meet community deadlines or expectations. Please be considerate.
  • Any problems with the game can be reported in issues.

Community

If you or someone else has been offended or treated poorly by a member of our community, please submit a complaint.

For report options, please see the Enforcement section of the Code of Conduct.


References

For more information on various topics regarding this project, please visit the following links:


Contributors

This project follows the all-contributors specification (emoji key, command issue). See what you can do to contribute.

All Contributors
All Contributors

📖
Dependabot
Dependabot

🚇
Don Jayamanne
Don Jayamanne

🔧
GitHub Actions
GitHub Actions

💻 📖 🚇 ⚠️
I'm special ;)
I'm special ;)

⚠️
Ikuto Tsukiyomi
Ikuto Tsukiyomi

🎨 🤔
Joe
Joe

⚠️
JohnnySD
JohnnySD

💻 🔣 🤔 🚧 📦 ⚠️
Jérémy LARDENOIS
Jérémy LARDENOIS

💻 🧑‍🏫 📦 ⚠️
Microsoft
Microsoft

💻 🔌 🔧
Mihai Ionut Vilcu
Mihai Ionut Vilcu

🔧
Nando Vieira
Nando Vieira

🔧
Nasser Kessas
Nasser Kessas

💻 ⚠️
Nils Werner
Nils Werner

🔧
Porsce <3
Porsce <3

🎨
Ravanger_101
Ravanger_101

💻 ⚠️
Richard St Germaine
Richard St Germaine

⚠️
Sam
Sam

⚠️
Shan Khan
Shan Khan

🔌 🔧
Sourcery
Sourcery

💻
Trunk
Trunk

💻 🔧
Val=fλ
Val=fλ

💻 🎨 🤔 🚧 ⚠️
Valerie
Valerie

🎨
WeiJian Chen
WeiJian Chen

🔌
basedpainnn
basedpainnn

⚠️
hacking-mudkip
hacking-mudkip

🔣 🤔
just a weeb
just a weeb

💻 🚇 🧑‍🏫 ⚠️

Installation

Startup

  • To play the game, you will need:
    • Windows or Linux OS
    • Python 3 (aka CPython 3.x)
  • Follow this link to download a .zip file of this repository. Once it downloads, unzip and open it.
  • You will need to open a command line in the folder, then run the following command to install dependencies:
python -m pip install -r requirements.txt

Controls

  • When > is shown, press ⏎ Enter to continue. You may need to input text first.
  • When text bullets are shown, you need to enter the character next to the option you choose.
  • In the overworld, navigation bullets are WASD for directional movement, then lettered for interactions. Other commands might also be available.
    • Enter the M command from the overworld to open the menu.
  • When Y/N is shown, you can enter Y or N for "yes" or "no" respectively.
  • When reading through next normally, you can press any key to proceed.

Examples

No text needed, just press ⏎ Enter:

Press Enter to continue.

>_

Type text from a bullet point (e.g. 1 or 2), then press ⏎ Enter:

Choose an option.

[1] - Save
[2] - Quit

>_

Type any variant of yes, y, no, or n, then press ⏎ Enter:

Would you like to save? Y/N

>_

Press any key:

OAK: Hello there! Welcome to the world of POKéMON!
_

Extras

Here's some extra information that isn't required to play the game, but might still be interesting.

Technicalities

Technicalities

Since this is a Python game, some elements will have to be changed from the original version. Here are some examples of challenging changes.

Save data and saving

The game has to keep track of the many variables that make up a Save File. These include:

  • Trainer info
  • Party / Box info
  • If a place has been visited, for Fly locations (each city separately)
  • If cutscenes have been triggered
  • Event flags
  • Pokédex
  • Game mechanic settings for accessibility

These are stored in a Python dictionary variable, which is then saved to the external file .ppr-save via Python's json module.

Game data

Not to be confused with save data, game data is composed of the numbers and calculations that the game uses. These include:

  • Pokémon info
  • Trainer battle info
  • Save file templates

Large sets of data may be stored as .json files in the project folder. This is done to keep the program files concise. These files may be added, removed, or changed at any time.

Save file templates contain all the things the game must keep track of between sessions. On each save or load, the player's file is automatically updated with the latest data, in case an update was performed. This means that when the game is updated, the player can copy their .ppr-save file into the new version, and the save file will automatically be updated with the latest data.

Menus

Pokémon Red is full of menus that look like the following:

Would you like to save your progress?
> Save
  Don't Save

This has been changed to be more suitable for a text-adventure game:

Would you like to save your progress? Y/N

>_

This is done with code similar to the following:

import json
save = {
  # Save Data
}
print('Would you like to save your progress? Y/N')
  saveOption = ' '
  while saveOption.lower()[0] not in ['y', 'n']:
    saveOption = input('>') + ' '
  if saveOption.lower()[0] in ['y']:
    open('.ppr-save', 'w').write(json.dumps(save))
    print('Game saved successfully!')

Save management

The user can use multiple save files by moving or backing up their .ppr-save file to a different directory on their device. This has been implemented in the interest of user-friendliness and safety. Save files can easily be backed up, reset, or shared.


Mystery Gifts

Mystery Gifts

Pokémon games use Mystery Gifts to bring communities together and incentivise players to take part in events, and Pokémon PythonRed is no different. Codes can be given out in planned giveaway events to specific people, left online to be found by anyone, or even given in-person to specific people. Most of them are online, so you should try looking in places @TurnipGuy30 has been.

Technical information

As of the time of writing, Mystery Gifts have not yet been implemented into the game. The base game will have to be completed first. For now, keep track of any codes you find.

Formatting

Pokémon PythonRed Mystery Gift codes are easy to identify because they will always be given in the following format:

Pokémon PythonRed Mystery Gift #20: "POKEMONPYTHONRED"

(Yes, this is a valid code. Consider it a free trial. You're welcome.)

Possible rewards

Redeemed codes will reward a player with in-game items or Pokémon.

Recipient responsibilities

Any person or group who finds or receives a code has no responsibility to keep it to themselves unless otherwise stated by the giver of the code.

Summary

Mystery Gifts are meant to unite the community and provide a fun way to interact with the game.


About

[WIP] A fan-made, text-adventure Pokémon game in Python 3. If you want to Fork it, leave feedback too!

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 99.9%
  • Batchfile 0.1%