The PokéCommunity Forums  

Go Back   The PokéCommunity Forums > Creative Discussions > Game Development
Sign Up Rules/FAQ Live Battle Blogs Mark Forums Read

Notices

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


Advertise here

Reply
Click here to go to the first staff post in this thread.  
Thread Tools
  #1    
Old March 12th, 2013, 10:34 AM
skylarmt
 
Join Date: Sep 2012
Gender: Male

Advertise here
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‎  

Last edited by skylarmt; April 19th, 2013 at 10:39 AM.
Reply With Quote
  #2    
Old March 13th, 2013, 12:00 PM
Rayquaza.'s Avatar
Rayquaza.
Lead Dev in Pokémon Chaos
 
Join Date: Sep 2011
Location: United Kingdom
Age: 18
Gender: Male
Nature: Adamant
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
Java's Missingno.'s Avatar
Java's Missingno.
The Electric Mayhem
 
Join Date: Jan 2010
Location: Lincoln, NE
Age: 20
Gender: Male
Nature: Quiet
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
Yankas
 
Join Date: Mar 2013
Gender: Male
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 by Yankas; March 14th, 2013 at 05:27 AM.
Reply With Quote
  #5    
Old March 26th, 2013, 05:18 PM
Tayuya of the Sound Four's Avatar
Tayuya of the Sound Four
 
Join Date: Jan 2013
Gender: Female
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
 
Join Date: Sep 2009
"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
 
Join Date: Sep 2012
Gender: Male
Quote:
Originally Posted by Tayuya of the Sound Four View Post
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
 
Join Date: Jan 2013
Gender: Female
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
 
Join Date: Mar 2013
Gender: Male
Quote:
Originally Posted by Tayuya of the Sound Four View Post
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
Pokémon Island Creator
 
Join Date: Sep 2010
Gender: Male
Quote:
Originally Posted by skylarmt View Post
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
Some Game Developer
 
Join Date: Jan 2011
Location: Atlantis
Gender: Male
Nature: Calm
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
Lead Dev of Pokémon Essentials
 
Join Date: Jan 2008
Location: England
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
the__end's Avatar
the__end
Pixel Artist
 
Join Date: Apr 2010
Gender: Male
Quote:
Originally Posted by Maruno View Post
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 by the__end; April 16th, 2013 at 07:14 AM.
Reply With Quote
  #14    
Old April 17th, 2013, 11:27 AM
TACHAN
 
Join Date: Jan 2010
Gender: Female
Quote:
Originally Posted by FL . View Post
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
Some Game Developer
 
Join Date: Jan 2011
Location: Atlantis
Gender: Male
Nature: Calm
Quote:
Originally Posted by Maruno View Post
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
 
Join Date: Sep 2009
Quote:
Originally Posted by Anglican View Post
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
Some Game Developer
 
Join Date: Jan 2011
Location: Atlantis
Gender: Male
Nature: Calm
Quote:
Originally Posted by oxysoft View Post
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
Lead Dev of Pokémon Essentials
 
Join Date: Jan 2008
Location: England
Quote:
Originally Posted by oxysoft View Post
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
 
Join Date: Mar 2013
Gender: Male
Quote:
Originally Posted by oxysoft View Post
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
 
Join Date: Jan 2013
Gender: Female
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


Advertise here
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
Minimum Characters Per Post: 25



All times are UTC -8. The time now is 04:18 AM.


Style by Nymphadora, artwork by Sa-Dui.
Like our Facebook Page Follow us on Twitter © 2002 - 2014 The PokéCommunity™, pokecommunity.com.
Pokémon characters and images belong to The Pokémon Company International and Nintendo. This website is in no way affiliated with or endorsed by Nintendo, Creatures, GAMEFREAK, The Pokémon Company or The Pokémon Company International. We just love Pokémon.
All forum styles, their images (unless noted otherwise) and site designs are © 2002 - 2014 The PokéCommunity / PokéCommunity.com.
PokéCommunity™ is a trademark of The PokéCommunity. All rights reserved. Sponsor advertisements do not imply our endorsement of that product or service. User generated content remains the property of its creator.