-
Notifications
You must be signed in to change notification settings - Fork 10
Developers Code of Conduct
This document covers developers' rights, responsibilities, and rules for fair play.
If you are not a dev, check how to become a developer.
See Also: Users Code of Conduct.
- Golden Rules
- Developers must do the following to keep in good standing
- Developing a new achievement set
- Reserving a game for achievement development
- Basic Achievement Design Guidelines
- Revisions - Working on Sets with Existing Achievements
- Code Notes
- Handling Tickets
- Editing Leaderboards
- Expiration of Developer Status
- Achievement Ownership
- Feedback about the Developer Code of Conduct
- Respect your fellow developer and communicate through any issues you have civilly.
- Make room for other developers to get a chance to work on games they like, in their own way.
- Anyone can become a developer if they put in the effort.
- All achievement sets are open for improvement.
- When planning to work on a new game, reserve it by announcing your plan to work on it in a new post specific for that purpose.
- Only announce new plans when you are free of unaddressed tickets.
- Keep your work free from unwelcome concepts.
- Use protective code, preventing potential cheating and exploits.
- Leave accurate code notes for each achievement condition you use.
- For set revisions, follow the revision policy.
- Resolve tickets and leave notes each time you do.
- Like a wiki, once you publish your work, you are giving it over to the community to be reviewed and reworked over time.
Before you begin working on a new achievement set go through the new achievement set checklist.
The only way to reserve a game is by clearly stating your goal to create achievements in the official forum topic of the game on a new post exclusive for that purpose.
- No other declarations, plans or lists posted anywhere else are to be considered in this.
- Code notes do not reserve a game (if you have added notes but not reserved the game in the forum, any other developer is free to work on it).
- It is recommended that you post a list of planned achievements, so the community can review your work and give you feedback.
As in the maximum number of achievement sets one developer can have reserved at once.
- Junior Developer: 1
- Developer: 4
- Note: Joining another developer in a cooperative effort does not reduce from this total.
- Only reserve a game for development when you start working on it. In other words, do not reserve games just to block others from working on it.
- Please reserve a set as soon as you begin working and not as you are finishing your work.
You can renew your reservation every three months if you have not finished your set.
- To renew a reservation, simply state that you are still working on a game in the game’s official forum topic. This must be a new post specific for that purpose; editing your previous declaration is not a valid renewal.
- Once a reservation is more than a year old, a detailed progress report will be required for any subsequent renewals.
- Avoid locking down a set indefinitely. If it appears a developer continues to delay development on a set with little or no progress, staff may intervene. If that happens the renewal of reservation will not be authorized for a period of 3 months. After this period, the developer will be allowed to reserve the set again if it is available.
- If a claim is dropped and resumed in less than a month, the initial claim date before dropping the set will be mantained.
- Once a reservation has expired, the set is not available to be claimed by another developer until an admin has stated in the forum topic that the set is open for development. If you feel the declaration was overlooked, please contact RAdmin.
- Do not ask, pressure or discourage anyone from working on any game, in public or in private (of course, assuming the person is already following all other standards on this Code of Conduct).
Upon reserving a set, wait at least 24 hours before promoting it to core. This allows time for reservation review and to clear up any possible reservation disputes. If you believe a set is ready for core within 24 hours, an early promotion may be subject to approval.
- If you post a complete plan, be open to suggestions; you can get excellent input and suggestions this way.
- You must adhere to the Basic Achievement Design Guidelines, otherwise your set won't be allowed.
- When you publish your work you are giving it over to the community to be reviewed and reworked over time.
- Let others know if you welcome collaborators.
- If you've recently reserved a set and someone else voices desire to work on a set that you've reserved within the last 24 hours (beyond suggesting ideas), consider ways in which you can collaborate with them.
- If someone reserved a game you're interested in before you, don't get frustrated. You are encouraged to request collaboration. You can post your desire to collaborate in the forum or send them a message to get permission from them to publish your contributions. You can also wait and go through an Achievement Set Revision after the set is published.
You can (and should) be as creative as you can, but there are some concepts that are NOT welcome for achievements, such as:
- Require Glitches/Bugs1 (acceptable in Bonus sets).
- Require two players (acceptable in "Multi" sets).
- Require perfection all game (maybe acceptable in Bonus Sets).
- Dying (simply), or playing bad without any purpose (acceptable for extra content like special cutscene).
- NSFW content in text or image.
- Achievements popping frequently with little effort from the player (including multiple achievements for doing the same task, such as one for beating a boss and another one for getting the item left by the boss, etc.)
- Achievements obtainable with zero effort for no meaningful purpose (example: start the game as character X, collect one coin, watch a video). It's acceptable if there's something fun/historical/interesting you want to address.
- Require excessive repetitive grinding, such as reaching level 99 in an RPG, for no meaningful purpose (maybe acceptable in Bonus Sets).
- Rely entirely on randomness, especially when there are extremely low odds. However, for games where the randomness is a major aspect, it may be appropriate.
- "Secret Achievements", where the players have no indication of what they're going after. If you want to prevent spoilers give at least a clue on the Achievement Title/Description. Otherwise the players will start to search on web or mess with Achievement Editor/Memory Inspector, and in the process they can stumble across even worse spoilers.
- Sets for games that lack gameplay (videos, music visualizers, jukeboxes, etc.) won't be accepted without explicit approval. Approval will be handled via a vote by the Dev-Compliance team on the Discord server, and requires implementation of sufficiently creative concepts. Book sets are still allowed, but must be worth 0 points. Example: SporyTike's GBA Video Series was presented with the idea to include a leaderboard quiz at the end of each episode. This unique plan involved gameplay past pressing start and was approved.
- Sets for compilations featuring games that share the same console as the compilation. An example of this is 6-Pak for Genesis/Mega Drive, which contains six Genesis/Mega Drive games.
- Prototypes/Beta sets if there is no discernible unique content from the main game. (This is just an extension of the demo rule).
1 Glitches/Bugs are errors within a game's code which often cause unintended behavior. Examples are memory overflow, incorrectly loaded levels, and clipping into objects.
Note: With every rule, there are exceptions. This is especially true with unwelcome concepts. All unwelcome concepts have some wiggle room, so when in doubt, consult with the admin team.
- All game page information filled out, and game images uploaded (if you're not a full-dev, send the images to the code-reviewers).
- Game Badges for each achievement (they don't need to be distinct from each other, just don't leave them blank).
- Content covering up to completion so long as the game can be beaten. Whether it be defeating the final boss, completing a first loop, or completing all puzzles, achievement sets that do not cover at least beating the game are deemed unfinished and therefore subject to demotion. Arcade-style games where the focus is on high scores (such as Pac-Man and Crystal Castles) are exempt from this rule.
Protection for situations where the players can get achievements without effort, such as:
- Demo mode;
- In-game cheat codes;
- Battery saves;
- Passwords.
See also: Achievement Templates and Real Examples for some well known protection techniques.
- Basic Rich Presence (only available for full-devs).
- Leaderboards for scores and time challenges.
- Missable achievements flagged, especially for RPGs and long games.
- Use
[m]
in the end of achievement's title to flag it as missable.
- Use
- An achievement guide. Guides can be created and posted here.
- For games with text-triggered achievements (especially RPGs) it's recommend to find an event flag instead of hooking onto text or text ID. Text presentation varies between regional versions making multi-region support difficult.
When scoring achievements match your scores to one of these 5 tiers. There is no achievement set point cap.
- 0-5 Easy / Minor Significance
- 10 Medium / Intermediate Significance
- 25 Hard / Major Significance
- 50 Very Hard / Completion Level Significance
- 100 Sadistic (Typically for bonus sets)
When scoring there are other factors to be considered, such as achievement spread and game length.
We have a roadmap you can use as a guideline to create a good achievement set.
We also have an achievement design guide on how to design good achievements, not the technical side but the conceptual. Creating a balanced set is one of the most difficult aspects of development, we have a set balance guide which will help you in thinking about how to create a set that flows.
It is preferable and recommended to work on one set at a time. But if you have more, be open for a teamwork or even delegate the set creation if another dev contacts you.
Revisions, as in working on a set that has existing achievements typically requires community approval by presenting your plan in the forum and in the #revision-voting channel in Discord. Not all changes need approval. See Achievement Set Revisions for details.
Leave accurate code notes for each address you use for achievement conditions. This helps you and others maintain the set, keeping it free of bugs.
You're free to add any code notes you discover to any set without declaring intentions to work on the game. Just be careful to not delete previous notes added by someone else.
After you've published achievements be prepared for bug reports.
You're expected to keep your work bug free by appropriately resolving tickets. Respond to all tickets as soon as possible. The sooner you respond the better, cause the problem is fresh in the player's mind and you can use them to help you to resolve the problem.
While resolving tickets, leave a brief summary of what you did. If you have an indication of false report leave a message showing what conclusions you've made, and then close the ticket. Closing/Resolving a ticket without leaving any comments is an unwelcome attitude.
Do not declare your plans to work on a game if you have unaddressed tickets. A ticket is considered as addressed when the developer acknowledeged the ticket, commented on it explaning the situation but is unable to resolve the problem immediately due to reasons such as waiting for saves states or more information from the reporter.
If you want to resolve tickets or fix bugs on achievements made by another developer, it's always a good practice to try to contact them and check if they are still active before changing their work. An inactive developers is someone who have have 10 or more open tickets that are older than two months (you can see their open tickets from the Ticket Manager).
If the developer is active, you can assist them in the resolution.
If the developer is inactive you can freely resolve their tickets. If necessary, you may change the achievement description in order to clarify the objective or to match the logic that is present. However, do not deviate from an achievement's concept or objective in any way without an approved revision vote.
If a fellow developer has already started to handle a ticket thru action that can be proved with comment of intent, leave it to them. The user would be given a time of 7 days to handle the ticket after comment. Example: If USERA
was fixing a ticket (having left a comment of intent) and then USERX
came to undo the work or interrupt the work in progress this would be an issue.
-
Before making updates to a leaderboard, you must backup each modified conditional line on the comment (if too long use Pastebin link)
-
After editing a leaderboard, if you are fixing, adding, or removing entries, you must leave a comment about changes you have made and why.
-
A leaderboard's concept/design should not be changed once players have begun submitting entries. Exceptions are as follows:
A. If a leaderboard has a bug in which a correction would result in a discrepancy between between pre and post fix LB submissions, this would be considered a fundamental change and it may be most appropriate to "retire" the leaderboard and create a new corrected LB.
B. If a protection needs to be added to the cancel field in a leaderboard, for example to eliminate point farming/leaching (Areas where a game generates an endless number of things, such as items, money, or enemies), it may be preferable to either “retire” or create an additional leaderboard. "Retiring" a leaderboard means preventing future submissions.
-
If a developer wishes to create a new concept for a leaderboard, a new one should be added.
-
If a developer wants to implement a fundamental change to a leaderboard while keeping it intact, a revision vote is required. “Fundamental changes” involve the following:
A. Changes to how players submit scores.
B. Changes to submission requirements that impact difficulty and or strategy.
-
A Jr. Developer may only change, add, or remove a leaderboard with a code-reviewer that goes through the revision process with them.
If a user is inactive as a developer for 6 months or inactive overall for 3 months, their developer status will expire and their account type will be set to [Registered]
. It is important for developers to remember that this is NOT a punishment and is only done for security reasons!
If all of the following are true for at least 6 months, then a user will be considered inactive as a developer:
- Has not made or renewed a set claim.
- Has not created new achievements.
- Has not performed maintenance on existing sets (revisions, rescores, badge changes, etc.)
- Has not resolved, closed, or otherwise addressed any open tickets, theirs or otherwise.
Alternatively, developer status will be removed if the developer has 10 or more tickets that are at least 2 months old. If the developer has any active claims during this period, they will be given an additional 30 days or until the earliest claim renewal (whichever comes first) to resolve all 10 tickets. Not doing so will result in the developer falling into inactive status and the claim(s) being released.
If a user's developer status was removed due to inactivity and they wish to have it reinstated, they must contact Dev-Compliance. However, before doing so, it is recommended to review any changes that were made to the Developer Code of Conduct, updates to the achievement creation tools, and have a plan to address open tickets for their achievements, if applicable.
The steps involved in reinstatement will vary from user to user depending on the following:
- The amount of time elapsed since developer status was removed.
- The amount of tickets that may have been opened on their achievements.
- Other QA issues that may have come up since developer status was removed.
- Moderation warnings or actions the user may have received.
A user may be required to submit work to code reviewers if more than a year has passed since their developer status was removed or if they initially obtained developer status before the junior developer program existed (July 2018) and did not retroactively obtain the Junior Developer badge.
Note: Achievements edited by other developers will not count against a user seeking reinstatement.
When you publish your work you are giving it over to the community to be reviewed and reworked over time - see Achievement Set Revisions.
While the original developer does not own published achievements, they are still the caretaker in terms of bug fixing and maintenance. If another developer revises the achievement, they are the new caretaker of that achievement.
Although the Developer Code of Conduct is the result of an intense debate, it's not an immutable document. If you have suggestions for improvements, contact us on our Discord server or send a message to RAdmin.
- 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