Jump to content

Still Waiting For Full Joystick Support


92 replies to this topic

#61 F lan Ker

    Member

  • PipPipPipPipPipPipPip
  • 827 posts
  • LocationArctic Circle

Posted 17 December 2012 - 03:57 PM

S!

I use Thrustmaster Warthog HOTAS + CH ProPedals for playing the game. Managing just fine even the setup is a bit of a pain in the buttocks. Even support for joysticks and other peripherals is not top priority it is still there and coming at some point. So until then I will play as it is now, a bit harder but yet rewarding.

What struck was this sentence:"I've mentioned this before, but if I had my druthers I'd like to see players have an option to have direct torso control, so you could use a joystick to orient the torso, and then have something like TrackIR to control your arm reticle." That would be the perfect solution and would challenge the mouse users as well. I have TrackIR and using it is so darn easy and natural when you get used to it. So HOTAS+Pedals+TrackIR with above mentioned reticule/torso control with HOTAS/TIR = Let's talk SIM experience :)

#62 Mechwarrior Buddah

    Member

  • PipPipPipPipPipPipPipPipPipPipPip
  • Legendary Founder
  • Legendary Founder
  • 13,459 posts
  • LocationUSA

Posted 17 December 2012 - 03:59 PM

given the pandering to the lowest common denominator going on with this game good luck with getting support for a peripheral only a small amount of people (me) even use anymore

#63 F lan Ker

    Member

  • PipPipPipPipPipPipPip
  • 827 posts
  • LocationArctic Circle

Posted 17 December 2012 - 04:01 PM

S!

One can always wish for a dream come true. And if not I still use my HOTAS/TIR for flight simming so not wasted money there :)

#64 Throat Punch

    Member

  • PipPipPipPipPipPipPip
  • Elite Founder
  • Elite Founder
  • 874 posts
  • Twitter: Link
  • LocationNC, Terra

Posted 17 December 2012 - 04:03 PM

I want full joystick support as well. For this:
Posted Image

#65 yashmack

    Member

  • PipPipPipPipPipPipPip
  • Knight Errant
  • 802 posts

Posted 27 December 2012 - 10:39 PM

LOOOL
an atari controller would be an easy set up :)

I did finally get a CH Products Flight Stick Pro, it took some playing around with the settings but I did get it set up and working in MWO
I love it
if anyone is curious I will post my joystick user.cfg strings when I get home in the morning from work

#66 MonnieRock

    Member

  • PipPip
  • 24 posts
  • LocationNeptune Beach,Florida,USA

Posted 28 December 2012 - 01:07 AM

Hello Everyone,

I use the Thrustmaster Warthog HOTAS and Saitek Pro Combat Pedals.

Have always used a stick setup since starting Mech "Piloting"

Last time I looked in the mech cockpit, there are joysticks. Not a mouse :)

My setup is working pretty good with some cfg editing.

Two wishes:
1) Analog for legs
2) 1:1 for torso. Example:So when you release joystick and it snaps to center, so would your torso.



Thank you,
Monnie

#67 valrond

    Member

  • PipPipPipPipPipPip
  • Legendary Founder
  • Legendary Founder
  • 319 posts
  • LocationSpain

Posted 28 December 2012 - 06:34 AM

View PostMonnieRock, on 28 December 2012 - 01:07 AM, said:

Hello Everyone, I use the Thrustmaster Warthog HOTAS and Saitek Pro Combat Pedals. Have always used a stick setup since starting Mech "Piloting" Last time I looked in the mech cockpit, there are joysticks. Not a mouse :lol: My setup is working pretty good with some cfg editing. Two wishes: 1) Analog for legs 2) 1:1 for torso. Example:So when you release joystick and it snaps to center, so would your torso. Thank you, Monnie


Keep on dreaming. I've been waiting for those 2 things since closed beta for nearly half a year and we're still mimicking the keyboard and mouse.

#68 Will3019

    Member

  • PipPip
  • The 1 Percent
  • The 1 Percent
  • 30 posts

Posted 06 February 2013 - 08:45 PM

View Postvalrond, on 28 December 2012 - 06:34 AM, said:


Keep on dreaming. I've been waiting for those 2 things since closed beta for nearly half a year and we're still mimicking the keyboard and mouse.

Another almost 6 weeks and still no news on either, unless I missed something. Feel boned for spending MC, starting to doubt any progress will come.

#69 HurlockHolmes

    Member

  • PipPipPipPipPipPip
  • Bad Company
  • Bad Company
  • 294 posts

Posted 06 February 2013 - 09:26 PM

View PostWill3019, on 06 February 2013 - 08:45 PM, said:

Another almost 6 weeks and still no news on either, unless I missed something. Feel boned for spending MC, starting to doubt any progress will come.


Talk about digging up a dinosaur of a thread. Anyway, CryEngine 3 hates joysticks. And while pgi is tardis on many things, this is something they cannot help.

#70 New Breed

    Member

  • PipPipPipPipPipPipPipPip
  • Elite Founder
  • Elite Founder
  • 1,028 posts

Posted 06 February 2013 - 10:15 PM

I grew up with joysticks, I'd never use one again. Mouse is just so much better for aiming.

Shame though, I loved my logitech force feedback one.

#71 WhiteTiger

    Member

  • PipPipPip
  • 72 posts
  • LocationHawaii

Posted 07 February 2013 - 01:17 AM

PGI forgot one of the main elements in making a mechwarrior/battletech simulator, and that is having joystick support. Every mechwarrior simulator game that came out, came with full joystick support and I don't consider mech commander a simulator.
A good point was made when they mentioned about seeing a joystick, NOT a mouse as the controller in the cockpit. If PGI wants to make a true mechwarrior SIMULATOR, they need to fix the joystick support. Otherwise it becomes just another FPS and not a simulator.
For those that love Battletech and Mechwarrior...you have just finished reading your favorite BT novel about your hero over coming all those enemy mechs in a huge battle, furiously manipulating their joystick, throttle and pedals destroying all the enemy mechs. You then start up MWO, hit the launch button and grab your mouse and adjust your keyboard. What's wrong with this picture? The core of this game is Battletech, they always used the joystick and pedals as the control interface. Later after the Battletech centers opened and became very popular, they started including the throttle interface in future novels. So you see PGI, if you want to make a SIMULATOR the controller interface plays a pivotal part in the immersion factor. Otherwise it is just another FPS. I know the mouse is a more competitive interface, but whoever read in a BT novel that a mechwarrior used a mouse to target and kill the enemy mech. The ball is in your court PGI, Simulator or fps?

Edited by WhiteTiger, 07 February 2013 - 01:21 AM.


#72 Hakkukakt

    Member

  • PipPipPipPipPipPip
  • 264 posts
  • LocationSuisse / Lausanne

Posted 07 February 2013 - 02:03 AM

View PostMonnieRock, on 28 December 2012 - 01:07 AM, said:

Hello Everyone,

I use the Thrustmaster Warthog HOTAS and Saitek Pro Combat Pedals.

Have always used a stick setup since starting Mech "Piloting"

Last time I looked in the mech cockpit, there are joysticks. Not a mouse :P

My setup is working pretty good with some cfg editing.

Two wishes:
1) Analog for legs
2) 1:1 for torso. Example:So when you release joystick and it snaps to center, so would your torso.



Thank you,
Monnie



hello

for pts 2 .. you can do this

i use this script on target software for the thrustmaster warthog and it's doing it well => use the flaps selector for choice => 1:1 / autocenter / incremental :

//**************************************************************************
// UNOFFICIAL MECHWARRIOR JOYSTICK SUPPORT
// - For the Thrustmaster Warthog
//
//
// Written by Jason 'Crescent Fresh' Knobler
// (http://mwomercs.com/...crescent-fresh/)
//
// MechWarrior Online Joystick -> Mouse/Keyboard override
//
//**************************************************************************
include "target.tmh"
float fJOYAXIS_LIMIT = 32767.0;
float fDEFAULT_SENSITIVITY = 10.0;
define UPDATE_RATE 20 // In miliseconds
int g_iAxisXDir; // X-Axis input direction. '-1' = inverted X axis; '1' = normal X axis
int g_iAxisYDir; // Y-Axis input direction. '-1' = inverted Y axis; '1' = normal Y axis
int g_bIsShutdown; // While true, Warthog throttle considers the mech shutdown, and must use Throttle[EORIGN] to power on.
// While false, Warthog thottle considers the mech powered up, and must use Throttle[EORMOTOR] to shut down.
float g_fSensMod; // Sensitivity modifier on FC Throttle.
int g_iSlugStage; // What stage [1-5] on how to apply procedural sensitiviy. Indicated by LED lights.
float g_fDeadZone; // User setting centering deadzone variable
struct sMWOAxis
{
//
// All the below data members belong to each X and Y axis
//
float fJoy; // The basic (converted) input value from the joystick
float fJoyPrev; // 'fJoy's previous value in the last update

int iMouse; // The emulated, absolute coordinate of the mouse
float fSlugPerc; // Procedural sensitivity that gains as input persists when in 'JOYSTATE_SLUGGISH'
int bSnapDir; // Determines whether the joystick is moving away or towards the center when in 'JOYSTATE_SNAP' state. [1 == away; 0 == centering]

int bHasPulseCenter;// Used in 'JOYSTATE_ABSOLUTE' to determine when to center torso
}
define AXIS_X 0
define AXIS_Y 1
define NUM_AXIS 2
sMWOAxis g_AxisData[NUM_AXIS]; // Stores per axis data used to manipulate raw joystick input (X and Y axis)
define SLUG_INCREMENTS 0.01 // Sluggish inc/dec amount per stage. Defaults at stage/LED '3'
define SLUG_DEFAULT_STAGE 5
//////////////////////////
// JOYSTICK STATES
// - NORM: Simply taking raw joystick values and converting them 1:1 to "MWO Units".
// - SLUGGISH: Over a specified duration, a linearly increasing percentage of the input is applied. This resets anytime the joystick is centered.
// - SNAP: Input motions moving away from joystick center are accelerated, and moving back towards center are slowed.
// - ABSOLUTE: The current input of the joystick maps directly to the yaw/pitch of the torso
//
// NOTE: All joystick states can be tweeked by applying a global sensitiviy modifer using Throttle[THR_FC].
//////////////////////////
define JOYSTATE_NORM (1 << 0) // = 1
define JOYSTATE_SLUGGISH (1 << 1) // = 2
define JOYSTATE_SNAP (1 << 2) // = 4
define JOYSTATE_ABSOLUTE (1 << 3) // = 8
// The negates of the states above. (no '~' operator?)
define JOYSTATE_NORM_OFF 4294967294 // = ~JOYSTATE_NORM
define JOYSTATE_SLUGGISH_OFF 4294967293 // = ~JOYSTATE_SLUGGISH
define JOYSTATE_SNAP_OFF 4294967291 // = ~JOYSTATE_SNAP
define JOYSTATE_ABSOLUTE_OFF 4294967287 // = ~JOYSTATE_ABSOLUTE
int g_iJoyStates; // A bitmask to represent what JOYSTATE_*'s are enabled

int InitAxis(int iIndex)
{
g_AxisData[iIndex].fJoy = 0.0;
g_AxisData[iIndex].fJoyPrev = 0.0;

g_AxisData[iIndex].iMouse = 0;
g_AxisData[iIndex].fSlugPerc = 0.01;
g_AxisData[iIndex].bSnapDir = 0;

g_AxisData[iIndex].bHasPulseCenter = 0;
}
// Program Startup
int main()
{
if(Init(&EventHandle)) return 1; // declare the event handler, return on error

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Initialization code is below:
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

g_iAxisXDir = 1; // X-Axis defaults to NOT inverted
g_iAxisYDir = -1; // Y-Axis defaults to inverted

g_iJoyStates = JOYSTATE_NORM;

// Start, assuming mech is not shutdown
g_bIsShutdown = 0;

g_fSensMod = fDEFAULT_SENSITIVITY;

g_iSlugStage = SLUG_DEFAULT_STAGE;

ActKey(PULSE+KEYON+LED(&Throttle, LED_ONOFF, LED_CURRENT-LED1-LED2-LED3-LED4-LED5));

g_fDeadZone = 0.25;

InitAxis(AXIS_X);
InitAxis(AXIS_Y);


//--------------------------------------------
// AXIS MAPPINGS
//--------------------------------------------
// We only need to assign the main throttle to be interpreted by MWO, which will control the mech's velocity.
// The joystick and THR_FC will be handled in (this) software. Joystick values are converted and used to move mouse.

MapAxis(&Throttle, THR_RIGHT, DX_Z_AXIS);


//--------------------------------------------
// JOYSTICK MAPPINGS
//--------------------------------------------

// Firing weapons
MapKey(&Joystick, TG1, '1'); // Wep. group #1
// MapKey(&Joystick, TG2, ''); // Wep. group #
MapKey(&Joystick, H2U, '2'); // Wep. group #2
MapKey(&Joystick, H2D, '3'); // Wep. group #3
MapKey(&Joystick, H2R, '4'); // Wep. group #4
MapKey(&Joystick, H2L, '5'); // Wep. group #5
MapKey(&Joystick, S1, '6'); // Wep. group #6
MapKey(&Joystick, S2, USB[0x31]); // '\' alpha strike

// Hold for cockpit look
MapKey(&Joystick, S3, L_CTL);

// Weapon group toggles
MapKey(&Joystick, H4U, PULSE+USB[0x52]); // Up
MapKey(&Joystick, H4R, PULSE+USB[0x4F]); // Right
MapKey(&Joystick, H4D, PULSE+USB[0x51]); // Down
MapKey(&Joystick, H4L, PULSE+USB[0x50]); // Left
MapKey(&Joystick, H4P, PULSE+R_CTL); // Press -TOGGLE-

// Jump Jets
// MapKey(&Joystick, S4, USB[0x2C]); // Spacebar
MapKey(&Joystick, S4, SPC); // Spacebar

// Digital aimmer --Joystick round HAT
MapKey(&Joystick, H1U, REXEC(3, UPDATE_RATE, "g_AxisData[AXIS_Y].iMouse = g_AxisData[AXIS_Y].iMouse + (g_iAxisYDir * g_fSensMod * 0.5); DXAxis(MOUSE_Y_AXIS, g_AxisData[AXIS_Y].iMouse);"));
MapKey(&Joystick, H1D, REXEC(3, UPDATE_RATE, "g_AxisData[AXIS_Y].iMouse = g_AxisData[AXIS_Y].iMouse - (g_iAxisYDir * g_fSensMod * 0.5); DXAxis(MOUSE_Y_AXIS, g_AxisData[AXIS_Y].iMouse);"));
MapKey(&Joystick, H1L, REXEC(3, UPDATE_RATE, "g_AxisData[AXIS_X].iMouse = g_AxisData[AXIS_X].iMouse - (g_iAxisXDir * g_fSensMod * 0.5); DXAxis(MOUSE_X_AXIS, g_AxisData[AXIS_X].iMouse);"));
MapKey(&Joystick, H1R, REXEC(3, UPDATE_RATE, "g_AxisData[AXIS_X].iMouse = g_AxisData[AXIS_X].iMouse + (g_iAxisXDir * g_fSensMod * 0.5); DXAxis(MOUSE_X_AXIS, g_AxisData[AXIS_X].iMouse);"));

// Fine percision aimmer --Joystick DPAD
MapKey(&Joystick, H3U, REXEC(3, UPDATE_RATE, "g_AxisData[AXIS_Y].iMouse = g_AxisData[AXIS_Y].iMouse + g_iAxisYDir; DXAxis(MOUSE_Y_AXIS, g_AxisData[AXIS_Y].iMouse);"));
MapKey(&Joystick, H3D, REXEC(3, UPDATE_RATE, "g_AxisData[AXIS_Y].iMouse = g_AxisData[AXIS_Y].iMouse - g_iAxisYDir; DXAxis(MOUSE_Y_AXIS, g_AxisData[AXIS_Y].iMouse);"));
MapKey(&Joystick, H3L, REXEC(3, UPDATE_RATE, "g_AxisData[AXIS_X].iMouse = g_AxisData[AXIS_X].iMouse - g_iAxisXDir; DXAxis(MOUSE_X_AXIS, g_AxisData[AXIS_X].iMouse);"));
MapKey(&Joystick, H3R, REXEC(3, UPDATE_RATE, "g_AxisData[AXIS_X].iMouse = g_AxisData[AXIS_X].iMouse + g_iAxisXDir; DXAxis(MOUSE_X_AXIS, g_AxisData[AXIS_X].iMouse);"));


//--------------------------------------------
// THROTTLE MAPPINGS
//--------------------------------------------

// Map Throttle Turning the mech --Throttle side HAT
// MapKey(&Throttle, MSL, 'a'); // left
// MapKey(&Throttle, MSR, 'd'); // right

// Map Throttle up - down --Throttle side HAT
// MapKey(&Throttle, MSU, ''); // up
// MapKey(&Throttle, MSD, ''); // down

// Map Throttle push --Throttle side HAT--
// MapKey(&Throttle, MSP, PULSE+BSP); // push for chainfire on
MapKey(&Throttle, MSP, PULSE+'v'); // pip zoom

// Target Enemy
MapKey(&Throttle, SC, PULSE+'r'); // push to target

// Torso Center
// MapKey(&Throttle, LTB, PULSE+'c');
// MapKey(&Throttle, LTB, PULSE+BSP); // push for chainfire on
MapKey(&Throttle, LTB, PULSE+'j'); // ecm enable or disable eccm

// Toggle zoom
MapKey(&Throttle, CSD, PULSE+'z');

// TEAM SPEAK chat toggle (F8)
MapKey(&Throttle, CSU, USB[0x41]); // F8
// MapKey(&Throttle, CSU, PULSE+'v'); // pip zoom

// Show scores
MapKey(&Throttle, SPDF, USB[0x2B]);

// Show map
MapKey(&Throttle, SPDB, PULSE+'b');

// Map Throttle CHB, Toggle Friend Name Info
MapKey(&Throttle, CHB, 'q');

// Map Throttle CHM Push
// MapKey(&Throttle, CHM, PULSE+''); //

// Map Throttle CHF, ecm enable or disable eccm
// MapKey(&Throttle, CHF, PULSE+'j'); // ecm enable or disable eccm
// MapKey(&Throttle, CHF, PULSE+'v'); // pip zoom
MapKey(&Throttle, CHF, PULSE+BSP); // push for chainfire on

// Thermal vision toggle
MapKey(&Throttle, BSF, PULSE+'h');
MapKeyR(&Throttle, BSF, PULSE+'h');

// Map Throttle BSM Push
// MapKey(&Throttle, BSM, PULSE+''); //

// Night vision toggle
MapKey(&Throttle, BSB, PULSE+'n');
MapKeyR(&Throttle, BSB, PULSE+'n');

// Map Throttle Switch EAC and RDR
MapKey(&Throttle, EACON, '5'); // Engage TAG On
// MapKey(&Throttle, EACOFF, PULSE+''); // Default
MapKey(&Throttle, RDRNRM, PULSE+'/'); // Open-Close missile door
MapKey(&Throttle, RDRDIS, PULSE+'/'); // Open-Close missile door

// Shutdown switch toggle
// MapKey(&Throttle, EORMOTOR, EXEC("if(!g_bIsShutdown){ ActKey(PULSE+KEYON+'p'); g_bIsShutdown = 1; }"));
// MapKey(&Throttle, EORIGN, EXEC("if(g_bIsShutdown){ ActKey(PULSE+KEYON+'p'); g_bIsShutdown = 0; }"));
MapKey(&Throttle, EORMOTOR, PULSE+'o');
MapKey(&Throttle, EORIGN, PULSE+'p');

// Activate 'Shutdown Override' repeat (**** down for always 'ON')
// ActKey(PULSE+KEYON+REXEC(1, 700, "ActKey(PULSE+KEYON+'o');"));
// MapKey(&Throttle, EFROVER, REXEC(0, 700, "ActKey(PULSE+KEYON+'o');"));
// MapKey(&Throttle, EFRNORM, EXEC("StopHeatOverrideRepeat();"));

// Toggle 'JOYSTATE_SLUGGISH' indicated by shutting off all LED sluggish state lights.
MapKey(&Throttle, EFLNORM, EXEC("SlugToggle(1);"));
MapKey(&Throttle, EFLOVER, EXEC("SlugToggle(0);"));

// Cycle 'JOYSTATE_SLUGGISH's duration parameter, indicated by LED lights.
MapKey(&Throttle, LDGH, EXEC("SlugDuration(1);"));

// Set text chat COMMS to associate with auto-pilot controls.
// MapKey(&Throttle, APENG, SEQ('y', ENT)); // Default
// MapKey(&Throttle, APPAT, EXEC("MapKey(&Throttle, APENG, SEQ('g', ENT));"));
// MapKey(&Throttle, APAH, EXEC("MapKey(&Throttle, APENG, SEQ('t', ENT));"));
// MapKey(&Throttle, APALT, EXEC("MapKey(&Throttle, APENG, SEQ('u', ENT));"));

// User settings for how much "deadzone" when stick is centered.
MapKey(&Throttle, PSF, EXEC("g_fDeadZone = 0.3;"));
MapKey(&Throttle, PSM, EXEC("g_fDeadZone = 0.25;"));
MapKey(&Throttle, PSB, EXEC("g_fDeadZone = 0.15;"));

// User settings for which JOYSTATE's to enable
MapKey(&Throttle, FLAPU, EXEC("SetJoyState(JOYSTATE_SNAP);"));
MapKey(&Throttle, FLAPM, EXEC("SetJoyState(JOYSTATE_NORM);"));
MapKey(&Throttle, FLAPD, EXEC("SetJoyState(JOYSTATE_ABSOLUTE);"));

// User settings for Joystick Axis directions
MapKey(&Throttle, EOLMOTOR, EXEC("g_iAxisYDir = 1;")); // Set Y-Axis to normal direction
MapKey(&Throttle, EOLNORM, EXEC("g_iAxisYDir = -1;")); // Set Y-Axis to inverted diection
MapKey(&Throttle, EOLIGN, EXEC("g_iAxisXDir = g_iAxisXDir * -1;")); // Toggle/**** X-Axis direction

//--------------------------------------------
// START UPDATE LOOP
//--------------------------------------------
// Enable Joystick->Mouse - Throttle[APU]
MapKey(&Throttle, APUON, REXEC(2, UPDATE_RATE, "UpdateJoystick();"));


printf("All systems nominal!");
}
int SetJoyState(int iState)
{
if(0 != (iState & JOYSTATE_NORM))// Throttle[FLAPM]
{
// Disable JOYSTATE_SNAP and JOYSTATE_ABSOLUTE
g_iJoyStates = g_iJoyStates & JOYSTATE_SNAP_OFF;
g_iJoyStates = g_iJoyStates & JOYSTATE_ABSOLUTE_OFF;

// Enable JOYSTATE_NORM
g_iJoyStates = g_iJoyStates | JOYSTATE_NORM;
}
else if(iState == JOYSTATE_SNAP)// Throttle[FLAPU]
{
// Disable JOYSTATE_ABSOLUTE
g_iJoyStates = g_iJoyStates & JOYSTATE_ABSOLUTE_OFF;

// Enable JOYSTATE_SNAP and JOYSTATE_NORM
g_iJoyStates = g_iJoyStates | JOYSTATE_SNAP | JOYSTATE_NORM;
}

if(iState == JOYSTATE_ABSOLUTE)// Throttle[FLAPD]
{
// Disable JOYSTATE_NORM and JOYSTATE_SNAP
g_iJoyStates = g_iJoyStates & JOYSTATE_NORM_OFF;
g_iJoyStates = g_iJoyStates & JOYSTATE_SNAP_OFF;

// Enable JOYSTATE_ABSOLUTE
g_iJoyStates = g_iJoyStates | JOYSTATE_ABSOLUTE;

g_AxisData[AXIS_X].bHasPulseCenter = 0;
g_AxisData[AXIS_Y].bHasPulseCenter = 0;
}
}
int SlugDuration(int iStageOffset)
{
g_iSlugStage = g_iSlugStage + iStageOffset;

// Loop stages
if(g_iSlugStage > 5)
g_iSlugStage = 1;

if(0 != (g_iJoyStates & JOYSTATE_SLUGGISH))
{
// Set appropriate LED light indicator // No 'switch' statement available in TARGET :)
if(1 == g_iSlugStage)
ActKey(PULSE+KEYON+LED(&Throttle, LED_ONOFF, LED_CURRENT-LED1-LED2-LED3-LED4+LED5));
else if(2 == g_iSlugStage)
ActKey(PULSE+KEYON+LED(&Throttle, LED_ONOFF, LED_CURRENT-LED1-LED2-LED3+LED4+LED5));
else if(3 == g_iSlugStage)
ActKey(PULSE+KEYON+LED(&Throttle, LED_ONOFF, LED_CURRENT-LED1-LED2+LED3+LED4+LED5));
else if(4 == g_iSlugStage)
ActKey(PULSE+KEYON+LED(&Throttle, LED_ONOFF, LED_CURRENT-LED1+LED2+LED3+LED4+LED5));
else
ActKey(PULSE+KEYON+LED(&Throttle, LED_ONOFF, LED_CURRENT+LED1+LED2+LED3+LED4+LED5));
}
}
int SlugToggle(int bEnable)
{
if(bEnable == 1)
{
g_iJoyStates = g_iJoyStates | JOYSTATE_SLUGGISH;

SlugDuration(0);
}
else
{
// Disable the Sluggish effect and turn off all LED's
g_iJoyStates = g_iJoyStates & JOYSTATE_SLUGGISH_OFF;
ActKey(PULSE+KEYON+LED(&Throttle, LED_ONOFF, LED_CURRENT-LED1-LED2-LED3-LED4-LED5));
}
}
int StopHeatOverrideRepeat()
{
StopAutoRepeat(1);
}
int UpdateJoystick()
{
UpdateJoystickAxis(AXIS_X);
UpdateJoystickAxis(AXIS_Y);

// Store current fJoy into fJoyPrev to be used next Update()
g_AxisData[AXIS_X].fJoyPrev = g_AxisData[AXIS_X].fJoy;
g_AxisData[AXIS_Y].fJoyPrev = g_AxisData[AXIS_Y].fJoy;
}
int UpdateJoystickAxis(int iIndex)
{
// Whether or not to apply this Update()
int bUpdateAxis = 1;

// How much to move the mouse this Update()
float fMouseDelta = 0.0;

//--------------------------------------------
// Check to see if this axis's input value (fJoy)
// is lower than the user specified deadzone (g_fDeadZone)
//--------------------------------------------
if(abs(g_AxisData[iIndex].fJoy) < g_fDeadZone)
{
g_AxisData[iIndex].fSlugPerc = 0.01;
g_AxisData[iIndex].bSnapDir = 0;

if(0 != (g_iJoyStates & JOYSTATE_ABSOLUTE))
{
// Only center torso if both X and Y axis hasn't Pulsed and both X and Y are centered
if(g_AxisData[AXIS_X].bHasPulseCenter == 0 & g_AxisData[AXIS_Y].bHasPulseCenter == 0)
{
if(abs(g_AxisData[AXIS_X].fJoy) < g_fDeadZone & abs(g_AxisData[AXIS_Y].fJoy) < g_fDeadZone)
{
ActKey(PULSE+KEYON+'c');

g_AxisData[AXIS_X].bHasPulseCenter = 1;
g_AxisData[AXIS_Y].bHasPulseCenter = 1;
}
}
}

bUpdateAxis = 0;
}
else
{
//--------------------------------------------
// Apply 'SLUGGISH' if state enabled
//--------------------------------------------
if(0 != (g_iJoyStates & JOYSTATE_SLUGGISH))
{
g_AxisData[iIndex].fSlugPerc = g_AxisData[iIndex].fSlugPerc + SLUG_INCREMENTS + (g_iSlugStage * SLUG_INCREMENTS);
if(g_AxisData[iIndex].fSlugPerc > 1.0)
{
g_AxisData[iIndex].fSlugPerc = 1.0; // clamp proc sens at 1.0
}
fMouseDelta = fMouseDelta + (g_AxisData[iIndex].fJoy * g_AxisData[iIndex].fSlugPerc);
}
else if(0 != (g_iJoyStates & JOYSTATE_NORM))
fMouseDelta = fMouseDelta + g_AxisData[iIndex].fJoy;

//--------------------------------------------
// Apply 'SNAP' if state enabled
//--------------------------------------------
if(0 != (g_iJoyStates & JOYSTATE_SNAP))
{
if(g_AxisData[iIndex].fJoy > 0.0)
{
if(g_AxisData[iIndex].fJoy >= g_AxisData[iIndex].fJoyPrev)
g_AxisData[iIndex].bSnapDir = 1; // Moving away from center
else
g_AxisData[iIndex].bSnapDir = 0; // Moving towards from center
}
else
{
if(g_AxisData[iIndex].fJoy <= g_AxisData[iIndex].fJoyPrev)
g_AxisData[iIndex].bSnapDir = 1; // Moving away from center
else
g_AxisData[iIndex].bSnapDir = 0; // Moving towards from center
}

if(g_AxisData[iIndex].bSnapDir == 1)
fMouseDelta = fMouseDelta * 2.0;
else
fMouseDelta = fMouseDelta * 0.5;
}

//--------------------------------------------
// Apply 'ABSOLUTE' if state enabled
//--------------------------------------------
if(0 != (g_iJoyStates & JOYSTATE_ABSOLUTE))
{
g_AxisData[iIndex].bHasPulseCenter = 0;

fMouseDelta = g_AxisData[iIndex].fJoy - g_AxisData[iIndex].fJoyPrev;
fMouseDelta = fMouseDelta * 100.0;
}
}

// Manually set mouse position if passes above checks
if(bUpdateAxis)
{
g_AxisData[iIndex].iMouse = g_AxisData[iIndex].iMouse + fMouseDelta;

if(iIndex == AXIS_X)
DXAxis(MOUSE_X_AXIS, g_AxisData[iIndex].iMouse);
else
DXAxis(MOUSE_Y_AXIS, g_AxisData[iIndex].iMouse);
}

return 0;
}
//event handler
int EventHandle(int type, alias o, int x)
{
if(&o == &Joystick & (x == JOYX | x == JOYY)) // if the event came from Joystick X or Y axis
{
g_AxisData[AXIS_X].fJoy = Joystick[JOYX] * g_iAxisXDir;
g_AxisData[AXIS_X].fJoy = g_AxisData[AXIS_X].fJoy / fJOYAXIS_LIMIT;
g_AxisData[AXIS_X].fJoy = g_AxisData[AXIS_X].fJoy * g_fSensMod;

g_AxisData[AXIS_Y].fJoy = Joystick[JOYY] * g_iAxisYDir;
g_AxisData[AXIS_Y].fJoy = g_AxisData[AXIS_Y].fJoy / fJOYAXIS_LIMIT;
g_AxisData[AXIS_Y].fJoy = g_AxisData[AXIS_Y].fJoy * g_fSensMod;
}
else if(&o == &Throttle & x == THR_FC) // if the event came from the Throttle's friction control trim wheel
{
g_fSensMod = -Throttle[THR_FC];
g_fSensMod = g_fSensMod / fJOYAXIS_LIMIT;
g_fSensMod = (g_fSensMod * fDEFAULT_SENSITIVITY) + fDEFAULT_SENSITIVITY;
}
// Allow the system to handle incoming events and do its thing.
DefaultMapping(&o, x);
}

#73 Lykaon

    Member

  • PipPipPipPipPipPipPipPipPip
  • 3,815 posts

Posted 07 February 2013 - 03:06 AM

View PostLin Shai, on 30 November 2012 - 08:58 PM, said:

So, when you just make up stuff out of thin air, it doesn't actually make it true/real.

Keyboard + mouse is the de facto standard on the PC. That's how most games are played, and what most people are used to. Joystick games have sadly gone the way of the dinosaur and the ones that remain are, again, niche market.



I would use my flight stick in an instant if it were supported with proper analogue input.

And here is the reasons.

1) I own an X52 pro a very good stick and throttle rig for the price that is lightyears above some doorstop logitech 3D pro and very competative with a mouse for accuracy when calibrated correctly.

2) I currently use 4 mouse buttons and 6 keyboard keys to control my mech.I have paired this control layout down to minimal needed keys because of neccessity of efficency.If I could use my flightstick set I would be using triple this easily because the grip of the stick is designed for my hands my keyboard is a flat board with buttons on it that doesn't fit well in my grip.
My X52 grants me easy access to a two stage trigger (2 buttons) a pinky trigger,2 multi possition hats (10 more controls) and 4 buttons on the top of the stick for a total of 18 mapable controls that my big flipper hands can actually use (tried a razor naga but it is aparently designed for much smaller hands than mine) The throttle lever replaces 2 keys from my keyboard and also has 6 more mapable controls for a grand total of 24 customizable controls (not counting the 4 twin possition toggles on the stick base that do require me to move my hand to use) that never require me to break eye contact from the screen to locate or move a finger more than 15 degrees from rest possition. Overall very efficent controls.
Now we add in my rudder pedals to handle torso twisting and tadaa! I'm happy.

3) Using a flight stick gives you a direct physical feedback to control possition and resulting execution of the command you input.Basically if I press "W" to speed up my finger is always over the W key pressing it once feels the same as pressing it 100 times I will gain no feedback as to when my throttle is "pinned" at max.With my throttle lever I can feel the possition of the lever and I know exactally when it's maxed out when I'm hitting reverse or when I'm zeroed out.This is the exact same physical feedback my brain and body is used to in daily life.This is intuative and efficent.

Is this nitch of me...yep I did spend around 300 bucks on controls.Will I use them? Hell yeah I will.

#74 JuiceKeeper

    Member

  • PipPipPipPipPip
  • The Territorial
  • The Territorial
  • 172 posts

Posted 07 February 2013 - 03:46 AM

Hey, same here i got x52 pro. I used to play all mw games with joysticks before and it allways worked and was fun.
As players mentioned atm mouse is much more intuitive then using stick.
But i would like to ask if somebody with x52 pro tried to use only throtle part and setup throtle and left and right moving for upper POV and using mouse for second hand.
Anyway would be amazing to have proper joystick control.

#75 Mycrus

    Member

  • PipPipPipPipPipPipPipPipPipPip
  • Overlord
  • Overlord
  • 5,160 posts
  • Google+: Link
  • Twitter: Link
  • LocationFilipino @ Singapore

Posted 07 February 2013 - 07:03 AM

i have a g13 / g19 / g9x -- these were logitech's flagship gaming mouse / keyboard / gameboard

when playing fps games... i'm using the G9x at 5600dpi / 1000hz (full settings) -- at work i'm using an older MS sidewinder 2000dpi mouse just for normal mousing... just to illustrate that i am very used to sensitive gaming mouse..

http://www.logitech....17680/17680.png
http://www.logitech....17701/17701.png
http://www.logitech....17697/17697.png

now why would i purposely "gimp" myself by running a G940 for mwo??

http://www.logitech....17262/17262.png

because, it is BETTER than a keyboard + mouse setup!

1.) In combat, keyboard pilots have only 3 speed settings - full speed / full stop / full reverse. A separate throttle gives me all speeds in between and --minute-- speed control this allows me to outpilot most keyboard users..

2.) the joystick i have is force feedback / while this isn't implemented in game - it provides force feedback centering... i can adjust this by making the stick very hard (for sniping or assault mechs) or very soft (for piloting lights).. a joystick provides linear movement... there is no mouse pad to run out of / i don't have to lift and re-center my mouse on the pad every so often...

3.) i am turning the mech with pedals... turning with my feet is very natural that you do not think of it once you have built muscle memory... a keyboard pilot on the otherhand experiences sensory overload... the left hand needs to turn the mech and somehow make throttle adjustments.. while i use my feet to turn and my left hand is focused on throttle adjustments...

4.) the joystick is not slow... it is slow if you haven't configured your user.cfg...

http://mwomercs.com/...joystick-users/

this is my user.cfg
cl_joystick_gain = 12
cl_joystick_sensitivity = 1
cl_joystick_throttle_range = 0
cl_joystick_invert_throttle = 1
cl_joystick_invert_pitch = 1
cl_joystick_invert_yaw = 0
cl_joystick_invert_turn = 0
i_joystick_deadzone = 0.1
cl_joystick_deadzone = 0.1

if you are not used to joystick -- start with a gain of 4.6 and slowly build your way up... the default is 8... i'm now used to 12... at a gain of 12 the stick is as fast as a mouse at 2000dpi... i'll even try to push up to a gain of 16 after 12 gets too 'slow' for me...

5.) because of the wide variety of buttons both my hands -never- leave the stick... (except when rocking my trolling text macros) i have more than enough buttons to fully all 6 weapon groups / view modes / ecm modes... etc. etc... the keyboard pilot will take his fingers off the wasd to push some other buttons... again sensory overload...

even if you have a game board like the g13... you still will need to take your fingers off the wasd... at least you have important keys mapped closer... than if you use a standard keyboard...

this game fully supports joystick btw... X / Y / throttle is covered... the only thing it needs is analog Z (turning) and it is good... don't let anybody tell you otherwise... in this game the kb+mouse is not better than the joystick...

finally, i play with 260ms ping (I'm currently based in Singapore) so i have to lag-shoot... with a joystick!

some old screenshots of how i do on joystick with direct fire weapons...

Posted Image
.
Posted Image

Posted Image

Posted Image

#76 CMDR Sunset Shimmer

    Member

  • PipPipPipPipPipPipPipPipPipPip
  • Legendary Founder
  • Legendary Founder
  • 5,341 posts
  • Twitch: Link
  • LocationNetherlands

Posted 07 February 2013 - 07:16 AM

I shouldn't have to jump though hoops to have joystick support on a product who had a business partnership with Razor to produce a joystick exclusive to the game.

As has been said, Mechwarrior and it's Iterations IS a game that has, historically, supported all types of joysticks. The fact that we're this far into Devlopment and still have shoddy Joystick support ingame is actually one of my very few complaints towards PGI.

I don't give two craps about your take on the matter, from a historical "MECHWARRIOR" fan view. Not having Joystick Support is detrimental to the series.

#77 Eyecon69

    Member

  • PipPip
  • 39 posts
  • LocationThe *** in Saskawat

Posted 07 February 2013 - 08:12 AM

This looks like a huge flame war, but I figured I would let everyone know that I generally prefer keyboard and mouse for most everything.

I specifically play this game because I want the sim portion... If I wanted to play with the key board and mouse snap twitch run and gun style I'll go play Hawken.

#78 mekabuser

    Member

  • PipPipPipPipPipPipPipPip
  • Philanthropist
  • 1,846 posts

Posted 07 February 2013 - 08:40 AM

i dont care when it happens...


AS LONG AS IT HAPPENS>


let the naysayers think what they want... They dont understand... WHich is fine...

I cant even imagine how sick i would be in my spider with a hotas.

#79 Mister Blastman

    Member

  • PipPipPipPipPipPipPipPipPipPip
  • Survivor
  • Survivor
  • 8,444 posts
  • LocationIn my Mech (Atlanta, GA)

Posted 07 February 2013 - 08:44 AM

Ugh. I think I should just sit down and spend ten minutes whipping up a profile for the HOTAS Cougar like I did when MWLL first came out years ago. I had full HOTAS support when they said it couldn't be done!

It is simple for MWO, really, when you think about it. Just emulate the Joystick and as Mouse and BOOM! You're moving the torso.

Turn? What? Easy as pie. Have the pedals issue a "a" and a "d" repeatedly. It isn't rocket science to get a programmable hotas working with MWO. Whether it would be good or not? That's another question.

I do know for a fact that emulating a mouse as a stick would be accurate as hell. I use it to play Mechwarrior 2 and it blows away the crappy joystick support the game has from years ago.

I don't think many people here have a Cougar though...

#80 Lightfoot

    Member

  • PipPipPipPipPipPipPipPipPipPip
  • Bad Company
  • Bad Company
  • 6,612 posts
  • LocationOlympus Mons

Posted 07 February 2013 - 09:15 AM

I get good numbers with a joystick and I am only PUGing right now. Best was 6 kills, 2 assists, but getting kills also depends on the Mech. Some mechs will get mostly assists.

Once they offer easy to setup joystick support, that's what the majority of players will be using. Mouse Keyboard just doesn't offer fluid manuvering like the joystick. No matter how good you get at piloting with a mouse, the joystick will beat it. Even a new player becomes a a very good pilot in a few days.

Problem now is no Analog Turning and players are a bit mystified by the User.cfg. So a quick explaination....


I use a Logitech 3d Force Pro which has a very good profiler for fine tuning as well as using MWO's User.CFG.

It's important to know that in the User.cfg, setting the Gain higher increases the Mechs twist/pitch speed from full swings of the Joystick axii. Increasing the Sensitivity setting will make the small Joystick movements respond slower and more accurately. Takes a bit of fiddling, but you get a responsive Mech in the end.

The idea that a Joystick is not competitive is bull. The joystick makes up for lower accuracy with better manuvering. To get it working in MWO takes some study and adjusting and practice, but over the course of a few days you get things set right.
My current User.cfg file:
cl_joystick_gain = 7
cl_joystick_sensitivity = 2.7
cl_joystick_throttle_range = 0
cl_joystick_invert_throttle = 0
cl_joystick_invert_pitch = 0
cl_joystick_invert_yaw = 0
cl_joystick_invert_turn = 0
I_joystick_deadzone = 0.077
I_joystick_buffered = 0


This is dependent on your other Joystick settings so most likely you will want to adjust it to fit your stick.

Only other thing I have run across is MWO's Digital Turn is so snappy you need to make the Turn Deadzone a little larger than you would in other games. MWO's axii are all independent of each other, but if the Turn axii gets bumped the Mech turns fast, skewing your aim.

Also, the "C" key will recenter your torso, legs, arms in a second so keep that handy.

Edited by Lightfoot, 07 February 2013 - 09:17 AM.






1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users