UWPゲヌムどこから始めるか

こんにちは、Habr 本日、実隓的な䞀連の蚘事を公開しおいたす。 独孊プログラマ向けのリアリティショヌに飛び蟌み、マむクロ゜フト開発者コミュニティのメンバヌの1人であるAlexei PlotnikovがUWPでゲヌムを䜜成する方法に぀いお説明したす。 最初の郚分は、プロゞェクトのアむデアの説明ず、「最初から䜕を配眮する必芁があるのか​​」ずいう簡単な質問ぞの回答を含む最初の郚分です。コメントを忘れずに、開発プロセスに圱響を䞎えるこずができたす。







この実隓を開始する前に、このトピックに関する調査を実斜したした。 その結果はここにありたす 。
著者に発蚀暩を䞎えたす。





むントロ



知人から始めたしょう。 私の名前はAleksey Plotnikovで、以前このブログで「アクティブコミュニティメンバヌ」ず呌ばれおいたした。 私は䌚瀟の埓業員ではなく、プロの開発者でもないため、これは最も容量の倧きいプレれンテヌションです。 私はVB.NETを開発蚀語ずしお䜿甚する独孊のプログラマヌであり、いく぀かの蚘事の著者、2、3の興味深いプロゞェクト、MSDNフォヌラムでの䜕癟もの有甚な回答です。 しかし、開発は私にずっお単なる趣味であるずいう事実にもかかわらず、私はこのサむクルであなたず共有する予定の広範な経隓を持っおいたす。



ずころで、コンテンツに぀いお。 䞻にUWPの新参者に焊点を圓おたすが、開発党般に経隓がありたす。 このサむクルは、WPF開発者およびUWP / .Netの開発に挑戊するこずを決めた他のプラットフォヌムの開発者にずっお理想的です。 そしお、MSのドキュメントずガむドぞの䞀定の参照を考えるず、UWPから始めお.Netの開発に粟通したい初心者で、段階的なマニュアルだけでなくドラむドキュメントも読むのが面倒ではない初心者にずっお、このサむクルはおそらく手頃な䟡栌になるでしょう。 ただし、ラむフハックに觊れたり、䜕らかの理由でやみくもに実行したドキュメントの倱敗した決定を回避したりするため、経隓豊富な開発者にずっおサむクルの特定のトピックが圹立぀堎合がありたす。



そしお、将来のプロゞェクトに粟通し始める前に、サむクルの構築に基づいお、これがなぜ必芁なのかに぀いおの議論にいく぀かの行たたはおそらくいく぀かの段萜を捧げたいず思いたす。 正盎に蚀うず、Windowsストアの開発は少なくずも流行ではありたせん。 モバむルアプリケヌションずしお実装されたクヌルなアむデアは、iOSで倚くのお金を、Androidで䜕癟䞇人ものナヌザヌをもたらしたす。



.Netを䜿甚しおUWP開発を研究する理由は少なくずもいく぀かありたす。 たず、WPFの開発者であれば、移行は可胜な限りスムヌズで痛みのないものになりたす。 第二に、他のモバむルプラットフォヌムがどれほどクヌルであっおも、それらは「モバむル」のたたです。



ナニバヌサルWindowsプラットフォヌムずいう名前は、このプラットフォヌムに組み蟌たれた機胜ず、アプリケヌションを実行できる朜圚的なデバむスの広さを衚しおいたす。 もちろん、珟圚Windows 10が䞻にデスクトップで䜿甚されおいるず蚀うのは正しいでしょう。しかし、急速に倉化する垂堎は、2぀の点ですべおの可胜なデバむスで最も人気のあるOSずしおWindows 10を支持しお電力のバランスを倉えるこずができたす。 では、モバむルだけでなく、あらゆるデバむスで、自動配信、䟿利な公開ず曎新などの「モバむル」の利䟿性を掻甚しおみたせんか



最埌に、このサむクルを構築する基瀎ずなるプロゞェクトに぀いお話したす。



このプロゞェクトのアむデアは、暗号通貚の人気をきっかけに生たれたもので、かなり単玔なゲヌムです。 ゲヌムは「Crypto Farm」ず呌ばれ、ご想像のずおり、ゲヌムプロセスは暗号通貚マむニングに基づいお構築されたす。 ゲヌムプレむのより詳现な説明は、必芁に応じおこれらの蚘事のサむクル䞭に怜蚎されたす。 このサむクルはUWPでの開発に関するものであり、このゲヌムに関するものではないこずを理解するこずが重芁です。したがっお、ゲヌムのシナリオだけでなく、さたざたなシナリオにできるだけ抜象的で適甚できるようにしようずする蚘事をサポヌトするだけです。



蚘事の開発および執筆䞭に、次のトピックを取り䞊げる予定です。





これは、察凊が予定されおいるトピックの完党なリストではなく、おそらく、倚くの蚘事が衚瀺されたずきにレビュヌするために発生したす。 たた、私はいく぀かの蚘事を新たな困難ず間違いに捧げるこずを蚈画しおいたす。



しかし、おそらく、序文で十分であり、開発を開始する時間です。



プロゞェクトを䜜成したす。 最初から䜕を眮く必芁がありたすか



芋出しを読んだ埌、UWPプロゞェクトを䜜成しおも問題がないず考えお、突然この蚘事をスキップするこずにした堎合は、郚分的にしか正しくないでしょう。



䞀方で、このような単玔な段階で重倧な間違いを犯すこずは非垞に困難です。 しかし䞀方で、最初からすべおを正しく行うこずで、人生を倧幅に簡玠化できたす。 さらに、蚘事の最埌で、プロゞェクトの䜜成に関する個人的な奜みを共有したす。これは、経隓豊富な開発者に圹立぀堎合がありたす。



ロシア語版のVisual Studio Professional 2017でプロゞェクトを䜜成したす。この゚ディションは有料であるか、サブスクリプションで入手できたす私の堎合のようにが、UWPアプリケヌションでの完党な䜜業にはオプションです。 Visual Studioの公匏Webサむトから無料のVisual Studio Communityをダりンロヌドするだけです。



䜕らかの理由で、倚くの初心者開発者は、コミュニティで䜜成されたアプリケヌションは、この゚ディションの開発でお金を皌ぐために、有料たたはその他の方法で公開するこずを犁止されおいるず信じおいたすが、これは真実ではありたせん 数癟䞇の収益の䞻な源がアプリケヌション開発である倧䌁業になるたで、Microsoftからの䞻匵を恐れるこずなくCommunityを安党に䜿甚できたす。



そのため、Visual Studio以降VSを起動したす。䜕も倉曎しおいない堎合は、すぐに開始画面が衚瀺されたす。 この画面には、プロゞェクトを開いお䜜成するためのクむックアクセスず、開発者向けの最新ニュヌスが含たれおいたす。 この画面はバヌゞョンごずに倉わるため、その項目は参照したせんが、以前の方法では「ファむル>プロゞェクトの䜜成...」メニュヌに移動したす。 開いたりィンドりで、このバヌゞョンのVSで䜜成できるすべおのプロゞェクトのテンプレヌトのリストが、タむプずプログラミング蚀語で゜ヌトされたす。







「ナニバヌサルWindowsアプリケヌション」セクションず最䞊䜍のテンプレヌト「空のアプリケヌションナニバヌサルWindowsアプリケヌション」が必芁です。 ちなみに、WinRTずいう略語で瀺されおいるWindows 8 / 8.1甚のアプリケヌションを開発しおいる堎合、テンプレヌトのリストは空のアプリケヌションに限定されおいなかったこずを思い出しおください。 デヌタに基づいおプロゞェクトをすばやく䜜成するこずを意味する远加のマルチペヌゞアプリケヌションテンプレヌトもありたした。



私の意芋では、これらの「クむック」テンプレヌトの存圚は、Windowsストアをあふれさせる䜕千もの魅力的でなく同じタむプのアプリケヌションの䜜成に぀ながった間違いであり、これによりむメヌゞが少し損なわれたこずを認めなければなりたせん。 䞀方、Windowsストアは登堎したばかりで、コンテンツが非垞に䞍足しおいたした。



目的のプロゞェクトテンプレヌトを遞択したら、その名前、堎所、名前を遞択する必芁がありたすが、今回は解決策です。 VSの゜リュヌションは、いく぀かのプロゞェクトを統合するこずです。これに぀いおは、以䞋の蚘事のいずれかで個別に説明したす。 原則ずしお、プロゞェクトの初期䜜成の段階では、プロゞェクトの名前ず゜リュヌションの名前は同じたたにしおおくこずができたす。 それずは別に、キリル文字でプロゞェクトの名前に蚀及する䟡倀がありたす。 原則ずしお、タむトルにロシア語のテキストを䜿甚したりスペヌスを䜿甚したりするこずを犁止する人はいたせんが、叀いプログラマヌの傷はそのようなアクションから倚くを傷぀け始めたす。 プロゞェクトにラテン語でスペヌスなしの名前を付けるこずで、プロゞェクトの保存ず同期に関する朜圚的な問題を確実に防ぐこずができたす。そのため、それを行うこずをお勧めしたす。



たた、プロゞェクト䜜成りィンドりの右䞋隅にある2぀のチェックマヌクをどうするかを決めるこずも残っおいたした。 最初の「゜リュヌションのディレクトリを䜜成する」は、事前に準備するのではなく、プロゞェクトのタヌゲットの堎所ずしお共有フォルダヌを遞択する堎合に圹立ちたす。 非垞に䟿利な機胜であり、デフォルトでマヌクされおいるのは無駄ではありたせん。 「バヌゞョン管理システムに远加」ず呌ばれる远加パラメヌタヌの2番目の項目は未チェックのたたにしおおき、蚘事の埌半でその理由を説明したす。



したがっお、切望されおいる「OK」ボタンが抌されるず、プロゞェクトの構造を勉匷し始めるこずができるように思えたすが、そうではありたせん。 UWPアプリケヌションのタヌゲットバヌゞョンず最小バヌゞョンを遞択するための別のダむアログボックスがありたす。







あなたがVSのWPFたたは他のプロゞェクトの開発者であり、すでに前の段萜からあくびを始めおいる堎合は、目を芚たしたす。朜圚的なナヌザヌの数ず開発䜜業の劎力に倧きく圱響する非垞に重芁な遞択があるからです。 ほずんどのマニュアルでは、䜕も倉曎せず、トピックを完党に理解せずに「OK」をクリックするだけで提䟛されおいるこずに非垞に驚いおいたす。 私は、読者のためではなく、私自身のように、この問題を慎重に研究したした。そしお今、あなたず私の考えを共有しおいたす。



質問を芋぀けようずするずきに頭に浮かぶ最も明癜なこずは、このりィンドり内のリンクをクリックするこずです。これにより、これらのパラメヌタヌの説明が蚘茉されたドキュメントペヌゞが衚瀺されたす。 残念なこずに、「なんらかのフレヌムワヌクに自分自身を远い蟌む必芁があるのはなぜですか」ずいう質問に実際には答えない、かなり有甚なペヌゞであり、これらのフレヌムワヌクの意識的な遞択をはるかに容易にしたせん。



このフレヌムワヌクが出珟した原因に぀いおの質問に答えるこずから始めたす。 マむクロ゜フトのマヌケティング担圓者は、1぀のOSを1぀の名前でリリヌスし、それを補完しお改善し、バヌゞョン番号のみを衚瀺する必芁があるず蚀っおいたす。 たた、これらの数倀は、システムに関する情報にのみ衚瀺され、特に目立぀こずはありたせん。 その結果、普通のナヌザヌが知っおいるこずは、Windows 10が自分のコンピュヌタヌたたはサポヌトされおいる他のデバむスにむンストヌルされおいるこずだけであり、䜕らかの理由で定期的に曎新されたす。 これは非垞に賢明な決定です。なぜなら、Windows 10の最初でほずんど忘れられたビルドでさえ、Windows 10のたたであり、䞀般的な統蚈の利益のために機胜するからです。 開発者ずしお、これも非垞に有益です。なぜなら、時間の経過ずずもに、アプリケヌションの朜圚的なナヌザヌの軍隊が成長するだけだからです。



残念ながら、このアプロヌチの料金は、アプリケヌションの新機胜の䜿甚を慎重に監芖しお、幅広いWindows 10ビルドで最倧限の互換性を確保する必芁があるこずです。ご存知のように、ビルド16299でのみ䜿甚可胜な機胜はアセンブリ10240のナヌザヌず連携したす。



しかし、なぜ䞀連のバヌゞョンが必芁なのかは答えたせんでした。 最小バヌゞョンずタヌゲットバヌゞョンの遞択は、アプリケヌションをWindows 10のさたざたなアセンブリに最小限の犠牲で適応させるこずができるためです。 最倧のカバレッゞのために機胜を犠牲にする必芁はありたせん。逆に、新しい機胜のためにカバレッゞを犠牲にする必芁はありたせん。 個々のアむテムをどれだけ犠牲にする準備ができおいるかを遞択するように求められたすが、いずれにしおも犠牲にしなければなりたせん。 初期バヌゞョンから最新バヌゞョンたでの最倧範囲を遞択し、最倧のカバレッゞずすべおの機胜を取埗したずしおも、コヌドの適応に倚くの時間を割く必芁があり、開発プロセスが倧幅に䌞びお耇雑になりたす。



泚 アダプティブコヌド-これらは、この機胜たたはその機胜を䜿甚できるかどうかを決定するプログラム内の特別な条件です。 この条件により、䞀方では利甚可胜な新しい機胜を䜿甚するこずができ、他方では、これらの機胜がただ利甚できないWindowsのバヌゞョンで゚ラヌなしでアプリケヌションを動䜜させるこずができたす。 アダプティブコヌドの䟋は、このシリヌズの今埌の蚘事に掲茉される予定です。
では、タヌゲットおよび最小バヌゞョンずしお䜕を遞択する必芁がありたすか タヌゲットバヌゞョンの堎合、可胜な限り高い倀を遞択するこずをお勧めしたす。 Windows 10を曎新するたびに、新しい機胜が衚瀺されるだけでなく、叀い機胜も改善されるこずを理解するこずが重芁です。 初期のアセンブリを察象ずしたアプリケヌションは、察象のアセンブリのAPIを正確に䜿甚したす。 したがっお、最新バヌゞョンをタヌゲットずしお遞択するず、新しい機胜だけでなく、より優れた、より珟代的な叀い機胜も取埗できたす。 これを知っお、タヌゲットずしお以前のアセンブリを遞択する時期を決定するこずもできたす。 そしお、これは、䜿甚する予定のメカニズムが最新のビルドで機胜しなくなった堎合にのみ必芁です。



たずえば、アプリケヌションが別のプラットフォヌムから転送された堎合や、単に叀いAPI機胜に基づいお「クランチ」を䜿甚しおいる堎合に、これが発生する可胜性がありたす。 念のため、タヌゲットバヌゞョンが最倧倀ずしお認識されるべきではないこずを付け加えたす。 もちろん、アプリケヌションは今埌のバヌゞョンのWindowsでも匕き続き適切に動䜜したすが、目的のAPIのバヌゞョンを参照したす。



最小バヌゞョンに移りたしょう。 珟圚、統蚈的に最も人気のあるバヌゞョンであるWindowsのバヌゞョンず同じに蚭定するこずをお勧めしたす。 そのため、特定のバヌゞョンのコヌドの互換性をチェックするずいう䜙分な手間を省き、最倧のナヌザヌを獲埗しおいたす。 圓然、ナヌザヌが以前のビルドでスタックしおいるこずが確実な堎合は、それを最小ずしお遞択する必芁がありたす。 ただし、タヌゲットバヌゞョンず最小バヌゞョンに同じものを遞択するこずは、最良のアむデアではありたせん。 Windowsの曎新は高速であるだけでなく、その結果、すべおの叀いコンピュヌタヌに察応しおいるわけではないため、アプリケヌションを単䞀のアセンブリに駆動するこずは正圓な解決策ではありたせん。



最埌に、すべおのプレリュヌドが完成し、䜜成されたプロゞェクトの内容の孊習を開始できたす。 [゜リュヌション゚クスプロヌラヌ]りィンドりでファむルずフォルダヌを確認できたす。



それを理解したしょう





新しく䜜成されたプロゞェクトは完党に機胜し、「F5」を抌すず開始できたす。 アプリケヌションを起動するず、[スタヌト]メニュヌのむンストヌル枈みアプリケヌションのリストに衚瀺され、そこから起動するこずもできたす。



最埌に蚀及したいのは、プロゞェクトをバヌゞョン管理システムに远加するこずです。 人気のあるバヌゞョン管理システム以䞋Gitず呌びたすはいく぀かありたすが、初心者の開発者にはTeam Servicesが最適です。 これは、リモヌトストレヌゞでアプリケヌションを公開したり、チヌムを開発したりするための無料のツヌルです。 プロゞェクトで䞀緒に䜜業したり、コヌドブランチや個別のビルドを䜜成したりするような匷力な機胜が必芁でない堎合でも、同期ずバックアップの機胜を過小評䟡するこずは非垞に困難です。







そのため、新しく䜜成したアプリケヌションをTeam Servicesで公開したす。 これを行うには、VSの右䞋隅で、「バヌゞョン管理システムに远加> Git」ずいう碑文をクリックする必芁がありたす。 開いたりィンドり「Team Explorer-Synchronization」で「Publish Git repository」をクリックしたす。



その埌の操䜜をスムヌズに行うには、Team Services Webサむトに登録し、このシステムに独自のドメむンを持っおいる必芁がありたす。 これは非垞に簡単です。 メむンの同期りィンドりで[詳现]リンクをクリックするず、Team Services Webサむトに移動したす。 このサむトで「無料で始める」を遞択し、指瀺に埓っおください。 ドメむンを䜜成するず、プロゞェクトの远跡、倉曎の履歎の衚瀺、チヌムの割り圓おなどを行うこずができるハブになりたすが、サむトを閉じおVSに戻るだけです。



準備䜜業の埌、「Gitリポゞトリの公開」を遞択するず、アカりント、ドメむン名を遞択しおプロゞェクトを公開するだけになりたす。 すべおがうたくいった堎合、同期りィンドりに、VSから盎接実行できるアクションのリストが衚瀺されたす。 「倉曎」ず「同期」の項目に最も関心がありたす。



実際、プロゞェクト党䜓をGitにただアップロヌドしおいたせん。 たず、プロゞェクトの䜜成を含む、プロゞェクトに加えられたすべおの倉曎を修正する必芁がありたす。 これを行うには、「倉曎」セクションに移動しお、行われた倉曎の説明を入力し、「すべおコミット」をクリックしたす。 Team Servicesを䜿甚するず、プロゞェクトに加えられた倉曎の履歎を远跡し、必芁に応じお初期のポむントに戻るか、远加した内容ず時期を確認できるため、将来の開発プロセスの適切なポむントをすばやく芋぀けるのに圹立぀説明を遞択しおください。 たずえば、コミットの説明で「プロゞェクトの䜜成」を指定できるようになりたした。



すべおの倉曎をコミットしたら、Gitず同期する必芁がありたす。 これを行うには、「同期」セクションに移動し、適切なリンクを遞択したす。 同期は䞡方の方法で機胜したす。倉曎をコミットしお別のコンピュヌタヌにアップロヌドするず、同期の時点で倉曎がそのコンピュヌタヌに読み蟌たれたす。 以前にGitにアップロヌドしたプロゞェクトファむルを玛倱した堎合にも䟿利です。 ロヌカルコミットせずにプロゞェクトを同期するだけで、元に戻りたす。



このトピックでは、UWPプロゞェクトの䜜成は終了したず芋なすこずができたすが、この蚘事のシリヌズはラむブプロゞェクトの開発ず䞊行しお曞かれおいるため、私はこの蚘事を、UWPを䜿甚するプロセスで開発したプロゞェクトの初期セットアップに関する個人的な掚奚事項で補足するこずにしたした。



以䞋の情報はWPF開発者向けであり、個人的な経隓であり、参照ずしお䜿甚すべきではありたせん。



実際、プロゞェクトの最初の郚分で「バヌゞョン管理システムに远加」チェックボックスを無芖するこずをお勧めするこずは無駄ではありたせんでしたが、プロゞェクト内で䜕も倉曎せずにこのプロセスを説明したした。 私自身は、プロゞェクトにいく぀かの経隓ベヌスの远加芁玠を远加した埌にのみ公開したす。



最初に、 ConvertersAndStyleフォルダヌがプロゞェクトに远加され、そこにコンバヌタヌずリ゜ヌスディクショナリを含むファむルが配眮されたす。





おそらくご存知のように、機胜に基づいおフォルダヌずファむルの名前を遞択したした。 郜合の良い名前を付けるこずができたす。



リ゜ヌスファむルを远加した埌、App.xamlファむルにそれらの指瀺を远加する必芁がありたす。



<Application x:Class="CriptoFarm.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:CriptoFarm" RequestedTheme="Light"> <Application.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="ConvertersAndStyle/ConverterDictionary.xaml"/> <ResourceDictionary Source="ConvertersAndStyle/ApplicationStyle.xaml"/> </ResourceDictionary.MergedDictionaries> </ResourceDictionary> </Application.Resources> </Application>
      
      





これで、アプリケヌション内のどこからでもこれらのファむルからリ゜ヌスにアクセスできたす。

2番目に泚意したいのは、画像甚に個別のフォルダヌを割り圓おるこずです。 倚くの堎合、写真ぞのパスを手動で蚘述するため、よりシンプルで盎感的なフォルダヌずファむルの名前を䜿甚したす。 プロゞェクトに画像を保存するためのメむンフォルダヌはImagesずいう名前で、 Assetsフォルダヌは、ロゎ、タむル、アプリケヌションリスト、およびストアに衚瀺されるロゎにのみ䜿甚したす。



次に、ロヌカラむズ甚のアプリケヌションを準備したす。 これを行うには、少なくずも2぀のフォルダヌを䜜成したす。 最初の母囜語この堎合はロシア語は「ru」、2番目は囜際語-「en」ず呌ばれたす。 この堎合、フォルダヌ名は重芁な圹割を果たし、別の名前を付ける必芁はありたせん。 アプリケヌションを耇数の蚀語にロヌカラむズする予定がある堎合は、远加の蚀語甚のフォルダヌを远加するこずもできたす。 さたざたな蚀語で利甚可胜なフォルダ名の完党なリストは、 ここにありたす 。



各フォルダに、タむプ「Resource File.resw」のファむルを远加する必芁がありたす。デフォルト名のたたにしたす。 アプリケヌションのロヌカラむズずこれらのファむルの凊理方法の詳现に぀いおは、シリヌズの別の蚘事で説明したす。



そしお、これらすべおの操䜜の埌、アプリケヌションをバヌゞョン管理システムに公開するこずができたす。その埌、プロゞェクトはすぐに䜜業できる状態になりたす。



シリヌズの次の蚘事は、独自のスタヌト画面の䜜成に専念したす。このトピックに関する既存の蚘事を背景に、䜕か新しいものがもたらされるこずを願っおいたす。



All Articles