Используя XNA, я пытаюсь создать движок приключенческих игр, который позволит вам создавать игры, которые выглядят так, как будто они выпали из начала 90-х, например, Day of the Tentacle и Sam & Max.Отправляйся в путь .Таким образом, я хочу, чтобы игра на самом деле работала с разрешением 320x240 (я знаю, что, вероятно, она должна быть 320x200, но тссс), но она должна увеличиваться в зависимости от пользовательских настроек.
Сейчас она работает нормально, ноЯ сталкиваюсь с некоторыми проблемами, когда на самом деле хочу, чтобы он выглядел более в пикселном виде, что и сейчас.
Вот что я сейчас делаю:
ВИнициализация игры:
public Game() {
graphics = new GraphicsDeviceManager(this);
graphics.PreferredBackBufferWidth = 640;
graphics.PreferredBackBufferHeight = 480;
graphics.PreferMultiSampling = false;
Scale = graphics.PreferredBackBufferWidth / 320;
}
Масштаб - это общедоступная статическая переменная, которую я могу проверить в любое время, чтобы увидеть, как мне масштабировать мою игру относительно 320x240.
В моей функции рисования:
spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.NonPremultiplied, SamplerState.PointClamp, DepthStencilState.Default, RasterizerState.CullNone, null, Matrix.CreateScale(Game.Scale));
Таким образом, все отрисовывается с разрешением 320x240 и увеличивается в соответствии с текущим разрешением (по умолчанию 640x480).И, конечно, я делаю математику, чтобы преобразовать действительные координаты мыши в координаты 320х240 и т. Д.
Теперь это здорово и все, но теперь я подхожу к точке, с которой хочу начатьмасштабирование моих спрайтов, чтобы они шли вдаль и т. д.
Посмотрите на изображения ниже.Верхнее левое изображение представляет собой фрагмент скриншота с момента запуска игры с разрешением 640x480.Изображение справа от него выглядит так, как оно должно выглядеть при разрешении 320х240.Нижний ряд изображений - это только верхний ряд, увеличенный до 300% (в Photoshop, а не в движке), поэтому вы можете видеть, о чем я говорю.
На изображении 640x480 вы можете видеть различные «толщины линий»;более толстые линии выглядят так, как они должны выглядеть (один пиксель = 2x2, потому что он работает с разрешением 640x480), но более тонкие линии (1x1 пиксель) также появляются, когда они не должны, из-за масштабирования (см. изображения справа).
По сути, я пытаюсь эмулировать дисплей с разрешением 320x240, но с разрешением XNA не справляюсь с любым разрешением, и преобразования матриц не помогают.Есть ли способ, которым я мог бы сделать это?