Jump to content

Titania

Veterans
  • Posts

    35
  • Joined

  • Last visited

 Content Type 

Profiles

Forums

Events

Reborn Development Blog

Rejuvenation Development Blog

Starlight Divide Devblog

Desolation Dev Blog

Posts posted by Titania

  1. I'm unsure exactly what strangeness is going on here; the game obviously can't find some resource that it's seeking, but you haven't given a lot of information about what precisely you deleted and what version/game trigger is causing this message.  What I can tell you though is that you won't have to play it from the beginning!  Pokemon Reborn stores its save files externally (where depends on your operating system).  If you want to find you save file just for reassurance's sake that it's still there, search your computer for the file "game.rxdata".  Any version of Pokemon Reborn will access the save files in the same location, and unless you go out of your way to find and delete them separately they'll still be there when you delete your Pokemon Reborn versions.

     

    Just in case you did something else, proper procedure for updating versions is just to download the new version, delete the old version in its entirety (the whole darn directory), then just boot up the new exe file in the new version's folder.

  2. 1 hour ago, Trufa said:

    @Titania Sorry, you seem to deep understand how things work. But if I'm not mistaken, TM Sludge Bomb is not available yet on Reborn. At least I didn't find it on my last gameplay (I played E17 as soon as it launched, so I didn't play on Public Release). If it's availabe, please tell me where to get, I really need it on my Roserade. Maybe you are confusing with TM Sludge Wave which can't be learn by Roserade (unfortunately).

    You caught me!  Whoopsie!  It'd just been long enough since I played the early part of the game that I mixed up which TM Aya gave out.  Sorry :(

  3. 4 big points stand out to me:

    • You're MUCH too far away from having a z or mega ring to be planning for such things with your current team.  When you are close enough to acquiring one that it's worth training something up that's compatible with them, your option set will be vastly expanded and you should draw from that pool of candidates.  In Reborn it is much more useful to focus on what is available to you in the here and now, and preferably as low-hanging fruit given the likelihood of any given team element becoming obsolete later.
    • Your Golem's EVs are allocated terribly.  You can do the math with Pokemon's damage formula and your own IV allotment to figure out optimal bulk allocations with the remaining EVs, and you missed the mark by a ton (in fact, yours is strictly dominated).  The obvious 252 hp / 4 defense grants 0.1% increased physical bulk with the "convenient" side effect of a 22.4% special bulk increase.  If your chopping of all EVs into defense is intended to signify that you don't care about special bulk whatsoever and seek only to optimize for the physical, then the correct answer is 136 hp / 120 defense, which will grant you +1.1% physical bulk and +11.8% special bulk.  If that was the case, notice the ludicrously steep diminishing returns at which you trade the 2 off (about 10x in percentage change) and reconsider about sole-physical optimization.
    • I'm not a fan of your Roserade set at all.  The redundancy of having both toxic and t-spikes is obvious, and venoshock is way too much setup for the amount of payoff it yields.  Venoshock is also a "win more" in that it only gets the good payoff against things which your Roserade is already strong against, making it utterly useless against the things it wasn't (namely poison and steel types).  Sludge bomb -> sludge bomb is also even more damage than toxic -> venoshock!  So this doesn't hold up on a lot of levels.  My suggestion is to run technician on it instead, then change the moveset to t-spikes / hidden power (ice) / giga drain / sludge bomb.  It's a trivial change to make (requires only 2 TMs that you guaranteed possess given that they come from gym leaders), it gives you a much wider array of coverage, better damage per turn, the ability to get in there from turn 1 without setup, and retains t-spikes for the match-ups where those just win the game by themselves.  You still even do alright at poisoning your (immediate) targets with sludge bomb's 30% chance.  The fact that by pure luck your HP type is such a good one is not to be overlooked!  Also obviously when you have a chance, friendship berries will let you retrain all those attack EVs into a more useful stat (honestly both hp and speed are useful).
    • Care to show Togekiss specs?  They kind of do matter.  Your team is very high in physical bulk, but Togekiss is the lynch pin of any special bulk given its natural stat spread.  Not that you can't work without a special tank, but it would be convenient if it wasn't optimized purely for speed/power, and I definitely wouldn't give any consideration to physical bulk on it (judging by your nature choice, it seems you have?).

    I wouldn't worry about picking up types just to have them.  That's kind of silly if you think about it.  You already have a more-or-less complete coverage set with what you've got (better with HP ice Roserade) and a useful array of resistance combinations.  Also I second that you're are playing the right 6 and should leave Greninja on the bench.  It's scant in utility until you can TM it to know icy wind and grass knot.  Its low on both bulk and power and only really an effective Pokemon based on broad protean coverage.  When the dumb bots you're playing against can't figure out when to switch anyway, that mitigates its advantage and leaves its downsides untouched.

  4. Do you know what effective minds DON'T do?  They don't write out long, thoughtfully-considered posts analyzing their own doings and updating their beliefs on the basis therein.  They don't stop to consider own effectiveness.  They don't display excellent decision-making power and value judgment ability.  And you're doing all these things!

     

    You're calling your mind "as messed up as it gets," but please... don't be so hasty to short-sell yourself.  When I struggled through depression in college, one of the problems I faced was learning what sadnesses were actually coming from it (and which were just legitimate sad things).  Some sadnesses happen because our minds break down and create illusory horrors, apathy, antimotivation, and despondency.  But most of our sadness comes from real problems and stresses outside of us!

     

    Clearly you are sad.  I can feel the hope slowly slipping away in the post you wrote...  :'(  But all the signs are there and you're fighting back!  Don't doubt your own mind.  Don't doubt your own power!  I won't pretend that I can solve all this.  It's a hard position to work yourself from.  It must be, because if it wasn't I know you'd already have everything solved!

     

    Have faith in yourself, and always remember that just because everything around you feels terrible does not mean that you are.

  5. I just played a series of online battles with my roomie, and we managed to trigger 4 different errors.  Eek!  If it matters for any of these, my roomie runs Reborn on Windows while I run it on a Mac in Wine.

     

    • Game starts, I lead with a scarfed shadow tag Gothitelle, my roomie leads with a Swanna.  I go first tricking him a scarf, he clicked rain dance (har har har).  The next 4 turns are me selecting a move that does nothing (snore) and him of course repeatedly rain dancing, but going first thanks to the choice scarf.  My plan here is to trick him back on turn 7 after he struggles twice, then go first and KO him with psychic after he's taken struggle recoil, the rain has elapsed, and I'm virtually full health.  However, on turn 6 when he would struggle the first time, I pick my move and then see the screencap shown at the end of this post.  On his end, he sees himself struggling as normal, me tricking him back, and then he's stuck at the "waiting for other player" prompt forever since my game has crashed fatally.  I am assuming this is somehow caused by weird circumstances forcing a struggle?
    • We re-tried for the sake of science, but this time with me tricking him back prematurely.  The game did not express any error messages, but upon tricking back I found myself locked into trick.  This is incorrect behavior for this move.  Choice items should only lock you into moves that you clicked at start of turn while holding the same instance of the item as you click them.  I am aware this glitch is not online-exclusive.
    • Game starts, my opponent leads with a Feraligatr and I with a Chansey.  He uses thrash and I use stealth rock.  The second turn of his thrash lock continues as I toxic him.  No crits or secondary effects of any kind occur during all of this.  At the end of this turn, he sees his thrash lock ending and himself becoming confused.  I do not.  Clearly the battle's already desynced, so I don't know if anything matters from this point forward, but just in case: I swap to Chesnaught.  He tries to thrash again.  On his end, he sees himself getting hit in confusion.  On my end, of course I see the third turn of the trash lock completing.  Then I get the error contained in the second screenshot at the end of this post, though he sees nothing as the battle apparently continues normally.  The next turn I manage to kill him from his viewpoint while not killing him from mine, and from there all hell breaks loose as everything is just desynced to the point of absurdity forevermore.  The irony was strong with this one...  we played the battle on glitch field, and wow did it deliver on the name :P
    • Whenever my roomie used substitute, I couldn't see it.  I get all the text prompts and everything is handled correctly from a mechanical standpoint; it's just a graphical glitch.  The user of substitute still sees the right battler sprite.

     

    Screencap of the error message in glitch 1:

    5a890537f0a06_ScreenShot2018-02-17at5_51_26PM.png.1405a1e7d19624474eac16ffbdc8442a.png

     

    Screencap of the error message in glitch 3:

    5a8908b1c679a_ScreenShot2018-02-17at6_19_37PM.png.8fe8d2171c4db2ad16a0cc4a141ca8d2.png

     

  6. Oh, wow.  It's just kind of....  sitting right there.  Yeah, that was definitely the issue.  The TM is only there when mirage tower isn't, which by pure coincidence I had never checked while it was the case.  Go figure; thanks all.  Also such subtle signaling about what to do with that area.  Well-played Ame :)

    • Like 1
  7. 7 minutes ago, Illumi said:

    When you are at the Scrapyard entrance, go East until you hug a wall, then go north until you will find funny looking tiles and gray water, Return is there

    That's the area I'd combed extra-thoroughly based on the original description, yes.  But following your directions I keep coming back to Mirage Tower.  Is the problem that I need to trip one of the light shards at the desert mirages in order to de-spawn the tower first?  Because the only water I can find is bright blue.

  8. On 12/5/2017 at 6:00 AM, DarkMasterKendall said:
      Reveal hidden contents

    I also found return wanderung around through the desert, was in an isolated area on the top right part

     

    Would you mind elaborating on this?  Or anybody else who knows where this particular TM can be found?  I've given over a couple hours to searching meticulously and come up with nothing still :'(

  9. Hello all!

     

    Sorry if I'm mistaken about what's supposed to happen, but I've heard that in episode 17 it's possible to obtain a mega/z ring once you finish up and defeat Amaria.  I have.  But I don't seem to be able to?  I can't find DJ Arclight anywhere.  I've been told he's supposed to be waiting inside the Grand Hall, but he's not.  Also it was my understanding that every gym badge I acquired would enable me to pay up to renovate a new area of Reborn, and I can't do that either.  My sequencing on that process was defeat Adrien -> renovate railnet -> defeat Titania -> renovate Azurine Island -> defeat Amaria, but I am unable to renovate the slums and still get the usual "we're still finishing up with your last project" message.

     

    So my theory is that somehow I managed to beat Amaria but whiff on triggering some flag that would update the Grand Hall?  Or maybe my Grand Hall was just in a bizarre game-state because I failed to kick off some other thing inside it earlier that most people usually do?  Or it's possible that I needed to do something else besides defeat Amaria to trigger these events and I'm just misunderstanding.  I'd really appreciate it if somebody could explain to me what's going on.  My save file is attached.

     

    Thank you so much Reborn community!

    Game.rxdata

  10. I know I'm late to this party, but if some kind soul wouldn't mind doing the same for my save where I beat Serra pre-17 and editing in the aurora veil TM I would be very thankful :).  The file is zipped to circumvent the forum's file size limitation for uploads.

    Game.rxdata.zip

  11. Today I was reading a psychology research journal and learned the greatest thing:

     

    In an effort to develop a greater understanding of how the human handles the evolutionary necessity of sexual attraction, scientists have now done studies that involve dressing lab rats up in lingerie and analyzing the fervency of the ensuing rat sex :)

     

    (Okay if you want to be super boring about it, they were examining whether lingerie attraction was Pavlovian or innate, how the lingerie concept generalizes to other animals, and whether its value in sexual appeal exists largely as a signaling method of sexual receptivity, all of which involved some nuanced experimental design complete with brain scans...  but none-the-less also involve sexy lady rats in lingerie :P)

  12. I always loved the more technical fields.  In high school I had less intense focus on any particular sub-discipline of these fields, but I knew I liked math (especially combinatorics), physics (especially quantum mechanics), and computer science (especially AI).  When I attended Caltech after, their policy was that I had to declare a major at the end of my freshmen (freshwoman?) year.  And I knew well going in that was never going to happen.  I hit that deadline and silently let it pass.  A week later I received a couple emails about it, which I promptly ignored.  A couple more weeks after that and I was called into the dean's office, where I told them I was consciously refusing to name one, no amount of coercion would force me to.  Apparently I was the first student they'd had who refused to just take a guess, play along, and transfer departments later if I felt it necessary.  They sat around stewing trying to come up with rules for my situation, while I gleefully ignored their plight until they gave up trying to settle on a policy and just let me do my thing ;)

     

    Am I recommending this approach?  No, not really.  But I'm not dis-recommending it either.  The drawbacks are obvious, but I'd do it all again in a heartbeat.  I just studied whatever I felt like.  It was fantastic!  To this day, I feel like my colleagues all had their love for learning beaten out of them forcibly with stupid schooling rules.  But since I always made my own, I always had my heart in it every time I came to the classroom.  I learned quickly that I didn't enjoy physics at any of its research frontiers; I was just really good at invoking the rules of classical mechanics, E&M, and quantum theory by wrote and seeing all their interplay.  I didn't even really enjoy statistical mechanics that much.  So after just a few courses in that field I dropped physics completely.  In math I chugged on pretty far!  I had a blast with number theory, have always been great at most forms of discrete math, loved abstract algebra...  It was all great.  And I had great love all the typical "engineer's math" (like all that calculus stuff up through differential equations).  I didn't stop finding passion in it until analysis, so after that course I called it quits before topology.  And computer science I never stopped loving!  So long as I was learning real CS (IE the theoretical discipline, not just coding), I was happy.  AI has still remained my #1 love, but I like decidability and tractability proofs, problem class reductions, information theory, problems of parallelizing computations, etc.  On the side I took philosophy, gym credits that seemed appealing, a couple electrical engineering classes, and some economics and game theory (but only the really advanced econ classes that abstracted problems down to the level of proofs about convex set theory).  Then I was done.  I'd taken everything that could spark my passions and set my mind ablaze, and I wasn't going to jump through their stupid hoops just to play along.  So that was the end; I left Caltech after 3 years without meeting any of my general distribution requirements or getting a degree.  But I knew everything I wanted to.

     

    The curious interplay is what I did for work during all this (gotta pay for college somehow).  I made tuition on playing games competitively (mostly bridge, some poker, a few other random more board-gamey things) and modeling.  The former bears some relation to game theory and AI, though in practice not much past basic levels.  The latter really bears no relation at all.  Then after college I dropped the game stuff and began contracting for the US government.  I did all sorts of work for intelligence agencies or DARPA on their military technology research programs.  Then I had one of those Hollywood moments where the research scientist finds out what horrors the government types are taking and using her research for...  'twas not as described to me in project specs :(  So then I quit immediately and tried to "repent" by doing good for the world as a teacher.  Which is what I do now.  I teach high school math, and purely by chance it happens I'm extremely good at it and enjoy myself.

     

    So the point here is this: I picked for myself an option you possibly haven't considered.  I refused to make the choice.  I studied everything that sounded cool to me and nothing that didn't, even ignoring course "required prerequisites" to sign up for whatever captured my imagination.  And then in my professional life I wound up using none of it...  then all of it together at once, needing so many different pieces I never could have gotten if I'd just picked a major...  then back to none of it again.  And yes there are a few other "career paths" in that sequence that I'm not admitting to publicly, but all of those fell under the category of using none of what I'd learned.  What I think my life underscores is just how little the choice matters, if you want it to.  I DID study all the things and they still mostly weren't useful to me.  I DIDN'T get a degree and that has never held me back.  If I'd followed a more traditional path and just did the normal thing, I probably would have wound up a person with a lot more money.  But instead I let all my whimsical flights of fantasy pull me around, and I wound up a person with enough money to get by, a truckload of happiness, and no regrets.  And I'm still living that way!  My heart has no college major, my heart has not priced me into one career, and I'll probably find many more wild adventures as my life goes forward :)

  13. I can confirm, having played the game through entirely in episode 16 and used Budew in my early party.  In fact, you can pick up Budew shockingly early; before you even fight Julia!  Grab a rose incense from the prostitute in Peridot at about the same latitude as the train tracks - you have to talk to her again after you beat her up (okay wow sex workers already take unbelievable abuse from cops... should we really be doing this?).  Then just head up to the train gate into the Tourmaline dessert.  You'll see Budew up on the wall between Peridot and Lapis.  Despite it appearing to be far above your reach, if you do your best to harass it with your A button it'll somehow figure out to hop down and make friends <3

  14. 27 minutes ago, Dragoknight said:

    I like making elaborate and extravagant ordeals out of many mundane occurrences.

    OMIGOSHRLY?!?

    Oooooo :o

    !!!!!!!??!?!!!!!!!!!!!?!!!!??!!?!!?!!?!!!!!!!!!!!!!?!

    Everyone he loves making elaborate and extravagant ordeals out of many mundane occurrences!

    *bounces up and down excitedly*

    That's AMAAAAZING!!

    I'm making a really big deal out of this!

    MOAR EXCLAMATION POINTS!!!!!!!!!!!!!!!!!!!!!!

    One might even say "an elaborate and extravagant ordeal" out of this!!!!

    Yay!

     

    *curtsy*

  15. 4 hours ago, Chase said:

    Noel also has a Porygon-Z holding a Petaya Berry and rocking the Download ability. Download essentially picks an attacking stat at random to boost when sent out.

    Whoopsie!  You've got a factual error there - download does not choose at random.  It boosts the same attacking stat as the lower of the opponent's defending stats.  If those are tied, it boosts special attack.  So you can always control his download to screw it, if you've a mind to.

     

    I don't think this significantly impacts your main point though, which is that Noel is easily the most boring of the leaders (IMO Sampson competes for that).  And even though I also think he's one of the single easiest, I agree he is REALLY boring compared to vibrancy of most leaders.

  16. Pros:

    • Blows off school because he's too smart for that nonsense
    • Good at math
    • Likes math
    • Understands why everyone else should like math
    • Maybe just maybe will indulge my secret love of heavily-formalized old English speech patterns because wouldst thou gaze yonder at his favourite? :P

    Cons

    • So wholly consumed by the seductive evil of "sorta chemistry" that he won't even look straight at physics towards his salvation

     

    Eh...  we'll call it a wash, I guess.

    ...

    No?  Okay, fine.  This one gets Titania's official Seel of approval:

    Spoiler

    Screen_Shot_2017-08-28_at_8.11.58_PM.png

    Well played, sir.

  17. It's rather unsettling how questions about ethics quickly start to make everything feel on shaky ground.  So let's cut past that by abstracting away all the non-central issues:

     

    Suppose hypothetically that you are a witch.  One afternoon you're taking a stroll through the woods (witches love the woods okay) and you stumble on a guy with a gun mugging an innocent little princess.  If you don't act, she's going to lose her purse, get hurt, and possibly worse.  You can go at the guy swinging your fists to stop him, but you might get shot.  On the other hand, you can use your awesome witch magick to deflect the bullets, throatlift the guy, and conk him out for a bit.  You can even conjure a stylish light display in the sky over his unconscious body directing the police where to find him if you like!  So what do you do?  Pause to think here and decide.

     

    Oy!  Don't think I can't see you peaking ahead before you've picked!  *glare*   Okay, so we probably all agree we're busting out the athame on this one, right?  I think for most people this thought experiment constitutes totally unobjectionable use of the extra power you bring to the table.  So why was that?  All of a sudden the argument seems pretty flimsy that just because everyone else didn't get the same powers we did, we're ethically bound not to use them.  It's not inherently wrong to exercise extra skills/talents/resources that we have access to.

     

    There are some obvious objections to this argument that I anticipate.  Perhaps some feel that saving the princess is a necessary imperative, while beating a boss in Pokemon Reborn is not.  But this cannot be.  Inside Reborn we have a rigorous construct of what it means to win: a specific goal to achieve subject to certain constrainst.  Furthering that end is the highest ethic!  Real life has no such equivalent; we don't have a well-defined meaning for how you win at life.  Beating the boss in Pokemon Reborn was flat out necessary for anybody playing Reborn.  Saving the princess was (regrettably) not.  And I sincerely doubt anyone's answer was "Wait, tell me how I came by these witchcraft talents!  That's what decides whether I'll use them!"  So we don't get that out either: how you came by this many potions (so long as it was subject to the confines of the game, which it was) doesn't impact the ethics of using them.  In the end there's not much we can grasp at to fight this conclusion: use the darn potions; if anything it's more ethical than not because they enable the thing that's defined to be the highest and only good within the bounds of the game.

     

    So now the question is: Do you WANT to?  There's no moral reprehensibility about it.  But would it give you the most fun?  And that's the same place all the rest of this thread wound up: do it if it's more fun, don't do it if isn't.  Making sure the difficulty remains high enough seems to be an important part of your own personal utility function, so using in moderation seems the way to go.  That's right kids: "hyper potions" and alcohol are the same ;)  If you're hunting for less philosophical and more pragmatic advice, you could try setting a budget of what you'll allow yourself in each fight by trainer type.  Gym leaders you get to use the same items as them, final bosses you get to use 2 of each, normies you get a full heal, etc.  That kind of thing, but whatever numbers feel most fun to you.

     

    TL;DR: Ya same

  18. 3 hours ago, Alistair said:

    I was just wondering why a competitive player would even want to use something that's not all 31

    There are 4 possible cases.  I'll list them in decreasing order of frequency of occurrence:

    • If your Pokemon has no physical attacks, there is no point to having a higher attack IV.  In fact, you want the lowest possible attack IV in this case, because this will reduce how much damage you deal to yourself in confusion or how much damage is done against you with foul play.  It's worth noting the reverse does NOT exist: if your Pokemon knows no special attacks, there is no use to having lower special attack as of yet.  Pokemon Showdown in fact will now make this optimization for you automatically unless you tell it otherwise (it started doing that about a year ago, and prior to that virtually nobody had the focused attention to detail to get it right).
    • You are utilizing hidden power.  Hidden power's type and damage are calculated from your IVs (from gen 6 onward only its type), so you need to set these properly to get the type you want.  It's worth noting that modern Pokemon only checks the parity of your IV for HP, so you usually only want 30 and 31 IVs this way...  unless you want 0 or 1 for your attack because of the reason above.
    • You intentionally want a lower-than-usual-minimum speed.  This comes up for a bunch of reasons.  Here's a wholly-incomplete list:
      • Gyro ball.
      • Back in gen 5, where the typical Conkeldurr set ran a dark move for coverage, but it had to be payback.  0 speed IV Conkeldurr can go after Slowbro to ensure he hits it for full power.
      • In generations 3 through 5 ubers, where both Kyogre and Groudon are legal.  You want your team's weather to prevail, but these 2 Pokemon have the same base speed.  When they enter the battlefield simultaneously (such as if a double-KO happens or at the start of the battle) their abilities proc in speed order, so your weather wins out if you're slower - hence lowering your IV.
      • Pokemon that beget the mirror match often and know u-turn/volt switch: for instance Landorus-therian, who typically doesn't have a set enabling him to do much to a copy of himself.  If you lower your speed IV and the opponent does not, when you both u-turn out you will get to go second and have the counterpick on them.
      • The hypothetical last-Pokemon-showdown of Ditto vs Ditto, where if both players spent their EVs in the optimal way the slower Ditto will win the struggle war.
    • To cross relevant HP divisibility thresholds that are otherwise unattainable.  Consider some examples:
      • Life orb Latios (less common in competitive play with the release of its mega stones and soul dew changes in gen 7, but still a very frequent set):  Everyone generally wants to run him with maximized attack and special attack parameters in their EVs, but this leaves him with 301 HP!  That's really wasteful, because you take 30 damage every time you attack.  Knock your HP IV down to 29 and you'll have 299 HP, only taking 29 LO recoil damage with each attack.  You break even on health in 2 attacks, and then profit after that.
      • Dugtrio:  It's commonly desired to have your Dugtrio be able to trap and kill Chansey, but this requires some capable specialization without giving up utility against other trappable targets.  The way of handling this was to run focus sash Dugtrio with screech, reversal, rock slide, and earthquake.  Everything kills Dugtrio in 1 hit anyway (2 hits with sash), so we don't actually care about our bulk...  except when it matters for triggering max reversal power against the only thing that won't OHKO: Chansey's seismic toss!!  If we use 31 HP IV Dugtrio, it will have 211 HP and 2 seismic tosses will reduce it to 11 HP which only generates 150 reversal base power.  For the full 200 power we have to get under ~4.17% HP, so this requires starting from 208 hp - an HP IV of 28.
      • Hawlucha:  The class gen 6 swords dance / substitute / high jump kick / acrobatics set with unburden and a sitrus berry.  Ideally we'd really like to set up our sweep from 50% HP (increases back to 75% after berry) so that it doesn't just end to priority.  But if we use a 31 HP IV we'll have 297 HP, which after 2 substitute applications puts us at 149 HP (sub eats 1/4th HP rounded down)...  which is more than half health, so we don't power up acrobatics or get the speed boost yet and have to sub a third time.  If we decrease HP IV to 30, we'll start from 296, which drops 296 -> 222 -> 148 = 50% HP, so we can unburden in just 2 substitutes.

    So yeah, lots of non-zero IVs in competitive play if you're doing it right.  Even if most don't apply that degree of forethought, it pays to do so and comes up quite frequently.  No comments on whether IVs are actually good for the game to exist or not though.  The only strong feeling I have is that EVs are a great thing for competitive play - they reward smart players TREMENDOUSLY in extremely complex and non-obvious ways.  You can even apply as much math as calculus to the EV problem if you want to truly do it right.

  19. Yes I had to do this when I played Reborn.  During the episode 15 segment with the Meteor raid on Titania's (my?) house the game kept crashing between the battles.  After a little bit of diagnostic I determined it was something buggy with the helicopter sound, so I swapped it out for a different mp3 file since the game's resource files are so conveniently organized and labeled for us.  As a side note, that scene is ridiculous in the best possible way if you swap names of the helicopter and jigglypuff song mp3s :P.

  20. You clearly missed the first paragraph.  We just cheat and look at the human player's team.  That gets rid of virtually all of that.  Which we wouldn't model the same way anyhow; you use Bayesian models for those properties with priors set based off observed metagame statistics, which crushes down the possibility space to just ~4-5 sets that see play in practice.  This was the technique used by the coder of Pokemon Showdown's only-ever attempt at a quality bot that I'm aware of, and was more or less the only successful implementation choice of the project, as the coder sadly didn't understand the importance of mixed strategies and Nash equilibria.  He just modeled the entire thing as sequential alternating turns (so the bot believes its opponent will get to see every move it makes and react accordingly).

     

    Any turn has 81 move pairings tops, often less, but almost all of those result in transposition table hits either immediately or a single move later to terminate the searching.  Secondary effects generate more states for sure, but such is life; it's a tractable problem.  Note secondary effects do not come into play with terrific frequency because moves score kills.  Moves scoring kills in fact can eliminate FAR more branches than merely your own secondary effect chance - it can eliminate all the branches of the tree that don't involve your opponent switching.

     

    The one that legitimately slipped my mind was that damage rolls take on potentially as many as 16 distinct quantized values to generate some utterly staggering average branching factor.  Clearly that is unacceptable.  I would propose modeling all rolls as scoring the median of the 16 values I think?  Treat critical hits still as a discretized gamestate because they generate such large impacts on follow-ups.  We can override gamestate hashing defaults in a clever way such that transposition tables entries only differing by minute hp amounts on Pokemon hash to the same value to generate more collisions where they are effectively the same game state or just produced by an alternate roll.

     

    All in all, your estimate of the average branching factor after transposition table hits is off by several orders of magnitude - though I'll spot you 1 since obviously you recollected randomized damage rolls and I did not.  Whoopsie.  You're right there are a few screwy time implications though.  Like how obviously the bot will need to pause a little on turn 1 for thought...  then rarely think again since it memorized how it wants to handle most follow-ups.  Or how you get shafted for running bullet seed on all your Pokemon :P

  21. Mmmm...  people seem to be wondering about AI developments and how long those take.  As a disclaimer: I have no idea what the Pokemon Reborn AI looks like.  In fact, I have no idea what AI actually looks like in any Pokemon game (I only play competitively and Reborn).  But since I know some things on the topic of what it could look like at its best, I'll throw in my two cents when it comes to evaluating how much work an AI overhaul for gen 7 needs to take.  Note that throughout this entire post I assume the AI is allowed to "cheat" by looking at your team.  It knows what moves you have, what your unrevealed Pokemon are, etc.  If it's not allowed to do that...  well then this gets a lot more complicated and we have to start employing Bayesian models and priors for probability distributions on such things (in other words it'd take forever for our new AI :().

     

    Titania's pseudo-code algorithm for Pokemon AI:

    Spoiler

    (double[] mixedStrategy, double expectedUtility) pokemonAI(Gamestate g)

    {

        if (g.isWon())

            return [null, 1.0];

        else if (g.isLost())

            return [null, 0.0];

     

        double[][] payoffMatrix = new double[myLegalMoves.length][oppLegalMoves.length];

        for (int myMove = 0; myMove < myLegalMoves.length; ++myMove)

            for (int oppMove = 0; oppMove < oppLegalMoves.length; ++oppMove)

            {

                (Gamestate[] outcomes, double[] probabilities) = g.makeMoves(myLegalMoves[myMove], oppLegalMoves[oppMove]);

                for (int k = 0; k < outcomes.length; ++k)

                    if (transpositionTable.map(outcomes[k]) != null)

                        payoffMatrix[myMove][oppMove] += probabilities[k] * pokemonAI(outcomes[k]).expectedUtility;

                    else

                        payoffMatrix[myMove][oppMove] += probabilities[k] * transpositionTable.map(outcomes[k]);

            }

     

        (double[] myNashEquilibriumProbabilityDistribution, double[] oppNashEquilibriumProbabilityDistribution) = simplexAlgorithm(payoffMatrix);

        double utility = 0.0;

        for (int myMove = 0; myMove < myLegalMoves.length; ++myMove)

            for (int oppMove = 0; oppMove < oppLegalMoves.length; ++oppMove)

                utility += payoffMatrix[myMove][oppMove] * myNashEquilibriumProbabilityDistribution[myMove] * oppNashEquilibriumProbabilityDistribution[oppMove];

        transpositionTable.addMapping(g, utility);

        return (myNashEquilibriumProbabilityDistribution, utility);

    }

     

    An English layperson's explanation of the algorithm:

    Spoiler

    The function returns the ordered pair (best mixed strategy, probability of victory from this position).  It's a recursive algorithm that just envisions how the game moves forward as both players make the different combinations of moves.  The first block checks for the base case and handles appropriately (i.e. it checks to see if we're thinking about a game that's already over and then just assigns it a 0 or 1 win probability if it finds either).

     

    The second block recursively builds the matrix of expected payoffs for every move pairing in the Cartesian product of (AI's legal moves) X (player's legal moves).  Note that each invocation of the game engine to apply a move ordered pair to a gamestate actually produces SEVERAL new gamestates, because Pokemon is not deterministic.  So it will, for instance, spawn 4 gamestates when you use a flamethrower (no luck, crit, burn, crit + burn)...  or actually 16 gamestates if both players use flamethrower because of the Cartesian product of potential outcomes...  except actually less than that, since many of those are likely equivalent or not able to occur.  In the simplest possible case, I go first and my flamethrower generates a KO, for a total of 1 outcome.  You get the idea.  All potential gamestates resulting from the move pairing are generated, the function is recursively applied onto the results, and then an expected payoff is generated for each move pairing based on normalizing each resulting utility by the probability it occurs and summing over all potential gamestates.  The only caveat in this process is that we consult a transposition table of gamestates we've already evaluated as we go: no position should be evaluated twice.  This serves to prevent infinite loops in the sequence checking like both players swapping Pokemon back and forth forever, or me using stealth rock followed by using defog.  It also just gives us obvious performance improvements because we need not evaluate the same position multiple times: if I can go first and kill you with attack 1, I don't need to bother evaluating how play proceeds if I use attack 2 which achieves the same.  Or any other more complex method or arriving back at an already-checked gamestate, which occurs much more often than you may foresee given that we check the game tree in a depth-first manner, and many end-game positions are equivalent.

     

    The third block uses the standard mathematical Dantzig simplex algorithm for solving linear programming problems to convert this expected payoff matrix into a probability vector of all the mixed strategies that are not strictly dominated and the probabilities with which they're optimally played in the microcosm game's Nash equilibrium.  Probably there are some astute readers wondering why we can't just solve this via the far more simplistic Gaussian elimination method: solve the matrix equation Ax = b for A a trivial manipulation of the payoff matrix and b a constant probability vector indicative of our opponent being indifferent to their expected payoffs in the Nash equilibrium.  If you thought that, your intuition is well-honed, good job!  Except the problem is that many of our moves will be strictly dominated by some mixed strategy (i.e. some rows or columns will have ever entry lower than some potential linear combination of other rows or columns), and we need to eliminate these before such a methodology can function.  Once the solution is obtained it's a trivial expected utility calculation for the gamestate, then we add the gamestate initially called with to our transposition table mapping to this utility value, and then we return both the Nash equilibrium solution along with this utility.

     

    Okay now time for the analysis of what this means for updating Reborn's AI for new game content - the reason for this whole thing.

     

    For starters, let's note that this algorithm plays PERFECTLY.  It literally never screws up for any circumstance.  If it confuses you why perfect play even exists as a concept, read:

    Spoiler

    This notion tends to confuse Pokemon players because often haven't bridged the inferential gap to thinking about double-blind simultaneous selection asymmetric games in terms of mixed strategies; they think only of pure strategies.  If you don't understand this, it basically means "The AI isn't just picking a move - it's figuring out the correct probabilities with which to choose any of its moves."  (Many of these probabilities will be 0 because that move is stupid)  Why do it this way?  Because we need to handle prediction circumstances.  If the AI is playing rock, paper scissors it has not succeeded if it decides rock is the best move.  The correct response is "play them all with equal odds" and then the computer can use RNG to make its pick - it's literally predicting against you at the best possible guessing rates.  Except Pokemon is more complicated than RPS.  It's more like playing RPS if you got twice as many points as usual whenever you won with rock.  The new correct answer is "pick them all with UNEQUAL odds" so that we can play (i.e. predict) around the new generated incentives.  So that's all this is really doing: making predictions by choosing its probabilities so that no option you pick against it has a better expected outcome than you're entitled.

     

    So if it plays perfectly, the next thing to notice is that the algorithm never used any mechanics-specific reasoning anywhere.  Literally all that was required to run this algorithm was a working game engine, so that the computer could "visualize" what effects happen when players make their move.  So the conclusion is that in order to play perfectly, we don't have to change a darn thing about the AI from gen to gen!  It only has to know how the mechanics of the gen changed and it can figure out how to play it perfectly all by itself.  Huzzah!  So that means that AI updates for each new episode should take 0 time, right?  WRONG!

     

    The problem is that we're all impatient little bitches who don't want to wait for the AI to think.  So we need to speed up this thinking process for the AI dramatically - using reasonable numbers for the game tree's complexity and time allocation per checked game state, this process could feasibly run for (probably?) a 4v4 battle I think?  But each additional Pokemon of course increases the number of nodes in the tree exponentially (not the fake kind how people colloquially use this word to mean "oh wow it's bigger" but the real kind - it's legitimately exponential).  So handling a 6v6 battle this way is rough.  Nobody wants to click their move, then wait 2 minutes while the AI thinks (even though it will get faster and faster with each move it makes as it gets less to think about).  Lucky for us, speeding up this framework expectation minimax algorithm can be done without mid-game evaluation functions (these are what we want to avoid, because they require us to do gen-specific hard-coded calculations [unless we have the computer learn its own mid-game evaluation function via some process like a neural network, but that's a separate tirade])!  This is achieved with alpha beta pruning, a "lossless" pruning algorithm in the sense that it does not reduce our probability of getting the factual perfect play answer to less than 100%.

     

    Unlucky for us though...  that isn't good enough :(  We're still too slow with only that optimization.  Pruning techniques beyond this point are something of an art in the AI community and you may receive different opinions from experts on how to proceed, but for this problem I personally believe the multi-prob cut algorithm invented for use in Logistello, the world's current best Othello AI, is the way to go.  This technique essentially shallows up searching of sections of the game tree which are looking like they're not going to pan out so great.  I know what you're thinking: but isn't that just mid-game evaluation?  Obviously we need hard-coded criteria for judging the worth of a gamestate prematurely to do this.  No need to panic though!  In Pokemon enormous swaths of the game tree can be called into question immediately just by using a mid-game evaluation function as simple as "How many Pokemon I've got remaining minus how many they've got remaining."  If we shallow up searching on these tree sections where this metric is not brought back into balance (as compared with the best rating we could obtain for the metric at that depth, not 0) within sufficiently many moves, we can cease checking those branches immediately.  The English explanation of this heuristic is essentially "We don't let the opponent take kills unless it gives us some pretty measurable and clear benefit quickly after that."  Not only does this trim the search space enormously to put it within easily-manageable levels, it also conveniently didn't have to do any generation-specific analysis of the worth of our position!  So now we've succeeded at producing an algorithm that stochastically will give us something extremely close to perfect play (the multi-prob cut optimization is lossy, though we gave up so little in this case) and didn't need to understand any hard-coded Pokemon mechanics at all except that losing Pokemon is generally bad (which is true of all gens).  Huzzah!

     

    So now we're back where we were before, right?  The AI shouldn't take any updates at all for a new episode, ever.  Except... still wrong :(  This time the problem is a more philosophical conundrum: do we even want our AI to play perfectly?  I think it's fair to say that for our "bosses" we do.  Gym leaders, elite 4 members, Solaris, Taka, etc.  But isn't this maybe kind of overkill for a wild Weedle?  Probably for realistic simulation we don't want Weedle emulating that kind of IQ.  Though in Weedle's case, maybe we're okay with just basic button-mashing (choose moves randomly)?  But what happens in between?  Probably non-boss "normie" trainers should have some AI going for them, but probably it shouldn't be this level of sophistication with the perfect play algorithm.  And THERE'S our problem.  How are we supposed to play less well than perfect but better than button mashing without some hard and fast hand-wavy heuristics?  Methods do exist, but they all involve choosing such heuristics that just happen to be generation-independent...  it will make for very unsatisfying results.  Essentially we'd have to play Pokemon with the "greedy algorithm" of always optimizing for obtaining as large a remaining Pokemon count discrepancy as possible in the next 10 turns or something.  Meh.

     

    TL;DR: Assuming the AI is allowed to cheat and look at your team, it can play perfectly without caring what mechanics it's playing with.  So that AI would never need to be updated for new gens!  Yay no wait time!  It's only for battles where Ame wants the AI to play fairly well but still sub-optimally where we need huge amounts of heuristical overhaul.

×
×
  • Create New...