Привет, если я понимаю, что вы хотите, чтобы этот запрос работал:
select *,
Case when schedule_at is not NULL THEN (CASE
when actual_start < schedule_at THEN 'Early'
else 'Late'
END)
ELSE
(case
when actual_start between schedule_from and schedule_to THEN 'On Time'
when datediff(minute,actual_start,schedule_from) < 0 THEN 'Late'
else 'Early'
END) END as Delivery
from some_dates_table
Во-первых, XNA не подходит. Это сделано с целью абстрагироваться от различий между ПК и 360. Высокопроизводительная игра не может этого сделать. Он должен использовать различия. Там, где сияет 360, нужно использовать производительность. Там, где это отстой, необходимо разработать обходные пути. И наоборот, для ПК.
Вот почему существуют другие оболочки DirectX (SlimDX приходит на ум как гораздо более прямая оболочка D3D).
Что касается управляемого кода в целом, на ум приходят несколько проблем:
С учетом сказанного, использование .NET для крупной компьютерной игры будет работать намного лучше. Полная платформа .NET имеет гораздо лучшие характеристики производительности, и доступное оборудование на ПК в любом случае будет изменяться, поэтому жесткий контроль над точным использованием памяти менее важен.
Но в конечном итоге, зачем им это делать? Это было бы большим риском, потребовалось бы много переписывать код, а что именно они пытаются доказать? Большинство студий делают кроссплатформенные игры, и для них .NET - не вариант, каким бы крутым он ни был. Они хотят иметь возможность запускать свой код и на PS3, или на Wii, или…
Вам нужно задать немного другой вопрос.
Почему Microsoft не переписывает существующие хорошо настроенные игровые движки на совершенно другом языке.
Надеюсь, это более понятный вопрос.
Я практически ничего не знаю о кодовой базе игровой системы, но я, конечно, не думаю, что она будет маленькой. Преобразование чего-либо, кроме тривиального приложения, с C ++ на любой другой управляемый язык - это огромная задача.
Если забыть обо всех различиях в синтаксисе и особенностях / хитростях C ++, которые невозможно реализовать в C #, с игровым приложением одна проблема, стоящая в начале разговора, будет перфомансом. C # не медленный, но у него совершенно разные характеристики производительности. Почти наверняка хорошо настроенный игровой код C ++ не будет работать так же хорошо, если его напрямую портировать на C #. Должен произойти совершенно новый раунд настройки производительности, и это будет стоить недешево.
У Microsoft есть подобная платформа, называемая XNA , которую они разрабатывали последние три года. Существует ряд подтверждений концепции, стартовые наборы и другие ресурсы для разработчиков-любителей и студий AAA.
XNA позволяет всем разработчикам использовать свои существующие навыки C # и возможности Xbox 360 / Windows для создания игр для любая / обе платформы. Сами они еще не разработали коммерческую игру, использующую платформу, но уже было несколько довольно крутых проектов с использованием XNA.
Взгляните на некоторые из игр, которые были созданы с использованием XNA.
Кроме того, комментарии о производительности C # могут быть интересны в обсуждении на форуме по теме. Это определенно достаточно быстро для многих игр; на самом деле,
Quite simply, for real-time-like performance problems such as is presented by First Person Shooters, C# isn't up for the task. Not that it's not a good language, I use it and like working with it, but the fact is that the indeterminacy introduced by the Garbage Collection in C# makes it inappropriate for games which have high performance requirements. The same would be true of Java. Only when you get to a point where you have a certain amount of excess performance available can you really do something like this; the problem really is that somebody else is going to take that extra performance, and instead of sinking it into the runtime requirements of C# (or Java, which would have similar issues), they will just make a better-looking game. Since the consumer doesn't really care what technology the game was developed with, they'll usually go with the better-looking game, which puts any games developed with C# (or Java, like I said) at a significant disadvantage.
На самом деле, если вы посмотрите на то, как обстоят дела, MS не так сильно вовлечена в игровые студии. Bungie теперь является полунезависимой организацией, они закрыли Ensemble (Age of Empires, Halo Wars) по неизвестной причине ... они закрыли группу Flight Simulator, они позволили своей эксклюзивности с Bioware (Dragon Age, Baldurs Gate, NWN ) и Bizarre (Project Gotham Racing) уходят, и они закрывают FASA Interactive (Shadowrun). На данный момент, что у них действительно есть в доме? Все, о чем я могу думать, это .... Rare и Lionhead.
Относительно того, почему они не сделали названия AAA на C #. Я полагаю, что большая часть этого была связана с устаревшими проблемами. PGR, Forza, Age of Empires, Halo, Flight Sim, практически каждая игра, которую они создавали, была итерацией предыдущей серии, так что уже были бы значительные инвестиции в существующую инфраструктуру.
Остались третьи стороны. Почему третьи стороны не используют C #? Это просто, его нет на Wii или PS3.
.NET framework в целом не предназначен для разработки игр. Целевая аудитория .NET - это , в первую очередь, бизнес-приложения (я знаю, что его можно использовать для гораздо большего, но на минутку повесьте резюме).
Когда вы пишете игры, вам нужен язык, который позволит вам как можно ближе познакомиться с оборудованием. C ++ и Assembly - классические примеры, в которых вы можете выжать максимум производительности из процессора, графического процессора и графической библиотеки.
Платформа .NET не разрабатывалась с учетом такого контроля. .NET подходит для быстрого создания приложений в очень выразительной манере - не обязательно для управления мельчайшими деталями высокопроизводительного графического процессора.