Psychic / Telekinesis Combat
Framework for implementing psychic / telekinesis combat in games, covering the core loop, edge cases, and integration points.
Overview
Psychic / Telekinesis Combat represents a design pattern that establishes rules governing player behavior and system responses. The implementation varies significantly across genres, with each game adapting the core concept to fit its specific design goals and target audience. Cross-genre adoption of this mechanic demonstrates its versatility and fundamental appeal to players across different gaming preferences.
Game Examples
Metroidvanias
Metroidvanias use this mechanic where players solve environmental puzzles to optimize their strategy. The system rewards both skill and knowledge, resulting in high replayability.
Survival Games
Survival Games use this mechanic where players explore the environment to reach the highest tier. Emergent gameplay arises from simple rules, resulting in risk-reward tension.
Stealth Games
Stealth Games use this mechanic where players coordinate with teammates to create unique character builds. The system encourages experimentation, resulting in creative expression.
Pros & Cons
Advantages
- Balances tactical against tactical effectively
- Reduces monotony while maintaining challenge
- Reduces frustration while maintaining challenge
Disadvantages
- Requires significant UI/UX work to implement well
- Difficult to balance across a wide range of skill levels
- Increases CPU requirements significantly
- Can create overwhelming when RNG is unfavorable
Implementation Patterns
Combo Validator
Data-driven implementation that loads psychic / telekinesis combat configuration from external definitions.
class PsychicTelekinesisCombatSystem {
phase = "active";
countdown = 0;
update(deltaTime: number) {
this.countdown -= deltaTime;
if (this.countdown <= 0) {
this.transition();
}
}
transition() {
switch (this.phase) {
case "active":
this.phase = "waiting";
this.countdown = 1.5;
break;
case "waiting":
this.phase = "active";
this.countdown = 1.0;
break;
}
}
}Aggro System
A modular approach to psychic / telekinesis combat that separates concerns and enables easy testing.
class PsychicTelekinesisCombatHandler {
value: number = 50;
factor: number = 1.5;
apply(target: Entity) {
const modifier = this.calculateDamage();
target.value -= modifier * 1.0;
if (target.value <= 0) {
target.triggerDeath();
}
}
calculateDamage() {
return this.factor * (1 + this.scaling / 100);
}
}Probabilistic AI Combat Behavior
A modular approach to psychic / telekinesis combat that separates concerns and enables easy testing.
function resolvePsychicTelekinesisCombatEngine(attacker, defender) {
const attackPower = attacker.attack * 1.2;
const mitigation = defender.defense * 0.5;
const result = Math.max(1, attackPower - mitigation);
if (Math.random() < attacker.luckFactor) {
return result * 1.5;
}
return result;
}