Ввод/вывод, не зависящий от платформы MonoGame

Я немного поработал с XNA, а теперь пытаюсь работать в MonoGame. Раньше для всех моих потребностей ввода и вывода я использовал Microsoft.Xna.Framework. Сейчас я пытаюсь сделать одну версию моей игры для развертывания на как можно большем количестве платформ (за исключением, на данный момент, сенсорных интерфейсов), но я не знаю, что мне делать, например, с мышью.

Делает ли MonoGame Microsoft.Xna.Framework независимой от платформы или мне нужно использовать другие фреймворки и переключаться между ними в зависимости от платформы?


person River Tam    schedule 13.09.2013    source источник
comment
Я думаю, что лучший способ узнать это — попробовать.   -  person pinckerman    schedule 14.09.2013
comment
У меня нет других платформ для тестирования. На данный момент у меня есть только ПК с Windows, и было бы очень приятно не тестировать все возможные фреймворки на десяти разных платформах.   -  person River Tam    schedule 14.09.2013
comment
@пинкерман, я не согласен. Лучший способ узнать что-то — это спросить, иначе вы бы потратили все свое время, делая вещи только для того, чтобы узнать, что они не работают, когда кто-то мог бы сказать вам ответ за очень короткое время.   -  person craftworkgames    schedule 16.09.2013
comment
@craftworkgames Я думаю, что практика всегда может чему-то нас научить, поэтому я предпочитаю попробовать, прежде чем спрашивать. В этом случае он явно не может попробовать то, о чем просит, но я этого не знал.   -  person pinckerman    schedule 16.09.2013
comment
@pinckerman Да, я согласен, что попробовать что-то, прежде чем спрашивать, как правило, хорошая идея (особенно в stackoverflow), но это только поможет вам, вы можете очень быстро многому научиться, используя опыт других людей.   -  person craftworkgames    schedule 16.09.2013


Ответы (1)


MonoGame разработан, чтобы упростить перенос вашей игры на другие платформы, вам не нужно использовать какие-либо другие фреймворки для достижения этой цели. Однако это не так просто, как просто перекомпилировать код для каждой новой платформы.

По большей части весь ваш код останется прежним, но вам нужно будет собрать проект для каждой платформы и связать все файлы кода в каждой из них. Я не буду вдаваться в подробности об этом, просто скажу, что вы можете это сделать, и это не так сложно.

Теперь вы обнаружите, что вам, возможно, придется написать некоторый код для конкретной платформы для обработки конкретных вещей устройства, таких как масштабирование экрана и обработка ввода. Что именно вам нужно сделать, будет зависеть от вашей игры, поэтому я не могу объяснить это подробно.

Чтобы облегчить себе жизнь, может быть полезно подумать о том, как ваша игра будет работать на других платформах, и соответствующим образом написать свой код. Например, прикосновение к мобильному устройству очень похоже на щелчок мышью, поэтому вы можете обернуть эту функциональность в свой собственный метод, чтобы свести к минимуму изменения кода, необходимые при переносе. С другой стороны, некоторые вещи, которые вы можете делать с помощью мыши, просто не работают на сенсорных интерфейсах, например, щелчок правой кнопкой мыши и наведение курсора. Точно так же сенсорные интерфейсы имеют часто используемые жесты, которые на самом деле не сопоставляются с мышью. на ПК, например, длительное нажатие, смахивание и сведение пальцев.

Итак, краткий ответ: вам НЕ НУЖНО делать что-то особенное, но вы должны хотя бы подумать об этом, если планируете портировать свою игру в будущем.

person craftworkgames    schedule 16.09.2013
comment
Большое тебе спасибо. Мой вопрос, в моем конкретном случае, касается платформ ПК (Linux, Mac и Windows), в частности, ввода и графики. Кажется, что я использую много фреймворков Microsoft, хотя есть альтернативы OpenTK (которые я почему-то не могу заставить работать). Я не уверен, стоит ли мне пытаться использовать альтернативы OpenTK или фреймворки Microsoft будут нормально компилироваться. - person River Tam; 16.09.2013
comment
Несмотря на то, что OpenTK поставляется с MonoGame, вам не нужно использовать его напрямую. Работа MonoGame заключается в том, чтобы скрыть детали реализации конкретной платформы, чтобы вы могли заставить игры работать в основном с одним и тем же кодом. В идеальном мире вы могли бы взять игру, созданную с помощью Microsoft XNA, и перекомпилировать ее с помощью MonoGame без каких-либо изменений. На самом деле все немного сложнее, но ненамного. - person craftworkgames; 16.09.2013