Подтвердить что ты не робот

Почему вы не можете разрабатывать игры XNA в VB.Net?

Я знаю, что нет типа проекта VB.Net для игр XNA, но, как простой тест, я собрал решение VB, которое ссылается на Microsoft.XNA.*. Он имеет класс, который реализует Microsoft.XNA.Framework.Game. Затем в С# Game1.cs я просто удалил весь код шаблона и модифицировал его для наследования из моего класса VB...

namespace MyGame {
    public class Game1 : GameEngine.Engine {
    }
}

Что наследует...

Public Class Engine
    Inherits Microsoft.Xna.Framework.Game

    Protected Overrides Sub Update(GameTime As Microsoft.Xna.Framework.GameTime)
        If GamePad.GetState(PlayerIndex.One).Buttons.Back = ButtonState.Pressed Then
            Me.Exit()
        End If

        For Each Element In Elements
            Element.Update(GameTime)
        Next

        MyBase.Update(GameTime)
    End Sub

   ...

Это похоже на работу, и я смог загрузить контент, визуализировать модель, взять вход в геймпад и т.д.

Так что я спрашиваю, есть ли... Есть ли какое-то ограничение из-за некоторых дополнительных функций, которые не поддерживаются в VB.Net, или просто нет доступных шаблонов/поддержки проекта?

Есть ли какая-то оптимизация производительности при компиляции в MSIL, которую не хватает компилятору VB?

4b9b3361

Ответ 2

VB.NET и С# компилируются в один и тот же MSIL на семантическом уровне, поэтому это не техническое ограничение. Как вы видели, не так сложно взломать приложение VB.NET, которое обращается к XNA.

Ограничение просто потому, что люди должны быть написаны на определенном языке, и большинство профессиональных разработчиков игр будут исходить из фона С++. Это ограничение человеческих ресурсов - они могут писать только столько примеров кода.

Есть также некоторые различия в производительности между С# и VB.NET, которые, возможно, внесли свой вклад в решение Microsoft.

Обновление: Также выясняется, что VB.NET не поддерживает небезопасный код. Вы часто найдете случаи, когда в программировании игр необходим небезопасный код по соображениям производительности. У меня такое чувство, что решение Microsoft было принято на основе сложного списка причин.