How to Become an Achievement Developer
The purpose of this document is to provide guidance on how to join the Junior Developer program and explain some helpful information to assist in development of an achievement set.
Anyone can become a RetroAchievements developer if they put in the effort.
Junior Developers are required to join the RetroAchievements Discord server. The server is where the Junior Developer program is administered. If you already know what game you want to work on, go ahead and ask for the Jr-Dev
role in #role-request
forum by creating a post tagged as Jr-Dev
, posting your set plan for the game (you can use one of these templates), and pinging @Code-Reviewer
role for set plan approval and Junior Developer program indoc.
Make sure to first get your account verified by following instructions in #welcome
if you haven't already.
Finding a Game to Work on
Follow the guidelines on the Developer's Code of Conduct to find a game. Ensure the game complies with the Rules and Restrictions before working on achievements.
Planning your Achievement Set
Once you find a game to work on you need to plan your Achievement Set. Before claiming a game on site, Junior Developers must submit a set plan for approval in the #jr-dev-forum
.
Be sure you know enough about the game to make a good set. Check the GameFAQs, wikias, watch longplay videos and try to learn more about the game, its secrets and details.
It's recommended that you post your plans on the official game's forum topic, so the community can leave suggestions and provide feedback.
IMPORTANT!: be open to receive feedback and suggestions.
See also: Achievement Design. It's an extensive guide on how to design good and interesting achievements. It's not about the technical side but the conceptual.
Claiming a Game and Beginning Development
Once a set plan has been approved by a Code Reviewer, Junior Developers may claim the game and begin development. To claim a game, it must have a forum topic. If it doesn't have one already, you can ask a Code Reviewer to make one in the #jr-dev-forum
in our Discord server.
We recommend developing your first achievement set with a game that has 10 or fewer set requests. This allows you to focus on the learning process and refine your skills, as initial achievement sets often benefit from iteration. A smaller audience also helps manage initial support requests, preventing a sudden influx of tickets.
Required Knowledge
Every developer must know at least the basic concepts and techniques shown in these two docs:
Junior Developer program graduates must demonstrate proficiency in the following concepts:
- Strong set design
- RAM digging with the Memory Inspector
- Proper set presentation and writing
- Producing high quality, stable sets with limited supervision
Helpful initial topics to study:
- Hexadecimal notation
- Mem/Delta relationships
- Various memory sizes
- Hit counts
ResetIf
- Alt Groups
PauseIf
- Achievement logic comparisons besides
=
, such as>
,<
,!=
- Creating accurate descriptions for achievements
- Add appropriate protections
- Hit count as a timer (like in this example and this one)
- ResetIf checkpoints
- AddSource and SubSource Flags
- AddHits and SubHits Flag
- Increment counter (
Mem > Delta
counter) - Delta Hit Counter, pause technique
- Little endianness
- Memory size: Lower4, Upper4, and 16-bit, 32-bit
- Dynamic Rich Presence
- Leaderboards
The Real Examples and Achievement Templates pages are useful resources to see how those techniques work.
Requesting a Code Review
After creating the achievement set, publish it to Unofficial and then create a post in #jr-dev-forum
. Follow all of the requirements for requesting a Code Review.
When Will I Be Promoted to Developer?
Code Reviewers are charged with ensuring that graduates of the Junior Developer program will be value-added RetroAchievements developers. Being a developer is not a right nor an entitlement. It is important for the health of the project that developers be skilled, trustworthy, good teammates, and able to produce high quality achievement sets with little to no supervision.
The Code Reviewer team will consider a Junior Developer for graduation largely based on their assessment of the following criteria:
- Their ability to publish work that meets or exceeds the standards of the Developer's Code of Conduct
- The quality and complexity of their work
- High quality is defined as strong set design, writing, badges, code notes and achievement logic
- The time and thought they put into planning and working on achievements
- Showing the will to use the Developer status with care and responsibility