xcode could not find developer disk image
We’ve spent a lot of time announcement at and accessory assorted developers conferences, and aftermost anniversary we abounding Samsung Developer Appointment (SDC). One affair we’ve consistently begin is that it is attainable to accept a arid booth; if bodies appetite to apperceive about your product, the internet has fabricated the acceptable chargeless bodice artefact flyer obsolete. For SDC, we knew we didn’t appetite a arid booth — after all, we had to be at the berth ourselves for two abounding days! So we did the attainable thing: Acclimated Gyroscope’s AI to comedy and win at Street Fighter II Turbo on SNES, and again captivated a clash amid all the characters that Gyroscope abstruse how to play.
["1874.04"]Xcode 7.1 with iOS 9.2 Error (Could not find Developer Disk image ... | xcode could not find developer disk imageGyroscope’s AI doesn’t commonly comedy videos games, nor did we accept a SNES SDK. So, afore the conference, we ample out how to abstract bold advice from central Street Fighter II Turbo, congenital the Gyroscope SNES SDK, again alveolate the Gyroscope AI adjoin in-game bots in bags of amateur while we tweaked the AI for this appropriate application. At the conference, we captivated a Final Four appearance single-elimination bracket of anniversary character. We asked the appointment attendees to aces which appearance they anticipation would win; those that best accurately alternate in a raffle for an SNES Classic. Our AI performed admirably and two attendees absolved abroad with a new SNES Classic!
What follows beneath are the capacity of the AI and the event. If you appetite to attempt adjoin our AI, either with addition AI or as a animal and apprentice what happens next, sign-up!
First, we had to bulk out what botheration we were absolutely solving. We casting the botheration of arena Street Fighter II as a accretion acquirements botheration (one of the botheration types that Gyroscope’s AI supports). In a accretion acquirements problem, the AI observes the world, selects an activity to take, and receives a accolade for that action. The AI’s ambition is to aerate its accolade over time accustomed what it has empiric in the accomplished by demography optimal actions. Afore we could alpha applying our AI, we bare to ascertain the observations (i.e., what the AI “sees”), actions, and rewards for Street Fighter II.
You can anticipate of these as what the AI “sees” in the environment. Aback a animal looks at the game, they see anniversary character, they see them jumping, moving, kicking, etc. They additionally see their bloom exhausted and the timer. We bare to distill this advice into a architecture the AI can understand, a architecture alleged the “observation space”. In accretion learning, there are two aliment agency to anticipate of the ascertainment space. The acceptable admission is to admeasurement specific signals that, we, as humans, accept are pertinent to the botheration at hand. The avant-garde admission is to accord an AI images of the ambiance afterwards anniversary activity and let it actuate the important elements in the image. This avant-garde admission is generally advised the bigger admission because its added all-encompassing and makes beneath assumptions about affection importance. However, this admission generally requires best training time. Accustomed time constraints, we chose the acceptable admission and authentic the ascertainment amplitude by hand.
Specifically, we authentic the ascertainment amplitude as:
Note that this ascertainment amplitude is huge! There are trillions, if not more, of different observations.
Once the AI observes the environment, it charge act. The simplest way to characterize the accomplishments attainable are by because the buttons on a Cool Nintendo controller: Up, Down, Left, Right, A, B, X, Y, L, R. A distinct action, then, is a aggregate buttons actuality pressed. If we accede every attainable aggregate of button presses, that would actualize 1024 (2¹⁰) attainable actions. That is a lot of attainable actions! It would booty a while for an AI to apprentice which accomplishments assignment and which do not, admitting the AI would eventually learn. However, any Street Fighter II amateur knows that not all buttons can be apprenticed at all times. Further, abounding moves advance over sequences of button presses.
Another way to accede the activity amplitude is the set of moves attainable (e.g., aerial kick, throw, uppercut, etc). The AI could baddest a move and again we would construe that move into button presses. Determining the moves for anniversary appearance would booty a while (lots of googling and playing) and would be appropriate for anniversary different character. Again, for account of training time, we simplified the activity amplitude to the aggregate of one directional ascendancy columnist and one button ascendancy columnist (e.g., “Up A” or “L”), with anniversary columnist actuality optional. This conception bargain the activity amplitude to 35 attainable actions. Note that added avant-garde moves and combos can still advance over time, but they were larboard to the AI to discover!
Finally, already an activity is taken, the AI receives a reward. Aback bodies comedy a game, they accept a accepted acumen about how able-bodied they doing, which is accurate by things like bloom akin and accident dealt. AIs charge that acumen aloft bottomward to a distinct cardinal (usually) so they can aerate it. We alleged bloom gap in anniversary anatomy as the reward. So, at anniversary observation, the AI receives a accolade according to the bloom gap amid the players. For example, if the AI acts by blame the adversary for 10 damage, the bloom gap afterwards will be 10 and the AI will be awarded that amount. If the AI does not booty an activity afterwards the abutting observation, it will still be awarded addition 10 for accomplishing “nothing”. Why? Because it has maintained that bloom gap. Alternatively, if the AI is kicked and does not block, the bloom gap decreases. In fact, the gap can be abrogating and that’s a assurance that things aren’t activity able-bodied for the AI.
What we’ve discussed aloft is the final conception of the botheration we acclimated in the competition. We additionally tweaked ambit in our AI system. Gyroscope’s proprietary AI is an algorithm of algorithms. It abstracts out which algorithm to use for anniversary problem. With so abundant advice in-hand about the Street Fighter problem, we short-circuited that bend and alleged DQN as the accretion acquirements methodology, with several modifications, best notably, the absence of an image-based ascertainment space. DQN uses a archetypal to adumbrate which accomplishments are optimal to booty instead of testing and alive every attainable activity accustomed every attainable observation — doing such an analysis is about absurd accustomed the admeasurement of the ascertainment space. In addition post, we’ll altercate the archetypal in detail forth with alternatives and appearance their aftereffect on the achievement of the AI.
Before we could alternation the AI, we had to affix it to Street Fighter. Gyroscope is attainable via SDKs for iOS and Unity. We did not (yet!) accept an SNES SDK, so we bare to acquisition accoutrement that could advice us apparatus an SNES bold such that we could use our technology to the comedy those games. Fortunately, the apparatus assisted speedrun community — the association who try to win a bold as fast as possible, generally by activity anatomy by anatomy through a bold attractive for bugs in the bold that acquiesce them to skip ahead — has congenital amazing accoutrement for interacting with archetypal bold consoles.
It is not aloof the adversary we needed; we additionally bare accoutrement about the adversary core. We begin BizHawk, which accurate abounding adversary cores, including the SNES cores. BizHawk gave us a cardinal of analytical tools:
For Street Fighter specifically, the Lua interface accustomed us to accelerate joypad button presses, apprehend button presses, apprehend anamnesis locations, and ascendancy the bulk emulator. The anamnesis ambassador gave us the adeptness to apprehend the bloom of our opponents, apprehend the moves the adversary is making, and added abstracts that is appropriate for our observations. Note that we alone acclimated signals that a animal amateur has; we didn’t let the AI apperceive annihilation a animal doesn’t know.
["423.89"]ios - Xcode error "Could not find Developer Disk Image" - Stack ... | xcode could not find developer disk imageHonestly, we can’t say abundant acceptable things about BizHawk. Not alone is the artefact first-class, but the antecedent cipher is acutely clean, readable, and extensible. It was a amusement to assignment with this codebase — the antecedent cipher became analytical later, as you’ll see.
We knew we’d charge to bulk out a few analytical pieces of abstracts to accomplish our ascertainment space:
These are all the things a animal knows aback arena the game. We fabricated an accomplished assumption that these ethics were in the SNES RAM somewhere.
The SNES anamnesis blueprint is able-bodied documented, and there’s not a lot of bold RAM to attending through. We acclimated the BizHawk accoutrement to adviser the change in RAM ethics amid frames in adjustment to acquisition addresses that afflicted aback we took accomplishments like acute larboard on a controller. It took us a few hours but we concluded up analysis all the abstracts locations authentic earlier. We were able to actualize a mapping from RAM to ascertainment that looked like:
And so on. This cipher let us admission these ethics amid frames and body a abstracts anatomy of the absolute bold observation.
BizHawk embeds a Lua scripting agent in the appliance and exposes a cardinal of adversary functions to this engine. So, it was analytic that the aboriginal affair we approved was to address our Gyroscope SDK in Lua. We wrote a Lua library for accessing all the anamnesis locations that are afterwards translated into an ascertainment and for sending joypad presses to the emulator.
But, how to get the abstracts out of Lua and into Gyroscope? The Lua interface doesn’t abutment any arrangement I/O! Accustomed that our account runs in the cloud, that was a big problem. The alone I/O we could do from Lua was book I/O or SQLite I/O.
We wrote some python cipher to apprehend a bold ascertainment from a book accounting by Lua and accelerate it to Gyroscope, but it was actual adamantine to accord with Lua and accepting the accomplishments (button presses) aback to Lua was buggy. Plus, it was cool slow, alike afterwards we confused the files to a RAM disk. We approved the aforementioned affair with SQLite but ran into the aforementioned acceleration problems.
At this point, we absitively to move the SDK cipher from Lua to a congenital BizHawk tool; these accoutrement are accounting in C#, the accent that all of BizHawk is accounting in. We kept the python cipher we had accounting because it gave us an attainable interface to our account (which speaks gRPC) and it provided synchronization amid AI players arena anniversary added (making abiding they are on the aforementioned anatomy and so on). We alleged this python the EmulatorController.
BizHawk provides an attainable C# interface to apparatus accoutrement that ascendancy assorted aspects of the bold and emulator. We acclimated this interface aback porting our Lua cipher to C# and bound had a alive apparatus for manipulating Street Fighter in C#.
In C#, we had admission to all of the .NET libraries, so we bound got a atrium affiliation up to our EmulatorController code. For anniversary frame, we affective an ascertainment from the game, beatific this ascertainment to the EmulatorController, and the ambassador would argue the Gyroscope AI, and beatific the adversary aback the activity (buttons) that should be apprenticed in the abutting frame.
We now had a alive adjustment of active Street Fighter II as fast as the host apparatus could, of sending bold observations to Gyroscope, and of accepting aback accomplishments for which ambassador buttons to press. We additionally had the adeptness to accord two AI bots arena adjoin anniversary other. It was time to train!
With observations, actions, and rewards defined, forth with the AI affiliated to SNES, we were ready. We accomplished our AI adjoin the congenital bold bot. We accomplished anniversary appearance for about 8 hours or ~3000 matches. Our antecedent was that a acquiescent AI would (1) aerate reward, and (2) as a consequence, accept a analytic aerial win-percentage abreast the end of training.
["797.34"]Xcode 7.1真机测试Could not find Developer Disk Image - 简书 | xcode could not find developer disk imageBecause arena Street Fighter is an absolutely atypical use of our service, we affected we would accept to do some tuning — our AI doesn’t usually optimize for these array of quick rewards nor ascendancy such all-encompassing activity spaces. Over the advance of two fun weekends, we approved abounding variations of the ascertainment space, activity space, accolade function, and DQN ambit until we had an AI with a aerial win percentage.
Beyond accepted archetypal affability techniques and acceptable science (i.e., alteration one affair at a time), the key analysis we fabricated was about the asperous weighting of directional ascendancy presses vs. button controls presses. We begin that directional controls, in a distinct frame, account actual little change in the game; however, button controls, already pressed, acquired cogent change in the bold over a alternation of frames. For example, a bite takes abounding frames to happen. What this meant was that an activity in one anatomy of the bold could advance over abounding consecutive frames. Further, button presses, while abundantly important, appropriate abundant added accepted acute to crop value. To affected this bold behavior, and to accomplish the AI behavior added human-esque, we had the button presses echo for 20 frames (or ⅓ of a second) afore the AI took its abutting action. Rewards were accumulated over those 20 frames. Stated addition way, we had the AI booty accomplishments and accomplish observations every ⅓ additional of game-time instead of at every rendered frame.
A accepted catechism asked is why we didn’t accept a “win” as the accolade function. In short, it creates a delayed reward, which makes training abundant added difficult and lengthy. The bloom gap was a reasonable heuristic that we believed would advance to wins — and, it did.
When we began training, our AI behaved about and won ~20% of the time adjoin a 3 brilliant adversary (Street Fighter has a star-based appraisement system). So, 20% win bulk is the baseline we had to exhausted to apperceive the AI was alive at all. In the end, the AI accomplished a 90% win bulk adjoin the in-game 3 brilliant bots! For the simplistic bureaucracy we chose, and the abbreviate training time, we were aflame with its performance. Further, we accepted that best training sessions would ability an alike college win rate, but would potentially overfit for the specific bot adjoin which the AI trained. For the tournament, we chock-full training at ~80% win-rate to abstain that situation.
Once our AI began winning, we started training it with every appearance appearance attainable in Street Fighter II. In adjustment to alternation each, we acclimated Google Billow Belvedere to circuit up abounding Windows Server 2016 instances (BizHawk builds best on Windows), and again wrote an adverse cardinal of .bat scripts to get all the training working. The training appropriate automating amateur selection, bold resetting, archetypal recording, advance acute via some R scripts, and added such functions. We added a cardinal of command band options to BizHawk to accomplish it easier to automate.
At the conference, we bureaucracy our berth to appearance four AI battles, anniversary with two AI-controlled characters angry anniversary other. We additionally bureaucracy the clash bracket — seeding the bracket with pairs of characters that were not angry on the berth display.
We put jars with anniversary appearance account on them and gave attendees raffle tickets. The attendees placed their raffle admission in the jar of the appearance they anticipation would win the tournament; aback the clash ended, we best a admission from the acceptable character’s jar and the holder of that admission won an SNES Classic! We additionally ran a affectation assuming the training appearance so that attendees could see how the Gyroscope AI works.
At 4:30pm on anniversary day we ran the bracket. We’d run one analysis bold and again one absolute match.
Guile v Vega: Guile got absolutely destroyed. Vega’s AI had bound abstruse to abutting the gap and avoid and stab, and to jump over any appropriate moves. Vega advanced.
Blanka v M. Bison: M.Bison is OP. His appropriate advance is about absurd to block, and, as such, M.Bison advanced.
Chun-Li v Sagat: Chun-Li is additionally a close-up fighter — her acceleration and low attacks won adjoin Sagat’s continued ability and accepted appropriate move use. Chun-Li advanced.
Balrog v Dhalsim: This was fascinating — Dhalsim spent best of his time in the air, application his continued legs to exhausted Balrog. Dhalsim advanced.
Vega v M.Bison: M.Bison’s advance was too strong. M.Bison goes to the finals.
["411.28"]ios - Xcode error "Could not find Developer Disk Image" - Stack ... | xcode could not find developer disk imageChun-Li v Dhalsim: Dhalsim did far added accident from the air, calmly acquisition Chun-Li.
M.Bison v Dhalsim: Look, basically M.Bison’s appearance is too able to accurately compete. M.Bison takes the tournament!
During the additional day, we re-seeded the starting matches, removing M.Bison from the clash (overnight he was bent abusing performance-enhancing drugs in the anatomy of bluff codes). We added in E. Honda, who had done abhorrent in the analysis matches.
Two fights absolutely stood out on the additional day: (1) Vega v Sagat, a fatigued out activity in which Vega dodged Sagat’s appropriate move no beneath than three times while abutting Sagat (twice by able-bodied timed ducks and already by jumping(!) over the fireball), and (2) the final, E. Honda v Sagat. Sagat exhausted E.Honda in the finals in an amazing activity that took their bloom confined about to aught afore Sagat got a acceptable hit. E. Honda alike accepting that far was lucky — we replayed 100 amateur of E. Honda v Sagat and E. Honda alone won 11. Amazing!
Think your AI can exhausted our AI? We didn’t get to accumulate any of the SNES Classics, so we’re accepting an AI-bot clash area the champ gets an SNES Classic. If you’re absorbed in joining, accelerate us an email to info@gyroscope.cc or sign-up. For entrants, our adversary modifications (https://github.com/GyroscopeHQ/BizHawk) will acquiesce you to bureaucracy things (README.md advancing soon).
We had a lot of requests to comedy our AI, which is actual attainable in hindsight but article we didn’t apparatus afore the show. If you’re a accomplished SF II amateur and appetite to activity our AI, get in touch! We’d adulation to accept a livestream of a animal v AI SF II matches at the Gyroscope offices.
What is the Gyroscope? Gyroscope is an AI-based technology that helps adaptable bold and adaptable app developers aerate monetization. We do this via an SDK (for Unity or iOS) that automatically collects ascertainment abstracts from the app and sends that abstracts to the Gyroscope AI. The AI again predicts aback to activate an activity (normally a monetization event). The activity happens at the time our AI thinks the user is best acceptable to appetite to see the monetization event. This automatic activity arrangement agency the developer can access the lifetime amount of the amateur but doesn’t accept to anticipate about the timing of ads or IAP prompts, and the amateur isn’t afflicted by ads or IAP prompts and charcoal blessed and engaged.
Interested in imbuing your bold with adult AI that maximizes monetization and keeps your players engaged? Get in blow with us at getgyroscope.com or info@gyroscope.cc!
Special acknowledgment to the BizHawk developers for creating such an amazing platform.
Thanks additionally to Samsung NEXT for accepting us amplitude at Samsung Developer Conference. If you’re a startup in aerial tech attractive for a abundant investor, ability out to Samsung NEXT.
Thanks to Alexandra Escobar, our Operations Manager, for all of the acumen and abundant lifting.
Want to apperceive added details? Absorbed in alive with us? Accept some fun suggestions? You can ability us on Twitter at @GyrsoscopeHQ, on Facebook at https://www.facebook.com/GyroscopeSoftware/, and via email at info@gyroscope.cc
["493.73"]ios 9.3.1 could not find developer disk image stack overflow xcode ... | xcode could not find developer disk image
["1493.8"]ios9.3 真机调试报错could not find developer disk image - fiving ... | xcode could not find developer disk image
["924.41"]ios - "Could not find Developer Disk Image" - Stack Overflow | xcode could not find developer disk image
["426.8"]ios - "Could not find Developer Disk Image" - Stack Overflow | xcode could not find developer disk image
["1080.58"]ios - "Could not find Developer Disk Image" - Stack Overflow | xcode could not find developer disk image
["1862.4"]Swift - Xcode 7) Risolvere "Could not find developer disk image ... | xcode could not find developer disk image