• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • Forum moderator applications are now open! Click here for details.
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

[Discussion] Pokémon Trade and Transfer codes

20
Posts
11
Years
  • Seen Nov 27, 2015
Hello everyone!

I propose a standard code system for transferring Pokémon between fan-made games.

The codes would be typed into a receiving game, and when the user confirms in the sending game that the transfer is successful, the sending game deletes the Pokémon's data while the receiving game enters the data into the game. I have made a document listing all the stuff needed for compatibility, and have it on a site.

The site: http://poketrans.atspace.cc
This site has a fairly long document with exact specs and code formats. If I am missing anything important, contact me and I'll fix it.

If you choose to implement this, feel free to use the attached images in your game to show compatibility. If you use it in a game, the above site has a list of games that use PokéTrans, and I can add you in!

Oh, and a note for those who would say it makes cheating easy: We all know about all the Pokémon cloning and cheating with the GTS hacks, right? I see no difference. :P
 
Last edited:

Rayquaza.

Lead Dev in Pokémon Order and Chaos
702
Posts
12
Years
I do beleive that trading between fangames was a feature of pokémon essentials, I don't think many people liked the idea though.
 

TBM_Christopher

Semi-pro Game Dev
448
Posts
14
Years
Interesting concept, and I think it has been attempted before. Have you considered a toggle which would let users pick and choose which Pokemon could be transferred to their own fangames, as a means of preventing undesired Fakemon from showing up?
 
56
Posts
11
Years
  • Seen May 24, 2021
If I understood this correctly, the sending user has to confirm manually that the receiving user has entered the code? If so then this might be a deterrent for many games because this is basically the addition of cheat codes.


Also if users have to enter the code manually I strongly suggest reducing its length using some encoding which is also doubles as a form of weak "encryption"

Also, rather than transfering stats, you should transfer IVs and EVs since it is impossible to reverse the calculation and obtain them from just the final stat. Two games may also have differing base stats for the same species.
There are basically tons of issues that cannot be solved if you just transfer one stat.

The same may go for ability also, since Pokémon usually have up to 3 defined abilities, which are internally saved as first, second, and third rather than specifying the ability itself.
So, since ability is just another number it could be added to the stat codes.

As for gender, genderless needs to be included, unless it it the assumed value if no gender is specified.


Ideally all those numbers would actually be represented as their respective (int16 for species, byte for EVs/IV,Ability etc) and then encode the result in base64 to generate a significantly shorter human readable string that serves as the code. It makes it slightly harder to parse for the developers implementing it, but is so much more convinient for users. It also requires at least SOME amount of research/reverse engineering to manipulate code effectively, rather than just changing numbers.
 
Last edited:
31
Posts
11
Years
  • Seen Nov 9, 2013
I don't completely follow your explanation.. Is this a system that allows the trading of Pokemon from two instances of the same fan game or a trade system between two completely separate fangames? In the latter, some issues aside from fakemon would arise would it not? Specifically some trades would be gamebreaking maybe because the creator of one fangame removed the use of a certain move for a pokemon and that traded pokemon has it, or something similar. If that is the case though, is this possible to work with two instances of the same fangame? I've been trying to develop a trade system myself but I'm learning Ruby Scripting as I go so..
 
99
Posts
14
Years
  • Seen Jan 16, 2023
"The format is as follows:

0010251100056034067023123
Where:
001 is the species number,
025 is the level,
1 is the shiny bit,
100 is the HP,
056 is the attack,
034 is the defense,
067 is the special attack,
023 is the special defense, and
123 is the speed."

This does not really make any sense... Format it as a packet instead
 
20
Posts
11
Years
  • Seen Nov 27, 2015
I don't completely follow your explanation.. Is this a system that allows the trading of Pokemon from two instances of the same fan game or a trade system between two completely separate fangames? In the latter, some issues aside from fakemon would arise would it not? Specifically some trades would be gamebreaking maybe because the creator of one fangame removed the use of a certain move for a pokemon and that traded pokemon has it, or something similar. If that is the case though, is this possible to work with two instances of the same fangame? I've been trying to develop a trade system myself but I'm learning Ruby Scripting as I go so..

Well, it could work with two copies of a single fangame, or different fangames. As to Fakemon, that should work like the Time Capsule trading between Gen I and II, that is, new Pokemon, or Fakemon, are not allowed to transfer. However, I am going to add support for that sort of thing by using the Pokedex number 000 in the code, and specifing a form with a key/pair. This will also allow for glitch Pokemon to be transferred (Missingno. anyone?).

oxysoft said:
This does not really make any sense... Format it as a packet instead

What is a packet?
 
31
Posts
11
Years
  • Seen Nov 9, 2013
Oh I get it now, I would like to use this in my fan game, but I'm a little lost on how to use it, is there anyway you could make some sort of tutorial of sorts explaining what should be done? I looked at the site but don't see an explanation on how to use it o.o
 
56
Posts
11
Years
  • Seen May 24, 2021
Oh I get it now, I would like to use this in my fan game, but I'm a little lost on how to use it, is there anyway you could make some sort of tutorial of sorts explaining what should be done? I looked at the site but don't see an explanation on how to use it o.o

It's just a standard used for the codes themselves, to implement them you'll need to add a textbox/scene where the user can type in a code they receive, and a scene where they can export one of their Pokémon.
The exact implementation will depend on the engine and programming language used in your game.
You'll basically need to write a "converter" that can convert a Pokémon in your game to a code in the format, which is rather trivial. You'll also need to write the parser that converts a code back into a Pokémon.
 

FL

Pokémon Island Creator
2,434
Posts
13
Years
  • Seen today
Oh, and a note for those who would say it makes cheating easy: We all know about all the Pokémon cloning and cheating with the GTS hacks, right? I see no difference. :P
OMG! If Game Freak make mistakes, is ok for us to make the same mistakes? NO!

I am against trades because they mess with gameplay. It's VERY HARD to an trade be equal in both sides. An example: A high level pokémon caught at end of game for a starter of someone who started the game in around an hour. All without talking about cheating/cloning that totally mess with people that doesn't use/know these methods and hunt/create their pokémon.

A trade in these style between fangames mess the gameplay even more! Think about a game where you can caught legendaries in the wild, so you instant won in the trade scenario. All without talking about custom movesets.
 

UnderMybrella

Wandering Programmer
280
Posts
13
Years
As FL said, it can seriously mess up gameplay. Between two instances of the game, fine, but between games??? I'd make it a requirement that games are 'checked' with each other. For example, Game a and game B would like to trade. The games have a unique code (Make some utility that gives each game a unique code) and before the trade is started, these codes are sent. If it is detected that the code is not whitelisted (Or blacklisted, depending on what the game developers want), then the trade is automatically cancelled - This prevents me from creating a game that just gives me the legendaries and trading them into another game.
 

Maruno

Lead Dev of Pokémon Essentials
5,285
Posts
16
Years
Indeed. This by itself is not enough to prevent all kinds of problems. Games wanting to be compatible must have matching data layouts (e.g. Bulbasaur is species number 1 in all of them) and contents (e.g. they all contain the species Bulbasaur).

Whitelisting would be the only solution, so long as no one except partner game makers get hold of the unique ID number of your game. As soon as any of the partner games' IDs falls into the wrong hands, the entire whitelisting system becomes irreparably compromised.

I simply can't see a solution to this at all.

The same problem occurs with game-to-same-game trades too, because you still need an ID to distinguish whether the other game is the same or different to this one. Alternatively, you could use a unique encryption for the trade data per game, but that's the opposite of having a standardised system which this thread is about (and it can still be compromised if someone figures out how to decrypt the information).

My opinion is that this simply isn't feasible for the world of fangames. Or rather, it's perfectly possible, and the insurmountable problem is in making sure unscrupulous people (to put it politely) won't hack and ruin it for their own pleasure.
 

the__end

Pixel Artist
141
Posts
13
Years
  • Seen Jun 9, 2016
My opinion is that this simply isn't feasible for the world of fangames. Or rather, it's perfectly possible, and the insurmountable problem is in making sure unscrupulous people (to put it politely) won't hack and ruin it for their own pleasure.

Seriously who cares about people hacking/cheating on fan games? If the player wants to destroy the fun of the game it is not the developers problem. Hacking/Cheating should only be prevented if it gives the player an advantage over other player. And since this cant happen with an offline game who cares? I would even go as far as saying that the developer should add cheat codes so the player can have fun with the game after finishing the story. In the end it is the decision of the player if he wants to use cheats or not.
 
Last edited:
199
Posts
14
Years
  • Seen Jul 6, 2022
OMG! If Game Freak make mistakes, is ok for us to make the same mistakes? NO!

I am against trades because they mess with gameplay. It's VERY HARD to an trade be equal in both sides. An example: A high level pokémon caught at end of game for a starter of someone who started the game in around an hour. All without talking about cheating/cloning that totally mess with people that doesn't use/know these methods and hunt/create their pokémon.

A trade in these style between fangames mess the gameplay even more! Think about a game where you can caught legendaries in the wild, so you instant won in the trade scenario. All without talking about custom movesets.

It might be avoided activating the trades when you complete the game and not before.
And to put a condition that if it detects that you have one legendary in the team, you cannot enter to the Trading Room.

The cheats are unavoidable.
 

UnderMybrella

Wandering Programmer
280
Posts
13
Years
Indeed. This by itself is not enough to prevent all kinds of problems. Games wanting to be compatible must have matching data layouts (e.g. Bulbasaur is species number 1 in all of them) and contents (e.g. they all contain the species Bulbasaur).
The solution to the bulbasaur at species slot 1, for example, would be to transfer over the details about the Pokemon, such as species, name, OT, moves, ribbons, etc. Then, on the receiving end, create a Pokemon using that information.
 
99
Posts
14
Years
  • Seen Jan 16, 2023
The solution to the bulbasaur at species slot 1, for example, would be to transfer over the details about the Pokemon, such as species, name, OT, moves, ribbons, etc. Then, on the receiving end, create a Pokemon using that information.

That would be stupid as in good programming practice, you would normally store the data that is static to a pokemon in a different object than the actual pokemon instance. The pokemon instance would have a reference to the information object mentioned. If you were to create a new information object for every trades, it would be error prone and stupid anyway.

Edit: your encryption is also pretty pointless because since it's public, anyone can just generate their own pokemon using that encryption and even if you wrote an API and put that encryption in it, people could easily reverse engineer the API and check out the encryption in it.
 

UnderMybrella

Wandering Programmer
280
Posts
13
Years
Edit: your encryption is also pretty pointless because since it's public, anyone can just generate their own pokemon using that encryption and even if you wrote an API and put that encryption in it, people could easily reverse engineer the API and check out the encryption in it.
Same with the trading system mentioned here. And yeah, upon looking back, it would be a bit dumb
 

Maruno

Lead Dev of Pokémon Essentials
5,285
Posts
16
Years
That would be stupid as in good programming practice, you would normally store the data that is static to a pokemon in a different object than the actual pokemon instance. The pokemon instance would have a reference to the information object mentioned. If you were to create a new information object for every trades, it would be error prone and stupid anyway.

Edit: your encryption is also pretty pointless because since it's public, anyone can just generate their own pokemon using that encryption and even if you wrote an API and put that encryption in it, people could easily reverse engineer the API and check out the encryption in it.
You really could have phrased that a bit more nicely, you know.
 
56
Posts
11
Years
  • Seen May 24, 2021
That would be stupid as in good programming practice, you would normally store the data that is static to a pokemon in a different object than the actual pokemon instance. The pokemon instance would have a reference to the information object mentioned. If you were to create a new information object for every trades, it would be error prone and stupid anyway.

I actually think you misunderstood his post. I don't think he wants to create a new species/'information' object every trade. His idea was probably just to attach the name of the species and then just search a container of species' in your for something with the same name and start building the instance of the actual Pokémon from there with all the other information mentioned in his post (OT, Moves, Ribbons).
I don't think he actually wants to build a custom species for every Pokémon since all of the attributes he mentioned (OT, moves, ribbons) are specific to individuals and not species.
So all he suggested was using the textual representation of the species' name for identification rather than an id or Pokédex number. That's how I interpreted it anyway.
 
31
Posts
11
Years
  • Seen Nov 9, 2013
Would anyone be able to make some sort of tutorial or example of how to put this in a game? I've been trying to figure it out bur I'm not skilled enough at coding :/
 
Back
Top