-
Notifications
You must be signed in to change notification settings - Fork 10
Handling Tickets
After you've published your 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, because the problem is fresh in the player's mind and you can use them to help you to resolve the problem.
To be allowed to make a primary or collaboration claim on a set, you must not have any unaddressed tickets.
- An open ticket is considered addressed when a developer, who may be unable to immediately resolve an issue, leaves a comment requesting a save file, state or additional information from the reporter.
- Tickets that have been properly closed or resolved are, of course, considered addressed.
- Do your due diligence to investigate the cause of the issue.
- Ask detailed questions from the reporter to narrow down possible causes if the initial report is lacking in detail.
- If not provided, or if a provided save state is not at a point helpful to diagnose the issue, ask for one or more save states. Be clear about where in the game the saves should be made. Help the user know what to capture.
- Attempt to reproduce the issue on the same core used by the user.
- You may need to edit
cores.json
in RALibretro to remove the"platforms": "none"
line from a core’s definition in order to download and use the core.
- You may need to edit
- If resolving a ticket for another developer’s achievement, make a backup of the old logic and leave it in a comment on the ticket. That way if your fix has a further issue, you or another developer will be able to reference the previous logic.
- When you have found the issue, develop and test your changes.
- Note: For achievements that triggered at the wrong time make sure you test that your changes work to resolve the false trigger and that they still work to trigger the achievement in the correct method.
- Leave a summary of what you did to fix the ticket. If possible, explain why the issue occurred, what fixed it, and why the fix works.
- Perform due diligence in attempting to reproduce the problem.
- Do not close tickets without leaving a comment about why closing the ticket is the correct action.
- Close with the most appropriate reason
- Unable to Reproduce should be done only after gathering as much information about the context of the ticket as possible, attempting to reproduce it on the core by approaching the triggering conditions as many ways as you can, and still being unable to reproduce the results.
-
Not Enough Information should be done only after attempting to reproduce the issue as much as possible, but without further information from the reporter are unable to come up with the same result.
- Give several days for new information to be given before closing in this fashion.
- Network Problems should be the close reason if it becomes clear that the issue was caused by the user not having a connection to the server.
- A Mistaken Report should be used only if it becomes clear that the user did not perform the correct actions to unlock the ticket or reported a ticket for non-ticketable reasons.
- Other Reason can be used if some other reason for closing a ticket exists. Be sure to properly justify the closure in a ticket comment.
You may resolve tickets for another developer under the following guidelines:
You may assist them in the resolution. The developer should still implement any code changes needed, but you are allowed to suggest logic and help find the causes.
Tickets belonging to active Junior Developers should only be handled by members of the Code Reviewer team. If you are asked by a Junior Developer to close or resolve their ticket, please refer them to a Code Reviewer.
You can work on their tickets on your own.
- An inactive developer is someone who has 10 or more open tickets that are older than two months (you can see their open tickets from the Ticket Manager).
- Contact a Developer Compliance team member to ensure this is the case before making the judgement on your own if they still have the Developer role.
- If the developer is inactive, you can freely resolve their tickets through normal resolution processes as stated above.
- You may change the achievement description to clarify the objective or to match the logic that is present to clarify the intent of the achievement. Do not deviate from an achievement's concept or objective in any way without an approved revision vote.
- Follow the steps to resolve or close a ticket as if it were your own.
You may place a soft claim on ticket investigation and resolution by commenting your intent in a ticket comment.
- If someone else has stated their intent to resolve a ticket, you may provide additional insight in a ticket comment.
- The developer working on a ticket may choose to work with another developer or user for assistance in resolving the ticket.
- After seven days without action towards a resolution, the ticket will be considered unclaimed, to allow other developers to provide a solution.
Who handles tickets for achievements edited while the developer is Inactive?
If an inactive developer becomes active again, they are still responsible for their achievements that have been fixed by other developers.
- It is strongly recommended that the newly active dev review any tickets that were resolved during their inactivity period so they can understand the changes made to their achievements.
- If necessary, reach out to the developer who made the updates that resolved the tickets.
- If the newly active developer no longer wants to be the owner of the achievements, they can reach out to the Developer Compliance team to inquire about a reauthor of said achievements.
- Note that an accepted reauthor will be handled on a case-by-case basis, depending on the developers in question as well as the changes made to the achievements. This rule will be reevaluated if the implementation of a set or achievement maintainer is introduced.
- 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