XNA /单机游戏

独立神

Почтивсё,чтовамстоитонихзнать:историяотдревностидонашихдней,краткиесведенияокомплектациииподходахвразработкеипричинах,покоторымимеетсмыслиспользоватьилинеиспользоватьнаданныймомент。

Начнёмиздалека…

Cсерединывосьмидесятых,когдакризис1983年годапревратилконсольныйрыноксевернойамерикиввыж。 1985年5月5日,NES,отстроилавсёснуляинавелатамжелезобетонныйорднун。 Конскиеотчисления,игрытольконанашуплатформу,носамоеглавное—图库视频影像#132410644 Кразработкеконсольныхигрподпускалисьтолькосолидныеконторыссолиднымипрофессионалаи, Ну,хотябыприблизительно。

КонкурентыНинтендо,которыеподтянулисьпопозже,тожекогопопалокразработкеигрнеподпуска。 Шловремя,усложнялисьигры,увеличивалисьбюджеты,ресурсыикоманды,необходимые,чтобысдела。 Конторы,подпускаемыекразработкеконсольныхигрстановилисьвсёсолиднееисолиднее。 Досерединынулевыхразработкаигрнаконсолибылауделомоченьсерьёзныхфирм,укотороз ЛюбителямоставалосьтолькодовольствоватьсяразработкойигрнаПК,потомучтониктотебеSDKотусловной索尼的PlayStationнаблюдечкенепринесёт,еслиутебязаспинойнеткомандыпрофиивозможностивложитьсясейчасиподелитьсяпотом。

Запомнилиэтотмомент? Точнозапомнили? Отлично。 Теперьзайдёмсдругогобоку。

Вконце90хсамоймоднойтехнологиейбылаплатформа的Java,котораяпозволялазапускатьп​​рограммы,написанныенаодноимённомязыкенамиллиардахустройствоткофеварокдосуперкомпьютеров。 Какониэтоделали? .зыковнасамомделебылодва。 СначалапрограмманаJava的компилироваласьвпрограммунапромежуточномязыке,байт-коде的Java,похожемнаассемблер,апотомэта“промежуточнаяпрограмма”выполняласьнаодномиз“трёхмиллиардовустройств”,которымионитаклюбятпонтоватьсяприустановке。 То,чтобайт-кодбылпохожнассемблер,делалореализациювиртуальноймашиныJava, И,чтосамоекрутое,программанаJavaдолжнабылаработатьодинаковоналюбойвиртуальноймашинеJava。 АпрограммистыполучиливезможностьнезабиватьсебеголовуразницеймеждуЛинуксами,Вин

Microsoftтогдабылглавнымкандидатомнадолжность“корпорациязла”, МайкиоченьдолгооблизывалисьнаJava中,пыталисьвзятьмоднуюштукуподконтроль,используяюридически-корпоративнуюмагию(всемEEE,пацаны),делалисвоикакие-тодиалекты,но孙напровокациинеподдавалисьиконтрольнадсвоейдрагоценной的Javaнеотдавали。

Вкакой-томомент“корпорациязла”невыдержалаирешиласделатьсвоюJava,сблекджекомиллюхами。 Иимяейбыло.NET。 NET上的ОсновойикиллерфичейNETдолжнастатьтажеидеяспромежуточнымязыком,норазвёрнутаяврен。 Вместо“одногоязыкаимножестваплатформ”былорешеносделать“многоязыковнаоднуплатформу”。 Си-шарп,модныйстильныймолодёжныйVB.NET,F-шарп(какиспользоватьсимволрешёткибезпревращенияеговсраныйхэштег?),свойдиалектC ++имного-многодругихязыков。 “Однаплатформа” — Windows,самособой。

Казалосьбы,зачеммелочиться? Почемубысразунеперейтик“многоязыков—многоплатформ”,используятотсамыйпромежуточныйя Потомучтотогда,напоминаю,Microsoftбылакорпорациейзла,одержимоймировымгосподством。 Темнеменее,.NETнамиллиардюридическихзамковонинестали。 Болеетого,онисделалинекоторыебазовыечастисвоейтехнологиисерьёзнымимеждународнымистандат。 Главныйврагвсегосвободногоиоткрытогоковсеобщемуудивлениюзанялнейтральнуюпозицию:? PDF-кусостандартомвзубыивперёд。 Нокак-нибудьбезнас,пожалуйста。 Мешатьнебудем”。

Запомнилиэтотмомент? Точнозапомнили? Ипрошлыйтожеточнозапомнили? Хорошо,тогдапродолжаем。

野生XNA出现

NET的NET的。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 的WinForms,ADO.NET,ASP.NET,разныештукидлянаписаниявеб-сервисовимного-многовсякогоразного,чтозанималодветретивобзорныхталмудахпо.NET’унаполторытысячистраниц。 Практическивсё,чтонадодлянуждкровавогоэнтерпрайза。 И,“онногязыковводномпроекте”,“киллер-фича”этадействительносталакалакиллер-фичей。

Игрострой,какникрути,далековатоттехсамыхнужд,поэтомудосерединынулевыхпокоеие GDC 2004上的所有图片。 Испустяпарулетеговыпустили。 Итутнастаётмомент,когдадвесюжетныелиниисходятсявместе。 Выже,надеюсь,помните,чтояговорилосложностиразработкинаконсоли,верно?

Таквот,янемножкослукавил,когдасказал,что.NETподдерживалмногоязыков,нобылреализованто。 NET Framework精简版,由беленыбилоэтойгорыбиблиотек。 在Microsoft,кромеWindows,былиещёплатформы,накоторыеможнобылосделатьреализацию.NET’а中。 Поэтому“наборинструментов” XNA,在NET精简版,NET精简版,позволялделатьигрынаWindows,Windows Phone 7上,都非常简单

Простопредставьтесебеэтовремя。 Разработкаигроккупированатемисамымисолиднымиконторами。 Прослово“инди”малоктослышалвообще。 Какразтотоосо Стимтогдаиспользовалсядлятого,чтобыбылолегчедокидыватьпатчидляконтрыдовсехиграющих。 GreenLight标记为проектененамечался。 KужмолчупроKickStarter。 НамоментанонсаXNAдаже基希ещёневышла(перваяиграЭдмундаМакмилленаипарыеготоварищей,послекоторойлюдиснекоторымудивлениемначаливспоминать,чтокогда-тохорошиеигрыделаломеньшепятидесятичеловек)。

Итутнабелыхконяхвлетаюттакиехлопцыизигровогоподразделения微软ивыдают:“Пацаны时,Visual StudioспаройплагиновисоткабаксовзааккаунтвXNA创造者俱乐部 – ивысможетеразрабатыватькрутыеигрыдлясамойлучшей次世代-консоли(нашей,конечно) ,невыходяизподвала! Студентамтех。 вузовбесплатно!”。 Чутьпозже,в2007годуребятаиз微软подтвердилисерьёзностьсвоихнамеренийизапустили的Xbox Live独​​立游戏,гдемаленькиекомандыипсихи-одиночкипилилисвоёиндидлямагазина的Xboxипродавалиегопосравнительнонебольшимценам。 XBox Creators Club,在XBox上的即时消息。 Visual Studio XNA XNAипоставитьДляразработкинаиныеплатформынужнобылоскачатьтолькосам。 Этоужебылосерьёзнойзаявкойнанароднуюлюбовь。

Нонет,этобылоещёневсё。 Каквыяснилосьпозже,изнутриXNAоказалсяхорош。 XNA,API API报文中的Уменятакиетёплыевоспоминаниякромеработыс。 Наэтойштукебылодействительноприятнописатьиработать。 НиклаусВиртвсвоёвделалязыкPascal,чтобыучитьлюдейпрограмированию,нооказолан СXNAполучилосьнаоборот。 То,чтозадумывалоськакнаборинструментовдляреальнойразработки, Вобщем,дажееслиигрумечтысоорудитьнеудавалось,XNAоставлялосебе,восновном,приятныевоспоминания,какбывшаяскоторойразошлисьполюбовноидействительноосталисьдрузьями。

Ипошло-поехало。 Игрыразрабатывались,книжкитипа“учимсяпрограммироватьспомощьюXNA”писались,докоментатибы。 Жизньбылахороша。 XNA 4.0 Refresh,2011年– 2012年之前,在XNA 4.0 Refresh上。

Проходящаялюбовь,вянущиепомидоры

Где-тосконца2011годасообществобылонесколькообеспокоеносудьбойXNA。 Майкиушливмолчанкупоповодуновыхверсий,一个поддержкуWindows 8,новыхMetro-интерфейсовипрочихооннехттук Лишьспустягод,вначале2013年,вкакой-топочтовойрассылкежурналистам微软междуделомподтвердила,чтонаXNAдавноиокончательнозабитболт,новыхверсийужеточнобольшенебудет,даиподдержкустарыхв2014годупрекратим。

Пятьлетвсёбылонеплохо。 2011тожепошлонетакврайоне2011–2012года,чтоMicrosoftрешилизабытьосвоёмдетище? Точныепричинымне,увы,неизвестны,поэтомуэтотразделстатьибудетупражнениемвконспитвконспироли。 Предлагаютем,ктознаетбольше,присоединитьсявкомментариях。 Далеетривозможныепричины。 Какмнекажется,каждаяизнихповлияла。 Новкакойстепени,以及дажеблизкоопределитьнеберусь。 Расположуихвпорядкевозрастанияважности,какмнесамомувидится。

Первое—недостаточныйфинансовыйвыхлоп。

XNAнемножкосмахиваланамеценатствоВообщевсядеятельностьвокруг。 XBox XBox,Xbox,Visual Studio以及XBox。 Xbox Live独​​立游戏Да,вышло,есливикипедияневрёт,большетрёхтысячигр。 Иэто,скажемтак,оченьмного。 是Microsoftимелиотихпродажи吗? Нефакт,чтонаразработкуэтойбиблиотекибылопотраченооченьмного,нокому-тосредибольшогоначальствамоглоприйтивголову,чтонечегонаэтихдармоедовтратитьденьги。 Темболее,微软где-тооколоэтогомоментарешилинемногосменитьнаправление。

Второе— Microsoft的сменанаправленияигровымподразделением。

ВкнигеАаронаРида“学习XNA 4.0”минимальныйкоддлярисованиямоделивыглядиттак:

ДажеесливынезнаетеСи-шарпа,топоназваниятиповданныхипеременныхдолжныприбототолонодон Еслинедогадываетесьдажеприблизительно,то,возможно,стрёхмернымииграмистоитповременить。 Влюбомслучае,кэтомумоментувыдолжнычёткопонимать,почемуUnityпопулярнее。

“Низкоуровневый” —этонезначит“ограниченный”。 ВXNA是HLSL的васбылавозможностьиспользоватьсамоличнонаписанные。 HLSL — DirectX中的этоязыкдлянаписанияшейдеров,используемый。 NBЕслиявсёправильнопонимаювэтойжизни,шейдер—этопрограмма,котораявыполноеосенепосе Чтозабавно,дляотрисовкимоделисосвоимшейдеромкоданужнобылопочтистолькоженоорон Приведуопятьпримерсrbwhitetaker.wikidot.com:

Нарисоватьмодельсосвоимшейдером(вкодеXNAонназывается效果)инарисоватьмодельбезсвоегошейдера – приблизительноодниитежезатратыкодавси-шарпе。 Похоже,XNA,чтолучшерисоватьмоделисосвоимишейдерами。

ВMonogame玩HLSL脚本,OpenGL上的。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 Да,OpenGLсвойязыкшейдеров,называющийсяGLSL,MonogameвсёравноиспользуетсяHLSL,которрееодобн。 Длятех,ктохочетвёесспользоватьGLSL,существуетотдельнаяветкарепозиторияMonogame。 Подробностиискатьздесь。

Собственно,этовсё。 Системычастиц? Материалы? Тени? Освещение? Вперёд,пишите,всёнеобходимоеувасесть。 Да,вотэтимивотруками。 Ну,илиищитесторонниебиблиотеки。

Каквсёэтосчастьеорганизовано?

Нуатеперь,собственно,рассказотойчасти,котораяпозволяетназыватьXNAфреймворком,аненабор。 Аименно—архитектурныйкаркас。 ВXNA游戏。 Чтоонделает? Прячетвнутрисебяигровойцикл。

LearnестноспионереноизкнигиАаронаРида“学习XNA 4.0”
亚伦·里德

Вкаждыйизблоков,изображённыхнарисункевывписываетесвоюлогику。 Нонеотбалды,以及сегозначением。 Давайтепопорядку。

初始化—Названиеговоритсамозасебя。 Тутвыполняютсявсеподготовительныедействия,кромезагрузкиассетов。

LoadContent —由впельныйзагрузкавсехнеобходимыхасссетов。

Дальшеидётигровойцикл,которыйобразуетсяизвызовов更新绘图。 Поумолчанию,更新Drawвызываются60развсекунду(тесамые60 FPS)。 Этуцифру,еслихотите,можноизменить。 Сначалавызывается更新,并在вдвыобновляетесостояниеигры。 抽奖,和гаевырисуететекущеесостояниеигры。

ПочемуигровоDraw Drawи更新? Деловтом,чтоXNAчестнопопытаетсяобновитьвашуигру60развсекунду, Наслучай,XNAнебудетуспевать,имеютсяследующиемеры。 Во-первых,будутпропускатьсявызовыметоды抽奖。 Именнопоэтомутамдолжнатолькоотрисовкаигровогомираиникакойлогики,связаннойсегои。 Во-вторых,в更新выбудетеполучатьинформациюотом,скольковременипрошлоспрошлоговызова,чтобывыориентировалисьнато,скольконасамомделпрошловремени。 Втретьих,выможетевлюбоймоментпроверитьфлажокIsRunningSlowly。 Еслионвыставленв真,томожноужесамомупринятьмеры,подровнявдальностьотрисовки,отрисовавтекстурысменьшимразрешением,намекнувпользователю,чточто-топошлонетак,илизаписавсебекуда-нибудьвлогинформациюопроседаниях。

Всамомконце,когдаужеигразакончилась,вызываетсяUnloadContent。 XNA上的Ненадопугатьсясамприберётассетыизпамяти。 Зачемжетогдаонесть? Деловтом,механизмзагрузкиассетоврасширяем。 Тоесть,выможетенаписатьсвойзагрузчик/обработчик,есливыхотитезагрузитьчтотовнестанда。 Наслучай,есливаширасширенияпотребуюткаких-тодополнительныхтелодвиженийпривыгрузкеассетаизпамяти,добавленэтотсамыйметодUnloadContent,вкоторыйможновклиниться。

Компоненты

Кромескрытияигровогоциклаэтотсамыйкласс游戏содержитколлекциюигровыхкомпонентов。 Чтоэтотакое? XNA的游戏GameComponent,可用于初始化,更新,加载,填充,内容,可加载,可加载,可加载,可初始化,可加载,可填充,可填充 Выможетезапихнутьчастивашейигровойлогикивэтисомпоненты。 Потомуженепосредственноввашейвариацииклассаа游戏выможетедобавлятькомпоненты, Какэтоработает? Сначалаваш游戏выполняетв更新или绘制то,чтоемупредписановами,апотомпростопроходитсяпоспискуимеющихсякомпонентовиобновляет/отрисовываетих,еслионивключены。 Чтотакиммакаромможноделать? Ну,янакидаюприблизительныйсписок,ноэтосписокизразряда“чтоможнонарисоватьпростымкаранда”。 Придостаточноразвитыхтерпенииивоображенииэтотсписокбезграничен。

  • Частиинтерфейсаможнораскидатьпоразнымкомпонентамиделатьихвидимыми/невидимымипоситуа。
  • FPS的Отдельныйкомпонентдляотладочнойинформации。
  • Компонент,внутрикоторогонепосредственнопроисходитигровоедейство, Это,чутьчто,самыйпростойспособпоставитьигрунапаузу。
  • Исразужеможносделатьвидимымкомпонент“игровоеменю”。
  • Еслиувасбудетотдельныйкомпонентнакаждыйуровень,высможетезагружатьассетыотдельнодлядля。
  • НекоторыелюбятотделятьвигровыекомпонентыуправлениивводомиИИ。

Единственное,чтоменявэтойсистемерасстраивает—этото,чтоунаспросто“плоский”списокэтихса。 Да,ярасстроениз-затого,чтовкомпонентынельзявкладыватьдругиекомпоненты。 Аведьвозможностькомпонентыотношением“отец-родитель”или“корень-лист”облегаинае Делаешьневидимым“родителя”и“дети”становятсяневидимымитоже。 Убираешь“корень”ивсс“листья”удаляютсятоже。 .тобыпригодилось。

вотпокаписалпредыдущийабзац,понял,чтодеревоигровыхкомпонентоввместоспискаоее Идаженакидалвголовеприблизительныйплан,какэтосделать。 XNA / Monogameрассчитаннатаких,какя。

НаэтойнотемызаканчиваемобзорвнутреннооееXNAипереходимкплюсам/минусам,котореесже

ПричинынеиспользоватьXNA / Monogame

Приветвсем,ктоневыдержалиперемоталдоэтогоместа。 Извините,еслислишкомсильнонагрузилтехническимидеталями。 ТеперьрасскажуоплюсахиминусахXNA。

  • 在3D模式中使用невероятнокрутоеитехнологичное3D。 Ивамниктонезапретитегоиспользовать。 Толькодляэтогонадоегонаписать。 Снуля。 Безмножестваподкованныхпотеме“человеко-месяцев”этоневозможно。
  • Вамхочетсяиспользоватьхотькакое-нибудь3D。 Тутужевсёнетакстрашно,以及этотпунктздесьпостольку-поскольку。 Нонадоучитывать,3D XNA / Monogameиспользуютреже。 Азначит,тестируютменьше。 Отсюдаследуетбольшийшанснаткнутьсянакакую-либопроблему。
  • Уваснетопытапрограммированияивамоченьсильнонехочетсяегоприобретать。 Аещёвылюбитевизуальныередакторы。 Тогдамоивамсоболезнования。 XNA / Monogame中的Нуасерлисерьёзно—对этонеигровойдвижок以及именночтофреймворкспароеотилито。 Хотя,повторюсь,никтонезапретитсделатьигровойдвижокнаегооснове。
  • Вамнужнасамаясвежаяиполнаядокументация+выцелитесьвмультиплатформу。 Так,单人游戏。 Такисторическисложилось,чтокXNAбыладостаточнополнаядокументация,горатуториалоинемалое。 Ихвалабогам,чтоэтовсёизинтернетаникуданеисчезло(посостояниюнафевраль2019года)。 Увы,сMonogame的вэтомпланевсёкудапечальнее。 Спасаеттолькото,XNAснекоторымиоговоркамиприменимоикMonogame。 Неудивляйтесь,есливдругокажется,чтокниганаписаннаядотого,какMonogame的游戏,
  • Вамнужночтобычто-тонетривиальноеработалоизкоробки。 Ну,этотпунктдолженбытьочевиденизвышеописанного。 Например,“синкоробки”,“соливыхотитефизику”,топридётсясмотретьвоооонучего-тоболеесолид。 XNA上的Илиискатькакую-нибудьбиблиотекуставящуюсяповерх。 Илиписатьсамому。

ПричиныиспользоватьXNA / Monogame

  • Вамнуженабсолютныйконтроль。 Опратнаяпресловутогоминимализма。 虚幻引擎,Да,написатьсвоюфизикусложнее,чемвзятьготовыйвариантвкаком-нибудь。 Ноэтобудетвашафизика。 Выбудетезнатьвсёотом,каконаработаетввашейигре。 Исможетеизменитьеё,каквамзаблагорассудится。 Отсутствиеготовоговарианта=отсутствиеограниченийснимсвязанных。 Нуженпостоянноизменяющийсяхит-боксвформечетырёхмерногобублика,срабатывающее Наздоровье,Си-шарписполнитлюбыевашижелания,стоиттолькосуметьпопросить。
  • Бонускпредыдущемупункту:бесценныйопыт。 Тот,ктонаписалсвоюфизикууженебудетбоятьсяразобратьсясужеготовойбиблиотекой。 Иэтокасаетсянетолькофизики。
  • Вамнуженпростойинструмент,нетребующийотдатьпол-жизнинаегоосвоение。 Обратнаясторонаминимализма,опятьже。 Серьёзныеигровыедвижкипредставляютсобойнеобъятныеинструменты,освоениекоторыхпотянетоод。 СXNAвамбудетдостаточнопочитатьдве-трикниги,поковырятьсявооуна
  • Из графических изысков планируется только простенькое 2D . Выводится текст, выводятся спрайты. Есть средства для того, чтобы это проконтролировать. Чего ещё для счастья нужно? По крайней мере, очень многие разработчики мыслят в этом ключе.
  • Вы не хотите иметь дело с визуальными редакторами. Ну, мало ли. Частично пересекается с первым пунктом.
  • Мультиплатформа, детка. Пункт добавлен исключительно для галочки, так как мультиплатформенность нынче чуть ли не стандарт для любого уважающего себя средства разработки. Тем не менее, автор Dust: An Elysian Tail наверняка был рад возможности выпустить свою метроидванию на iPad и Switch.

ВДНХ, или глава в которой наконец-то появляются картинки

После прочтения предыдущей трети статьи может появиться ощущение, что ничего хорошего сделать на XNA/Monogame нельзя, не принеся в жертву сатане свою душу. Поэтому дальше я набросаю список игр, сделанных на XNA/Monogame. Но далеко не факт, что истории разработки этих игр развеят это ощущение.

Я не знаю, что тут больше повлияло, мои вкусы или специфика инструмента, но список получился немного однобоким. Список составлялся по принципу “о чём слышал, во что играл”

星露谷

Где-то краем уха я слышал, что человек, сделавший эту игру, подрабатывал билетёром в кинотеатре исключительно для того, чтобы не забыть, как выглядят живые люди, и окончательно не утратить навыки общения с ними. Это вполне может объяснять выбор Monogame в качестве средства разработки.

Честно признаюсь, не играл, а в список включил из-за её известности. Если вдруг кто-то о ней не слышал, то игра представляет из себя “весёлую ферму” здорового человека. Аддиктивна до ужаса, обласкана критиками.

非斯

Канадский инди-разработчик Фил Фиш известен двумя вещами. Термоядерным нытьём, на фоне которого уважительно снимали шляпу шитштормы геймергейта, и необычным платформером Fez, вышедшим в 2012 году.

Да, это та самая игра, где ты играешь в двух измерениях, но в любой момент можешь повернуть мир на 90 градусов. Изначально делалась под XBox, позже была портирована на всё остальное, кроме консолей Нинтендо.

Признаюсь честно, мне не зашло, но тем, кто любит всякое разное необычное, попробовать обязательно.

Axiom Verge

Инди-метроидвания, сделанная по всем возможным канонам жанра. Прям вот любовное послание жанру. Пять лет сплошного непрошибаемого “Я ЛЮБЛЮ METROID И ВЫ ЕГО, СУКИ, ТОЖЕ ПОЛЮБИТЕ”, скристаллизованного в одной игре. С бек-трекингом, множеством способностей, нетривиальным сюжетом, полностью раскрыть который можно только выдрочив там всё до последнего пикселя, и отличнейшим саундтреком. Мои глубочайшие респекты Томасу Хаппу и мои искреннейшие рекомендации к скачиванию/покупке.

ria

А теперь, ради разнообразия, об играх которые делает больше двух человек (вроде бы). Появилась на волне популярности Minecraft, но звание “двухмерный клон” быстро переросла. Сделана именно на XNA.

Hell Yeah!™ Wrath of the Dead Rabbit

Простенький забавный платформер про кроличьего сатану, которого папарацци застигли вне образа. Оскорблённый дьявол взялся за восстановление репутации единственно правильным образом. Тотальный геноцид аудитории жёлтой газетёнки. Джей и молчаливый Боб однозначно одобряют данный подход.

Вообще, что странно, игра вроде как сделана на XNA. PC-версия так точно. Но вот то, что игра вышла в 2012 году на Xbox360, PS3 и PC одновременно наводит на некоторые мысли. Неужто воспользовались Monogame?

塞莱斯特

Игра знатно пошумела среди ценителей видеоигр и даже взяла на The Game Awards 2018 приз за лучшую инди года, так что много о ней писать не буду. Скажу только, что свои призы она заслужила.

Да, Celeste разрабатывалась на XNA. Причём в разработке было задействовано аж три реализации: XNA, FNA и Monogame.

Bastion, Transistor, Pyre

Почему три штуки за раз? Потому что они схожи по стилю и сделаны одной студией — Supergiant Games. Этот случай несколько выбивается из списка. Тут целая студия, пусть и инди-студия, сделала XNA/Monogame своей основной технологией и успешно выпустила на нём три игры подряд. Три, потому что я не смог нагуглить на чём именно сделан Hades. Но если вдруг кто-то играет, проверьте нет ли там папки Content в которой лежат xnb-файлы. Это выдаст родство с XNA с головой.

Кстати, я не поленился, залез в код Transistor (программы на .NET очень легко декомпилируются), чтобы выяснить, двухмерная или таки трёхмерная графика в игре. И оказалось, что там всё рисуется через SpriteBatch. То есть, вся эта красота, которую вы могли там наблюдать, скорее всего сделана через двухмерную графику. И, судя по некоторым косвенным признакам, там они таки обработали Monogame напильником под себя.

Я оставлю тут картинку с официального сайта Transistor, потому что я играл только в неё.

Dust: an Elysian tale

Вот это я берёг напоследок. До самого конца, когда вы уже будете думать, что одиночки на XNA делают только пиксельный графончик. Мой личный фаворит, демонстрирующий, на что способен XNA в прямых руках.

Да, опять метроидвания, опять сделана одним упёртым энтузиастом. Бонусные баллы за то, что Дин Додрилл самоучка во всём, что касается программирования. Художник-аниматор, решивший, что вместо мультика по созданной им вселенной лучше сделать игру. Весь визуал и всё программирование делал сам. Со сценарием ему помогли, но там именно что помощь, история и вселенная авторские. С саундтреком пришлось просить помощи на стороне. Говорят, порывался озвучить сам всех персонажей, но издатели отговорили.

Разработка началась ещё в 2008 году и изначально Дин хотел выпустить её через XBox Live Indie Games, но его вовремя заметили в Microsoft и в 2009 году его переподписали на XBox Live Arcade. В какой-то момент выяснилось, что разработать игру за три с половиной месяца, как изначально планировалось, не получится. Но ступившегося на путь длиной в три с половиной года Додрилла было уже не остановить.

В 2012 года она вышла на XBox. Позже автор игры, видимо, открыл для себя Monogame, и игра начала расползаться по платформам, как тараканы после того, как ты включишь свет. К PC и XBox со временем добавились PS4, Linux, OS X, iOs и, в конце 2018 года, Nintendo Switch.

Почему я уделяю этой игре столько внимания? Скажем так, геймплейно это не лучшая метроидвания во вселенной. Само собой, добротная, хорошая, но не сверхкрутая. Но визуальная часть местами такая, что Ори нервно курит в сторонке вместе со всем своим слепым лесом. Ты как будто зашёл на Девиант-арт в галерею очень крутого художника, а она внезапно ожила, веб-страница куда-то исчезла, остался только этот нарисованный мир, у тебя в руках почему-то геймпад, и ты уже идёшь разбираться с амнезией главного героя в компании какой-то летающей прелести непонятной видовой принадлежности. Короче говоря, рекомендую. В стиме скидка 75% до 11 февраля, кстати. Лучшего способа вложить два с половиной доллара придумать трудно.

Этот кадр я утащил из Стима. Игра действительно так выглядит.

Литература

Книг по XNA немало, но среди них выделяется “Learning XNA 4.0” Аарона Рида, которую я тут не раз упоминал.

Так же очень хвалят туториалы, которые можно найти тут: Welcome — RB Whitaker’s Wiki

Можно исследовать официальную документацию Monogame: Documentation

Но документации по XNA всё-таки будет получше. Хотя бы потому, что там описания классов и свойств всегда содержат что-то, кроме имени класса или свойства. Надеюсь, эта ссылка не умрёт через месяц: xna