PythonRed Version
Project Status Updates
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:
- Code Of Conduct
- Contributing Guidelines
- Contributors List
- Current Tasks
- Discussions
- Installation Guide
- Issue Management
- License
- Project Status Updates
- Security Policy
Contributors
This project follows the all-contributors specification (emoji key, command Issue). See what you can do to contribute.
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
-
Finally, open
main.py
in theapp
folder. -
If you encounter any problems when opening the game, feel free to create an Issue.
- If you want to contribute to the project, please see the Contributing Guidelines.
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 numbered for interactions. Other commands might also be available. - When
Y/N
is shown, you can entery
orn
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.
>_
Enter text from a bullet point:
Choose an option.
[1] - Save
[2] - Quit
>_
Enter Yes or No:
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 save.json
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 save.json
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\n')
saveOption = ' '
while saveOption.lower()[0] not in ['y', 'n']:
saveOption = input('>') + ' '
if saveOption.lower()[0] in ['y']:
open(os.path.join(sys.path[0], 'save.json'), 'w').write(
json.dumps(save, indent=4, sort_keys=True)
)
print('\nGame saved successfully!')
Save management
The user can use multiple save files by moving or backing up their save.json
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.