Made by following the course GameDev.tv RPG Bundle
Notables points:
- C# intermediate coding with interfaces, delegates, and co-routines.
- Prevention of Race conditions.
- Cinematic creation with Cinemachine, Timeline, DollyTrack, and Animator.
- Saving system, with Dynamic Resource Loading. Interact with the others systems (Inventory, Quests tracker, Health and attributes, Position, Shops, etc).
- Combat system
- Different weapons, with different attacks speed and others attributes, animations, range, models, sound effects, etc.
- An Health system of course.
- Pathfinding with patrolling for the enemies.
- Quests and Dialogues
- Conditional dialogues like having access to a different dialogue once a quest has been completed (can be see in the first video at 3min49s).
- Conditional dialogue tree (like having access to a npc response only if you have a specific item, and enough stats, or have already done another quest). Build with a custom inspector window.
- Quest system, with modulables objectives. Like finding an item, or killing specifics enemies.
- Inventory and Equipment
- Drag and Drop (and double-click) to swap items between inventory, equipment, and the action bar.
- Some items are equipable at specific equipment positions. They will influence the stats (like damage, defense, health, mana, etc). And can be equipped only if requirements meets. For example in the demo, the Holy Sword require a Strength value of 4.
- Some items are consumables, and can only be placed in the Action bar, and use on it.
- Some items are abilities, are not consumables, and can be used if placed on the Action bar. Generally with a resource cost (mana and/or cooldown).
- Some items are quests items, and can’t be consumed, and serve only for quests.
- The enemies have a drop table, with differents items and drop chances.
- Abilities
- Build using the Strategy Pattern. Each Ability is a ScriptableObject, with multiples field (like mana cost, cooldwon, etc), but most importantly 3 parts.
- Targeting Strategy. An abstract class (also ScriptableObject) which is extended by the different types of targeting that will determined how the targets are selectionned. Exemples : AoE selection (with a Physics.CastAll), Mouse selection, Self-casting (on the player object), etc.
- Filter Strategy. Same principle. It is used after the targeting, and will filter the targets acquired by the kind of filters that we want. Exemples : by tag, by having a specific component implemented, by having a certain value on a stat ( % health), etc.
- Effect Strategy. The effects of the abilities. Could be really many things. Taking damage, healing, visuals effects, sound effects, influencing the stats of the targets (slow, debuff, boost), etc.
- Shops
- The player have a purse with a currency tracking. In the demo, we just refer it as “Gold”.
- Buying and Selling, back and forth. With a stock tracking.
- Filters on items type (like Weapons, Armour, etc).
- Price are influenced by stats (charisma in the demo).
- Stats and Traits
- An classical experience system, with different levels. We gain experience by killing enemies, and completing quests.
- Different stats like Health, Mana, Mana regeneration rate, Armor, Damage.
- Different Traits influencing different stats. For exemple the Strengh influence the damage, the Dexterity influence the armor, the Constitution influence the health, the Influence influence the mana and mana regeneration, and the Charisma influence the shops prices.
- We gain Trait points when we gain a level.