Go Back   The PokéCommunity Forums > Creative Discussions > Game Development
Reload this Page [Discussion] Pokémon Trade and Transfer codes

Notices
For all updates, view the main page.

Game Development Your number one stop for anything related to creating games (except ROM hacks). You can even make your own!



Reply
 
Thread Tools
  #1    
Old March 12th, 2013 (10:34 AM). Edited April 19th, 2013 by skylarmt.
skylarmt skylarmt is offline
 
Join Date: Sep 2012
Gender: Male
Posts: 20
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.
Attached Thumbnails
PokeTrans.png‎   PokeTransSmall.png‎  
Reply With Quote
  #2    
Old March 13th, 2013 (12:00 PM).
Rayquaza.'s Avatar
Rayquaza. Rayquaza. is offline
Lead Dev in Pokémon Chaos
 
Join Date: Sep 2011
Location: United Kingdom
Age: 18
Gender: Male
Nature: Adamant
Posts: 602
I do beleive that trading between fangames was a feature of pokémon essentials, I don't think many people liked the idea though.
__________________
Reply With Quote
  #3    
Old March 13th, 2013 (07:11 PM).
TBM_Christopher's Avatar
TBM_Christopher TBM_Christopher is offline
Semi-pro Game Dev
 
Join Date: Jan 2010
Location: Lincoln, NE
Age: 21
Gender: Male
Nature: Quiet
Posts: 304
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?
__________________

Reply With Quote
  #4    
Old March 14th, 2013 (12:55 AM). Edited March 14th, 2013 by Yankas.
Yankas Yankas is offline
 
Join Date: Mar 2013
Gender: Male
Posts: 55
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.
Reply With Quote
  #5    
Old March 26th, 2013 (05:18 PM).
Tayuya of the Sound Four's Avatar
Tayuya of the Sound Four Tayuya of the Sound Four is offline
 
Join Date: Jan 2013
Gender: Female
Posts: 31
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..
Reply With Quote
  #6    
Old March 26th, 2013 (05:49 PM).
oxysoft's Avatar
oxysoft oxysoft is offline
 
Join Date: Sep 2009
Posts: 97
"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
__________________
PokeSharp Engine
Reply With Quote
  #7    
Old April 2nd, 2013 (10:56 PM).
skylarmt skylarmt is offline
 
Join Date: Sep 2012
Gender: Male
Posts: 20
Quote originally posted by Tayuya of the Sound Four:
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?).

Quote originally posted by oxysoft:
This does not really make any sense... Format it as a packet instead
What is a packet?
__________________
Bulbapedia's page on Pikachu, translated into Pikachu. I dare you to click it!
Real Life Pokedex App with wiki-like editing!
Reply With Quote
  #8    
Old April 4th, 2013 (05:07 PM).
Tayuya of the Sound Four's Avatar
Tayuya of the Sound Four Tayuya of the Sound Four is offline
 
Join Date: Jan 2013
Gender: Female
Posts: 31
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
Reply With Quote
  #9    
Old April 5th, 2013 (07:33 PM).
Yankas Yankas is offline
 
Join Date: Mar 2013
Gender: Male
Posts: 55
Quote originally posted by Tayuya of the Sound Four:
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.
Reply With Quote
  #10    
Old April 9th, 2013 (03:50 PM).
FL's Avatar
FL FL is offline
Pokémon Island Creator
 
Join Date: Sep 2010
Gender: Male
Posts: 1,466
Quote originally posted by skylarmt:
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.
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.
__________________
Reply With Quote
  #11    
Old April 15th, 2013 (04:16 PM).
UnderMybrella's Avatar
UnderMybrella UnderMybrella is offline
Some Game Developer
 
Join Date: Jan 2011
Location: Atlantis
Gender: Male
Nature: Calm
Posts: 280
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.
__________________
The Monoball Challenge - Have you got what it takes to catch 'em all, but with only one type of Pokéball? http://www.pokecommunity.com/showthread.php?p=7889482
Reply With Quote
  #12    
Old April 16th, 2013 (06:05 AM).
Maruno's Avatar
Maruno Maruno is offline
Lead Dev of Pokémon Essentials
Moderator
 
Join Date: Jan 2008
Location: England
Posts: 4,438
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.
__________________
Reply With Quote
  #13    
Old April 16th, 2013 (07:08 AM). Edited April 16th, 2013 by the__end.
the__end's Avatar
the__end the__end is offline
Pixel Artist
 
Join Date: Apr 2010
Gender: Male
Posts: 141
Quote originally posted by Maruno:
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.
__________________
Reply With Quote
  #14    
Old April 17th, 2013 (11:27 AM).
TACHAN TACHAN is offline
 
Join Date: Jan 2010
Gender: Female
Posts: 170
Quote originally posted by FL .:
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.
Reply With Quote
  #15    
Old April 20th, 2013 (07:51 PM).
UnderMybrella's Avatar
UnderMybrella UnderMybrella is offline
Some Game Developer
 
Join Date: Jan 2011
Location: Atlantis
Gender: Male
Nature: Calm
Posts: 280
Quote originally posted by Maruno:
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.
__________________
The Monoball Challenge - Have you got what it takes to catch 'em all, but with only one type of Pokéball? http://www.pokecommunity.com/showthread.php?p=7889482
Reply With Quote
  #16    
Old April 20th, 2013 (08:06 PM).
oxysoft's Avatar
oxysoft oxysoft is offline
 
Join Date: Sep 2009
Posts: 97
Quote originally posted by Anglican:
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.
__________________
PokeSharp Engine
Reply With Quote
  #17    
Old April 20th, 2013 (10:40 PM).
UnderMybrella's Avatar
UnderMybrella UnderMybrella is offline
Some Game Developer
 
Join Date: Jan 2011
Location: Atlantis
Gender: Male
Nature: Calm
Posts: 280
Quote originally posted by oxysoft:
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
__________________
The Monoball Challenge - Have you got what it takes to catch 'em all, but with only one type of Pokéball? http://www.pokecommunity.com/showthread.php?p=7889482
Reply With Quote
  #18    
Old April 21st, 2013 (04:35 AM).
Maruno's Avatar
Maruno Maruno is offline
Lead Dev of Pokémon Essentials
Moderator
 
Join Date: Jan 2008
Location: England
Posts: 4,438
Quote originally posted by oxysoft:
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.
__________________
Reply With Quote
  #19    
Old April 21st, 2013 (11:34 PM).
Yankas Yankas is offline
 
Join Date: Mar 2013
Gender: Male
Posts: 55
Quote originally posted by oxysoft:
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.
Reply With Quote
  #20    
Old April 30th, 2013 (06:36 PM).
Tayuya of the Sound Four's Avatar
Tayuya of the Sound Four Tayuya of the Sound Four is offline
 
Join Date: Jan 2013
Gender: Female
Posts: 31
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 :/
Reply With Quote
Reply
Quick Reply

Sponsored Links

You may also like.. (Beta)
Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are UTC -8. The time now is 12:30 PM.