Hey, we have forums!

Author Topic: Input improvement suggestions  (Read 10609 times)

0 Members and 1 Guest are viewing this topic.

Offline weak-ling

  • Mini Bit
  • **
  • Posts: 3
    • View Profile
Input improvement suggestions
« on: August 27, 2013, 03:17:40 am »
Great game, but, at least for me, horrible controls.
fgenesis, if you are still working on improving Aquaria, here's what I would change:


1. Make song hotkeys configurable ingame
Right now, many players probably don't even realize that there are song hotkeys.
Workaround: AutoHotkey

2. Add a hotkey for Li's song
Unlike any other song this one doesn't even seem to have a hotkey and has to be sung manually every time.
Workaround: none

3. Allow more keys to be used for bindings
Currently a lot of keyboard keys cannot be bound to any actions (the inputCodeMap contains only a fraction of all possible keys)
(For example I wanted to use PageUp and PageDown for some input actions)
Workaround: AutoHotkey

4. Allow more kinds of gamepad inputs to be used for bindings
Currently D-pad/PoV-hat as well as analog triggers (which are basically axes) cannot be bound to any actions.
(For example I wanted each of the 4 cardinal D-pad directions to change Naija to a different form)
Workaround: AutoHotkey

5. Make sure that the "flip input buttons" options is correctly stored to and read from the settings file
Currently this setting is lost and defaults to disabled every time the game is started.
Workaround: Make the following hex-hack in the game executable to force "flip input buttons" to be enabled by default:

aquaria.exe      0x00018DC6: 4F -> 7F

aquaria-dev.exe  0x000191C6: 4F -> 7F


And now, the most important one for me:

6. Make it possible to use both gamepad and mouse at the same time
To me it seems obvious that this should be the optimal way to control Naija, combining smooth analog movement with precise mouse aiming.
However, the game makes this impossible by hiding (and re-centering) the mouse cursor every time the gamepad directional input is moved
Workaround: Make the following hex-hacks in the game executable to allow gamepad and mouse at the same time:

aquaria.exe      0x001C8142: 0F85 -> 90E9    Effect: shots go toward the cursor, not in the direction you are moving
                                             does not affect beast form, but that would be like cheating anyway
                 0x00171596: 75 -> EB        Effect: moving no longer hides/centers the cursor
                 0x001D7533: 0F85 -> 90E9    Effect: sing with the mouse, even when gamepad directional input is moved
                                             still cannot sing while moving around, but that would be like cheating anyway

aquaria-dev.exe  0x001C9E22: 0F85 -> 90E9
                 0x00171B46: 75 -> EB
                 0x001D9213: 0F85 -> 90E9


All offsets are for Aquaria OSE v1.000 (Windows version only) and will not work on any other version for obvious reasons.
Seeing how the game is open source, editing said source would have been the superior solution (also for obvious reasons).
However I just could not get Visual Studio 11.0 to compile the game, which is why I ended up doing those exe modifications.

Offline False.Genesis

  • Administrator
  • Super Bit
  • **********
  • Posts: 461
  • PRESS COMPILE FOR RAINBOWS
    • View Profile
    • My source code!
Re: Input improvement suggestions
« Reply #1 on: August 27, 2013, 03:32:00 am »
fgenesis, if you are still working on improving Aquaria, here's what I would change:

Good ideas. I'll see what I can do, and when. Won't do this right away, but I'll put it on my list.
The input management code is somewhat hairy, and so far I've avoided to touch it :-\

First, *please* don't give me hex codes. I have zero knowledge about assembly, let alone hex codes (ok, i know that 0x90 is nop, but that's about all).
I didn't save a .pdb file of exactly that build, and honestly I'm too lazy to relate hex offsets to possible source code changes.

If it doesn't compile, why don't you send me a build log? FYI, I use MSVC 2008, gcc and clang to compile, and all of them work. I don't see a reason why newer MSVC versions wouldn't work, especially when you create project files with cmake. Make sure you're not using an express edition (they suck), try again, and send me the build log if it fails.

Offline weak-ling

  • Mini Bit
  • **
  • Posts: 3
    • View Profile
Re: Input improvement suggestions
« Reply #2 on: August 28, 2013, 02:42:27 am »
I on the other hand have little experience with high-level programming, at least not with a project of the size of Aquaria. I taught myself to hack closed source games with a Debugger and a Hex-Editor and that was enough to solve my problems with the controls. But if you want to figure out what problems there are with Visual Studio 2012 I'll try to give you some logs.
... especially when you create project files with cmake.
Well, knowing that is quite helpful ;)
The included solution file certainly doesn't work for me, so now I made my own:
Code: [Select]
F:\Aquaria_clean-master>mkdir cmake-build && cd cmake-build

F:\Aquaria_clean-master\cmake-build>F:\cmake-2.8.11.2-win32-x86\bin\cmake.exe ..
-- Building for: Visual Studio 11
-- The C compiler identification is MSVC 17.0.60610.1
-- The CXX compiler identification is MSVC 17.0.60610.1
-- Check for working C compiler using: Visual Studio 11
-- Check for working C compiler using: Visual Studio 11 -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler using: Visual Studio 11
-- Check for working CXX compiler using: Visual Studio 11 -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Using internal copy of SDL
-- Using internal copy of OpenAL
-- Looking for strcasecmp
-- Looking for strcasecmp - not found
-- Configuring done
-- Generating done
-- Build files have been written to: F:/Aquaria_clean-master/cmake-build

F:\Aquaria_clean-master\cmake-build>start Aquaria.sln
But even with that the Solution cannot be compiled. I post the build logs for all the projects here: http://pastebin.com/W005hXF3

The "unexpected end-of-file found" errors in ttvfs.log are due to to the #error directives being processed in VFS.h and VFSInternal.h. But MSVC2012 doesn't seem to like #error. As to why those #errors are triggered in the first place I have no idea. The same applies to all the errors in aquaria.log.

Offline weak-ling

  • Mini Bit
  • **
  • Posts: 3
    • View Profile
Re: Input improvement suggestions
« Reply #3 on: October 04, 2013, 06:28:34 pm »
I have abandoned trying to compile this.