Thoughts on Implementing a Skill System

本文深入探讨了游戏《LAVO》中技能系统的构建过程,包括被动与主动技能的分类,技能点投资机制,以及技能如何通过事件触发来影响游戏玩法。文章还讨论了技能难度平衡、技能树设计及技能在游戏对话、敌人互动中的应用,旨在创造更沉浸的游戏体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

The game I’ve been working on for nearly two years—a game I’ll refer to as LAVO without yet explaining the abbreviation—has a skill system that we are currently hammering out. What was originally an idea for a shmup has effectively become an RPG that uses shmup mechanics for combat. And a system of player-character skills is a staple element of RPGs that we use. Today I feel like rambling aimlessly about the design and implementation.

 

Two Types of Skills

We have not settled on a final list of the skills in LAVO, but currently they all belong to one of two categories:

  1. Skills which passively increase base statistics, e.g. Regeneration affects the character’s healing rate.

  2. Skills which confer an active ability, e.g. Hacking for getting information out of in-game computers.

The player improves these skills by investing skill points, a common mechanic, to increase their level. The higher the level, the more effective the skill. But how do we actually use the skills in the code? Events. Every skill has three events:

  1. onLevelUp
  2. onCheckSuccess
  3. onCheckFailure

We can associate an arbitrary number of actions (almost always functions, sometimes coroutines) with each event. The conditions under which the game triggers onLevelUp are hopefully obvious. But the other two are not so clear. The way we ‘check’ skills for success or failure is right out of Dungeons and Dragons:

-- This method performs a skill check.  It accepts a number
-- representing the difficulty of the check; the higher the number,
-- the more difficult it is for the check to succeed.  The method
-- returns a boolean that is true if the skill check is successful,
-- but the logic for determining success can vary from skill to skill.
-- The implementation below is the default, but individual skills may
-- override this method.
function Skill:check(difficulty)
    local result = self.points >= difficulty

    if result == true then
        self.events["onCheckSuccess"]:trigger(self)
    else
        self.events["onCheckFailure"]:trigger(self)
    end

    return result
end

We have yet to work out a standard for difficulty though. Assigning a difficulty check as a number is entirely arbitrary. For example, what does it mean to say opening a lock has a difficulty of twenty? Semantically it is meaningless, yet a big challenge of designing the skills is to find a fair balance in these arbitrary values.

Looking for All Manners of Incorporation

I am doing my best to keep my eyes open for utilizing skills in all kinds of ways. The most recent example is a boss who has a roar that stuns the character. However, if her Pilotingskill if high enough then she is not completely frozen; she can continue to move in small amounts. This mechanic will work for (almost) all enemies who have paralyzing attacks.

Personally I like the idea because it makes skills an active part of the game even though the player is not actively invoking them via a menu or what have you. Even though it is a ‘passive ability’, skill points investing in Piloting actively affect the gameplay. I would like that to be true for as many skills as possible. Another example is Conversing. When the player is having conversations and sees dialog choices there will be some grayed out because the character’s Conversion skill is not high enough. In this way the game mirrors the mechanic of ‘Fallout 3’. As the character improves her Conversing the player will see these dialog choices become brighter in color, showing that they are closer to being a viable choice.

I believe that the more the skill system can tie into all aspects of the game, the less players will feel like spending skill points is a tedious RPG chore.

Skill Tree or No?

This is another oft-used game mechanic on which we’ve yet to reach a decision. Currently the skills do not form any hierarchy. In that regard the skills are similar to those of most Elder Scrolls games. I feel this provides the player with some level of comfort and safety when it comes to spreading around skill points. Conversely, when I play a game with skill trees I feel more motivated to pick a small number of skills and invest heavily in them; I suspect other gamers have the same mentality.

It is hard to explain why but I feel like a skill tree would not fit with our game. Perhaps a system by which skill increases unlock ‘perks’, again as in the more recent Elder Scrolls games; skill trees are not necessary for that mechanic.

In the near future I am going to experiment with some different approaches and will return with another meandering blog post about what feels best.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值