![]() |
С# и Xna - революция в игросторении.
Люди почему вы прогаете на всяких Delphi и ВизуалБарсиках? Ладно я понимаю тех кто на С++ прогает. Надо смотреть в будушие. Вот как выйдет Singularity(Ну или её потомок) чего будете делать? Если вы думаете что там будет P-code(родной Visual Basic(Который не .NET)) - нет не будет. А вдруг вы думаете что там будет native код(Delphi, C++,...) - нет она будет написана целиком и полностью на C#. И только несколько мегабайт остального кода, да и то не объектно ориентированого(это через p/Invoke, или его потомок). Язык C# очень элегантен - даже у криворукого программера получится красивый код. Язык C# быстрей чем Delphi и даже С++(Если кто несогласен я вам расскажу много нового :) ). В нем нет утечек памяти, есть возможность пользоватся указателями, референс типы заместо тех же поинтеров - это делает vс# быстрой - лёгкой - безопасной средой разработки. Xna это надстройка над DirectX 9.0. Она очень легкая и быстродействующая. В ней есть конвейр-контента(!). Ну может сейчас её использовать не стоит - ибо она только бета. Но в рождество будет всё ок.
|
Что значит "лёгкая и быстродейсвующая"? Молодой человек, XNA ещё очееень далеко до Direct3D 10 и OpenGL 2.0. Может просто С++ выучить не могите? м?
Цитата:
Цитата:
|
О, да! Еще один "великий программер" пришел всех учить!
Fulcrum абсолютно прав. Добавлю, что я пробовал писать 3D игру на C#. Результат - проект закрылcя в самом начале. К счастью. Так что я имею представление о быстродействии этого чуда. C# - это язык для написания, возможно, офисных программ, но ни в коем случае не требовательных к ресурсам приложений. Отсутствие заботы о памяти - не достоинство, а недостаток. Из него, а также из использования байт-кода, вытекает жутко медленная скорость работы, а также потребление лишней этой самой памяти - ведь объекты удаляются не сразу, а когда до них дойдет функция очистки. А за это время может еще понадобится наплодить объектов... Да и не будем забывать, что все функции в C# виртуальные! Кроме того, пиша программы на C#, Вы ставите себя в зависимость от Framework'. Если там вдруг будет глюк (что у Майкрософта не редкость) - все, программа накрылась медным тазом. Если у Вас код на C# оказался быстрее кода на C++... Уж не знаю, что Вы такое сделали, что так могло получится... Бесконечный цикл, что ли, пытались выполнить :sml:. Может, просвятите? Сейчас долго думал, и все же пришел к выводу, что для обучения программированию C# тоже не очень подходит. То же отсутствие заботы о памяти может здорово навредить программисту, если он после C# возьмется осваивать, например, C++... P.S. А автору темы рекомендую попробовать Prolog или Mercury. Вот уж действительно дружественные к программисту языки! Все подчинено логике, задачи поиска реализуются элементарно, да и все остальные тоже. А если кто-то напишет 3D игру на одном из этих языков (и она будет выдавать больше пары FPS), то напишите мне - любопытно будет посмотреть на это чудо! |
Судя по вашей речи - вы не имеете никакого отношения к программерам. "С++ медленнее С#" - бред! Код исполняемый в интерпритаторе не может быть впринципе быстрее бинарного.
Так похоже вы ничего не знаете о платформе .NET. я сказал же (Если кто несогласен я вам расскажу много нового) вот начнем. C#(.NET вообщем) это не ИНТЕРПРЕТИРУЕМАЯ а компилирумая в оптимизизированый к конкретному процесору и памяти, код прямо на машине клиента(Конечного юзера) среда. Есть два вида компиляции. 1) JIT - just-in-time это значит что вся програма компилируется во время выполнения. Вот это и есть ваши "На 35%". Я использую только для дебага. 2) AOT - Ahead-of-time это значит что прога компилируется прямо в нейтивный код во время устоновки. Времени занимает не очень много.Для увесистой проги это секунд 10 на pIII 800 MHz. "Судя по вашей речи - вы не имеете никакого отношения к программерам." Я прогаю уже 2 года на уже 4 языках и остановил свой выбор на C#. Итог - сам учи матчасть Цитата:
Про бесконечный цикл спасиб :) . Я же написал что этот байт код компилируется в найтив в стартапе (AOT). И значит никакого байт кода. Ну если только метаданные да и только если вас вдруг приспичит юзать System.Reflection |
Два года???? :lol:
О, ну тогда не нам, жалким ламерам, программирующим по восемь лет, Вас учить! Не подскажите, какой институт окончили, или Вы еще в школе? А теперь о том, почему C# в принципе не может быть быстрее кода на C++: 1) Уборка памяти: как может код, который постоянно обходит все объекты и проверяет, не достигло ли количество ссылок на них 0, может быть быстрее кода, этого не делающего? 2) Как может код, компилирующийся во время выполнения (почти интерпритация!) может быть быстрее кода, этого не делающего? 3) Как может код, в котором все функции виртуальные, быстрее кода, в котором это не так? 4) Да, и еще вопрос вдогонку: как вообще может программа, использующая куда больше библиотек, чем c-шная, быть быстрее ее? |
Цитата:
1) Ну почему так сразу, ты слыхал про такую штуку как оптимизация. Для .NET она тоже сушествует. Надо соблюдать её и всё будет ок. 2) Ты слыхал про утилиту ngen.exe? NativeGENERATOR переводится. Она делает очень быстрые native'ные файлы. Хотите сравнить две анологичные проги на C# и на С++ - ок я могу это устроить. Да и ктомуже если вы не поняли я хочу подметить что С# код оптимизируется под машину юзера - он будет использовать(Я имею ввиду код) проц на полную. Он учитывает начиная от разрядности до дополнительного набора инструкций. А теперь про С++. Интересно можно ли на С++ сделать такойже оптимизированый код как на С#. Мне интересно кто это будет делать на конечной машине - млжет юзер или святой дух? 3) Ты хоть понял что сам сказал :) ? ЗЫ. Возраст и образование не имеет значения - слыхали про 16 летнего подростка который выпустил свой LiveCD Linux дистрибутив. ЗЫЫ. С++ я знаю, но не имею большого опыта ЗЫЫЫ. Вы сказали что XNA очень далеко до DirectX 10 и OpenGL 2.0. Да до ОпенЖеЛе 2.0 ему еше очень далеко - не думаю что Microsoft опустится до такого :). А что касается DirectX 10 то я вам напомню что Xna строится на DirectX |
Цитата:
Цитата:
Про использовании разрядности процессора: оно приносит пользу только в специфических задачах, и их вполне можно изначально скомпилить в двух вариантах. К тому же я не совсем понимаю, как вообще можно написать, например, сетевое приложение, не зная, сколько в каком типе бит у тебя будет. Будешь слать по сети вроде 32-х битное число, а оно - опа! - 64-х битным станет. А откуда компилятору знать, что в нем у тебя не может быть числа, больше чем 1000000, чисто по конструкции программы? Цитата:
Кстати, оптимизация C++ - программ во многом базируется на вещах, с которыми в C# играться нельзя - например, на адресной арифметике. Цитата:
Цитата:
|
Набор интструкций, кстати, у современных процессоров почти одинаков. И еще мне интересно, откуда эта утилита будет узнавать о выходе новых процессоров - получается, что она устареет сразу после своего выхода.
Чет ты гониш. Я же не сказал что под конкретную модель подстраивается. Эт происходит так: Win32: я загружаю ехе, тут флаги клр есть. CLR: это флаги джита JIT: нашли самого левого. О юзера 32 risc проц есть SSE,SSE2,MMX,3DNOW! итд. Буду оптимизить под нехо. "Набор интструкций, кстати, у современных процессоров почти одинаков." не спорю - а как насчет расширений? Как об этом узнает прога на С++? "Оптимизация кода на машине юзера теряет смысл хотя бы потому, что ее конфигурация не постоянна. Регулярно меняются драйверы, устройства, ОС, наконец!" Драйверы тут не причем, устройства тоже, и вообще что мешает сделать так что-бы при изменении конфигурации, прога меняла свою нативный образ? Да и почему ты не упомянул статический C++? :) "Такая программа перед каждым запуском должна перекомпилироваться, да и во время работы тоже, потому что постоянно меняется окружение, другие программы" Другие программы - нет, дригие либы - да. Только есть одно но - либы в .net на много отличаются от с++. "а, C++-код оптимизироваться не может, но его, во-первых, можно изначально скомпилировать под различные конфигурации, и ставить юзеру в зависимотсти от его конфигурации соответствующий экзешник, а во-вторых, такую оптимизацию на должном уровне написать практически невозможно по причинам, указаным выше." Вот вот оптимизироватся неможет... Хош сказать что ты должен сделать столько версий что-бы удолетворяло обсолютно всем конфигурациям? Да и ктому же про конфигурации. Где ещё как не .net ты можеш одну прогу запускать как на Linux так и на Windows. Да и ктомуже как ты будеш давать всем свои "разные конфигурации" разным пользователям если твоя прога распростроняется посредством диска. Кстати ты смотрел на размер ексешника .NET? Так вот посмотрите. "А ты хоть знаешь, что такое виртуальная функция? Судя по всему, нет." - Судя по всему, нет - это судя по чему? В .NET не так всё "виртулизировано" :) как кажется. "Кстати, оптимизация C++ - программ во многом базируется на вещах, с которыми в C# играться нельзя - например, на адресной арифметике." В С# можно игратся с адресной арфмитикой. Читай доки |
Во-первых, пользуйся цитатой! Невозможно понять, где цитата, а где ответ на нее!
Цитата:
Цитата:
Как я уже говорил, такую оптимизацию сделать нереально хотя бы потому, что эта задача почти приравнивается к искуственному интеллекту. Такие ходы, как при оптимизации на C++, ни одна автоматическая система не повторит. Цитата:
Цитата:
Цитата:
Цитата:
Да, и тут еще один вопросец назрел: Программа на C# компилируется в байт-код. Даже если он будет у юзера на машине компилироваться в двоичный код, все равно юзеру ты даешь байт-код. А теперь внимание, вопрос: Что мешает юзеру оказаться хакером, перегнать твой байт-код назад в C# (по ассемблерному коду код на C++ восстановить практически нереально, а по байт-коду код на исходном языке - элементарно) и посмотреть в нем все твои программистские секреты, отключить любую самую хитрую регистрационную систему и защиту от копирования, да и просто найти твои ошибки, наконец? И использовать все это в своих грязных целях, бесповоротно запоров твою программу? Взломав компьютеры всех юзеров, ею пользующихся? За пару часов написав кряк? Вставив в нее вирус? Так что программа в байт-коде - мечта хакера. Не нужно часами копаться в ассемблере и ловить прерывания! Пара секунд - и программа предстает перед ним в своем исходном виде, готовая к любому вмешательству! Итог: программа на C# медленне программы на C++ хотя бы в силу своей конструкции. Оптимизация не может ничего дать, кроме незначительного выигрыша, из-за сложности самой задачи. Программа на C# практически элементарно взламывается и модифицируется (и я не говорю уже про Framework - т.е. систему с закрытыми исходниками - от которого все зависит! Если в нем будет закладка, баг, дыра - конец всем C#-программам! Вывод: ты можешь быть прав только в случае, если Майкрософт заставит всех писать только под .NET, и не найдется никого, решившегося реализовать похожие возможности для C++ (для которого они реализуются проще). Надеюсь, что этого не случится. Цитата:
|
Цитата:
Допустим тебе надо перемножить флоаты. Если SSE будет то код будет вместе с этими SSE. Цитата:
Цитата:
Цитата:
[quote]Вывод: ты можешь быть прав только в случае, если Майкрософт заставит всех писать только под .NET, и не найдется никого, решившегося реализовать похожие возможности для C++ (для которого они реализуются проще). Надеюсь, что этого не случится.[/qoute] Ты хоть слышал про Singularity - нет? почитай. Про баг в .net framework, это странно но ещё не одного бага с framework'ом небыло. Цитата:
using System; namespace Knott.Benchmark { internal unsafe class Program { private unsafe static void Main(string[] args) { DataHolder holder = new DataHolder(); for (int i = 0; i < 128 / 4; i += 4) { DataStruct str = new DataStruct(); str.Offset = i; str.Location = holder.Array; str.Data = i * 10; } } } public unsafe struct DataHolder { public fixed byte Array[128]; } public struct DataStruct { public int Offset; public unsafe void* Location; public unsafe int Data { get { int* dataLocation = (int*)((byte*)Location + Offset); return *dataLocation; } set { int* dataLocation = (int*)((byte*)Location + Offset); *dataLocation = value; } } } } Я не уверен что этот код работет правильно - но дело в том что поинтеры там есть. |
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
P.S. Хотя, если все сказанное Knott и представителями мелкомягких правда, похоже, Microsoft отказалась от изначальной идеи Windows в пользу Linux! Ведь если не брать в рассмотрение язык - действительно получается система с практически открытыми исходниками, которую компилирует сам пользователь. И по сути единственным слабым местом становится как раз медлительность языка (что, впрочем, скорее реверанс в сторону неопытных программистов), причем оно вполне может быть преодолено поставкой с сисемой, кроме компилятора C#, нормального компилятора C++ в двоичный код (а какая разница - из байт-кода или из исходного компилировать программу)? Вот только, похоже, при обновлении чего-то в компьютере (а то и просто при появлении нового драйвера) систему придется перекомпилять заново (а как еще - она же "оптимизируется" как-то. Правда, непонятно, как.)... Впрочем, в любом случае профессиональные программы как на C/C++ писались, так и будут продолжать писаться. Ибо в них обычно задействуются такие ресурсы, что малейшее замедление из-за сомнительных достоинств смерти подобно. В общем, на революцию (а тем более в игростроении - отрасли, в которой конкуренция по ресурсам наиболее жесткая) не тянет. Совмещение идей Java и Linux - еще куда ни шло, но не более. |
Вот письмо, присланное в нашу студенческую рассылку человеком по имени Алексей Лебедев. Отличный ответ на приведенное в начале этой темы высказывание:
Цитата:
|
Знаю С++ 8лет, а С# 4,5 года, спор о производительности ваш для меня кажется странным. В больших проектах типа 1С:Бухгалтерия и т.п. написанных на ++ все равно используется автоматическая уборка мусора и быстродействие этих языков выравнивается. С# ускоряет разработку программ за счет простоты. О быстродействии могу сказать что в ближайшем будущем процессоры будут использовать НЕ команды Assembler в нынешнем виде, а микрокоманды которые не учитывают специфику расположения регистров и т.д. то есть будет использоваться высокоуровневый ассемблер типа MSIL. Microsoft ввела Framework ещё и потому, что ей проще стабилизировать 20 мегабайт кода Framework, чем 600 MB dll-библиотек которые используются сейчас в Windows сейчас. Мой вывод: Framework имеет будущее, он наверняка будет перенесён и на другие операционные системы (уже есть MONO Framework), и программисту не нужно будет задумываться под какую ОС он пишет программу, в перспективе код MSIL или подобный ему будет поддерживаться процессором НАПРЯМУЮ.
|
ага, тогда или фрэймворк, или виндоус ;) Им двоим тесно в 1 системе
|
Прашол гот.... С тех пор йа много понил/узнал/прочёл...
НУ ТИПЕРЬ КТО НА МИНЯ????? |
Цитата:
Использование подобного диалекта Вас не красит как профессионала, а именно таким Вы себя стараетесь выставить. Цитата:
|
Ну что, друзья, подождем еще годик? :lol:
|
Я хочу добавить только одно. То, как и с какой скоростью работает программа, в большей степени зависит от "пряморукости" програмера, который ее написал, а потом уже от языка. Gothic III, написанная на native, тормозила не хило, тоже было и с NWN2, написанной на managed, но вышли патчи, и все норм работает. Это вопрос удобства и скорости разработки. Большинство предпочитают C++ ассамблеру потому, что си УДОБНЕЕ и кодить под него БЫСТРЕЕ, чем под ассамблер. Пока, в чистом виде, xna пригоден для разработки казуальшины, но майкры двигают ее не из благих побуждений, а из-за наживы - xna работает на двух платформах: Win и XBOX360. И уж поверте, если майкрософт тянется за деньгами, она из получает. Через некоторое время разработчики перейдут на XNA хотя бы только потому, что она ЭКОНОМИЧЕСКИ эффективней, чем c++ и directX. Вот и все.
|
Цитата:
Если же сравнивать C++ либо Pascal c C# (что и пытался делать автор данной темы), то говорить о главенстве пряморукости программера просто глупо. C++ - язык, компилируемый в машинный код. C# - язык, компилируемый в байт-код, а потом интерпритируемый Framework'ом, да ещё с автоматической очисткой памяти. Отсюда следует, что даже кривыми руками написанная программа, если только в ней нет явных ошибок, да ещё скомпилированная оптимизирующим процессором имеет все шансы оказаться быстрее, нежели на C#. Просто потому, что язык C# по-умолчанию включает в себя кучу замедляющих работу вещей. И ещё давайте не будем забывать, что C++ предоставляет куда больше возможностей для оптимизации кода, нежели C# - опять же в силу низкоуровневых операций. Ну а повыкидывать ненужные блоки из кода и упростить нужные может, в принципе, и не такой крутой программист - если его заставят, конечно. :wnk: Цитата:
Впрочем, к теме это не слишком относится. Как я уже говорил, C# замедляет программы сами по себе. Конечно, на нём есть возможность использовать unsafe-код, да. Но тогда какой смысл в использовании C# как такового? Цитата:
Цитата:
Что же XNA удобнее и быстрее - попробуйте мне ещё доказать, ибо под C++ сейчас столько движков и наработок у всех имеется, что преимущества C# в скорости разработки мне не совсем понятны. Работа с памятью упрощена? И что? Нормальный программист delete где нужно и так писать не забывает, а не нормальный и в C# кучу ошибок наделает. Microsoft, конечно, известна своим упорством в делании денег. Однако сейчас, похоже, уже не так ситуация, когда она может выиграть. Сравните продажи/использование Висты и XP. Ох, как M$ Висту продвигали! DirectX 10! Давайте все переходите под висту, пишите под Висту! И что? Да плюнули разработчики игр на Висту, к счастью! А некоторые и DirectX в гробу видали - под OpenGL пишут. Так что M$ в кои-то веки дали по носу с её инициативами. И ещё ответьте: Вы читали интервью Страуструпа чуть выше? В кратце - для C++ реализованы дополнительные примочки, добавляющие в него преимущества C#. А теперь вопрос - так ёлки-палки, почему ими никто не пользуется, если это так "удобно" и "экономически выгодно", а C#'пом все вдруг вдохновятся, выкинут все движки/библиотеки на C++ и строем пойдут под XNA писать, а? Из-за XBOX? А не слишком ли это глупо - писать заведомо тормознутые игры только из-за приставки, опять же заведомо более тормознутой, нежели компьтер? |
Цитата:
Цитата:
Цитата:
Sorry, всемени нету. Продолжение следует... |
Цитата:
Цитата:
И опять же к медлительности - не забываем, C# сам по себе замедляет игру при том, что основные процедуры давно уже упакованы в библиотеки. Я хочу сказать, что все те же тормоза при разработке на C# останутся + добавятся ещё тормоза языка. И какой смысл в C# тогда? Цитата:
Жду конкретных возражений. |
Ну тут и баталия однако =) Я программирование знаю плохо но меня почему то больше убедил pokibor
=) |
Цитата:
Цитата:
Цитата:
|
такой вопрос: идёт ли работа DirectX под Framework через байт-код? Т.е. основная нагружаемая часть железа в играх - видео карты, процы же редко сильно нагружаются, а если игра через XNA идёт медленней только на процессоре, а на видео карте не отражается, то проблем нету и я могу плюнуть на относительную тормознутость. А вот если отражается на видео карте, то XNA говно полюбэ, ведь разрабочики всегда выжимают всё до последней капли из ведео карты(
|
Цитата:
Цитата:
Через видеокарту идут только достаточно низкоуровневые операции плюс шейдеры. Всё остальное грузит процессор. А игра - это, вообще-то, не только графика. Это ещё и физика, и огромные объёмы памяти. А память у нас в C# с автосборщиком. И вот этот автосборщик должен постоянно проверять, а нельзя ли очистить вот эти полтысячи ссылкок? А может ту тысячу отчистить? Догадываетесь, из-за чего будут программы тормозить? И даже всеобщий переход на физические ускорители и (о, Боже!) ускорители AI ситуацию с памятью не спасёт, ибо данные-то игровые в родимой ОЗУ хранятся, а там у нас сборочка памяти работает-с. И скажите мне честно: Вы планируете на физический ускоритель и ускоритель AI переходить, а? Не думаю. Цитата:
"Система всегда тормозит со скоростью самого медленного своего компонента". Цитата:
|
Цитата:
|
Цитата:
Далее, насчёт ослабления графики - это зависит от реализации этой самой графики. Конечно, использованием топовой видекарты с последней версией шейдеров можно несколько разгрузить процессор, но всё-таки конфигурации у пользователей, как правило, сбалансированные. Ну и к тому же шейдеры - это отдельная статья программирования, не имеющая отношения к основному языку написания программы. Кстати, Вы не думали, что в некоторых случаях, ослабляя графику, снимаете нагрузку именно с процессора, который вынужден тратить время на софтовую эмуляцию отстуствующих в видеокарте возможностей, а? Ну и жду возражений на остальные аргументы, особенно по поводу памяти. Да и по поводу физики с AI тоже не помешает. В Кризис я, правда, не играл (и не собираюсь), но ещё не видел игры с нормально реализованным AI, а физика была нормально реализована только в специальных демках, только на то и рассчитаных. Это при том, что все алгоритмы для улучшения и того, и другого уже давно известны. А всё почему? Да как раз потому что если ЭТИМ загрузить процессор, то он загнётся всё считать. Потому сейчас и особо не разгоняются в этом плане, особенно по статье AI. Далее, не лишне Вам будет напомнить, что Core 2 Duo он как бы немного двухядерный, а для получения максимальной выгоды от второго ядра в случае одного приложения нужно это самое приложение особо оптимизировать. Так что Ваши 60% могут быть не следом того, что Кризис не может загрузить процессор на все 100%, а следом плохой оптимизации под двухъядерный процессор. Только и всего. |
Цитата:
Цитата:
Цитата:
|
Цитата:
А насчёт "Не стоит ориентироваться на видеокарты прошлого поколения" Вы скажите издателям игр. К счастью, пока они думают несколько иначе, а не заставляют всех повально на сверхновые железяки переходить. Цитата:
Цитата:
Нет, конечно, если написать на Framework какой-нибудь Quake 3, он, конечно, полетит и на семпроне. Вот только такая игра провалится в конкурентной борьбе. Железо, к сожалению, развивается медленнее алгоритмов, и зачастую как раз под них, как показала практика. И насчёт двухядерника тоже возражений нет? Просто я не вижу реальных доказательств, что в сбалансированной конфигурации процессор играет меньшую роль, нежели видеокарта. Цитата:
О, ну если этот байткод будет компилится в машинные коды процессора, то я с чистой совестью запущу какого-нибудь "Ведьмака" и подожду полчаса до запуска игры, пока код соизволит скомпилится. Зато потом буду радоваться жизни. До следующего запуска. Нет, я всё-таки ещё надеюсь добиться у Вас объяснений, что же такое даёт C#, чего не даёт C++ и что позволит ему одержать верх. Сборщики памяти для C++ есть (ими никто не пользуется). Библиотеки те же самые, что и для C#, есть. Так что же такое эта XNA даёт (кстати, она вроде как на DirectX 10, а потому по определению работает медленнее этого самого DirectX 10, уже не говоря про быстрый OpenGL), что игры будут под неё писаться в условиях противостояния красот и фишек? Ответ X-BOX не принимается т.к. насчёт заведомой тормознутости приставки по сравнению с компьютером опять же возражений не было. |
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
ЗЫ соре за даблпостинг, на клаве какая-то кнопка начала "отправлять быстрый ответ" |
Цитата:
И в то же время есть хардкорщики и пресса, которые в играх разбираются и которые могут обеспечить достаточную рекламу и раскрутку игры (рекламную компанию Halo 3 не каждый может позволить). То есть нужно угодить и технологиями, чтобы игру расхвалили, и достаточно низкими системными требованиями, чтобы она шла у как можно большего круга обывателей. Кстати, вот интересно - почему мы считаем, что Запад поголовно как сыр в масле катается? Это вовсе не так. Уровень жизни там выше, да. Но не будем забывать, что у нас многие люди вообще и компах только в новостях слышали. Цитата:
Цитата:
Цитата:
Цитата:
А как насчёт того, что по данным Майкрософта ( http://forum.igromania.ru/showpost.p...28&postcount=2 ) замедление 35%, а? А хороших передовых не тормозящих игр под .NET и нет. Ну а сапёра какого на C# в пример приводить как-то несерьёзно. :lol: Так игры и на Basic'е есть. Будем кричать, что Basic C++ рвёт на запчасти теперь? Цитата:
Далее, запуск под Линуксом и Маком - это лишь теория, т.к. под ними ещё должен появится не только базовый фреймворк, но и DirectX (при том, что 10 вроде как для висты эксклюзив пока... или уже нет?, а XNA на десятке), и всё прочее... Между тем вот незадача - C++ сам по себе кроссплатформенный язык, а OpenGL есть под тем же линуксом. То есть можно перенести игру с OpenGL без серьёзных перемен в коде. Однако ж почему-то под OpenGL не таки много игр делают (кстати, вот это зря!). Так может, дело не в мультиплатформенности? Ну и насчёт того, что XBOX медленнее компа я уже говорил, да и Вы это сами написали. |
CMogilko
Давай подождем пока со спором. Ты еще не знаешь многого. Когда будем проектировать движок, ты сам многое поймешь. Сейчас ты просто не совсем себе предстваляешь, как работает двигатель игры и как именно он использует ресурсы процессора и видеокарты. Поэтому порой пишешь не совсем правильные ыещи и пытаешься всё под одну гребенку загрести (что не получится - есть там куча неочевидных нюансов, влияющих на производительность). Поэтому мы с Покибором и затеяли написание учебного проекта - игры. pokibor Давай лучше статьи писать:) А то тут спор глухого с немым получается:) |
Не могу не высказаться по этому поводу.
Цитата:
Цитата:
Цитата:
Цитата:
И говорить, что самое главное в движке - ООП, это бред. Есть и неооп движки. ----- Если виста тормозит на вашем компьютере, то это не значит, что Виста - говно. И разработчики современных игр не учитывают, что у пользователя видеокарта 10 лет не менялась. Цитата:
Цитата:
Цитата:
----- Никто и не спорит, что С++ быстрее С#, но говорить, что последний - говно и никто не будет на нем писать как минимум глупо. Игры и движки на нем делают и есть готовые. А если вам хочется оптимизации, пишите под DOS, он вообще не больше 1мб памяти ест, вот только боюсь проблемы будут. Почемуже на С# будут писать? Может потому что в это вбухивает MS? Или они просто не имели дело с pokibor'ом? =) Цитата:
|
serializer, во-первых, попрошу воздержаться от бранных слов. Во-вторых, [CCCP] Monster про спор немого с глухим написал верно, так что воздержусь от своих комментариев, особенно после Вашей последней фразы, отлично Вас иллюстрирующей. В-третьих, перечислите игры "только под DirectX 10 и Висту" (как и хотела M$) и тогда поймёте, кто именно на неё плюнул. В-четвёртых, я и сам на C# пишу. Удивлены? А я пишу, потому что всякую мелочь на нём писать действительно быстрее и удобнее, нежели на Visaul C++ под Win 32. Там есть быстрый и удобный конструктор оконных приложений и нет глюков Борландовского Builder'а. Но вот писать на нём серьёзную игру мне в жизни в голову не придёт по указаным выше причинам. И по ним же это не будет быстрее и удобнее, нежели на C++.
И перечитайте название темы: "С# и Xna - революция в игросторении". Речь идёт конкретно об игростроении, причём в-основном о серьёзных коммерческих играх. P.S. А статьи я пишу, только медленно. Сейчас вот хочется собрать небольшую программу по нечёткой логике. Кстати, собираю я её на C#, ибо для небольших оконных приложений он вполне удобен. Вот так. |
pokibor
Я написал свои коментарии и четко их аргументировал. Отвечаю вопросы: Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
ЗЫ. закройте тему если нечего писать. ЗЫ. Избавте от ВЫканья, это всеже действует на нервы |
Цитата:
Особенно радуют слова "Но все равно играбельней, чем под Windows Vista." и "разглядывая скриншоты Dx10 very high и dx9 very high... не вижу никакой разницы (vista x86, 8800gts)!!! Но зато четко вижу разницу в скорости (~15-20%)." Иными словами факты говорят о том, что Виста и DX10 как основа для игр реально никому не нужны, разве что Micro$oft денег даст и заставит всех писать под них (но столько денег даже у M$ не найдётся). А если ещё иметь в виду, что DirectX 10 - это не XNA, то XNA тем более вообще никому не нужна и даже не планирует быть нужной. Так что извините, но факты - вещь упрямая. А предполагать Вы можете всё, что угодно. Я же предпочитаю на факты смотреть. Цитата:
То, что разработчики не оптимизируют свои игры ещё не значит, что они не гонятся за скоростью и пойдут писать на C#. Потому что на C# у них выйдет точно такая же "оптимизация", а скорее даже хуже за счёт отсутствия работы с памятью. Что OpenGL быстрее DirectX - факт. Кармак далеко не самый глупый человек, его движки вроде как покупают за боооольшие деньги. Про ООП Вы ответили на какой-то выдуманный собой вопрос, моего же аргумента и краем не коснулись. Цитата:
Цитата:
|
pokibor
Пишу последний, надеюсь, пост в этой теме: 1 . Будут писать только потому что МС так надо. И МС вложит масимум сил и денег для этого. 2 . Цитата:
4 . Вот именно, что все огл игры основаны на кармаковском движке. Покупают? Unreal Engine 3 (это тот что с ДХ10) тоже покупают и по статистике гораздо больше. 5 . Очевидно, что API, основанное на СОМ объектах будет медленнее 6 . "разбирающихся" в чем? вы хотите найти людей, которые смогут оспорить ваше мнение. Тогда на gamedev.net или подобные сайты. А здесь вы таких точно не найдете. 7 . Если для вас Ты - это оскарбление, то с вами я буду на ВЫ. |
Цитата:
Цитата:
Цитата:
Цитата:
А я и не спорю, что на DirectX 9 (вот про 10 не надо! см. ситуацию с Кризисом по ссылкам) больше игр, нежели на OpenGL. Вы, похоже, забыли исходную фразу. Цитата:
Цитата:
А на gamedev'е скорее с моим мнением согласятся, а не оспорят его. Цитата:
|
pokibor
ох... Чувствуется мне доночи здесь сидеть чтоб вы поняли мои слова. Цитата:
Цитата:
Цитата:
Цитата:
насчет [CCCP] Monster Он сюда заглядывал толко ничего не писал.(тема закрыта) Цитата:
Цитата:
Опятьже посмотрите движки на С# (тема закрыта) [CCCP] Monster была о медлительности с#, а стала о том, что C# говно и не надо на нем писать pokibor fixed |
pokibor
serializer Я вот вообще не понял, о чем был спор |
Цитата:
Цитата:
Простите? Вы точно нигде описку не допустили? C# быстрее С++? :eek: Тогда ещё раз ссылки на доказательства ("давно доказано"?), пожалуйста. C++ быстрее C# по работе кода (на 35%) и равен ему по скорости - для разработке игр, в которых всё равно интерфейс свой, а не стандартный. А с учётом имеющихся наработок на C++ - даже по скорости разработки игр он быстрее. Цитата:
А движки и на Прологе можно сделать. Вон на бейсике есть. Будете и про бейсик также спорить? |
pokibor
Директ Х 10 дает возможность пользоваться аппаратной поддержкой геометрических шейдеров - это его единственное сильно отличие от 9-го. Правда, ведутся работы для адаптации интерфейсов для XP. Кстати, в отличие от историков и политиков, у программеров есть мощное оружие для спора, железные факты. Пишем код в обоих технологиях, делающий в принципе одно и то же. Берем таймеры выского разрешения и анализируем. И конфу машины, на которой проводились испытания не забудьте. Кстати, задач рекомендую разных понаделать. Математических, выборки, прохода массива с несколькими условными преходами в теле цикла и т.д. Кстати, о SSE1 оптимизациях забываем. Они позволяют, воспользовавшись 128-битными регистрами математического сопроцессора, считать за один машинный такт 4 числа с плавающей точкой в формате 32 bit IEEE. С# в силу своих особенностей использовать эти оптимизации пока не в состоянии. И кстати, по контексту, Покибор не говорил, что Си Шарп вообще не достоин использования. Он говорил, что такие сложнве и требовательные к ресурсам приложения, как современные игры, писать на Си Шарпе, использующем ДотНет как основу, было бы не разумно. |
Цитата:
|
Цитата:
Сейчас делают dx10.1 в котором, как обещают :wnk:, устранят основные глюки и тормоза dx10. Вообще, меня, наверное, не так поняли. Я не говорю, что XNA уделает связку C++ + (калабур:wnk: ) dx или OpenGL. Просто появилась реальная альтернатива этой паре. Это не тормоза типа GLScene или Dark Basic. На предтече XNA, MDX, выпущена NWN2. Пример NWN2 доказывает, что на .NET можно делать коммерчески успешные продукты и оправдывает существование XNA. Хотя, в сегодняшнем виде, XNA пригодна только для casual проектов. |
Цитата:
Цитата:
Цитата:
В основе NWN2 лежит Electron engine, построенный на старом Aurora Engine, который уж точно с .NET никак не связан. Единственно, что в NWN2 может быть написано на .NET - некая внешняя обёртка, т.к. движок довольно специализирован под RPG. Если XNA будет настолько крутой, что предложит все необходимые процедуры для любого жанра, причём на уровне скорости специализированного движка, то я готов взять свои слова о ней обратно. Но пока что позволю предположить, что универсальный быстрый движок под любой жанр - это нечто из области фантастики, тем более в исполнении Micro$oft. Цитата:
|
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
|
Knott
Насчет XNA. XNA действительно полезная утилита.Конечно же в ней легко работать(у меня XNA нету,но знаю по обзорам).Но с её установкой куча возни. Хоть мне и 10 лет,скажу,что лучше использовать OpenGL 2.0. |
Цитата:
Цитата:
ну а теперь обо всем по порядку :D Цитата:
Всякие споры о том, программы на каком языке написаны, на шарпе, или на плюсах - это очередной бессмысленный спор. pokibor, некоторые люди языки программирования знают и по 10 лет, и код пишут не ахти какой. На личном опыте убедился. Преподаватель паскаля в нашем городе в престижнейшем учебном заведении вместо цикла в 25 повторов написал в коде программы 25 конструкций if then else. И про нативный vs IL код. Выскажу свое мнение. Процессору нет разницы на чем написана прога, на шарпе, па плюсах, на асме, или вообще на перфокартах. Процессор машинный код выполняет, который ему готовит транслятор(Прошу прощения за грубость в определениях). И пофиг, что программы на шарпе грузятся чуть подольше. Кстати, а Вы не сталкивались с проблемами утечки памяти?(об очистке ее чуть пониже). Так вот, таких проблем нет в .NET, т.к. во время "компиляции" на машине конечного пользователя происходит оптимизация именно для его машины. Цитата:
Цитата:
Имхо в самом начале получения программерского опыта нужно получать и осваивать азы технологии программирования, а не очистку памяти, поэтому шарп как нельзя кстати подходит для этих целей. ps// Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
А в плюсах есть сериализация? А рефлексия? Кстати, об отличиях шарпа и плюсах можно почитать здесь Цитата:
Игровая приставка устроена проще. Там нет никаких вордов, нету интернет эксплореров, нету звукозаписывающих программ, или программ для записи диском\эмуляции дисков. Там реализован базовый функционал, которого достаточно для того, чтобы запускались игры и воспроизводился медиа контент. Больше и не требуется. Цитата:
кстати, вот несколько полезных ссылок о .NET: http://www.interface.ru/fset.asp?Url...t/mic_net1.htm http://msdn2.microsoft.com/ru-ru/net...83(en-us).aspx http://www.statmod.ru/3-5/programmin...apov/index.htm ну и еще добавлю. Каждый выбирает то, что ему больше нравится. Нравится тебе - пиши хоть на асме(вспомните kkrieger-beta.exe весом в 65 кб, и который вобрал в себя все самые современные рюшечки по тем временам). Может быть с++ действительно чем то хорош, но полтора года занимаясь кодингом на языке C#, плюсы вспоминаю как страшный сон. В перспективности C# сомневаться нет смысла, сомниваетесь? посмотрите какие деньги им платят. Вы можете сидеть на своих плюсах и месяц вылавливать глюк с утечкой памяти, ибо где то неправильно указатель поставили, или рендерер писать. В современном ритме жизни не имеет значения, сколько лет ты знаешь плюсы, асм, пролог, меркури, или 001111011011. Главное - RAD. Опять сомниваетесь? тогда почему придумали VCL в делфи и билдере? Можно сидеть и париться с апи пытаясь нарисовать окошко с текстовым полем и кнопкой ОК внутри, только надо ли оно, когда можно парой-тройкой кликов реализовать это все ВИЗУАЛЬНО. C# является одним из представителей высокоуровневых RAD языков. C# легко читаем C# легко усвояем Я не сомневаюсь в том, что на шарпе, а точнее на платформе .NET в скором времени начнут появляться довольно неплохие игры. Если еще что нибудь вспомню - напишу. Как средство разработки игр для начинающих XNA - очень хороший вариант. Она в первую очередь ведь и рассчитана на студентов и энтузиастов. Я очень сомневаюсь что те, кто сейчас известен такими играми как HalfLife, HalfLife2, Crysis прям с первой попытки писали нечто напоминающее игры с суперсовременной меганавороченной графикой. И вообще, разве графика в играх главное?? pps// то, что в шарпе пишится 1 строчкой кода, на плюсах иногда минимум в 2 строчки выходит. |
Цитата:
Цитата:
Во-вторых, имейте уважение к собеседнику и правильно пишите ники. В-третьих, по существу: Про то, кто какой код пишет, Вы абсолютно не в тему. Мы обсуждаем не криворукость отдельных программистов, а достоинства сред разработки/языков/компиляторов/библиотек. Далее, последнее утверждение демонстрирует Вашу абсолютную некомпетентность в рассматриваемом вопросе. Процессору, конечно, нет разницы, какой код выполнять. Зато юзеру есть разница, что код на C# выполняется Framework'ом, и в нём производится автоматическая сборка мусора в памяти, что вылевается в 35%'ое замедление программ на C# по сравнению с аналогичными на C++. Учите матчасть, уважаемый, прежде чем других в некомпетентности обвинять. Цитата:
Так вот, в .NET таких проблем нет ценой замедления работы программы (см. выше про сборку мусора), а "оптимизация под конечную машину" - это чушь и рекламный трюк Micro$oft. Мне ещё никто толком не смог объяснить, под что там она оптимизируется и каким образом ей это удаётся. Цитата:
А то, что C++ - эталон в плане ООП, Вы слышали? В C# ООП практически чисто C++'ное. Цитата:
А про цитатку - этого добра у нас тоже навалом. Вон почитайте Страуструпа где-то в теме. Далее, Вы опять забыли, что мы говорим об играх, у которых не бывает моментов простоя программы, ибо игровой цикл бегает постоянно. Так что Вы опять отлично продемонстрировали свою абсолютную некомпетентность в рассматриваемом вопросе. Цитата:
Или, может, Вы будете утверждать, что чем программа меньше, тем быстрее она выполняется? Тогда я рассмеюсь Вам в лицо и в который раз отправлю учить матчасть.:lol: Цитата:
Цитата:
Цитата:
Цитата:
Кроме того, при чём тут вообще контрольная сумма? Если мы говорим, например, о выкидывании кода защиты, хакер после дизассемблирования Вашего экзешника и выкидывания кода просто-напросто скомпилит экзешник по-новой, и выложит в сеть. При чём тут контрольная сумма? Кто будет проверять неравенство сумм в старом и новом экзешниках, если новый экзешник целиком заменяет старый? Цитата:
Цитата:
Цитата:
Цитата:
Мне такое не слабо, повторюсь, дело в библиотеках. Вся штука в том, что если такое есть на C# - значит возможно и на C++, ибо сам .NET-то не на себе же написан, а на том самом C++. Вот так-то. Значит, везде, где кроссплатформенностью обладает C#, ею будет обладать и C++, вопрос только в получении библиотек (если их M$ прячет, то альтернатив куча) и в компиляции (ну так это не проблема, подождать повторной сборки ради скорости работы). Сериализация, простите, штука в C++ как бы встроенная, Вы, по ходу дела, не совсем её значения понимаете. Насчёт рефлексии - поясните, что Вы имеете в виду, а то у меня складывается стойкое ощущение как раз того самого "слышал звон..." с Вашей стороны. Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Шарп - большая библиотека классов. В каждом классе есть свои свойства, методы, делегаты, события. Т.е. с самого начала программист подхватывает этот принцип, что все разложено по полочкам, и он знает что и где искать. Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
а чем плюсы лучше? у них ведь тоже mfc есть. Расскажи пожалуйста по подробнее механизм выполнения программы на шарпе написанной и на плюсах, чтобы я наконец понял каким боком общая библиотека классов замедляет выполнение программы. Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Про приставки. Может быть конфигурация железа у них слабее компа, зато производительность у них бОльше, и не надо здесь пытаться спорить. Хотя бы потому, что Sony и MS очень много денег вложили в исследования в этой области, и им наверняка лучше вас известно, как будет лучше. Проги написанные на шарпе тоже нужно компилить, но о библиотеках заботится CLR а не программист. Программисту только нужно указать требуемое пространство имен. Выложите пожалуйста свою какую нибудь программу, самую простую, которая показывает сообщение "Hello world!". Я попробую ее запустить на всех своих девайсах. Запустится она только на ББ, ибо на PPC и Smartphone другая архитектура. Кстати, среда разработки Microsoft Visual Studio, по крайней мере версии 2005 и выше на шарпе написаны. Цитата:
В шарпе код нужно будет написать 1 раз, и не важно, вырастит прога, или наоборот уменьшится. Цитата:
Приставки делают то, для чего они были созданы - игры, и не больше Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
Так я жду описания преимуществ XNA и на чём там она построена над OpenGL. Цитата:
Цитата:
Выделю. Возможно, устрою опрос согласных с таким утверждением. Ибо я от него укатился под стол. Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Кошмар... такого бреда я от Вас не ожидал. Что самое весёлое, написано абсолютно верно. И в очередной раз иллюстриует Вашу вопиющую неграмотность. Ибо отсутствие уборки памяти и есть её утечка. Цитата:
1) автоматическая сборка мусора в памяти либо инициированная программистом, но опять же уборка ВСЕЙ памяти разом 2) интерпретируемый Framework'ом байт-код. Где хоть одно слово про библиотеку классов? Цитата:
Программу на C++ исполняет непосредственно процессор, и она сама заботится об уборке своей памяти именно тогда (для каждого отдельного кусочка выделенной памяти), когда это нужно. Цитата:
Я уж не говорю о том, что после каждого выпущенного Вами обновления его просто-напросто будут ломать по новой, и у пользователей всегда будет самая свежая взломанная версия Вашей программы, за которую они не заплатили ни копейки и с которой Вы ничего сделать не сможете, ибо хакер будет знать Ваш код едва ли не лучше Вас самих. Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Среда программирования майкрософтовская, так что не удивительно. И не показательно, ибо оболочка среды программирования - это как раз категория далеко не требовательного к ресурсам ПО. Вот когда 3D MAX, например, на шарпе напишут - поговорим. Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Это лишь говорит, что приложение собирается во время работы! При том, что код на C++ уже собран. Нет, я бы понимал, если бы код на C# на конечной машине сразу преобразовывался в набор платформенно-зависимых инструкций (честно говоря, я понимал слова Knott'а так). Но приведёная Вами цитата только показывает лишние тормоза в процессе, не более того. Кэш-то у нас не резиновый, а игре на каждой итерации игрового цикла нужно выполнять целый спектр действий. Иными словами, приведёная Вами цитата только показывает, что C# на игры не рассчитан вообще, а более-менее подходит лишь для небольших приложений, часто выполняющих одни и те же методы. Я уж не говорю, что программа на C++ изначально собрана и ей никакого кэша с платформенно-зависимым кодом не требуется - он и так весь платформенно-зависимый. Цитата:
|
Knott, не спорь со стариками, у них опыта много больше... Ты то, что говоришь откуда знаешь? В книжках прочитал, или в инете... Если ты считаешь, что программисты, которые практикуются уже десят лет читали меньше тебя, или вообще ничего не читали, ты глубоко ошибаешься... Они видели то, что не видел ты... Лучше используй их как учителей, а потом...
|
В любом случае, тов. Knott прав.
Ни для кого не секрет, что XNA разрабатывается с упором на разработчиков любителей\энтузиастов и студентов. Начинать программирование с простого , и постепенно переходя к сложному - это очень хорошая тактика. XNA отлично подходит для нее |
Цитата:
Цитата:
|
Ух... чет я в эту тему раньше не заходил. Честно сказать всю тему так и не осилил прочитать в силу жуткого обилия оверквотинга.
Как я понял, в общих чертах, тут ктото пытается доказать pokibor'у о том, что C# и XNA является жутко революционной и крутой штукой? Если так, то у вас ниче не получится. Ну хотябы по тому, что он железобетонно прав. C# проигоывает С++ добрые 30% производительности, и хоть ты усрись, но ниче с этим поделать нельзя. Утверждения о том, что эти 30% никому не нужны просто смешны. Насчет XNA я не уверен, поживем - увидим. Но слишком уж это похоже на желание Microsoft срубить бабла. Я считаю, что чем проще среда, тем она менее функциональна и на ней труднее сделать чтото действительно сложное. Хотя я сам щас работаю на C#, но мы то пишем по сути не сложные офисные приложения, там C# действительно удобнее и разница в производительности не так заметна. Но использовать это для игр - извращение. Хотя как первый этап в игрострое для молодого студента, может и сойдет. |
pokibor а ты пробовал XNA на вкус?
JITter кэширует все вызовы методом, так что поначалу может ты и заметишь какие нибудь тормоза, в чем я сомневаюсь, но в дальнейшем - он будет работать с такой же скоростью как и твой любимый плюсплюс вот здесь наглядно расписана эта твоя фобия про GC. Ты играешь в игры в бэкграунде, или в спящем режиме компа? можт научишь? |
Жесть :D
pokibor - модератор мог бы вести себя по скромнее ;)
XNA и C# - действительно революция. И я уверен, что в скором времени крупные конторы перейдут именно на XNA. Утверждение что C# прямо таки сильно отстает от С++ - неверно. Учитывайте факт о том, сколько десятков лет совершенствовались компиляторы С++'ные и сколько C# - это раз, второе: оптимизация .Net, действительно существует. Воть: Цитата:
http://www.grimes.demon.co.uk/dotnet/man_unman.htm http://www.osnews.com/story.php/5602...File-IO/page3/ http://blogs.msdn.com/ricom/archive/...ry-reader.aspx Нужно время, чтобы на XNA начали делать действительно быстрые игры. Должно сложится правильное мнение "как" именно делать игры на .Net. Цитата:
|
Цитата:
Был бы C# действительно так быстр, как ты утверждаешь, то профи давным давно бы сидели на нем, однако же этого не произошло. Цитата:
Кстати в одном из тестов есть: ___________________double math Visual C++___________6.4 Visual C#____________17.7 Это довольно важно в 3D и как видим тут просто пропасть. |
Цитата:
Цитата:
Цитата:
Операция сборки мусора достаточно дорогостоящее удовольствие. Во время ее выполнения все потоки приложения приостанавливаются. То есть играете Вы в Quake, и тут - раз! - потоки приостановились, ибо мусорок решил кто-то убрать. Пусть даже на десятую долю секунды (а ведь программа памяти мнооого кушает! По 512 метрам поди пройдись, а тот же Кризис 3 гига жрёт, как Вы же говорили...). Но, как знают игроки, подобный тормоз не просто глаза режет - он смерти подобен. Ибо за эти доли секунды средней руки снайпер из вас отбивную сделает. Занавес. Цитата:
JohnK, Вы, как и noLove, не можете понять одной вещи: игры - приложения специфические. C# может не отставать от С++ в офисных программах, он даже может делать его в специально оптимизированных тестах - но в играх он будет безнадёжно отставать. Почему - почитайте хотя бы http://www.rsdn.ru/article/devtools/perftest.xml. Посмотрите на тест с древовидной сортировкой (Tree sort). Вот где выходит наружу наличие в C# сборщика памяти. Процитирую: Цитата:
Только из одного этого примера видно, что для игр C# не подходит в принципе, и если у Вас нет чего возразить именно на ситуацию со сборкой памяти (а это вывод, подчеркну, из заявления о работе сборщиков, т.е. именно того, что должно быть в идеале), то уж признайте - написанные на C# Crysis и иже с ним будет тормозить безбожно просто потому, что постоянно будет пахать сборщик памяти. В C++ же есть возможность оптимизации по памяти, inline-функции и соответствующая оптимизация и т.п., чего в C# просто быть не может. Я не исключаю, что в простых приложениях с объёмом памяти в 50-100 мегабайт C# будет не уступать C++, и плевать даже на ситуацию с double math преснопамятным (хотя, как верно заметил Feanor62rus, все 3D-вычисления именно таковыми и являются). Но чисто из-за огромной потребности профессиональных игр в памяти сборщик мусора для них является катастрофой и гигантским тормозом. Если Вы этого не понимаете - Вы не знаете азы программирования, а делаете поверхностные выводы из статей, даже не задумываясь над их содержанием. |
Скрытый текст: напиши на заборе об этом, чтобы стать реально крутым, здесь я только понты вижу, и ни бОльше. Сейчас куча народу поступает в универы на пристрижные специальности типа информационных технологий, автоматизация, и т.д. и лишь единицы из этих выпускников реально что то могут. Скрытый текст: А ты явно статью до конца не дочитал. Там вроде ясно расписаны моменты, провоцирующие запуск GC. А чтобы память не забивалась то ее тоже ручками освобождать можно, никто не мешает это делать |
Цитата:
Цитата:
Я же лишь констатирую - Вам не хватает то ли логики, то ли знаний для конкретного спора. Цитата:
Если бы в C# была возможность ручного удаления объектов... но вот незадача - тогда мы теряем так возносимое Вами отличие от C++, и постепенно превращаем C# чуть ли не в его аналог. |
этот GC вызывается в тех случаях, которые описаны в статье, 3 и 4 пункты - это криворукость программиста.
А удалять объекты в шарпе никто не запрещал, GC здесь не при чем |
На каком основании вы мне минус в репутации сделали? Слишком умный чтоли? Вот и показал какой ты модер.
Я вижу сборщик мусора - это единственный контр-аргумент. Так вот, многие уже давно научились делать так, чтоб провоцировать его вызовы как можно реже, если этого не умеете делать вы - примите мои собалезнования. Тем более XBOX360 имеет никакующий сброщик, вот и приходится аккуратно писать. |
noLove
Сколько раз Вам повторять, чтобы Вы поняли? C# - это тот самый GC. Он записан в спецификации. Всё остальное - это, извините, unsafe. А unsafe - это C++. Какое у C# будет преимущество перед C++, если писать unsafe-коды, не подскажите? Проблема не в том, когда вызывается GC, а в том, что когда он это делает, он пробегается по целым 3-4 гигам памяти и её чистит. А в Вашей же статье написано, что все остальные потоки на это время приостанавливаются... То есть и рендеринг, и физика, и AI. Привет, тормозам. Скрытый текст: Цитата:
Цитата:
Цитата:
|
Цитата:
да и к тому же писать на шарпе горадо приятнее. КОд получается легко читаем и легко усвояем Цитата:
А чтобы не провоцировать GC еще раз повторяю, ненужные объекты нужно удалять ручками. GC при этом не сработает Цитата:
|
Цитата:
Я сейчас нашёл одну статейку про разработку игр на XNA. Так вот, там единственный аргумент в её пользу состоял как раз таки в том, что код на ней, видите ли, получается короче. Ну так код с использованием движка (напр. Irrlicht) получается столь же коротким и понятным. И что дальше? P.S. При заходе на третий круг у меня лопнет терпение и я просто буду удалять уже рассмотренные вещи. Цитата:
При удалении объектов вручную, ещё раз повторяю, код будет unsafe и мало чем отличаться от C++'ого кроме отсуствия оптимизации. В чём тогда преимущество C#? Какая мне разница, выделять и очищать память на C++ или делать то же самое на C#? Цитата:
|
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
Цитата:
|
Цитата:
Ибо Irrlicht это как раз и есть, говоря Вашим языком, набор пространств имён (irr; irr::core; irr::gui; irr::io; irr::scene; irr::video) и классов/интерфейсов (IrrlichtDevice, IVideoDriver, ISceneNode, vector3d ...). Уж тут то не надо пытаться со мной спорить, ибо я на Irrlicht писал, а Вы его, судя по всему, в глаза не видели. Если Вы думаете, что Irrlicht - это конструктор по типу GameMaker'а, то крупно заблуждаетесь. Цитата:
Цитата:
Цитата:
Мда... И Вы ещё обвиняете меня в незнании C# и XNA... А то что прямым текстом в MSDN написано, не прочитали. |
Уж разрешите поправлю коллегу. Он, кстати вполне прав, но раз уж вы так придирчевы, то знайте: XNA это фреймворк, т.е. не GAPI, но и не двиг. А про ирлича вы отожгли, тов. модератор.
Цитата:
Цитата:
|
Цитата:
Если Вы возражаете, распишите-как по-подробнее отличия XNA от Irrlicht. Кроме того, что Irrlicht позволяте писать как под C++, так и имеет .NET-версию, в отличие от чисто .NET'ной XNA. Цитата:
А то так и я могу тетрис на Прологе написать и говорить Вам: "Смотрите! Он работает без тормозов на передовом Пне/Атлоне! Prolog - вот лучший язык для игростроя! Все переходим на него!" Цитата:
Сейчас по-подробнее прочитал про IDisposable - чуть со стула со смеху не свалился. Я то по простоте душевной думал, что он только для определённого класса объектов. Оказалось - нет, M$ расщедрилась на возможность сделать класс unmanaged. После чего мы, правда, терям все достоинства автоматической сборки мусора, взамен получая кучу проблем. Начнём с того, что наследование от IDisposable требует нехилых трудозатрат, т.к. нужно вручную вызывать Dispose() всех предков и обрабатывать все исключения, которые ими возвращаются, да ещё и необходимо ручками прописывать работу с любым классом, являющимся unmanaged. Далее, если есть два класса - один unmanaged, другой - managed и они как-то связаны (а в игре все объекты тесно связаны) - то всё очень-очень печально, ибо проверки прописывать замучаешься. Значит, половину игры нужно делать unmanaged. При том, что долбаний с Dispose куча (не в пример нормальным деструкторам в C++). Итог? 1) IDisposable порождает проблемы похлеще, чем C++'ные деструкторы, т.е. ухудшает код по сравнению с C++ (кто там хвастался, что на C# код понятнее?) 2) Он не даёт никаких преимуществ по сравнению с C++, зато убивает преимущества GC 3) Его нужно везде прописывать ручками. При этом замечу, что автоматическая сборка памяти всё равно никуда не девается и исправно жрёт свои ресурсы. Хотя бы на определение, а есть ли ей смысл сейчас вызываться (т.е. производительность всё равно страдает). Такими темпами мы придём к необходимости писать на C# в стиле C++. Вперёд! Осталось совсем немного - признать необходимость юзания unsafe-кода (хотя unmanaged - это по сути и есть unsafe, ибо он опасен утечкой всех unmanaged ресурсов, которые C#-писатели освобождать не привыкли). Я в шоке... Сейчас почитал про реализацию GC - ещё на пару минут жизнь себе продлил. Он-то, оказывается, реализован очень-очень грамотно. Он не считает ссылки на объект, а по дереву объекты обходит. И объект не нужен, если его нельзя достичь из корневого узла. А это ещё какое замедление алгоритма, особенно в сложных приложениях вроде игр, где дерево имеет кучу длинных ветвей... P.S. Если что - реализация грамотная без сарказма (если реализовывать иным образом - то объект спокойно может "потеряться", к примеру, если сам на себя ссылается). Вот только опять же для сложных приложений плохо подходящая. |
Цитата:
Цитата:
|
Цитата:
В том-то и дело, что одно из этих событий - переполнение памяти. А игры (я уже писал Выше, но Вы не поняли!) играются на близкой к предельной памяти, и быстрое её жрут (постоянно нужно грузить что-то новое или изменять старое). Иными словами, этот самый сборщик будет врубаться часто и со вкусом. Я уж не говорю о том, что вся доступная память компьютера будет быстро сжираться игрой до последнего мегабайта. Скрытый текст: а никто его не мешает к managed Объектам прикрутить Цитата:
XNARacer - наглядный пример игры на платформе .NET XNA, там есть все, современная графика, звук, физика, игровая логика. Оно летает при всем при этом Скрытый текст: ой, а в плюсах будто бы не надо все вручную писать *** Всякие готовые GAPI на плюсах пользовать бред. Для этих так называемых супермегапроектов. ибо эти GAPI - очередная прослойка => очередные тормоза. pokibor, а ты уычавствовал в создании "вершин игростроя"? IDisposable - мечта pokibor |
Цитата:
Но факт в том, что Irrlicht даёт полный спектр классов для доработки движка на любом уровне. И он, в отличие от XNA, open source (откуда, собственно, этот любой уровень и берётся). Дальше у Вас идёт цитата моих слов в текте Вашего поста... к чему это, не понял. Наверное, ошибка... Потрудитесь перечитать свой пост после его публикации. Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
GAPI - это сборник часто употребляемых функций, не более того. Вас никто не заставляет пользоваться только его средствами от начала и до конца. Вы всегда можете открыть исходный код (Irrlicht - open source, а вот XNA - нет...) и поменять там что нужно, или просто частично использовать стандартные функции, а частично - непосредственно DirectX или OpenGL-функции. C# и XNA такого выбора не дают. Цитата:
Цитата:
И в последний раз - просьба мой ник не искажать. Я над Вашим не издеваюсь. |
в ХНЕ нЕчего править. ТАм долго базовые классы. Например, описание структуры Vector3, Texture, Texture2D, Texture3D, VertexBuffer, и так далее.
Профессиональные геймдевелоперы здесь не сидят, и врядли будут сидеть. А То, что ты называешь потенциальными геймдевелоперами - так они на геймдеве сидят, а здесь это так... для виду... |
Цитата:
|
Цитата:
Ну а по остальному спасибо [CCCP] Monster, он ответил. Вообще, прошу меня простить, но спорить в ближайшее время буду куда менее активно. Ибо (1) надоедает одно и то же повторять и (2) мне уже давно пора продолжать писать своё произведение, а это время... |
Цитата:
рефлектор в зубы и вперед! ps// игрострой как кто то уже упоминал - это искусство, большинство современных игры - не искусство, а графические навороты, ну и немножко типасюжета. А еще интересно, че там такого эти разработчики пишут, что один тока эхешник весит 75 мег. Будь ты хоть дважды папой в своем языке программирования, однако, если не придерживаться некоторых правил, то хоть на асме пиши - все равно фигня получится, и даже все его преимущества перед ЯВУ не помогут. Так же и с любым языком программирования. На этом шарпе если умело написать игру, и пусть ты его так нелюбишь из за GC, она по производительности любую твою игру только так уделает, и не важно что у нее математика с плавающей запятой в 3 раза медленней, и что там GC. Если уметь это делать - то просто пофиг будет на все это |
noLove
1) Открытые исходники позволяют поправить ошибки, изменить глубинные рассчёты с целью увеличения быстродействия и т.п. Если в XNA нечего править таким образом, то спрашивается, накой она вообще нужна? А Майкрософт доступа к своему детищу никогда не даст. 2) Опять... Ещё одно повторение пройденного материала - буду тереть посты. Ибо мы говорим о профессиональном геймдеве, где работают профессионалы. И у них как раз профессионален и код на C#, и код на C++. Стало быть, им как раз есть разница в скорости double math, GC и всего прочего. А уж учитывая, что деструкторы в C++ реализованы в разы лучше Dispose в C#... Ваши претензии вообще теряют смысл. И откуда Вы 75 метров экзешник взяли? Сейчас посмотрел у Ведьмака - 10 метров. Причём туда ещё защита вся входит. Впрочем, могу сказать, откуда могли взяться 75 метров. От оптимизации. От раскрытия C++'ых inline-функций. Это, если что, не программист пишет, а компилятор делает. А код подобные фичи ускоряют многократно (см. тесты по моей ссылке, там как раз хорошо сказано про эту возможность C++). |
как мелкософт скажет - так оно и будет. Скажут писать на шарпе - будут писать на шарпе, или же просто перейдут на *никс системы
|
Цитата:
Цитата:
|
noLove
Ну Micro$oft сказал "Все переходите на Висту!" - результат что-то не слишком впечатляет. Micro$oft сказал "Нет пиратству!" - сейчас отдаёт IE7 обладателям пиратских виндов, опасаясь совсем проиграть в гонке браузеров. Micro$oft - это ещё не весь рынок компьютерных систем, а то сейчас бы за написания игр под Windows ему бы отчисления делали. Думаете, будь у M$ такая возможность ввести подобную практику, они бы отказались? Вот придёт Google со своей бесплатной ОС, тогда и посмотрим, насколько M$ у нас крут. И, кстати, подобный пост граничит с оффтопом. |
Интересно тут у вас...
Как я понял, основная тема холивара это скорость работы приложения .NET, а точнее эти пресловутые 35%, все остальное GC, вызов деструкторов, циклические ссылки, утечки памяти, это все вытекает из проиводительности. Моя точка зрения, что XNA вполне жизнеспособная технология и эти 35% при текущем положении дел не являются помехой. Посмотрите на производителей процесоров, в один прекрасный день они сказали, "сорри пацаны, но больще наращивать мощность проца мы не могем, но вот вам пока два, а там посмотрим...". Как известно на XBOX 360 стоит 3 двухядерных процессора и в приложениях .NET один из них как раз занимается сборкой мусора, так что приведенный пример со внезапной смертью в Quake из-за лага вследствие сборки мусора считаю несостоятельным. На рынке уже в свободном доступе 4-х ядерные процессоры и это не конец (кстати GC можно перевести в режим работы с 4 процессарами). Но в несомненный плюсы C# и XNA могу записать скорость разработки приложений, думаю с этим возражений-то не будет? И в завершении всего один вопрос, почему соверемнные игры не пишут на ассемблере, ведь он по определению быстрее С++? |
Цитата:
Далее, 35%'ов-то никуда не деваются. При толковом распараллеливании (мы же о профессионалах говорим) все процессоры будут заняты игровым делом (физикой, AI, прочим...). А значит, эти самые 35% никуда не денутся. И мы ещё не говорим о памяти, которую наличие GC (просьба не забывать) забивает напрочь. Чисто по своей конструкции и желанию вызываться пореже. Цитата:
И я опять не упоминаю про кривейший Dispose (Господи, как же нам, противникам XNA, помог её сторонник - noLove!), с которым мороки в разы больше, чем с C++'ыми деструкторами Цитата:
|
Скрытый текст: Скрытый текст: Скрытый текст: |
Цитата:
Цитата:
Цитата:
Вот вы все трубите "можно сделать крайсис на C#", но почему его всеже не сделали на нем? Если, как вы говорите, это так удобно? Просьба воздержаться от спорных в плане цензурности выражений. Хорошо, больше не буду)) Цитата:
Скрытый текст: Цитата:
|
Цитата:
И то что мелкомягкие скажут писать на шарпе - разработчики будут писать на шарпе, никуда они не денутся. Иначе, почему нет фотошопа для *никс систем? премьера нету? те же самые игры пишут для винды. Вы злесь включая вашего главаря покибора умные самые - додумаетесь к чему это я написал |
Цитата:
Цитата:
Вот, к примеру, стал я разработчиком. Кто меня может принудить писать на #? И самое главное как? Да если я захочу я буду хоть на VB писать, хоть на ныне мертвом языке АДА, никакой Билли меня не заставит. Цитата:
Цитата:
|
если человек пишет на С++ это вовсе не означает что у него прямые руки..
как вариант разрешения данного спора (на чем проще делать игры) - есть предложение забацать соревнование. выбираем игру и делаем ее, одна команда пишет ее на С++ а я пишу ее на шарпе. я могу дать вам фору - команда С++ может состоять из 3 человек, я же буду один. результат - время реализации работоспособной игры. плюс к тому что я вас уделаю, могу гарантировать что ХНА-шный её вариант будет максимум на 10% медленнее) а не 35% :Grin: Так как ХНА это враппер для DX то Главное условие - прямое использование АПИ (выбирайте любой: GL или DX). т.е. готовые движки нельзя а то дай вам волю и деньги так вы UE3 станете юзать дабы не остаться в дураках. О себе - мне 30, программирую 16 лет, из них работаю программистом 13 лет, из них в геймдеве 8 лет. Начинал еще со спектрума (бейсик, ассемблер), потом были совковские ЭВМ (бейсик, ассемблер, С) как появились писюки - перешел на них (бейсик, паскаль, С++, Шарп), щас на шарпе работаю (геймдев), уже 6 лет, перешел на него с С++. и возвращаться не собираюсь. Без этого соревнования - данный спор это просто слова. не важно кто и что защищает.. Ну так что, детишки, поиграем? Кто примет вызов? В конце один небольшой факт - 13-го декабря вышла ХНА (2.0). и за первые ДВА дня пакет был скачан порядка миллиона раз. уж не думает ли кто из С++ гулага, что этот миллион человек (а на данный момент уже больше) — полные недотепы и только вы одни самые умные? Непомню такого ажиотажа вокруг какой-либо технологии связанной с геймдевом. Вывод из всего этого прост — в ближайшие годы геймдев разработчикам, пишущим на С++, придется сильно потесниться на этом рынке.. (надеюсь что они вообще не вымрут, как динозавры когда-то) |
Я предлогаю афтору чёнить сделать на этом мега языке С# , а потом говорить что тут быстрее... С++ быстрее на порядок...
|
Цитата:
Цитата:
Далее, то, что игры пишут под систему от Micro$oft, вовсе не значит, что M$ всем диктует условия. Одно дело, если под новой супер-системой (Vista на это звание не тянет) вообще не будет иных компиляторов, кроме C# (но это - чистой воды бред, т.к. если под ту систему придётся переписывать ВСЕ СУЩЕСТВУЮЩИЕ приложения, у меня есть боооольшие сомнения, что такая система вообще продастся хоть парой экземпляров). А если написаные на C++ программы будут работать, то о каком диктате со стороны M$ может идти речь? Скрытый текст: raxxla Вообще-то честность подобного соревнования не проверишь никак. Это раз. Про скорость я уже говорил про существующие наработки. Это два. Миллионы человек - это любители, и студенты, для которых XNA - в самом деле весьма лакомый кусочек. Мы же говорим о профессиональном геймдеве. Это три. И четыре - сравнивать XNA с использованием чистого DX или OpenGL некорректно. XNA - специализированный инструмент для разработки игр. DX и OpenGL - нет. А про спор, значица, возразить нечего в поддержку XNA и C#? То есть мы во всём были правы? Скрытый текст: |
вы, конечно во всем правы, но истина дороже..
Миллионы человек - это любители, и студенты - это точно, в яблочко, и я один из них, у меня даже высшего образования нет (бросил институт), вам нестоит бояться такого как я, просто примите вызов и не нада юлить. а то я начну думать что вы просто в свое свободное время разводите демагогию по поводу никчемности шарпа в геймдеве.. |
Цитата:
Цитата:
Цитата:
|
я работаю щас тут - www.visual3d.net качайте на здоровье, правда там щас только бэта. релиз тока в феврале будет.
по поводу соревнования - я тоже занят. но время найду. без соревнований - какой смысл спорить? ведь в чем суть любого спора? - В споре рождается истина. вот я и предложил способ ее родить. |
Цитата:
А сколько человек качают C++'ые движки и прочие инструменты, связаные с C++? Давайте уж говорить честно. Единственное преимущество XNA - это её полнота, то упорство, с которым её продвигает Micro$oft, то, что она в себя включает всё, что только может пригодиться для разработки игр (ой, и прошу Вас, не нужно говорить, что XNA одного уровня с DX и OpenGL как средство для разработки игр)! Что взамен? Тормоза (результаты тестов: double math, работа с памятью и т.д.). Ограничения - если для C++ есть огромный выбор компиляторов, движков и чего только нет, то XNA существует только в одном варианте. И если с этим вариантом какие-то проблемы, недоработки и т.п. - не судьба. Негибкость - неужели XNA open source? M$ вообще враг свободных проектов с открытыми исходниками. Что с точки зрения начинающего разработчика? Ему XNA действительно симпатична. Также, как симпатичны готовые движки, Blitz3D всякие и т.п. Так что тут революционность, извините, отменяется. Средства упорядочить DirectX-функции до уровня понятной классовой структуры (или вообще до уровня конструктора) уже были. Пишут на таких продуктах известные игры? Нет. Почему - подумайте сами. А я сошлюсь на факт. Чего такого есть в XNA, чего ещё не было? Сборщики памяти, байт-коды - это всё уже было. XNA - коллекция старых идей, приправленная известностью Micro$oft, не более того. Итак, Вам вопрос, как к профессионалу (как Вы заявили, по крайней мере): Чего такого есть в XNA, что не было до неё и что привлечёт к ней серьёзные игровые компании? Отвечайте. Скрытый текст: |
Цитата:
Цитата:
Цитата:
Цитата:
На всех форумах по всему инету народ гонит на шарп, заставляя дотнетчиков защищаться, при этом нападающие и не подозревают о том что сами защищаются (атака - лучший способ зашиты). Вы нас боитесь, а мы вас - нет.. |
Цитата:
Цитата:
Скрытый текст: Цитата:
Цитата:
Атака - лучший способ защиты, верно. Но почему тогда дотнетчики не атакуют? От бесстрашия ли? Или просто потому, что нечем атаковать-то? |
Цитата:
Цитата:
зачем тогда дотнетчикам тратить время впустую? я могу на любом из форумов, где идут подобные холивары, запостить предложение о таком же соревновании и везде, я почти уверен, будут похожие ответы - мне некогда, это все фигня, С++ все равно круче.. |
Скрытый текст: Цитата:
Цитата:
Скрытый текст: |
Цитата:
автор темы, в первом, посту просто поделился новой информацией. на него тут же набросились и пошло-поехало. все являются участниками этого спора - в одинаковой мере. Цитата:
Грош цена вашим убеждениям, если вы не готовы пожертвовать ради них хоть что-то.. |
Цитата:
Как модератор попрошу воздержаться от выдвижения аргументов, предполагающих проверку будущим временем. Это почти флуд. Цитата:
Если все являются участниками в одинаковой мере, то при чём тут споры о защите и нападении? И вообще надо потихоньку прекращать всё, что граничит с оффтопом. Цитата:
Скрытый текст: |
Все это на самом деле полная фигня. Все эти споры я имею в виду. Понимаешь, если посадить за руль копейки пилота ралли, а за руль мерса какого-нибудь чайника. То скорее всего победит профессионал. Но вот только копейка то от этого лучше не станет. Как была ведром с болтами так им и останется. Я к чему клоню... бестолку устраивать подобное соревнование. Все сведется к соревнованию по программированию. Да, это выявит кто лучший прогер. Но спор о том, что лучше C# или С++ так и останется висеть в воздухе.
Если уж есть такое желание, то можно попытаться всем вместе замутить, ну не игру если времени нет, то хотябы демосцену с одними и теми же моделями, текстурами и абсолютно одинаковыми алгоритмами(разработанными вместе) на двух разных языках и просто сравнить показатель FPS. Остальное просто безсмысленно. |
Скрытый текст: Цитата:
Цитата:
Feanor62rus - У вас есть конкретная идея? выкладывайте. если у вас напряги со свободным временем - мы можем не учитывать его вообще. Давайте, сделаем одно и тоже и просто сравним ФПС. |
Цитата:
Скрытый текст: |
Скрытый текст: Надеюсь, оффтоп на этом прекратится. |
Всем привет!!! Я мало имею отношения к разработке игр, или каких либо других приложений для РС, поскольку пишу проги для цифровой обработки сигналов, и в основном на ассемблере, потому что хорошее быстродействие на другом языке получить несколько трудновато. Там очень много используются языки С и С++, но в любом случае, быстрее, чем хорошо написанной на ассемблере проги ничего из того, о чем вы тут говорите, работать не будет.
Далее, по поводу того, что С# вообще и XNA Game Studio в частности - это попытка попрать чей-то там пьедестал, и только, это чепуха. Microsoft сейчас очень уверенно продвигает сей продукт, поскольку разработка игр под ее консоль X-Box 360 будет проводиться в основном на XNA. Далее, .NET и С# - это НЕ ИНТЕРПРЕТАТОРЫ, это вам не бейсик. Это проги, которые компилируются непосредственно перед выполнением, т.е. после компиляции исполнимый код грузится в память и работает как любой другой ЕХЕ-шник, скомпиленный бог знает когда бог знает кем. Единственная разница, компилирование происходит под конкретный конфиг, т.е. оптимальнее, чем на конкретном железе. Пример, кто-то пишет прогу на машине типа Р-600 для использования ее на C2D. И вы хотите сказать, что она будет оптимально скомпилена??? Ой как не уверен. Уважаемый K.A.I.N., вы бы хоть почитали тему! Всё, что Вы сказали, уже было сказано. Кое-что - по нескольку раз. Так что живите настоящим днём. :wnk: Флуд удалён. Все вопросы - в личку. Тут только процитирую причину: "Никакой конкретики либо возражений." Повторение приведёт к получению баллов. Лишь посоветую ещё раз перечитать первую страницу темы и подумать, почему крупные компании не поставляют свой софт open source с компиляцией его на машине пользователя. Pokibor |
Цитата:
Скрытый текст: Цитата:
Про антимонопольный комитет. Вы знаете, США от MS получает очень хорошие деньги в виде налогов хотя бы, вроде бы, чуть меньше 1 трети. К тому же, MS занимаются написанием военных программ для армии США. Кстати, девелоперы могут перейти на OpenGL, он ведь кроссплатформенный в отличие от DX Цитата:
Цитата:
Скрытый текст: |
Значит так. noLove и всем остальным. Делаю последнее китайское предупреждение. КОНЧАЕМ ОФФТОП И ФЛУД. Если хочется/нужно поофтопить немного - к вашим услугам тег спойлера. По личным вопросам - ЛС. Если всё будет продолжаться в такой форме, как оно есть сейчас - обещаю, я буду тереть целые посты вместе со всей инфой в них и ставить предупреждения. И не говорите потом, что я затыкаю рот своим противникам. В особо критическом случае обещаю закрыть тему на неопределённый срок.
Цитата:
Правда, тут, конечно, нужно оговориться, что многие компании просто не видят необходимости выпускать Linux-версии, т.к. под Linux'ом есть очень неплохие эмуляторы, позволяющие запустить какой-нибудь WoW без всяких проблем. Скрытый текст: Цитата:
Нет, честное слово, подобная Ваша уверенность в том, что M$ может просто так взять и в очередных виндах не сохранить совместимость с программами для предыдущих меня просто забавляет! Покупатели такие Винды просто не купят. А M$ вылетит в трубу со всеми её миллионами. А если совместимость будет - тогда почему не будут работать новые игры, написанные на всё том же C++ с тем же Windows API? Цитата:
Цитата:
Скрытый текст: |
Скрытый текст: Скрытый текст: Скрытый текст: Цитата:
Цитата:
Скрытый текст: |
Кошмар, все страницы не осилил.
Скрытый текст: Теперь что касается производительности. Да, при определенных условиях managed код медленнее unmanaged. Однако существуют и такие условия, при которых управляемый код работает быстрее (вспомним хотя бы про сверхбыстрый аллокатор памяти). Это уже вопрос культуры и опыта программирования. Еще пара нюансов - почти все приложения, с которыми я работаю, - GPU-bounded. В них падение производительности в 35% (откуда кстати цифра?) почти не оказывает влияния на суммарное время обработки одного кадра, т.к. процессор все равно какое-то время простаивает. "А как же физика?!" - крикните вы. А физику никто и не заставляет писать на .NET/C#. Я вот пользуюсь Ageia PhysX (благо интегрировать unmanaged код в managed очень просто и удобно), и никакого дискомфорта не испытываю. Уфф, написал. Привет всем знакомым тут, кстати =) |
Скрытый текст: На все Ваши вопросы ответы могут быть найдены в теме, особенно если Вы правильно поймёте собственно тему. Тут XNA никто не гнобит как глупость. Тут обсуждаются совершенно конкретные вещи относительно революционности XNA в отношении разработки игр (причём профессиональной в-основном), и я прошу придерживаться этой темы. В частности, выше был задан вопрос, на который ответ так и не был получен: Скрытый текст: И ещё. Если ни у кого не будет возражений, я тему переделаю. Постараюсь объективно учесть все доводы в пользу революционности и полезности XNA, и против неё, и организую новую тему (более широкую, но и более жёстко модерируемую). Возражения/предложения/замечания пока допускаю писать здесь, только учтите, что я их буду добавлять в этот пост, а сами сообщения удалять. |
Мое последнее слово в этой теме))
На счет C# я совершенно не понимаю его защитников. Да, хороший, удобный, понятны язык. Я сам на нем работаю, но я пишу несложные офисные программы с использованием SQL. Но я почемуто понимаю, что это бестолково использовать для игр. Насчат XNA я не знаю, сам не использовал. Да и в геймдеве(любительском) я моделер а не прогер. Как говорится - время покажет. Может быть и хорошая штука, но уж очень это напоминает попытку microsoft тупо подмять под себя весь игровой рынок. Это настораживает.
Что же до профессионалов. Вот это истина в первой инстанции. И они не используют C#, только С++. Им конечно проще у них штат большой. На фоне этого вопли фанбоев смотрястя особо бессмысленными. Все орут, что на C# можно написать чуть ли не крайсис. Ну дай бог - напишите и я вам поверю. Цитата:
Биться головой о стену непонимания и нежелания понять я больше не собираюсь. Я устал, я ухожу©. За сим все. PS: Это было мое последнее слово в этой теме. PSS: До встречи в соседних ветках. |
Люди, извините... реально забыл провас.... =)
А учебнек по руцкаму асилить, как и посты между 1 и 6 строницей, осилить так и не смог... Разбираясь с кешками Java и C#(ну ладно... .NET(ну ладно... Mono)), понил что реализации канешна хорошие, только вот могло быть и лутше... =) Не буду вдаватся в подробности, как, и насколько. Вынужден скозать, что именно изза этих "могло быть и лутше" нету бесспорного премушества managed платформ(Я и о яве тоже). Премушества есть, над C++, это и безопасность(Некокда не уделял раньше этому внимания)(безопасность во всех смыслах - безопасность целевой платформы, безопасность от ошибок кодера(всмысле не 100% безопасность)), это и скорость(При условии ОЧЕНЬ хорошего кодинга - К сожелению таково кодинга я неувидил даже в коде от M$), это и X-platform. Насчет последнего, относительно Xna&C# - ну не сошлось... очень жаль... иначе действительно "революция" ;) Блин. Лень песать. Если чо не стыкуется - пинайте. ЗЫ. Кстати привет, знакомый ;) ЗЫЫ. О скорости - а вот физику желательно песать на unmanaged... =) |
Что же. Судя по всему, Feanor62rus прав. Как будет время - постараюсь сделать отдельную тему уже конкретно про сравнение XNA и всего остального в различных планах.
А пока что рекомендую всем её поклонникам создать тему конкретно о XNA (не о противостоянии с чем-то, а просто о XNA - где скачать, как поставить, какие у кого проблемы и прочее) и в ней обсуждать данный продукт. |
| Часовой пояс GMT +4, время: 11:53. |
Powered by vBulletin® Version 3.8.0
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.