# Can Achievement systems be implemented later in development?

I'm undecided if I want to implement this feature in my game at the time or not. I don't want the project to get to far out of control so I'm focusing on core mechanics first.

Is this a feature that is easy to implement later assuming I data drive everything and store everything?

• I ported a certain well-known DOS game to windows a couple years ago - one of the things I would have loved to add to it, if we were going to make any changes to the gameplay - would have been achievements. So if I could add achievements to a over 10 year old game clearly not designed for it, I'd pretty much say they can be added anywhere. Heck, this very site has achievements.. – Jari Komppa Jan 5 '11 at 21:11

Are you asking from the perspective of technicalities of implementing or the ramifications of the design? Either way, the answer to your question is "yes".

From the technical side of things, generally speaking you just find the hooks in your code that are responding to your achievement events and put in your stat tracking code there. You might have to add some new things if you're tracking things that aren't exactly discrete events that are already happening in the game (for example: X amount of hours played).

From the design side of things, well, achievements are extrinsic motivators and adding them doesn't really play too much into the core gameplay loop, except for people who want to seek them out. So they're pretty safe regardless.

• Yes, I'm doing this now. It was fairly easy to link in shotsFired++ into the part where new bullets are instantiated, and shotsHit++ in the part where a bullet impacts another player. It helped that I tracked who shot what bullet (because I use the information to track who got what kill etc) – bobobobo Oct 27 '13 at 19:12

Provided that your game engine is designed well and uses some kind of observable event system (where events are generated and listened for by interested parties), it should be quite easy to "plug-in" an achievement system at a later point (by adding appropriate listeners). This kind of design is very flexible.