Models – Tyris Flare

Tyris Flare model specific work log. Tyris is a primary player character and so requires a large variety of accessible technique.

Tyris will focus on magic and combining environmental use with advanced attack technique and magic. To place a somewhat more realistic and less cliched’ viewpoint on video game gender, she will not be “weak but quick”, and instead be inferior in all physical aspects (i.e. speed, constitution, strength and reach). But like any clever woman, Tyris has found ways to more than make up for these shortcomings. Advanced players will be able to segue graceful movement, sometimes using walls, allies and even opponents for footing to attack from all angles. This combined correctly with her superior magic abilities and reversal techniques can make Tyris virtually untouchable.

Completed:

2011_08_31

  • Combo finish kick replaced with spin kick (inspired by Genesis Golden Axe III).

2011_09_01

  • Add somersault to running jump animation (inspired by Genesis Golden Axe III).
  • Upgrade running attack (dust, flash, jump/landing frames).

2011_09_02

  • Dust effects.
  • Projectile hit adjustments.
  • Block flash.

2011_09_06

  • Attack1 (Whiffed)
    • Motion trail.
    • Hair animation.
    • More frames (Start up and recoil).
  • All main entity .gif sprites replaced with optimized .png format.

2011_09_07

  • Attack Chain
    • Applied transparent motion trails.
    • Most animations have additional frames and improved animation.
    • Flash/Sound effects.

2011_09_13

  • Attackbackward
    • Motion trail.
    • Sound effects.
    • Flash.
    • Hair .

2011_09_19

  • Jump landings now have smooth hair animation.
  • Jumpattack complete.
  • Run Jumpattack complete.
  • Jump now has looping hair flow.
  • Run attack now has looping hair flow.

2012_01_11

  • Rise attack replaced. Is now based on Millan Flare’s upward sword spin attack (Golden Axe The Duel).
  • Flip attack replaced. Is now an inverted forward somersault using fully customized sprites.
  • Forward Spin attack added (F+A against a wall during a run jump). Tyris rebounds off of wall (real walls only, not screen edge) while spinning weapon in a powerful flying attack. Based on Millan Flare’s horizontal sword spin attack.
  • New rise animation. Now performs a cartwheel to feet. Based on Millan Flare’s rise animation.
  • Fixed block animation (had accidentally included some jumping sprites).
  • Added voice effects (Random voice taunts when knocking enemy down, attack shouts, pain grunts, etc.)
  • Auto throw during short range combo is now a trip throw (based on rarely seen alternate throw in Genesis GA 3).

2012_02_07

  • Finished Boomerang sword throw. It’s a convoluted mess of script, but works. Seems for projectiles, the engine will only run didhit event once.
  • Fixed player control conflict with wall jump. Required reinstating script jump control in place of default engine control.

2012_08_27

  • Fix Chicken Leg attack types and knockdown values.
  • Set Chicken Leg jumpmove 0 1.
  • Chicken Leg sidestep bbox removed.
  • Fix Riseattack type.

 

To Do:

  • Boomerang sword throw for charge attack.
  • Pogo jump off of enemies.
  • Team moves.
  • Fix wall jump/player jump control conflict.
  • Double jump.
  • Counter throw on timed block.
  • Replace counter attack (Special when being attacked).
  • Side step.
  • Magic.
  • Normal grapple moves.
  • Backward dash.

Move-list Notes (finished only):

Combo (long range): Sword strike*2, Stab.

Combo (med-long): Sword strike*2, Spin kick.

Combo (med-short ): Sword strike*2, Pommel butt*2, Spin kick.

Combo (short): Sword strike*2, Trip throw (alternate throw from Genesis GA3)

Run + A: Flying kick.

A+J: Flipping kicks.

B, A: Back strike.

U, A (when knocked down, can use F or B to aim): Rising sword spin attack.

Hold A, release: Boomerang sword.

Jump, A: Downward strike.

Jump, D+A: Double kick (Genesis GA III J, D+A).

Running Jump A: Downward thrust.

Jump near wall, F+J: Wall jump

Running Jump near wall, F+A: Lunging sword spin attack.

Defense: Parry.

Running Jump

Running Jump

Stab (Combo Ender)

Stab (Combo Ender)

Spin Kick (Combo Ender)

Spin Kick (Combo Ender)

Models – Ax Battler

Ax Battler model specific work log. Ax is a primary player character and so requires a large variety of accessible technique.

Ax’s unique abilities will be somewhat pedestrian compared to the other characters. His statistics are good but not extraordinary and he lacks any sort of projectile or evasive capabilities. However, he is equipped with several effective sword techniques and is a proficient wrestler. Players can chain together throws one after another to cause extreme damage, and even grapple two enemies at once.

Completed:

2011_06_27

  • Block animation tweaked. Can no longer hit opponents.
  • Added A+J special, based on Uppercut/Jumpstrike from Golden Axe II (Genesis).

2011_06_28

  • Updated binds to knock down opponents at correct point (see bind0010).
  • Double Powerbomb attack added. It is a follow up to Powerbomb (D, F, A).
  • Giant swing can be performed as a follow up to Double Powerbomb or Powerbomb.
  • Proper turn animation added.

2011_06_30

  • Upgraded Double Breaker to Spin Breaker. Instead of a simple repeat of Backbreaker, Ax now carries opponent through a short hop and spin into another backbreaker on his opposite knee.
  • Rise and wake up from camping animation tweaked for smoothness.
  • Several minor animation tweaks.

2011_07_06

  • Added “Hun Suplex” as follow up to Backdrop and future air to ground throw.

2011_07_07

  • Add “Melon Splitter” as follow up to Hun Suplex. Allows further follow up of Flying bomb.

2011_07_20

  • Add “Ax Destroyer” air to air throw. Inspired by Zangief’s Siberian Blizard. Still needs splash damage effect.
  • Minor animation and attack type tweaks.

2011_07_22

  • Follow up series for Atomic Drop.
  • Short stab.
  • Align Shock/Burn flash effects.
  • Smoke effect when landing from Shock/Burn fall.

2011_07_20

  • Add stationary grabattack (Barbarian Fury, based on Stern Blade’s stun combo from Arcade Golden Axe II)

2011_07_26

  • Add counter. If player defends against a running or jumping attack just as it hits, Ax will catch the attacking opponent and perform a Power slam, even from behind or if the attack could not be blocked normally.

2011_07_31

  • Add Air to Ground throw (Python Drop – A swing DDT style throw).

2011_08_07

  • Add Ground & Pound. Follow up for Powerslam and planned tackle.

2011_08_09

  • Add tackle. Fwd or Back + Atk when running very close to opponent. Takes good timing but unblockable and allows follow up ground & Pound, possibly some others in the future.

2011_08_10

  • Aesthetic improvement for Backdrop and some other minor sprite touch ups.

2012_08_21

  • WALKOFF
  • Backstep includes landframe and no longer acts as jump.

To Do:

  • Follow up for Backdrop. German whip? Rolling cradle?
  • Follow up for Atomic drop.
  • Follow up for jump slams.
  • Mid air catch slam of some sort.
  • Burn/Shock sparks play perpetually after KO.
  • Shock flash is not aligned.
  • Air to ground throw of some sort.
  • Splash damage for hard slams.
  • Rolling cradle. Possible follow up for Backdrop or as an otg maneuver.
  • Catch and Powerslam when blocking non weapon attacks.
  • Wall alternate for Powerbomb.
  • Move for Grab, A command. Stunned enemy beating from Arcade GA II?
  • AI cancels and patterns.
  • Re tool magic effects.
  • Bored pose?

Move-list Notes (finished only):

Combo (long range): Sword attack*2, Uppercut punch (Arcade GA II long range combo)

Combo (Med-long): Sword strike*2, Thrust kick (Genesis GA II long range combo)

Combo (Med-short): Sword strike*2, Pommel butt*2, Stab (GA I med-short combo with end from Arcade GA II )

Combo (Short): Sword strike*2, Lift and throw – Can change direction of throw with Forward/Backward (GA I combo with end from Genesis GA II)

Run, A: Shoulder check.

A+J: Uppercut, turn and hop strike (Genesis GA II A+J)

D, F, A: Batter swing (Arcade GA II A+J)

B, A: Back strike (Arcade GA I A+J).

U, A (when knocked down, can use F or B to aim): Upper strike.

A (during Sidestep, Back strike, Batter swing, or Upper strike, can use F or B to aim): Second strike.

Hold A, release: Twirl weapon, hard down strike (Genesis GA III F+A+J)

Jump, A: Downward strike.

Jump, D+A: Dive strike (Genesis GA III J, D+A)

Run, Jump, A: Downward thrust.

Defense: Parry.

Defense (just as a run or jump attack hits): Powerslam (catch and counter opponent’s attack)

Defense (when grabbed or hit): Grab and hurl (GA I short combo end).

Defense (when grabbed or hit, opponent can’t be grabbed): Kick (GA I med-short combo end)

Grappling:

Atomic Drop (B+A with back to wall): 14

Ax Destroyer (F+A or B+A during jump when close to midair opponent): 15 + 20% of target’s remaining HP.

Backbreaker (U, D, A):6

Backdrop (B+A): 8

Barbarian Fury (A): 22

Body Press (Short range combo):NA

Body Throw (Automatic after Body Press, may use F or B to control direction): 10

Flying Bomb (D, F, A): 4

Giant Swing (D, U, A): 12

Ground & Pound (D, D, A): 20

Gutbuster (J): 5

Hun Suplex (D, B, A): 4

Melon Splitter (U, B, A): 4

Powerbomb (F+A): 8

Powerslam (Counter throw; Defense just as an incoming run/jump attack hits): 12

Piledriver (D+A):2 + 30% of target’s remaining HP.

Python Drop (F+A or B+A during jump when near standing opponent): 8

Spin Breaker: (F, U, A): 5

Tackle (F+A or B+A while running near opponent): 12

Throw (F+A or B+A): 10

 

  • Atomic Drop
    • Giant Swing
    • Gutbuster
      • Giant Swing
      • Piledriver
      • Throw
    • Spin Breaker
      • Giant Swing
      • Gutbuster
        • Giant Swing
        • Piledriver
        • Throw
  • Backdrop
    • Hun Suplex
      • Melon Splitter
        • Flying Bomb
          • Giant Swing
          • Spin Breaker
            • Giant Swing
            • Gutbuster
              • Giant Swing
              • Piledriver
              • Throw
    • Melon Splitter
      • Flying Bomb
        • Giant Swing
        • Spin Breaker
          • Giant Swing
          • Gutbuster
            • Giant Swing
            • Piledriver
            • Throw
  • Body Press
    • Backbreaker
      • Giant Swing
      • Spin Breaker
        • Giant Swing
        • Gutbuster
          • Giant Swing
          • Piledriver
          • Throw
    • Body Throw
  • Gutbuster
    • Giant Swing
    • Piledriver
    • Throw
  • Powerbomb
    • Flying Bomb
      • Giant Swing
      • Spin Breaker
        • Giant Swing
        • Gutbuster
          • Giant Swing
          • Piledriver
          • Throw
    • Giant Swing
    • Gutbuster
      • Giant Swing
      • Piledriver
      • Throw
    • Spin Breaker
      • Giant Swing
      • Gutbuster
        • Giant Swing
        • Piledriver
        • Throw
  • Python Drop
    • Hun Suplex
      • Melon Splitter
        • Flying Bomb
          • Giant Swing
          • Spin Breaker
            • Giant Swing
            • Gutbuster
              • Giant Swing
              • Piledriver
              • Throw
    • Melon Splitter
      • Flying Bomb
        • Giant Swing
        • Spin Breaker
          • Giant Swing
          • Gutbuster
            • Giant Swing
            • Piledriver
            • Throw
  • Powerslam
    • Ground & Pound
  • Tackle
    • Ground & Pound

Models – Bitter

Lt. Bitter
Lt. Bitter

Lt. Bitter

Lieutenant Bitter enemy development. In the original game, character is presented as a slow moving but very quick striking armored knight. However, Bitter’s armor was entirely visual; the only defensive advantage he enjoyed over players was immunity to throws. As throws were simply a more appealing visual combo bookend, even this defense had little to no effect from a mechanics standpoint.

The remake Bitter will gain a slight mobility boost, with greater walking speed, ability to “run” (actually a faster walk), and attack on the move to catch unwary players. He will also be given very powerful defenses to match his armored appearance. Weak attacks of any type will not affect him at all, and bladed weapons will cause half their normal damage. As a last addition, Bitter will use his existing shield slam attack against projectiles… batting them back to potentially hit the originator.

2011_06_13

  • Added running. Visually it is a hustled walk due to lack of running sprites. No where near as fast as most other characters true running capability, but still much faster then normal walk.
  • Added RUNATTACK; a horizontal back stroke with same range as normal sword slash attack.
  • New blocking sprite. Playable version can block indefinitely.

Models – Heartland

Heartland (Bad Bros.)

Heartland (Bad Bros.)

Heartland (a.k.a. Bad Brothers) enemy development. Original game version is a simplistic boss enemy with high range and damage but slow speed and practically no means to defend himself against player attacks.

Updates are to include improved animation, standard upgrades to motion trails, and voice effects. Difficulty increased with slighter higher movement speed, an even longer reach, and near immunity against bludgeoning type attacks. Will also become more effective at close range, with a dangerous bear hug grapple that will severely damage targets.

2011_05_30

  • Removed sprites:
    • False transparency (replaced with true transparent motion blurs):
      • a5
      • a7
      • a9
    • Fall/Pain (replaced with standardized defense poses):
      • p1
      • p2
      • p3
      • thrown1
      • thrown2
      • thrown3
      • thrown4
      • b1
      • b2
      • b3
      • s1
      • s2
      • s3
    • New Sprites
      • 0001, Jump/Land.
      • 0002 – 0005, Decapitation.
      • 0006, Kick blur.

      Motion blurs added.

    • Attack1 (Hammer strike) now steps forward for slightly more range.
      • Hammer smash attack now includes transparent motion trail and steps forward or extra range.

  • Run attack includes landing/jumping frames and dust.
  • Animation offsets tweaked for Kick, hammer Sweep and Hammer Smash. Rang settings also tweaked to ensure each one is used at proper distance.
  • Defense settings added. Now takes .25 damage from bludgeoning attacks. Attackers attempting a bludgeon knockdown are paused briefly and laughed at.

2011_05_31

  • Added grappling animations.

2011_06_01

  • In game profile:

    Resolved animation issue with Heartland performing Bear Hug against another Heartland. Caused by order of damage/bind/flash calls.

2011_06_02

  • Riseattack complete.
  • Need to resolve Special and special2 for AI vs. Player control.

2011_06_03

  • Special sequence completed. Will now toss opponents; a modified version of riseattack will be performed instead if target is immune to grabs.

2011_06_08

  • Playable version can no longer perform “Special2”. It is identical in function to “Special” and intended for AI to break away from infinite combos.

Attack Types

Attack types for Golden Axe need rearranging to accommodate addition of fatalities. As of 2011_05_26 I have cataloged the following:

Type Pain Fall Death Block Notes
Attack1 Normal Normal   Normal Bludgeoning
Attack2 Head knock while kneeling Normal Normal Normal Bludgeoning
Attack3 Unused
Attack4 Collapse to kneel Normal Normal Normal Cut
Attack5 Normal Normal Normal Normal Ax Battler’s level 1, 2 and 3 earth magic.
Attack6 Unused
Attack7 Unused
Attack8 Unused
Attack9 Unused
Attack10 Normal Normal Normal Normal All cutting attacks for playable characters.

Work Log

2010_07_12

  • Start of work log. I cannot recall all of the changes I made today, thus the point.
  • How To Play revamped. I’m not really satisfied due to limitations of the feature and preferably would remove it outright in favor of an in game replacement. Unfortunately the option itself is hard coded into engine’s start menu. Having it do nothing or lead to a blank file would be too unprofessional.
  • Ax’s piledriver damage is now 30% of opponents remaining health + 5 (similar to Mike Haggar in Final Fight). This will make move useful for causing heavy damage to strong enemies without being the end all be all technique of choice.
  • Ax’s powerbomb damaged reduced to 8 from 12.

2010_07_15

  • All remnants of legacy sound players (soun0001(), soun0002()) removed from module and replaced with soun0005.

2010_08_07

2010_09_18

2011_02_13

  • Name based model switching on spawn application in progress. This is to combine NPC, Enemy, and Player versions of a character into a single central model.
  • Work Log separated from Bug & To Do List.

2011_02_20

  • Fixed bflash for Ax Battler.
  • Switched log dates to Big Endian form.

2011_02_21

  • Removed all instances of “loop 0”.
  • Defense pose moved from follow10 to follow51 to comply with standard from my other modules.
  • RUNJUMP and range settings for JUMP added to ax.txt.

2011_02_22

  • Ax’s sidestep is now a roll instead of a jump.
  • Added dust setting to ac_pc staging model.
  • Added extra frame to Ax’s rise animation.

2011_02_23

  • Ax Battler:
    • Removed Lateral High Jump from all models.
    • Added jumpmove 0 1 to all models.
    • Removed “Stats” entry.

2011_03_27

  • ai0002
  • ani0001
  • Longmoan
    • Successfully integrated single model concept. Longmoan is now player type in model sheet and selectable at start screen, but behaves like enemy as a level spawn.
  • common/attack.h rolled into enemy.h
  • Merging of animation scripts to enemy.c (enemy.c is to be moved and renamed).

2011_03_28

  • enemy.h rolled into z_ani.c
  • All slide {x} calls replaced with velo0001 {x} {y} {z}. Slide.h removed.

2011_03_29

  • All remaining scripts from common folder removed. Some functions copied directly to z_ani.c and still need to be given individual files.
  • bgs2 folder renamed to bgs, old bgs removed.
  • scenes2 folder renamed to scenes, old scenes removed.
  • levels folder renamed to levels.
  • Individual constant lists consolidated.

2011_05_16

  • Multiple enemy lifebar and icon display now takes advantage of sprite array feature. This solves issue of integration with conflict with player icons and also allows enemy icons to reflect status. Icons added to individual model sets:
    • Amazon
    • Bitter
    • Henninger
    • Longmoan
    • Skeleton

2011_05_17

  • Removed all instances of entity vars ADBLEND and ADREMAP. They are no longer needed for passing blend and map respectively to draw0001().
  • Upgrade following effect models to Fatal Fury Chroniclesfolder layout.
    • flash

2011_05_20

  • All flash models now moved to ->misc->effects->models->flash->folder layout.
  • Flash models now run spawn0002.c, with spawn0012 eliminated.
  • Flash bugs (wrong size, palette, alpha) fixed and accurate effects added (sword vs. hand vs. blunt, etc.) as part of reorganization.

2011_05_24

  • Fix complete for bind0023; dragon throws now use Defender’s custom flash if it has one.
  • Bad Brother’s flat fall and fall on head added.

2011_05_25

  • Menu text added.
  • Backstep now mapped to Down + Defend (formerly Attack2). This cuts total action keys to four (Attack, Jump, Defend, Magic).
  • Magic fail moved to keyall.c with generic code to work with all characters.

2011_05_27

  • Resolved issue with Ax Battler’s Piledriver and Jump throw knocking himself down. Caused by landframe call being incompatible with engine’s updated landframe array.
  • Added Ax battler’s “Second Strike” general purpose follow up swing to be canceled from several other animations. Still needs motion blur.

2011_05_29

  • Completed Ax Battler’s Second Strike.
    • Motion blur.
    • Cancels.
      • Backattack
      • Riseattack
      • Sidestep
      • Power Swing
  • Replaced all “switch_combo” calls to ani0012.
  • Removed unused functions from z_ani.
    • adjust_ftoss
    • adjust_ftoss2
    • ftoss
    • ftoss2
    • change_slam1
    • change_slam2
    • change_slam3
  • Bone break medium sound (253_0) and model added (bonem).

2011_05_30

2011_05_31

2011_06_02

2011_06_03

  • Resolved issue with draw0001 crashing game on certain stages when an entity touched Z boundary. A simple typo was setting both the fMinZ and fMaxZ to = minimum Z boundary instead of min/max respectively.
  • See Heartland.

2011_06_08

  • Resolved issue with revive on spot system (see bind0017) when player lost lost all lives and continued with different character (thus leaving original character’s corpse behind). If any player later selected the left behind character, script would attempt to warp them to off screen corpse.
  • See Heartland.

2011_06_13

2011_06_14

  • Removed script functions/files:
    • scripts\drain.c
      • Used to gradually remove life when playing skeleton mode in GA Remake. Skeleton will be playable as normal bonus character without drain effect.
    • data\levels\duel\sleep.c
      • Cause crowd to attack by setting “sleep” global var to NULL(). A validation in each individual model’s looping SLEEP animation would then set model’s animation to IDLE and stealth property to 0.
    • data\chars\skeleton\scripts\npc_ani.c
      • Rolled into data\scripts\ z_ani.c
  • Removed global variants.
    • countdown
    • cstring
      • Support for drain.c.
    • levelmaxz
    • levelmaxz
      • Replaced with openborvariant() calls.
    • inscreen
    • sleep
      • See sleep.c above.
  • Removed models.
    • data\chars\gilius\g_npc.txt
    • data\chars\tyris\t_npc.txt
      • All versions (NPC/PC/ENEMY) to be rolled into single model.

2011_06_27

  • Holdblock capable characters no longer use special unless they are actually in pain (see z-spawn and keyall).
  • See Ax Battler.

2011_07_26

  • Several minor script updates and fixes.
  • See Ax Battler.

2011_07_31

  • Added EX1 and EX2 defense poses to several models (will complete during individual model phases) to accommodate Golden Axe’s odd offsets when binding self to target instead of target to self.
  • See Ax Battler.

2011_07_26

  • Several minor script updates and fixes.
  • See Ax Battler.

2011_07_31

2011_08_31

2011_09_01

2011_09_06

2011_09_07

2011_09_19

2011_10_19

  • Fixed wall0001 function.
  • Replaced TLTDN with proper Tilted Down sprite for all characters. Old TLTDN (custom lift pose for Golden Axe) moved to EX3.

2012_01_11

2012_02_07

  • z_hit now calls function function hit0004, made from z_hit’s original code.
  • soun0005 now includes a final entity check. This fixes bug where entity killed with killentity() would still send call to soun0005, which would then result in empty string call, and ultimately a shutdown by string functions.
  • See Tyris Flare.

2012_08_21

  • Chicken now releases opponent in FALL7 (Fall on head) pose.
  • See Ax Battler.
  • All remaining known instances of “openborconstant” in chars folder replaced with preprocessed constants from constans.h.

Variants List

Listing of known global variants used in Golden Axe Remake. Many of these are holdovers from Utunnels original scripts and can be eliminated or replaced with value retrieval.

Note this is not an accurate count, as some name strings are created by inserting a relevant index to simulate an array. Binding, shadow trails, and auxiliary damage system all operate in this manor. The door spawn system appears to use a similar technique, but it is a carry over from Utunnels coding that I have not yet viewed in detail. I would also like to convert the names to Hungarian Notation, but for now I think best to leave them be.

  1. corpse
  2. adder
  3. snake
  4. inscreen
  5. a_npc
  6. p
  7. dummy
  8. al_npc
  9. wake
  10. smallexp_count
  11. largeexp_count
  12. bbdelay
  13. g_npc
  14. “player”+index+”mp” (index = player index)
  15. darkone
  16. sleep
  17. levelminz
  18. levelmaxz
  19. t_npc
  20. doorindex
  21. “doortimer”+ind (ind = door index. Unknown how index is assigned).
  22. “doorspawn”+index
  23. “dooralias”+index
  24. “doormap”+index
  25. release
  26. pal
  27. maxpal
  28. sdx
  29. sdz
  30. addtime
  31. darkskeleton
  32. “trailer”+k+”.s”
  33. “trailer”+k+”.x”
  34. “trailer”+k+”.z”
  35. “trailer”+k+”.a”
  36. “trailer”+k+”.f”
  37. “trailer”+k+”.c”
  38. “trailer”+k+”.color”
  39. “trailer”+k+”.alpha”
  40. “trailer”+k+”.m”
  41. pot0
  42. pot1
  43. runanimal
  44. bbdelay
  45. countdown
  46. cstring
  47. player0mp
  48. player1mp
  49. player2mp
  50. “pot”+(c%100)
  51. doortimer1
  52. doorspawn1
  53. doormap1
  54. doortimer2
  55. doorspawn2
  56. dooralias1
  57. dooralias2
  58. doormap2
  59. switch
  60. etime
  61. time1
  62. time2
  63. vSelf + “.bind.” + iIndex (grappling binds)
  64. “hit”+i+”.a”
  65. “hit”+i+”.c”
  66. “hit”+i+”.t”
  67. “hit”+i+”.d”
  68. “hit”+i+”.k”
  69. “hit”+i+”.o”
  70. debug_bind0010_iMode
  71. debug_bind0010_iIndex
  72. debug_bind0010_iPose
  73. debug_bind0010_iX
  74. debug_bind0010_iY
  75. debug_bind0010_iZ
  76. debug_bind0010_iDir
  77. debug_bind0010_iFrame
  78. debug_bind0010_Rebind

Bind & Punishment

A last issue with my current throwing system was allowing the grappled entity to be attacked or otherwise affected by entities other then the one grappling it. While already possible, doing so caused an offset issue where characters would appear to teleport briefly when taking damage. In addition, it was important to immediately run the @bind0010 whenever attacker damaged defender.

The cause is due to OpenBOR overriding the current bound animation with whatever pain or fall animation an attack would result in. Only by manually reestablishing the bind could this be dealt with. Easy enough to take care of for the primary attacker (adding another @cmd bind0010 directly after the damage command as mentioned above). For outside interference however, the solution is a bit more involved.

My first attempt was to look for an existing bind and reapply it during the takedamagescript event. That effort was a complete failure. Further expermentation reveled something I already knew and had simply forgotten; takedamagescript runs before pain/fall animations are applied. this is in fact the very reason I had added onfallscript and onpainscript events to the engine.

After realizing this I knew it would be easy enough to reapply the bind using onpain/fall events, but it also meant bind offsets could not simply be calculated with math (they no longer exist and the entity has been moved). Ultimately, offsets and animation settings must be stored on the bound entity. So the bind0010 function was given needed modifications to perform the storage and a new function that reestablishes binds during pain/fall events was created.

Overall I am happy with the solution, except for having to establish more variables. I would much prefer to calculate the bind offset via formula and apply it. While theoretically possible to do that, at the very least the anchor entity and defender’s bound animation have to be stored, so best to go ahead and store the rest to ensure the bind will always be set as it was.

On a more disconcerting and extremely annoying note, MS Visual Studio no longer prints or exports code with color formatting . MVPS technicians tell us they didn’t have time to implement it. Funny thing, all previous versions had it. So what, they didn’t have time to not take something out? Adding insult to injury, the line numbers still print in color… really?

bind0010_09182010
bind0020_09182010

Select Screen Shenanigans

Original select screen in Golden Axe Remake was functional, but insufficient for needs of Golden Axe Hackjob. Primary concerns were the following:

  • Main selectable characters each having to accommodate for the others colors within their palettes. This severely limited color choices. For example, Ax could not be given the 2p color palette from Golden Axe The Duel. Doing so required changing his weapon colors, which were shared with Tyris Flare’s clothing.
  • No true carousel effect. While characters were displayed in a ring, they simply swapped location when cycled instead of rotating as in the arcade original.
  • No name display. At no point are characters ever identified. While not a great issue for the the original characters, this is a problem when introducing others.
  • No accommodation for extra characters. It would be rather jarring and unprofessional looking for alternate choices to be inserted into selection cycle when not appearing in “ring” of visible choices.
  • Non selected characters are “burned” when a choice is confirmed. The fire effect used lacks transparency and thematically does not match the various improved effects used throughout the module.

To solve this problem, I decided to use a series of blank silhouettes to serve as the carousel. As characters are cycled, the blank silhouettes rotate in place, then the front silhouette is replaced by current selection. This would allow infinite addition of selectable characters while maintaining the theme.

The original plan was for the silhouettes to be displayed by a separate entity, with rotation direction determined by left/right key press. Unfortunately scripted spawns during the selection screen results in a shutdown. Attempts to make use of the summonentity/spawnentity command also proved unsuccessful; during selection screen these commands are ignored.

This only left having the silhouettes be part of main entity. Main issue was adding a color for the silhouettes to characters with palettes firmly established. I worked around the problem by using the entry 255 in each character’s palette as the silhouette color. In addition to getting around the laborious process of “inserting” a color to existing palettes, it also meant only the palette images needed modification as opposed to every single sprite.

Having the silhouettes displayed within main entity also solved any timing issues, though it did mean rotation would always be in same direction. I was worried unidirectional rotation would look jarring, but in practice it works quite well. The rotation itself is achieved by a “brute force” approach; a series of sprites drawn to give the illusion of a carousel are played as part of the “wait” animation. The memory consumption is minimum however, as the rotating silhouette sprites are reused by every selectable character.

Name display is also part of the main entity, and its color issue was solved in the same manor, except with use of  color entry 254.

The burn effect was the last problem to overcome, but was easily solved. It is achieved by launching a non moving projectile on selection confirmation. While it would have been impossible to use this method for the silhouettes due to timing issues, it works perfectly for burning and allows use of transparency.

As a last touch, the location of each character was widened for more room and player 1 was placed in the center (this module allows 3 players). Player 2 is on the far left, player 3 on the far right. Along with improving aesthetics, by making these changes I have added yet another obstacle to any short sighted attempts at Dreamcast porting.

General Changes (vs. Golden Axe Remake)

Optimizing:

Due to a large amount of new content, this module is larger and more demanding in general than the original. It also requires far more front loading. However, all practical optimizations have been applied, many that were not plausible when the original was made. This new version is thus quite a bit more compact and efficient “pound per pound” then its predecessor.

  • All new sprites are in .png format using maximum compression possible with Adobe Photoshop CS4. These are about 30% smaller on average then .gif counterparts.
  • Existing sprites for all characters have been replaced with .png, reducing size by about 150KB per character.
  • Through use of script and new palette capabilities, many superfluous sprites have been removed outright. For example, Red and Blue Dragons are no longer separate sprite sets, saving about 70KB per character.
  • Sound effects have been further trimmed to reduce their size.
  • Several loaded models have been eliminated by consolidation and script manipulation.

Presentation:

  • All in game sound effects are now played in location based stereo. If you KO someone on the right side of the screen and you have stereo speakers, you’ll hear their death scream from the right!
  • All stage music re-mastered with stereo, using OpenBOR’s recently added .ogg vorbis support.
  • Simulated transparency via blinking images has been replaced with true transparent motion trails.
  • Life bar replaced with blocks as in the arcade Golden Axe, with the added feature of individually changing color as they are depleted ala Altered Beast.
  • Nearly every single animation in the module has been tweaked for greater fluidity (fully animated idle stances, more precise timing, transitions for jumps/landings, additional frames for existing moves, etc.).
  • Dust effects added for jumping, landing, falls, slams, and so on.
  • Almost all particle effects have been retouched or replaced outright to take full advantage of OpenBOR’s transparency capabilities.
  • Entities stepping off a platform now assume their jump animation instead of “walking on air”.
  • Common enemy KO wails are randomized for variety, and all characters have far more extensive voice sets.
  • A multitude of new sounds have been added in general. As the battle rages, characters on both sides goad, shout their war slogans, call for aid, and so on. In addition, all “BOR” sounds used in the original remake have been replaced with samples taken from the real Golden Axe where a version existed.
  • Color correcting has been made on several characters whose palettes did not match their arcade counterparts (Amazon for example).
  • Player characters can now choose from several color schemes. Gillius for example, can choose between original arcade colors, either of the Gillis Rockhead color sets from Golden Axe Duel, or his colors from the Genesis port.

Gameplay:

General:

  • Bizzarians are now much more dangerous. While riding a bizzarian it is now possible to block, perform a wider array of grappling moves, and execute a more powerful version of the animal’s normal attack by holding and releasing the attack button. In addition, opponents being held by a bizzarian cannot immediately special out (it is still possible to escape, but only after a delay). Bizarians also have use of all the new movement options (lateral jumps, dashes, etc.)
  • A lot of minor adjustments for balance. Damage, move speed, and other aspects have been tweaked to try and make all characters/moves useful in their own way.
  • Overall difficulty increased to compensate for more powerful player characters.

Playable Characters:

  • Two new characters added: Alex the soldier and special guest Joe Musashi. These are not just random additions; their presence is explained in game and their mechanics are designed to be unique while still meshing appropriately with the three original heroes.
  • Vast array of new techniques have been added to each character’s individual move list. Most are direct takes or inspirations from moves seen throughout the Golden Axe series, but some are new or have new mechanics. Look for chain throws, long range attacks, and so on.
  • A variety of tag team moves are available, including tag team magic.
  • Characters are now more unique in relation to each other. As a few examples:
    • Tyris attacks are on the whole slower and weaker then Ax’s similar counterparts and she cannot withstand a large amount of damage. On the other hand she can control her magic level, possesses incredible agility, and has a few other surprises for unwary foes.
    • Ax has all around ability and can perform painful chain grabs for big damage.
    • Gilius has the most pedestrian move set, but is evasive as ever, soaks up tons of damage and deals it out in spades with the most powerful and longest reaching attacks.
    • Joe lacks melee range and his attacks require precise timing to land properly. Yet he has speed second to none, striking power on par with Ax, and a vast arsenal of tricks to call upon – inducing powerful magic and help from faithful dog Yamoto.
    • Alex is the weakest fighter in general, but he comes with some unique tricks and is good at supporting others.
  • All PCs except Tyris have a lateral “up” and “down” jump command. This allows you to move to a “higher” platform along the Z axis (Tyris only has the “up” version, as she can already move laterally while jumping).
  • All PCs have a back dash (A2 Button).
  • All PCs can dash laterally (UU or DD).
  • All PC’s have a specific charge attack move.

AI Controlled (NPC’s/Enemies)

All:

  • Can now get past obstacles and platforms along Z axis by jumping laterally onto or over them.
  • Can dash backward or laterally.
  • AI now has access to a Bizarian’s entire move list when riding; including all previous and newly added abilities.
  • No longer become less aggressive when riding Bizarians (in fact, they are usually more aggressive now).

Amazon:

  • More aggressive.
  • Can block, and will always do so if player attacks from the air.
  • Has counter throw move ala Geese Howard. She will use it whenever blocking an attack or as her breakaway special on any non grapple immune opponent.
  • Can toss her axe at distant opponents.
  • Lunges forward instead of “treadmilling” during melee attacks, giving them better visual appeal and even longer range.
  • Can grab opponents and perform a Neckbreaker slam or german suplex.
  • “Dark” version can teleport behind a player and grab them instantly.

Bug List

Known Bugs/Issues:

Major

  • Characters cannot use jump attack while holding left/right. 07122010 – Direction key check, and by extension disabling of other keys was for both hold & press. Removed hold check.
  • Ax’s Powerbomb and Gutbuster always KO opponent regardless of remaining HP. 07122020 – Copy and paste errors switched drop and damage properties.
  • Enemy life meter remains on screen after being KO’d by Ax’s Piledriver. 07122010 – Damage and bind release were occurring on same frame.
  • Thieves do not giggle when idle. 07122010 – Old sound command was still in place. Replaced with soun0005() function.
  • Meat carrying thieves are not remapping to green. 07122010 – Alternate palettes were typo’d as “palette”.
  • Bad sound reference: Error, soun0009; Sample: – data/sounds/punch3.wav, Model: amachick. 07152010 – Caused by remnants of older sound scripts. Removed and replaced with current system.
  • Amazon never performs axe throw. 08082010 – Was previously disabled for debugging and never re-enabled.
  • While in throw bind, character can hit enemies as well as allies. This appears to be an engine bug with projectilehit property, but needs thorough review.
  • Wall fail-safe and wall throws triggering when on top of wall/platform. 08072010 – Fixed by adding check for current base of self for wall alt and bound for fail-safe.
  • Alex’s bow shot causing shutdown. Error reports attempting to set animation for effe0002, even though projectile is effe0001. 08072010 – Caused by combination of backward compatibility in projectile function and new select screen burn effect. If model level projectile is defined, script function projectile() ignores its own model parameter and uses model level projectile instead. Fixed by moving burn effect entity from model level to animation level.

Minor

  • Sound system, soun0005() in particular works as designed but is extremely sub optimal with several loops and no sanity clauses.
  • Characters hit by attacks when in throw bind appear very briefly out of place. Not technically a bug. It is due to large offsetting difference caused by small sprites and the need to keep actual locations well above ground while visually near, on, or in it. Resolved.

To Do:

  • Add headband to Ax Battler’s portrait (so color selection is visible during game play screen).
  • Add sound effect when picking up magic jars and food.
  • Auto platform jump working on improper animations.
  • Upgrade grappling scripts to new index based type.
  • Fix alternate attacks against thieves.
  • Fix collision boxes for rise attack.
  • Second attack in attack string not hitting at very close range.
  • Add wall alts for grappling.
  • Upgrade weapon models to new standard.
  • Fix palettes to allow remapping.
  • Replace particle effects for magic.
  • Upgrade sound effects to new random based script type.
  • Add startframe and landframe to RUNATTACK.
  • Add grab alternate to special.
  • Replace flashing based shock and burn animations with remap + particle effect.
  • Add dust effect to jumps and landings.
  • Add jump grappling options.
  • Replace old forward throw with powerbomb.

Wall Fail-Safe

All working entities now ensure that throw victims are safely deposited outside of walls.

All working entities now ensure that throw victims are safely deposited outside of walls.

Wall fail-safe retrofit complete for following:

  • Amazon w/Chickenleg
  • Amazon w/Blue Dragon
  • Amazon w/Red Dragon
  • Amazon
  • Alex w/Chickenleg
  • Alex w/Blue Dragon
  • Alex w/Red Dragon
  • Alex

Considering addition of wall alternates for Amazon, Chickenleg and Dragon throws. For now will leave as is.

Alex

Alex fires his bow.

Alex now has all wall throw alternates complete.

Also gains ability to use a bow; ammunition is unlimited and up to three shots can be fired in series. Arrows inflict mild damage individually but cause normal attack stun, making it easy to pin down a single target. For balance, each successive shot results in cumulatively additional recovery time, so it is risky to use during solo play. Should add to Alex’s overall multiplayer oriented character design.

Bow is displayed using Alex’s bound effect model (motion blurs, etc.); fired arrow is part of the general effects entity.

Need to add wall shunting to Alex’s creature models; character should then be complete.

Update.c

Scripted HUD allows infinite design possibilities, but is processor intensive and requires careful update script coding.

Further refinements made to update.c script. Overall use of variables reduced and some variant retrieval moved out of nested secondary loops. A bit of general cleaning done as well.

Probably just micro optimization, but update.c’s two hundred per second execution frequency makes any trimming worth while.

update_05262010_1200
update_05272010_1416

Update.c optimizing, HUD, & wall shunting II

HUD generation no longer requires alternate weapon models to display correct icons.

HUD generation no longer requires alternate weapon models to display correct icons.

The mpicon icon concept was successful, albeit as iconmp. It is now possible for enemy and player versions of any character to use same weapon model. Fitted to Amazon, Longmoan, Bad Brothers, and Henninger models. Will fit to others during individual retooling.

Update.c optimizing, HUD, & wall shunting

Unique HUD elements seen are now generated by single loop.

Single pass optimizing successful in update script. Separate loops displaying HUD objects for players and enemies are now consolidated, with redundant code parsed into smaller functions. Had added benefit of only needing to check death status instead of “KO” palette for toggling enemy HUD display; dead enemies not yet configured with KO palette no longer clog HUD row. Now need to try mpicon in place of icon for enemy HUD icons. This is due to weapon models requiring their own icons. In addition player and enemy icon images are of differing size and style. Therefore a separate weapon model would be needed for player/enemy versions of every character, resulting in unacceptable levels of bloat and redundancy. Wall shunting also proved successful. When called, function bind0018 shunts binding entity away from wall if any bound entity is current within wall bounds. By calling just before bind release, this will prevent bound entities from being stuck inside wall or infinity juggled by wall bounce function. Main purpose is to make sure grapple moves deposit defender(s) outside of walled area. With some refining, could also be adapted to create specific wall based grapple moves. bind0018_05262010