Страница: 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|
Вопрос: Пилю игру мечты :)
|
Добавлено: 03.02.13 11:29
|
|
Номер ответа: 46 Автор ответа: Artyom
Разработчик
Вопросов: 130 Ответов: 6602
|
Профиль | | #46
|
Добавлено: 21.02.13 15:38
|
Mikle пишет:
Когда не хватало встроенных контролов - есть же WinAPI.
Есть функция WinAPI для диалога открытия файла. Но нет функции чтоб отобразить на форме нормальный грид. Или чтоб работать с FTP сервером. Или чтоб анализировать строку регулярными выражениями. Или парсить XML. Или....
Mikle пишет:
Не надо путать синтаксис с API. Да, для работы с файлами используется устаревшая конструкция "Open", есть ещё несколько устаревших псевдометодов - "Print", "Pset", "Line". Но это всего лишь устаревший синтаксис, а не функциональность.
Ты хочешь сказать, что синтаксис не поменялся, а функциональность поменялась? Вынужден тебя огорчить, функциональность там точно та же что и была в QB, и ограничена она теми же пятью методами, которые ты написал. Да, реализация в QB и VB отличается, но собственно кого волнует какая там реализация, если в 2013 году там нельзя написать File.ReadAllText("c:\1.txt"?
Mikle пишет:
Нет, за счёт того, что в таком большом фреймворке до сих пор не нашлось места для 3D графики. Вот тут и приходится таскать за собой что-то левое.
На счёт того, что SharpDX можно не инсталлировать, я пока не нашёл подтверждения.
А что в VB6 нашлось место для 3D графики? Там и для 2D места-то не нашлось. И вообще в какой серьезной платформе общего назначения нашлось место для 3D графике в коробке?
Если зачем-то сильно хочется 3D графику из коробки .NET, то, как это ни странно, она там есть.
http://www.youtube.com/watch?v=GzrAS9SGj2k
Насчет SharpDX - я не собираюсь тебе искать какая-то подтверждения. Но тот факт, что он работает под Windows Phone 8 и Windows RT дает основания полагать, что инсталляции он не требует.
Mikle пишет:
Перечитай мой прошлый ответ, в отладчике это легко прерывается.
Не могу проверить правдивость этого высказывания.
А вот vito, похоже с тобой не согласен. Следовательно, мы как минимум приходим к выводу, что есть некоторые issue, связанный с отладчиком, и на его исправление можно не надеяться.
Mikle пишет:
В VB6 в Immediate Window мы имеем нечто вроде диалогового старинного бейсика. Предположим, мы отлавливаем трудновоспроизводимую ошибку, вот наконец мы поймали этот момент, прямо на паузе можно написать в Immediate Window что-то типа:
For i = 0 To UBound(Ar): Debug.Print i, Ar(i): Next i
И это выполнится! Так мы просмотрели содержимое массива Ar(), это мог бы быть не массив, а объект, мы просмотрели его свойства.
В .NET можно
1) Навести мышку на массив в окне редактора кода, и появится всплывающая подсказка, в которой можно просмотреть все его элементы
2) Забить этот массив в окно Watch и также просмотреть список его элементов
3) В окне Immediate написать ? myArray и все элементы по очереди выведутся в консоли
Все это так же справедливо и для свойств/полей.
Mikle пишет:
Нужно что-то большее, чем простой цикл - пожалуйста! Прямо в коде программы, ПРЯМО НА ПАУЗЕ пишем всё, что нам нужно в новую процедуру Sub и вызываем её прямо из Immediate Window. Можно заранее заготовить в проекте пустую форму для диагностики, и ПРЯМО НА ПАУЗЕ мы можем разместить в ней какой угодно код диагностики с визуализацией графиками, таблицами и т. п., а потом в Immediate Window просто написать:
Form2.Show
Так что я допускаю, что VB6 в каких-то аспектах отладки проигрывает Visual Studio .NET, но не "По всем остальным пунктам".
То, что в Visual Studio в immediate нельзя написать что угодно - объясняется тем, что VB.NET и C# это компилируемые языки, и интерпретировать их практически невозможно.
Но у меня есть хорошая новость - в дополнении к Visual Studio Roslyn появилась возможность выполнять C#/VB.NET в специально отведенной для этого консоли, как в режиме отладки, так и когда отладчик остановлен.
И там тоже можно написать
Form form = new Form();
Button button = new Button { Text="Click me"};
form.Controls.Add(button);
button.Click+= (o,e) => MessageBox.Show("Clicked"
form.Show();
Но нужно и тебе быть до конца откровенным. Не любоe изменение кода в отладчике VB6 позволит продолжать выполнение программы. Можно сделать изменения, которые вступят в силу только после перезапуска. В .NET таких случаев будет гораздо больше чем в VB6
Ответить
|
Номер ответа: 54 Автор ответа: Mikle
Вопросов: 5 Ответов: 134
|
Профиль | | #54
|
Добавлено: 21.02.13 18:13
|
HACKER
Т.е. все это крутится в одном потоке? А если нужно параллельно что-то вычислять? Или это все DX на себя берет?
Упрощенно говоря, после отправки Direct3D нужных команд следуют команды EndScene и Present, только тогда запускается прорисовка 3D в фоновом режиме, в это время мы можем считать физику, опрашивать кравиатуру и т. п.
раскрывай сорцы
Я их не скрываю, просто недоделку не охота выкладывать, но вот моя предыдущая игра с сорцами:
http://tuapse-mikle.narod.ru/AoS2.zip
Artyom
Не буду подробно расписывать. Естественно, на паузе можно внести не любое изменение, а только то, которое не повлияет на логику работы остановленного фрагмента.
Естественно, в VB6 никто не включал встроенную работу с 3D, но он и не тащит с собой фреймворков, и прилепить ему 3D совсем не сложно, что я и сделал.
Ответить
|
Номер ответа: 55 Автор ответа: Artyom
Разработчик
Вопросов: 130 Ответов: 6602
|
Профиль | | #55
|
Добавлено: 21.02.13 21:21
|
Mikle, я сейчас посмотрел, SharpDX лежит на nuget. Следовательно, он не требует инсталляции и скорее всего представляет собой набор DLL файлов
То есть, с приложением нужно будет поставлять эти dll. Либо же внедрить их в exe файл как ресурсы и при запуске программы загружать их из ресурсов в домен приложения, если наличие внешней dll просто никак не дает жить
Mikle пишет:
Естественно, в VB6 никто не включал встроенную работу с 3D, но он и не тащит с собой фреймворков, и прилепить ему 3D совсем не сложно, что я и сделал.
Mikle, это кажется что все не сложно. На самом деле, когда разрабатывается библиотека классов, который будут пользоваться миллионы разработчиков, все становится сложно.
1) Управляемая обертка для DirectX встроена в .NET Framework, но выходит новая версия DirectX. Жизненный цикл у этих продуктов не синхронный, поэтому все придется ждать, пока выйдет новая версия .NET Framework?
2) Управляемая обертка написана под последнюю версию DirectX (11 или что там), а мне надо таргетинг на максимум 9 версию. Что делать, вести в библиотеке классов несколько разных веток API для разных версий DirectX?
3) Процент людей, пишущих игры на .NET не сравним с процентом людей, пишущих веб-сайты на .NET. Поэтому добавление какой-то элементарной фичи в ASP.NET MVC, типа Task-based асинхронных методов, даст на порядки больше профита чем разработка гораздо большей по объему управляемой обертки для DirectX
Востребованные задачи, связанные с графикой (конкретно - разработки UI для офисных приложений) в коробке .NET решены с большим запасом, так что мало кто в обиде.
Ответить
|
Страница: 1 | 2 | 3 | 4 | 5 | 6 | 7 |
Поиск по форуму