|
|
(12 intermediate revisions by 6 users not shown) |
Line 1: |
Line 1: |
− | {{infobox non-game | + | {{Infobox engine |
− | |cover = MonogameLogo256x256.png | + | |cover=MonoGame logo.svg |
− | |developer = [https://github.com/mono/MonoGame/ MonoGame Team] | + | |developer=MonoGame Team |
| + | |website=http://www.monogame.net/ |
| + | |first release=September 2, 2009 |
| + | |predecessor=XNA |
| + | |wikipedia=MonoGame |
| }} | | }} |
− |
| |
− | '''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 Linux, the MonoGame team is currently focusing efforts on mobile platforms such as Windows 8 Metro, iOS and Android. [[User:Flibitijibibo|flibitijibibo]] is developing a desktop platform backend for MonoGame known as [https://github.com/flibitijibibo/MonoGame MonoGame-SDL2].
| |
− |
| |
− | =Joysticks=
| |
− | '''''WARNING:''''' The following section covers material not officially in upstream MonoGame. This relates to [[User:Flibitijibibo|flibitijibibo's]] MonoGame-SDL2 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.
| |
− |
| |
− | ==Automatic Configuration: SDL_GameController==
| |
− | Since MonoGame-SDL2 uses SDL2 as its base library, we also get the benefit of SDL_GameController, a new subsystem added by Alfred Reynolds at Valve. This takes configurations for known controllers and automatically configures them for the virtual 360 controller, so if your controller is recognized, manual configuration is not necessary. If you run a MonoGame-SDL2 title through Steam, your controller will automatically be configured using the Big Picture Mode configuration.
| |
− |
| |
− | ==Manual Configuration: MonoGameJoystick.cfg==
| |
− |
| |
− | ===Config file location===
| |
− | {{Game Location Table|
| |
− | {{Game Location Table/row|Mac|~/Library/Application Support/MonoGame/MonoGameJoystick.cfg}}
| |
− | {{Game Location Table/row|Linux|~/.config/MonoGame/MonoGameJoystick.cfg}}
| |
− | }}
| |
− |
| |
− | ===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 ''[http://www.flibitijibibo.com/files/MonoGameJoystickDetector.c 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===
| |
− | =====Null Configuration=====
| |
− | If you are experiencing problems with Joystick input and simply wish to disable the input altogether, you can use this config to ignore all joystick input.
| |
− |
| |
− | <?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>None</INPUT_TYPE>
| |
− | <INPUT_ID>-1</INPUT_ID>
| |
− | <INPUT_INVERT>false</INPUT_INVERT>
| |
− | </BUTTON_START>
| |
− | <BUTTON_BACK>
| |
− | <INPUT_TYPE>None</INPUT_TYPE>
| |
− | <INPUT_ID>-1</INPUT_ID>
| |
− | <INPUT_INVERT>false</INPUT_INVERT>
| |
− | </BUTTON_BACK>
| |
− | <BUTTON_A>
| |
− | <INPUT_TYPE>None</INPUT_TYPE>
| |
− | <INPUT_ID>-1</INPUT_ID>
| |
− | <INPUT_INVERT>false</INPUT_INVERT>
| |
− | </BUTTON_A>
| |
− | <BUTTON_B>
| |
− | <INPUT_TYPE>None</INPUT_TYPE>
| |
− | <INPUT_ID>-1</INPUT_ID>
| |
− | <INPUT_INVERT>false</INPUT_INVERT>
| |
− | </BUTTON_B>
| |
− | <BUTTON_X>
| |
− | <INPUT_TYPE>None</INPUT_TYPE>
| |
− | <INPUT_ID>-1</INPUT_ID>
| |
− | <INPUT_INVERT>false</INPUT_INVERT>
| |
− | </BUTTON_X>
| |
− | <BUTTON_Y>
| |
− | <INPUT_TYPE>None</INPUT_TYPE>
| |
− | <INPUT_ID>-1</INPUT_ID>
| |
− | <INPUT_INVERT>false</INPUT_INVERT>
| |
− | </BUTTON_Y>
| |
− | <SHOULDER_LB>
| |
− | <INPUT_TYPE>None</INPUT_TYPE>
| |
− | <INPUT_ID>-1</INPUT_ID>
| |
− | <INPUT_INVERT>false</INPUT_INVERT>
| |
− | </SHOULDER_LB>
| |
− | <SHOULDER_RB>
| |
− | <INPUT_TYPE>None</INPUT_TYPE>
| |
− | <INPUT_ID>-1</INPUT_ID>
| |
− | <INPUT_INVERT>false</INPUT_INVERT>
| |
− | </SHOULDER_RB>
| |
− | <TRIGGER_RT>
| |
− | <INPUT_TYPE>None</INPUT_TYPE>
| |
− | <INPUT_ID>-1</INPUT_ID>
| |
− | <INPUT_INVERT>false</INPUT_INVERT>
| |
− | </TRIGGER_RT>
| |
− | <TRIGGER_LT>
| |
− | <INPUT_TYPE>None</INPUT_TYPE>
| |
− | <INPUT_ID>-1</INPUT_ID>
| |
− | <INPUT_INVERT>false</INPUT_INVERT>
| |
− | </TRIGGER_LT>
| |
− | <BUTTON_LSTICK>
| |
− | <INPUT_TYPE>None</INPUT_TYPE>
| |
− | <INPUT_ID>-1</INPUT_ID>
| |
− | <INPUT_INVERT>false</INPUT_INVERT>
| |
− | </BUTTON_LSTICK>
| |
− | <BUTTON_RSTICK>
| |
− | <INPUT_TYPE>None</INPUT_TYPE>
| |
− | <INPUT_ID>-1</INPUT_ID>
| |
− | <INPUT_INVERT>false</INPUT_INVERT>
| |
− | </BUTTON_RSTICK>
| |
− | <DPAD_UP>
| |
− | <INPUT_TYPE>None</INPUT_TYPE>
| |
− | <INPUT_ID>-1</INPUT_ID>
| |
− | <INPUT_INVERT>false</INPUT_INVERT>
| |
− | </DPAD_UP>
| |
− | <DPAD_DOWN>
| |
− | <INPUT_TYPE>None</INPUT_TYPE>
| |
− | <INPUT_ID>-1</INPUT_ID>
| |
− | <INPUT_INVERT>false</INPUT_INVERT>
| |
− | </DPAD_DOWN>
| |
− | <DPAD_LEFT>
| |
− | <INPUT_TYPE>None</INPUT_TYPE>
| |
− | <INPUT_ID>-1</INPUT_ID>
| |
− | <INPUT_INVERT>false</INPUT_INVERT>
| |
− | </DPAD_LEFT>
| |
− | <DPAD_RIGHT>
| |
− | <INPUT_TYPE>None</INPUT_TYPE>
| |
− | <INPUT_ID>-1</INPUT_ID>
| |
− | <INPUT_INVERT>false</INPUT_INVERT>
| |
− | </DPAD_RIGHT>
| |
− | <AXIS_LX>
| |
− | <INPUT_TYPE>None</INPUT_TYPE>
| |
− | <INPUT_ID>-1</INPUT_ID>
| |
− | <INPUT_INVERT>false</INPUT_INVERT>
| |
− | </AXIS_LX>
| |
− | <AXIS_LY>
| |
− | <INPUT_TYPE>None</INPUT_TYPE>
| |
− | <INPUT_ID>-1</INPUT_ID>
| |
− | <INPUT_INVERT>false</INPUT_INVERT>
| |
− | </AXIS_LY>
| |
− | <AXIS_RX>
| |
− | <INPUT_TYPE>None</INPUT_TYPE>
| |
− | <INPUT_ID>-1</INPUT_ID>
| |
− | <INPUT_INVERT>false</INPUT_INVERT>
| |
− | </AXIS_RX>
| |
− | <AXIS_RY>
| |
− | <INPUT_TYPE>None</INPUT_TYPE>
| |
− | <INPUT_ID>-1</INPUT_ID>
| |
− | <INPUT_INVERT>false</INPUT_INVERT>
| |
− | </AXIS_RY>
| |
− | </MonoGameJoystickConfig>
| |
− |
| |
− | [[Category:Engine]]
| |