Anonymous edits have been disabled on the wiki. If you want to contribute please login or create an account.


Warning for game developers: PCGamingWiki staff members will only ever reach out to you using the official press@pcgamingwiki.com mail address.
Be aware of scammers claiming to be representatives or affiliates of PCGamingWiki who promise a PCGW page for a game key.

Difference between revisions of "Engine:MonoGame"

From PCGamingWiki, the wiki about fixing PC games
m (Not really a game... not an engine either, but still.)
m (→‎Joysticks: Added a section for ready made configs)
Line 11: Line 11:
 
'''''WARNING:''''' The following section covers material not officially in upstream MonoGame. This relates to [[User:Flibitijibibo|flibitijibibo's]] MonoGame branch, found here: https://github.com/flibitijibibo/MonoGame
 
'''''WARNING:''''' The following section covers material not officially in upstream MonoGame. This relates to [[User:Flibitijibibo|flibitijibibo's]] MonoGame branch, found here: https://github.com/flibitijibibo/MonoGame
  
==About MonoGame Joystick Input==
+
==About MonoGame joystick input==
 
XNA, being a Microsoft technology, centered its controller input around the Xbox 360 controller. Because of this, the XNA API is not cleanly compatible with custom controllers, including the Xbox 360 controller when not being read by XInput. However, a config format was developed to allow binding of joystick input values to a virtual 360 controller, which then gets read by XNA games.
 
XNA, being a Microsoft technology, centered its controller input around the Xbox 360 controller. Because of this, the XNA API is not cleanly compatible with custom controllers, including the Xbox 360 controller when not being read by XInput. However, a config format was developed to allow binding of joystick input values to a virtual 360 controller, which then gets read by XNA games.
  
==Config File Location==
+
==Config file location==
 
{{Game Location Table|
 
{{Game Location Table|
 
{{Game Location Table/row|Mac|~/Library/Application Support/MonoGame/MonoGameJoystick.cfg}}
 
{{Game Location Table/row|Mac|~/Library/Application Support/MonoGame/MonoGameJoystick.cfg}}
Line 20: Line 20:
 
}}
 
}}
  
==How to Configure==
+
==How to configure==
 
Consider this single value, from MonoGameJoystick.cfg:
 
Consider this single value, from MonoGameJoystick.cfg:
  
Line 47: Line 47:
  
 
'''INPUT_INVERT''' is available in the event that you need to flip the values given by the joystick. For example, if your left control stick's Y axis is flipped, just set INPUT_INVERT to "true".
 
'''INPUT_INVERT''' is available in the event that you need to flip the values given by the joystick. For example, if your left control stick's Y axis is flipped, just set INPUT_INVERT to "true".
 +
 +
==Configurations==
 +
====Microsoft Xbox 360 Wired====
 +
This config should be used with the ''xpad'' driver.
 +
 +
<?xml version="1.0" encoding="utf-8"?>
 +
<MonoGameJoystickConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 +
  <BUTTON_START>
 +
    <INPUT_TYPE>Button</INPUT_TYPE>
 +
    <INPUT_ID>7</INPUT_ID>
 +
    <INPUT_INVERT>false</INPUT_INVERT>
 +
  </BUTTON_START>
 +
  <BUTTON_BACK>
 +
    <INPUT_TYPE>Button</INPUT_TYPE>
 +
    <INPUT_ID>6</INPUT_ID>
 +
    <INPUT_INVERT>false</INPUT_INVERT>
 +
  </BUTTON_BACK>
 +
  <BUTTON_A>
 +
    <INPUT_TYPE>Button</INPUT_TYPE>
 +
    <INPUT_ID>0</INPUT_ID>
 +
    <INPUT_INVERT>false</INPUT_INVERT>
 +
  </BUTTON_A>
 +
  <BUTTON_B>
 +
    <INPUT_TYPE>Button</INPUT_TYPE>
 +
    <INPUT_ID>1</INPUT_ID>
 +
    <INPUT_INVERT>false</INPUT_INVERT>
 +
  </BUTTON_B>
 +
  <BUTTON_X>
 +
    <INPUT_TYPE>Button</INPUT_TYPE>
 +
    <INPUT_ID>2</INPUT_ID>
 +
    <INPUT_INVERT>false</INPUT_INVERT>
 +
  </BUTTON_X>
 +
  <BUTTON_Y>
 +
    <INPUT_TYPE>Button</INPUT_TYPE>
 +
    <INPUT_ID>3</INPUT_ID>
 +
    <INPUT_INVERT>false</INPUT_INVERT>
 +
  </BUTTON_Y>
 +
  <SHOULDER_LB>
 +
    <INPUT_TYPE>Button</INPUT_TYPE>
 +
    <INPUT_ID>4</INPUT_ID>
 +
    <INPUT_INVERT>false</INPUT_INVERT>
 +
  </SHOULDER_LB>
 +
  <SHOULDER_RB>
 +
    <INPUT_TYPE>Button</INPUT_TYPE>
 +
    <INPUT_ID>5</INPUT_ID>
 +
    <INPUT_INVERT>false</INPUT_INVERT>
 +
  </SHOULDER_RB>
 +
  <TRIGGER_RT>
 +
    <INPUT_TYPE>Axis</INPUT_TYPE>
 +
    <INPUT_ID>5</INPUT_ID>
 +
    <INPUT_INVERT>false</INPUT_INVERT>
 +
  </TRIGGER_RT>
 +
  <TRIGGER_LT>
 +
    <INPUT_TYPE>Axis</INPUT_TYPE>
 +
    <INPUT_ID>2</INPUT_ID>
 +
    <INPUT_INVERT>false</INPUT_INVERT>
 +
  </TRIGGER_LT>
 +
  <BUTTON_LSTICK>
 +
    <INPUT_TYPE>Button</INPUT_TYPE>
 +
    <INPUT_ID>9</INPUT_ID>
 +
    <INPUT_INVERT>false</INPUT_INVERT>
 +
  </BUTTON_LSTICK>
 +
  <BUTTON_RSTICK>
 +
    <INPUT_TYPE>Button</INPUT_TYPE>
 +
    <INPUT_ID>10</INPUT_ID>
 +
    <INPUT_INVERT>false</INPUT_INVERT>
 +
  </BUTTON_RSTICK>
 +
  <DPAD_UP>
 +
    <INPUT_TYPE>PovUp</INPUT_TYPE>
 +
    <INPUT_ID>0</INPUT_ID>
 +
    <INPUT_INVERT>false</INPUT_INVERT>
 +
  </DPAD_UP>
 +
  <DPAD_DOWN>
 +
    <INPUT_TYPE>PovDown</INPUT_TYPE>
 +
    <INPUT_ID>0</INPUT_ID>
 +
    <INPUT_INVERT>false</INPUT_INVERT>
 +
  </DPAD_DOWN>
 +
  <DPAD_LEFT>
 +
    <INPUT_TYPE>PovLeft</INPUT_TYPE>
 +
    <INPUT_ID>0</INPUT_ID>
 +
    <INPUT_INVERT>false</INPUT_INVERT>
 +
  </DPAD_LEFT>
 +
  <DPAD_RIGHT>
 +
    <INPUT_TYPE>PovRight</INPUT_TYPE>
 +
    <INPUT_ID>0</INPUT_ID>
 +
    <INPUT_INVERT>false</INPUT_INVERT>
 +
  </DPAD_RIGHT>
 +
  <AXIS_LX>
 +
    <INPUT_TYPE>Axis</INPUT_TYPE>
 +
    <INPUT_ID>0</INPUT_ID>
 +
    <INPUT_INVERT>false</INPUT_INVERT>
 +
  </AXIS_LX>
 +
  <AXIS_LY>
 +
    <INPUT_TYPE>Axis</INPUT_TYPE>
 +
    <INPUT_ID>1</INPUT_ID>
 +
    <INPUT_INVERT>false</INPUT_INVERT>
 +
  </AXIS_LY>
 +
  <AXIS_RX>
 +
    <INPUT_TYPE>Axis</INPUT_TYPE>
 +
    <INPUT_ID>3</INPUT_ID>
 +
    <INPUT_INVERT>false</INPUT_INVERT>
 +
  </AXIS_RX>
 +
  <AXIS_RY>
 +
    <INPUT_TYPE>Axis</INPUT_TYPE>
 +
    <INPUT_ID>4</INPUT_ID>
 +
    <INPUT_INVERT>false</INPUT_INVERT>
 +
  </AXIS_RY>
 +
</MonoGameJoystickConfig>
  
 
[[Category:Engine]]
 
[[Category:Engine]]

Revision as of 16:54, 11 February 2013

Template:Infobox

MonoGame is an open source implementation of the Microsoft XNA Framework, specifically the 4.0 Refresh revision.

The goal of the project is to enable XNA projects to build and run on platforms beyond Microsoft Windows and the Xbox 360. While capable of running on platforms such as Mac OS X and GNU/Linux, the MonoGame team is currently focusing efforts on mobile platforms such as Windows 8 Metro, iOS and Android.

Joysticks

WARNING: The following section covers material not officially in upstream MonoGame. This relates to flibitijibibo's MonoGame branch, found here: https://github.com/flibitijibibo/MonoGame

About MonoGame joystick input

XNA, being a Microsoft technology, centered its controller input around the Xbox 360 controller. Because of this, the XNA API is not cleanly compatible with custom controllers, including the Xbox 360 controller when not being read by XInput. However, a config format was developed to allow binding of joystick input values to a virtual 360 controller, which then gets read by XNA games.

Config file location

Template:Game Location Table

How to configure

Consider this single value, from MonoGameJoystick.cfg:

<BUTTON_START>
  <INPUT_TYPE>Button</INPUT_TYPE>
  <INPUT_ID>9</INPUT_ID>
  <INPUT_INVERT>false</INPUT_INVERT>
</BUTTON_START>

This structure represents the 360 controller value. In this case, we're configuring the start button.

INPUT_TYPE refers to the type of controller input we will be reading. It can be the following values:

  • None
  • Button
  • Axis
  • PovUp
  • PovDown
  • PovLeft
  • PovRight

NOTE THAT THESE ARE CASE SENSITIVE!

If you want to ignore a button, just use None. Buttons and axes are, of course, Button and Axis, respectively. For DPad input, we read from each direction individually; the PovUp, PovDown, PovLeft and PovRight values.

INPUT_ID refers to the value of the controller input as identified by SDL. This is best identified with the MonoGame Joystick Detector Thing.

INPUT_INVERT is available in the event that you need to flip the values given by the joystick. For example, if your left control stick's Y axis is flipped, just set INPUT_INVERT to "true".

Configurations

Microsoft Xbox 360 Wired

This config should be used with the xpad driver.

<?xml version="1.0" encoding="utf-8"?>
<MonoGameJoystickConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <BUTTON_START>
    <INPUT_TYPE>Button</INPUT_TYPE>
    <INPUT_ID>7</INPUT_ID>
    <INPUT_INVERT>false</INPUT_INVERT>
  </BUTTON_START>
  <BUTTON_BACK>
    <INPUT_TYPE>Button</INPUT_TYPE>
    <INPUT_ID>6</INPUT_ID>
    <INPUT_INVERT>false</INPUT_INVERT>
  </BUTTON_BACK>
  <BUTTON_A>
    <INPUT_TYPE>Button</INPUT_TYPE>
    <INPUT_ID>0</INPUT_ID>
    <INPUT_INVERT>false</INPUT_INVERT>
  </BUTTON_A>
  <BUTTON_B>
    <INPUT_TYPE>Button</INPUT_TYPE>
    <INPUT_ID>1</INPUT_ID>
    <INPUT_INVERT>false</INPUT_INVERT>
  </BUTTON_B>
  <BUTTON_X>
    <INPUT_TYPE>Button</INPUT_TYPE>
    <INPUT_ID>2</INPUT_ID>
    <INPUT_INVERT>false</INPUT_INVERT>
  </BUTTON_X>
  <BUTTON_Y>
    <INPUT_TYPE>Button</INPUT_TYPE>
    <INPUT_ID>3</INPUT_ID>
    <INPUT_INVERT>false</INPUT_INVERT>
  </BUTTON_Y>
  <SHOULDER_LB>
    <INPUT_TYPE>Button</INPUT_TYPE>
    <INPUT_ID>4</INPUT_ID>
    <INPUT_INVERT>false</INPUT_INVERT>
  </SHOULDER_LB>
  <SHOULDER_RB>
    <INPUT_TYPE>Button</INPUT_TYPE>
    <INPUT_ID>5</INPUT_ID>
    <INPUT_INVERT>false</INPUT_INVERT>
  </SHOULDER_RB>
  <TRIGGER_RT>
    <INPUT_TYPE>Axis</INPUT_TYPE>
    <INPUT_ID>5</INPUT_ID>
    <INPUT_INVERT>false</INPUT_INVERT>
  </TRIGGER_RT>
  <TRIGGER_LT>
    <INPUT_TYPE>Axis</INPUT_TYPE>
    <INPUT_ID>2</INPUT_ID>
    <INPUT_INVERT>false</INPUT_INVERT>
  </TRIGGER_LT>
  <BUTTON_LSTICK>
    <INPUT_TYPE>Button</INPUT_TYPE>
    <INPUT_ID>9</INPUT_ID>
    <INPUT_INVERT>false</INPUT_INVERT>
  </BUTTON_LSTICK>
  <BUTTON_RSTICK>
    <INPUT_TYPE>Button</INPUT_TYPE>
    <INPUT_ID>10</INPUT_ID>
    <INPUT_INVERT>false</INPUT_INVERT>
  </BUTTON_RSTICK>
  <DPAD_UP>
    <INPUT_TYPE>PovUp</INPUT_TYPE>
    <INPUT_ID>0</INPUT_ID>
    <INPUT_INVERT>false</INPUT_INVERT>
  </DPAD_UP>
  <DPAD_DOWN>
    <INPUT_TYPE>PovDown</INPUT_TYPE>
    <INPUT_ID>0</INPUT_ID>
    <INPUT_INVERT>false</INPUT_INVERT>
  </DPAD_DOWN>
  <DPAD_LEFT>
    <INPUT_TYPE>PovLeft</INPUT_TYPE>
    <INPUT_ID>0</INPUT_ID>
    <INPUT_INVERT>false</INPUT_INVERT>
  </DPAD_LEFT>
  <DPAD_RIGHT>
    <INPUT_TYPE>PovRight</INPUT_TYPE>
    <INPUT_ID>0</INPUT_ID>
    <INPUT_INVERT>false</INPUT_INVERT>
  </DPAD_RIGHT>
  <AXIS_LX>
    <INPUT_TYPE>Axis</INPUT_TYPE>
    <INPUT_ID>0</INPUT_ID>
    <INPUT_INVERT>false</INPUT_INVERT>
  </AXIS_LX>
  <AXIS_LY>
    <INPUT_TYPE>Axis</INPUT_TYPE>
    <INPUT_ID>1</INPUT_ID>
    <INPUT_INVERT>false</INPUT_INVERT>
  </AXIS_LY>
  <AXIS_RX>
    <INPUT_TYPE>Axis</INPUT_TYPE>
    <INPUT_ID>3</INPUT_ID>
    <INPUT_INVERT>false</INPUT_INVERT>
  </AXIS_RX>
  <AXIS_RY>
    <INPUT_TYPE>Axis</INPUT_TYPE>
    <INPUT_ID>4</INPUT_ID>
    <INPUT_INVERT>false</INPUT_INVERT>
  </AXIS_RY>
</MonoGameJoystickConfig>