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.

Engine:MonoGame

From PCGamingWiki, the wiki about fixing PC games
Revision as of 21:28, 2 August 2013 by Anonymous (talk | contribs)
MonoGame
300px
Developers
Website

Game Developer Publisher First release
Barotrauma Undertow Games, FakeFish Daedalic Entertainment March 13, 2023
Battlepaths Key17 Games Digerati Distribution October 28, 2012
Burning Knight Rexcellent Games June 5, 2020
Carrion Phobia Game Studio Devolver Digital July 23, 2020
Chronology Bedtime Digital Games May 12, 2014
Cut the Rope ZeptoLab July 25, 2012
Dad Quest Sundae Month Excalibur Publishing August 17, 2018
DLC Quest Going Loud Studios March 18, 2013
Doom & Destiny Heartbit Interactive January 1, 2012
Draw a Stickman: EPIC Hitcents December 3, 2013
Dwarfs!? Power of 2 Tripwire Interactive May 4, 2011
Fabular: Prologue Spiritus Games Prismatika July 8, 2022
Hades Supergiant Games September 17, 2020
Hypership Out of Control Fun Infused Games September 29, 2015
Jets'n'Guns 2 Rake in Grass July 24, 2020
Link's Awakening DX HD linksawakeningdxhd December 13, 2023
NeuroVoider Flying Oak Games Plug In Digital August 31, 2016
Rogue Heroes: Ruins of Tasos Heliocentric Studios Team17 Digital February 23, 2021
ScourgeBringer Flying Oak Games, E-Studio Dear Villagers October 21, 2020
Signs of Life Sweet Dog Studios
Solar 2 Murudai June 17, 2011
Songs for a Hero Dumativa Game Studio, Castro Brothers Dumativa Game Studio March 24, 2016
Space Mega Force Man Paul Hagerty, Rob Kitson Not Your Jax February 14, 2020
Star Fetchers Svavelstickan January 17, 2020
Stardew Valley ConcernedApe February 26, 2016
Super Daryl Deluxe Dan & Gary Games April 10, 2018
Super Puzzle Platformer Deluxe Andrew Morrish Adult Swim Games May 24, 2013
The Scorchfarer Michiyuki Project April 15, 2022
The Swapper Facepalm Games May 30, 2013
Tooth and Tail Pocketwatch Games September 12, 2017
Transistor Supergiant Games May 20, 2014

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. flibitijibibo is developing a desktop platform backend for MonoGame known as MonoGame-SDL2.

Joysticks

WARNING: The following section covers material not officially in upstream MonoGame. This relates to 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

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

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>