| name | fxgl-progression |
| description | Implement achievements and quests in FXGL — define variable-tracked achievements in initSettings, listen for AchievementEvent, create quests with int/boolean objectives via QuestService, start/fail/complete quests, observe quest state changes, and chain objectives. Use this skill when adding an achievement system, implementing quest tracking, wiring game variables to unlockable goals, or building a quest log UI.
|
| triggers | ["achievement","quest","AchievementService","QuestService","objective","unlock","quest log","player progression","milestone","AchievementEvent"] |
| compatibility | Java 17+, FXGL 21.x. QuestService must be registered via addEngineService.
|
| category | fxgl/progression |
| tags | ["fxgl","java","javafx","progression"] |
| metadata | {"author":"fxgl-skills","version":"1.0","fxgl-version":"21.1"} |
| allowed-tools | ["Read","Write","Edit","Bash"] |
FXGL Achievements & Quest System
Achievements
Achievements are automatically tracked: you declare a variable name and a threshold value,
and FXGL fires AchievementEvent.ACHIEVED when the variable reaches or exceeds the target.
Setup (in initSettings)
@Override
protected void initSettings(GameSettings settings) {
settings.getAchievements().add(
new Achievement("First Blood", "Kill your first enemy", "kills", 1));
settings.getAchievements().add(
new Achievement("Sharpshooter", "Score 100 headshots", "headshots", 100));
settings.getAchievements().add(
new Achievement("Speedrunner", "Complete level 1 in under 60s","level1Time", 0));
settings.getAchievements().add(
new Achievement("Collector", "Collect 50 coins", "coinsTotal", 50));
settings.getAchievements().add(
new Achievement("Survivor", "Survive 10 minutes", "survivalSecs",600));
}
Declare tracked variables (in initGameVars)
@Override
protected {
vars.put(, );
vars.put(, );
vars.put(, );
vars.put(, );
}