-
Notifications
You must be signed in to change notification settings - Fork 10
How to Become an Achievement Developer
This document describes all the steps that any aspiring achievement developer must follow before getting Developer status. These requirement are also a checklist for Code Reviewers (developers who inspect the code of new developers).
Anyone can become a RetroAchievements developer if they put in the effort.
Strongly recommended: join our Discord server so you can get in contact with other achievement developers who can show you the ropes and help you along. 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 @QA-Maintainer
(Make sure to first get your account verified by following instructions in #welcome
if you haven't already). This gives you access to the #jr-devs
channel, where you can talk to code reviewers and ask any development related questions.
Follow the guidelines on the Developer's Code of Conduct to find a game to work on achievements for it. 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. Feel free to declare your plans to work on the game in the topic, and post updates as you proceed.
Tip: for your first achievement set it's recommended to choose a game that doesn't yet have achievements and is not very popular.
Once you find a game to work on you need to plan your Achievement Set.
Be sure you know enough about the game to make a good set. Check the GameFAQs or something, try to learn more about the game, its secrets and details. Here is a good guide to help you with this: Set Development Roadmap.
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.
Every developer must know at least the basic concepts and techniques shown in these two docs:
Any aspiring dev must demonstrate understanding of the following concepts:
- Basic RAM digging (be familiar with the Memory Inspector)
- Hexadecimal notation
- Delta values
- Hit counts
- Pause If
- Reset If
- Alt Groups
- Memory sizes: 8-bit and single bit
- Achievement logic comparisons besides
=
, such as>
,<
,!=
- Adding badges to an achievment
- Creating accurate descriptions for achievements
- Add appropriate protections
- Make a stable achievement set
Note: You do not need mastery of all these concepts to have a set published, but you do need them to have the full Developer role.
Here is a list of some advanced concepts/techniques. They are not required to become a Developer, but are listed here to let the jr-dev know the possibilities of the Achievement's logic.
- Hit count as timer (like in this example and this one)
- ResetIf Checkpoints
- ResetIf with Hitcount
- PauseIf with Hitcount
- 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
- Pausable Resets
- SubSource increment counter
The Real Examples and Achievement Templates pages are useful resources to see how those techniques work.
Junior developers can create and delete code notes that they have created, but they cannot delete or edit any notes created by others. Developers CAN edit and remove notes by other users, and these changes are site-wide.
In order to become familiar to those techniques you must practice. You can use any game to practice, even those that already have achievements. Just be aware about these rules:
-
Do NOT delete/overwrite any existing Code Note.
-
On this practicing phase, keep your work in local and do NOT upload any achievement. You'll do it later when you find a game to actually work on.
After creating some achievements, upload them to Unofficial and then create a post in #jr-dev-forum
on our Discord server (if you don't use Discord, send a message to RAdmin) and ask them to find someone to review your work.
Do NOT ask another developer to promote your achievements to the Core without a proper review.
Again, it's extremely important that you are open to receive constructive criticism and helpful advice from the community at any time.
Once the Code Reviewers have inspected your achievement's code and concepts, they and the admin will use the "Required Knowledge" checklist above to determine if you're ready. If you're not fully qualified to be a developer yet, but your set is complete and stable, the set will get published. You can then ask which concepts you still need to demonstrate proficiency in to be given developer status.
The merit of a jr-dev receiving developer status depends on:
- their ability to publish work that meets the standards of the Developer's Code of Conduct;
- demonstration of required knowledge and advanced concepts;
- the quality and complexity of their work;
- the time and thought they put into planning and working on achievements;
- showing the will to use the Developer status with care and responsibility;
- the extent to which the points above reflect their capabilities as a developer.
Once you get your Developer status, you MUST adhere to the Developer's Code of Conduct. That is extremely important to create a fair environment between the Achievement Developers.
- User Guidelines
- Developer Guidelines
- Content Guidelines
- FAQ
- Setup Guide
- Emulator Support and Issues
- Ways to Contribute
- RABot, the RA Discord Robot
- Events
- Overlay Themes
- Useful Links
- Contributing with the docs
- About Us
- Tutorials
- Developer Docs
- How to Become an Achievement Developer
- Getting Started as an Achievement Developer
- Game Identification
- Achievement Design
- Achievement Scoring
- Difficulty Scale and Balance
- Progression and Win Condition Typing
- Badge and Icon Creation
- Achievement Development Overview
- Flags
- BitCount Size
- Alt Groups
- Hit Counts
- Delta Values
- Prior Values
- Value Definition
- Condition Syntax
- Minimum Required Versions for Logic Features
- Memory Inspector
- Real Examples
- Set Development Roadmap
- Achievement Templates
- Tips and Tricks
- Leaderboards
- Rich Presence
- RATools
- Console Specific Tips
- Emulator Hotkeys for Developers
- libretro core support
- Docs To Do List
- WIP User Code of Conduct
- WIP CoC FAQ
- WIP Content Guidelines
- WIP-Jr
- WIP---Dev-Tips---Code-Notes-En-Masse
- WIP-‐-Reauthorship-Policy
- Manifesto RetroAchievements
- Código de Conduta do Usuário
- FAQ - Perguntas Frequentes
- Como contribuir se você não é um desenvolvedor
- Tutorial para Jogos Multi-Discos
- Introdução
- Primeiros Passos como um Desenvolvedor de Conquistas
- Recursos de Lógica para Achievements
- Exemplos Reais
- Dicas e Truques
- Dicas Específicas de Console
- Modelos de Achievement
- Escala de Dificuldade e Equilíbrio
- Roteiro de Desenvolvimento de um Set de Conquistas
- Criação de Ícones e Emblemas
- Leaderboards
- Rich Presence
- Design de Conquistas
- Manifesto RetroAchievements
- Código de Conducta del Usuario
- FAQ - Preguntas Frecuentes
- Tablas Globales y Reglas para la Casería de Logros
- Mi juego no esta cargando los logros
- Como contribuir si no eres un desarrollador
- Por que no deberías utilizar la función de cargar estado
- Contribuyendo con los documentos
- Como funciona la Documentación de RA
- Descargas
- Intro
- Código de Conducta del Desarrollador
- Como convertirme en un Desarrollador de Logros
- Primeros pasos como un Desarrollador de Logros
- Un vistazo al Inspector de Memoria
- Características en la Logica de un Logro
- Ejemplos Reales
- Intro
- Utilizando Hit Counts como un Temporizador
- Utilizando Valores Delta y Hit Counts para Detectar un Incremento
- Un Ejemplo Simple en como evitar el Abuso de Estados de Guardado
- Evitar el Problema de que un Contador se Incremente Dos Veces en el Mismo Frame
- Creando un Temporizador con un ResetIf Hits basándote en la Velocidad de un Juego
- Plantillas para Logros
- Tips y Trucos
- Escala de Dificultad y Balance
- Diseño de Logros
- Mapa de Desarrollo de Set
- Revisiones en Set de Logros
- Creación de Iconos y Badges
- Tablas de Clasificación
- Rich Presence
- Trabajando con el ROM apropiado
- Identificación del Juego
- Guía para Sets Bonus
- Logros para ROM hacks
- Tips Específicos por Consola