[Tech Discussion] Exploring Implementation Approaches for the Damage Number Display System [Resolved in v1.3.2]

Original Chinese Text

How do I create a damage display text?
My current implementation process is:

  1. Bullet / damage box hits the target’s hitbox
  2. Lock onto the target object
  3. Calculate damage value and store in a variable
  4. Generate a child object (damage text)
  5. Child object inherits the damage value and displays it

Is there a better solution or built-in AGM nodes that can simplify this process?

//

English Translation

Title: [Technical Discussion] Optimal Solutions for Damage Number Display System

Description:
I’m currently implementing a damage display system with the following workflow:

  1. Projectile/damage box collides with target’s hitbox
  2. Lock onto the target object
  3. Calculate damage and store in a variable
  4. Spawn a child object (damage text)
  5. Child object inherits damage value and displays it

Is there a more efficient way or built-in AGM nodes that can simplify this process?

//

Japanese Translation

Title: 【技術討論】ダメージ数値表示システムの最適化に関する考察

Description:
現在、以下の流れでダメージ表示システムを実装しています:

  1. 弾丸 / ダメージ判定が敵の当たり判定と接触
  2. 対象オブジェクトをロック
  3. ダメージ値を計算し変数に格納
  4. 子オブジェクト(ダメージテキスト)を生成
  5. 子オブジェクトがダメージ値を受け取り表示

このプロセスを簡素化する AGM プラグインの組み込みノードや、より効率的な実装方法はありますか?

New Issue: AGM cannot lock general variable types, only variables specific to a single object; PGM (Pixel Game Maker MV) allows locking and modifying variables by referencing their entry names.

//
[Tool Issue] Variable Locking Limitation in AGM vs PGM MV

AGM limitation:

Can only lock variables specific to a single object, not generic variable types.

PGM (Pixel Game Maker MV) capability:

Can lock and modify variables globally by referencing their entry names, regardless of the object.

//

[Tool Issue] Variable Locking Limitation in AGM vs PGM MV

AGM (ACT Game Maker) limitation:

Can only lock variables specific to a single object, not generic variable types.

PGM (Pixel Game Maker MV) capability:

Can lock and modify variables globally by referencing their entry names, regardless of the object.

If you delegate damage calculation processing to AGM’s basic processing, the “taken_damage” variable in the “VariableSettings” node is useful.
This variable automatically stores the amount of damage received when damage is taken.

By utilizing this, child objects (damage number objects) can reference the “taken_damage” variable of the parent object (the object that took damage) and inherit the damage value.
Since the child object only unilaterally references the parent object’s value, this approach may be somewhat more efficient.

However, if the child object receives another instance of damage before referencing the parent object’s “taken_damage,” the variable will be overwritten with the value from the new attack, leading to incorrect references. Therefore, controlling this time lag may be a key point of attention.
Typically, invincibility frames can resolve this issue.

With this way of using variables, child objects can only correspond to a 1-to-1 parent object.
For example, if you create a UI for displaying damage, it cannot support a mechanism that “displays damage for all objects in a common way.”

In contrast, the variable system in Pixel Game Maker MV functions as database-like global variables.
As long as the variable names match, it allows sharing and modifying values across multiple objects in a 1-to-many relationship, without the limitations seen in AGM. This flexibility in collaboration is a major difference.

That was indeed the case. This is a problem…

Changed to another method, meow!
Switched to the method of “generating objects and displaying damage numbers at the timing of taking damage,” so we’ll observe future behavior.

With the 1.0.7 patch, it is now possible to reference variables of parent objects that are not at the specified file path!
(For detailed specifications, please refer to the patch announcement.)

We sincerely thank the AGM administration for their consideration!

Thank you very much!!!
Thank you very much!!!

1 Like

Thank you for your patience.
We have newly implemented a damage value display system.

Thanks to the official team, I’ll go test it out.

1 Like