设为首页收藏本站同能贴吧 切换语言 繁体中文
开启辅助访问 切换到窄版
扫描二维码关注官方公众号
返回列表
+ 发新帖
查看: 96|回复: 0

[制作教程] A Critique on the Default Target System

[复制链接]
累计送礼:
0 个
累计收礼:
1 个
  • TA的每日心情
    开心
    前天 04:10
  • 签到天数: 209 天

    连续签到: 2 天

    [LV.7]常住居民III

    4452

    主题

    864

    回帖

    2万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    7
    卡币
    22911
    OK点
    16
    推广点
    0
    同能卷
    50
    积分
    28257

    灌水之王

    发表于 3 天前 | 显示全部楼层 |阅读模式

    This article discusses the targeting system in the default battle system in RPG Maker VX Ace. The purpose of this article is to understand how the target system works, and determine whether it is designed well. I provide a number of examples of different game mechanics that I use to put the target system to the test.

    What is Targeting

    In the context of battle actions (or actions in general), targeting refers to the object that an action will be used on. For example, you want to cast a Heal spell on your ally. We say that the ally is the target of your healing spell. Similarly, if you want to attack a Slime, we say the Slime is the target of your attack.

    Target Scope

    All items and skills have a scope. You can see the list of default scopes in the database editor. Check the help file for a description of each one, but they should be self-explanatory,



    The scope determines who you may select as a target.

    The Ally and the Enemy

    The scope uses terms like "ally" and "enemy" to describe who the targets are. Recall that the default battle system consists of two units of battlers: the party and the troop. The party holds all of the actors, and the troop holds all of the enemies.
    Every battler has their own idea of who an ally is, and who an opponent is. For actors, allies are members in the party, and opponents are members in the troop. You can verify this in the Game_Actor class
                    Code:       
    def friends_unit  $game_partyenddef opponents_unit  $game_troopend

    For enemies, the opposite is true. You can verify this in the Game_Enemy class.

    Overview of the Targeting Workflow

    Now that the basics are out of the way, we look at how targeting is implemented. This is the general workflow in the default battle system, supposing that you want your actor to attack an enemy.

    • Battler's turn comes up
    • Battler selects a skill (eg: Fire)
    • The engine checks the scope of the skill and determines that it may target "one enemy"
    • The engine brings up the target selection window asking you to select a target
    • The battler chooses to cast fire on the first enemy
    • A Game_Action object is created with the index of the target (zero, because Ruby) and the skill set as the action
    • When the action is executed, the information is used to apply the skill to the correct enemy that you've selected
    This sounds straightforward: you pick an enemy, and the skill is applied on the enemy. That is exactly the behaviour you expect. Let's look at some of these steps in detail.

    Target Selection

    When you select an item that allows you to select your target, a target window will appear. There are two separate windows: an actor selection window, and an enemy selection window. Depending on whether the scope targets allies or enemies, the appropriate window will appear.

    If an actor selects a skill that targets allies, then the actor selection window will appear showing all of your allies



    If the skill targets enemies, then the enemy selection window will appear showing all of the enemies that can be targeted



    Target Index

    Once you have selected your target, the engine determines the target's index. In the default engine, every unit has an index. The index represents their position in the unit. If you think of your party's formation, the leader is in the first position (index 0), the first follower is in the second position (index 1), and so on.

    Your index is not necessarily related to where you appear on the screen. Indeed, enemy indices are based on the order that they are added to the troop (you can read more about troops in this tutorial), but you can place them wherever you want on the screen.

    Action Target Adjustment

    Recall that the target index is stored with the action when the action is created. In the default battle system, actions not executed immediately. Instead, they are queued up and will be executed when the battler's "action phase" comes around.

    When the action is executed, a separate set of methods are used to determine the actual battler which the action's skill or item will be applied to. Furthermore, if the target is no longer available, the battler doesn't simply cancel their action. Instead, the action will automatically be applied to the next available target. If no available target exists, then the action will be canceled.

    So for example, you wanted to heal a wounded ally. However, before you could cast your spell, the enemy attacks and your ally dies. Now, when you try to cast your heal spell, the target is already dead...but the skill doesn't apply to dead allies, so it will try to find the next available ally that is alive and automatically sets that as the target.

    You can refer to the make_targets method in Game_Action to see how it is done.
     
    Analysis of the Default Target System

    Read my analysis of this system at HimeWorks!


    本贴来自国际rpgmaker官方论坛作者:Tsukihime处,因国际论坛即将永久关站,为了存档多年珍贵资料,署名转载到本论坛存档,由于官方帖子为英文原帖,需要中文翻译请点击论坛顶部切换语言为中文就可以将帖子翻译成中文浏览,方便大家随时查看,原文地址:https://forums.rpgmakerweb.com/threads/a-critique-on-the-default-target-system.34120/

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x
    天天去同能,天天有童年!
    回复 送礼论坛版权

    使用道具 举报

    文明发言,和谐互动
    文明发言,和谐互动
    高级模式
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    简体中文
    繁體中文
    English(英语)
    日本語(日语)
    Deutsch(德语)
    Русский язык(俄语)
    بالعربية(阿拉伯语)
    Türkçe(土耳其语)
    Português(葡萄牙语)
    ภาษาไทย(泰国语)
    한어(朝鲜语/韩语)
    Français(法语)
    关闭

    幸运抽奖

    社区每日抽奖来袭,快来试试你是欧皇还是非酋~

    立即查看

    聊天机器人
    Loading...

    QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

    GMT+8, 2026-7-14 15:25 , Processed in 0.104468 second(s), 55 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

    快速回复 返回顶部 返回列表