Alpha 0.1.1.3


Salutations, mortels qui s'ennuient. French translation is now available ! Other people can now add and edit language files as they want.
Modding is a bit trickier, but this is definitely a step toward the right direction. I wanted to put more work on the Hex Key, so you get two new combos for now.
Parry is also making an entry in the game.

-Keyboard

The settings is now taken in account and working for switching between QWERTY and AZERTY.
Special keys might not be switched correctly depending on the azerty keyboard.
For player 2 french users, the default keys and settings would feel natural even without changes.

-Player

☼ Secondary idle animation have now less chances to replay the same previous one. This means for example the chopstick idle 2 and 3 have less chances to repeat themselves.
☼ Reseting a player also resets the jump and dodge reload times

-Class selection

Shadows are now back. I can't remember when this was removed.

-UI

☼ New sound for switching settings and stances
☼ Switching a settings to a direction is played in that direction, if the stereo setting is on

-Settings menu

☼ Settings list is wider to remove additional future overlaps in localization
☼ Setting description is moved from the side to bellow the list, leaving more breathing room
☼ Settings name, values and description updated to be a bit more clear & consistent
☼ Unfocused settings value are grayed out for better navigation

-Keyboard settings

☼ Enter unbind a key, replacing it with *unassigned*
☼ Key press instruction
► Overlay text is smaller and centered as intended
► Remove and cancel instruction are added bellow it in small text

-Combat

☼ Ties are now taken in account if both players dies at the same time
☼ Damage gadgets still ongoing from a dead player will not damage the other one during an end/victory phase
☼ Victory/defeat message and back to menu counter are now centered as intended

Pause

☼ The screen fades quickly instead of snapping
☼ The game version is now displayed on top of the pause instead of under, making it clearer

HUD

☼ Shake is now capped at +-10 pixels, multiplied by the current shake mod

This would make excessive shakes less impactful, in case of some very long strings.

Round

☼ Added ☼ By default Best of 3
☼ Can be changed in the settings from 1 to 7 with steps of 2
☼ Can be changed in the settings file but expect funky behaviors with absurd values
☼ Current round and score displayed at start of each round
☼ Victories are displayed bellow the timer
☼ Back to menu message only displays at the end of the winning or last match
☼ The timer is now decremental, starting at 120 seconds
☼ The timer gets red under 30 seconds
☼ The players keep their classes throughout the rounds even if random (it means it select random once before the first round)
☼ Round count and victories are bigger and displayed to the side of the timer if the screen is large enough.
☼ Classes are unloaded after leaving the match or finishing it
☼ In case of mutual kill, each player gets one point unless it is the winning match : the round restarts
☼ In case of timeout, the player having the most remaining HP wins
☼ During timeout, players cannot damage each other
☼ It is possible to set the round length from 30s to 300s in the settings menu, with 30 seconds steps. Setting it to 0 will make the rounds infinite like in previous version, the timer showing the round duration rather than a countdown. Like for the round count, you can put any value directly in the settings file but expect funky behaviors in the runtime.

N.B. Random class/stances is only done at the start of the match, not at each round

Parry

☼ Added
☼ Triggered when special + down while on the ground
☼ Broken like an attack if the player is pushed too far from the ground
☼ Takes 12 - Speed frames to go in and out, during which the player can't act, move and isn't parrying
☼ Cannot parry when the guard is broken
☼ When parrying
► Reduces all incoming damage by 5 + Strength/2, rounded down
► Consumes 1 guard minimum per damage
► Cannot reload guard
► Plays a special sound when parrying damage
☼ All classes take the last jump animation frame as a placeholder parry animation if not specified

-Localization

The system has been implemented. Users can switch languages in the settings menu.
It is also possible to customize and read language directly in their files.
When a string is missing, it will pick the english one by default.
English is by default for new installations.
Languages slots are English, French, German, Spanish, Italian, Portuguese, Polish and Russian. However the game doesn't support non-latin and special characters yet. More slots can be trivially added in later developments.
Language is not reset with the reset to default setting, but deleting the settings file would reset it to english no matter the user language.
Later version would also welcome new translations and fixes in that regard.
If someone is fluent in italian, Portuguese or polish please contact me if you would like to contribute later.
I may have missed few stragglers, but most of the work is done.

The game detects automatically the languages added in the data.json file, within the languages array.
name name of the language, displayed in settings
code two letter country code to retrieve the right language file language_XX.json
support integer showing for the user how supported the language is
► 0 : no support, nothing translated or there's no font at all
► 1 : partial support, may not have a good translation, or is incomplete, or lacks of special characters
► 2 : full support

The language at the first array case become default one (english).
User are welcomed to edit and create their own language files but don't forget to set it in the data.json.
If a language file is not found it is not loaded, thus it will pick the default language.
áàâãäéèêëíìîóòôöúùûüÿñç and their upper case version are now supported by the game. More special characters can be added during future developments. French version is already available for french users !

-Class

All descriptions have been updated to be more synthesized, also fixing some typos.

-Unarmed

Side

☼ Damage reduced from 6-6 to 5-5

Side [Up] Side

☼ Damage reduced from 5 to 4

Side Up [Side]

☼ Damage reduced from 8 to 7
Due to the high push ability of this combo, its overall damage is reduced to lower reward.

Down

☼ Damage reduced from 5 to 4
☼ Combo shortcut increased from 26 to 27

Down Heavy

☼ Frame 1 duration increased from 5 to 6
☼ Frame 5 duration increased from 10 to 13 (total length increased from 36 to 40)
☼ Combo shortcut increased from 29 to 32
☼ Recovery reduced from 50 to 40

Down Heavy [Side]

☼ Recovery reduced from 40 to 30
☼ Frame 4 duration increased from 9 to 11
The enemy would get more room to anticipation, while the user getting more risk when missing the combo. The recoveries are now more coherent with the game rhythm, compensated with slightly lower DPS.

Back [Side]

☼ Damage reduced from 8 to 6

Back Side [Back]

☼ Damage reduced from 7 to 6
☼ Frame 5 damage duration reduced from 10 to 4

Back Side Back [Heavy]

☼ Damage reduced from 15 to 13
Balanced the early and late rewards so a spamming unarmed won't deal too much damage.

-Hexkey

Idle 1

☼ Reworked

Idle 2

☼ Reworked ☼ All frames shifted by -16 -16 pixels
The class is now more coherent with its hitbox, and its idle animations more lively.
I also reworked the aging first idle animation with more frames. I think it's the only rework I'll do for now, next ones are strictly new animations!

Side - Side - Side - Side - Neutral

First Side

Fixed a minor drawing artifact on the 3rd frame of the frontal wind animation of the last frame

Side - [Side - Side - Side - Neutral]

☼ Added

Down - Down - Heavy

First Down

☼ Frame 5 length increased from 5 to 10 (total length increased from 25 to 30)
☼ Frame 5 damage duration set to 5
☼ Combo shortcut set to 25 frames
☼ Adjusted wind animation speed
☼ Wind effects are now independent from the hand

Second Down

☼ Added

Heavy

☼ Added

Configuration

☼ Decimal player.CONTROLLER_SENSITIVITY, by default 0.5, between 0.1 and 1 at gamestart. Defines the joystick sensitivity for directions.
This is a temporary measure before having it set for each controller in options.

☼ Decimal player.PLAYER_JUMP_RELOAD_BASE, by default 15, greater or equals to 0 at gamestart. Sets the jump reload time in frames starting at landing.

☼ Decimal player.PLAYER_JUMP_RELOAD_PER_SPEED, by default 1, greater or equals to 0 at gamestart. Reduces the jump reload time per speed per frame.
☼ Decimal player.PLAYER_JUMP_RELOAD_PER_AGILITY, by default 1, greater or equals to 0 at gamestart. Reduces the jump reload time per agility per frame.
☼ Decimal player.PLAYER_JUMP_RELOAD_WEIGHT, by default 2, greater or equals to 0 at gamestart.
☼ Decimal player."PLAYER_JUMP_RELOAD_SRENGTH, by default 1, greater or equals to 0 at gamestart.
☼ Decimal player.PLAYER_JUMP_RELOAD_HINDRANCE_FACTOR, by default 4, greater or equals to 0 at gamestart.☼ The 3 above increase the jump reload time by max(weight x PLAYER_JUMP_RELOAD_WEIGHT - strength x PLAYER_JUMP_RELOAD_SRENGTH, 0) x PLAYER_JUMP_RELOAD_HINDRANCE_FACTOR
☼ Final jump reload time is always greater or equal to 0

☼ Integer player.PLAYER_PARRY_MARGIN_BASE, by default 12, greater or equal to 0 at gamestart
☼ Integer player.PLAYER_PARRY_MARGIN_PER_AGILITY, by default 0, greater or equal to 0 at gamestart
☼ Integer player.PLAYER_PARRY_MARGIN_PER_SPEED, by default 1, greater or equal to 0 at gamestart
☼ Integer player.PLAYER_PARRY_DAMAGE_BASE, by default 5, greater or equal to 0 at gamestart. Sets the reduced damage incoming while parrying
☼ Integer player.PLAYER_PARRY_DAMAGE_MIN, by default 0, greater or equal to 0 at gamestart. Sets the minimal damage going through the parry
☼ Integer player.PLAYER_PARRY_COST_MIN, by default 1, greater or equal to 0 at gamestart. Sets the minimal guard cost when parrying a non-0 incoming damage

☼ Decimal player.PLAYER_PARRY_DAMAGE_PER_STRENGTH/AGILITY/SPEED/WEIGHT/STAMINA/LIFE, greater or equal to 0 at gamestart. Increases the damage absorption per stat when parrying, default values are 0.5 strength and 0 for everything else.
☼ Decimal player.PLAYER_PARRY_GUARD_COST, by default 1, greater or equal to 0 at gamestart. Sets how much damage going through the parry damages the guard. For example, a value of 0.5 with 3 damage going through will deal 1.5 damage to the guard (but the player still receives 3 damage on HP).
☼ Decimal player.PLAYER_PARRY_PUSH_FACTOR, by default 0.5, greater or equal to 0 at gamestart. Multiplies received attack pushes by this value when parrying.

Behind the scenes

☼ References to block action are now properly renamed into parry for consistency
☼ Class load/unload is more reliable, avoiding some cases when they aren't properly unloaded after a match

Bug fixes

☼ [0.1.1.2] Player 2 keeps the hard level AI stat boost after a VS AI in versus mode Fixed
☼ [0.1.1.1] Can't set a new key in keyboard settings, applying it immediately Fixed
☼ [0.1.1.1] Can't set a new button in controller settings Fixed
☼ [0.1.1.1] Returning from some menus with a controller may loop return sounds or settings exportation Fixed
☼ [0.1.?] Can't sometimes properly switch off AI in debug mode Fixed
☼ [0.1.0.5] Game start counters are off-centered on the screen Fixed
☼ [0.1.0.?] Screen shake never takes into account the current attack delay mode, was stuck at off Fixed
☼ [0.1.0.8] Damage gadget doesn't freeze during attack delays Fixed

Known issues

☼ [0.1.0.?] AI tends to not follow combos when the player is in the air
☼ [0.1.0.5] x86 version unavailable until further notice
☼ [0.1.0.7] When a lighter hand jumps between the space between the heavier player and a wall, the push physics is incorrect for a few moments
☼ [0.1.0.7] The 5th attack combo with big icons might be cut off for very small screens
☼ [0.1.0.7] Controller models may have different inputs and even affect both players at the same time
☼ [0.1.1] Cannot pause with a controller in the fight intro
☼ [0.1.1] Text in combat is harder to read if it’s the same color as the background
☼ [0.1.1.1] Lag or picking 50FPS or below makes physics a bit less precise
☼ [0.1.1.2] On active-only wind mode, when an animation is played for the very first time, it won't skip inactive frames
☼ [0.1.1.3] Some long text strings might break a bit of the interface, overlapping other texts or even getting out of the screen; especially on translations
☼ [0.1.1.3] If there’s one plugged controller connected to Player 1, it is not possible to change it for Player 1 using the controller (use the keyboard instead)

Files

Hand2Hand Project Alpha 0.1.1.3.zip 44 MB
1 day ago

Get Hand2Hand Project

Leave a comment

Log in with itch.io to leave a comment.