-
Notifications
You must be signed in to change notification settings - Fork 10
WIP Jr
WIP Page - Combining "Getting started as an achievement developer," "How to Become an Achievement Developer," and "Set Development Roadmap" into a sort-of Junior Dev doc.
This document covers the basics of how achievements work and the steps one must take to get started with achievement development.
Anyone can become a RetroAchievements developer if they put in the effort!
So how do RetroAchievements work? Technically, an achievement consists of a series of conditions that make up what we refer to as the achievement logic
. When a game with an achievement set is launched in an emulator that supports RetroAchievements, the emulator constantly checks if the conditions of each achievement are met in the current frame of gameplay. When all conditions for a particular achievement are met, the emulator will stop checking the conditions of that achievement and award it to the player.
The barebones process of creating achievement logic involves 3 steps:
- Finding a place in the game's RAM where the information needed for an achievement is stored. Some examples: current level or stage, health, timer, coins, points, ammo, holding a weapon, etc.
- Creating conditions that must be met in order to award an achievement.
- Test if the achievement is working as expected.
However, this is often much easier said than done. There is a good chance that those steps will need to be repeated many times in order to refine the achievement logic to make it stable enough for players.
If you would like to start developing achievements, the first thing you will need to do is read up on our Developer and Content Guidelines. It is also important to read the various pages in the Achievement Development category, but that can be done as you go.
It is strongly recommended to join our Discord server so you can quickly and easily contact other achievement developers who can show you the ropes and help you along. Once you have joined the server, make sure you get verified by following the instructions in the #welcome
channel. If you already know what game you'd like to make achievements for, you can go ahead and ask for the jr-dev
role in the #tech-support
forum channel by creating a post tagged as Join Team
and pinging QA-Maintainer
. Once you have the jr-dev
role, you will have access to the #jr-devs
channel, where you can talk to code reviewers and ask any development-related questions.
After you have become a Junior Developer, you can decide on a game to work on. If you need an entry made for it, you can ask code reviewers to do so. They will need to open a forum topic for you anyway, assuming it doesn't already have one. You can now claim it for achievement development.
Once you have chosen your game and have claimed it for development, you need to plan your achievement set. You should know enough about the game to give it justice. The following are some tips on coming up with a plan:
- Read through the game manual: Remember those? Game manuals often give insight into the game's story and mechanics.
- GameFAQs: Check the guides, FAQs, cheats, boards, etc. Soak up the info.
- Longplays and Speedruns: Seeing others play the game may give you ideas or show you something new.
- Similar Sets: Does a different port of the game have a set? What's it like? What would you change?
- Start brainstorming your achievement list. How will you split up the progression achievements? What are the notable events in the game? Are there collectibles? Are there score benchmarks? What secrets/easter eggs are notable enough? Does the game have an internal reward system?
- Check our guide about Achievement Design
- Check and test if your designs are possible.
- Figure out what data you will need to make the achievements. For example: achievements for collectibles will require the RAM addresses where their data is stored.
Once you have a plan, it is recommended that you post it in the game's forum topic. This will allow the community to give feedback and will give code reviewers an idea of where you're at from a design standpoint. It is important to be open to receive feedback and suggestions!
- 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