Gist Público en constante actualización
Disclaimer: Por defecto, este plugin puede resultar molesto e irritante para personas con sensibilidad auditiva, personas asustadizas, y personas en estado de irritabilidad. Para la accesibilidad de todos he incluido opciones de deshabilitado para varias de estas funciones, de modo que cualquiera pueda seguir disfrutando de ganar EXP como mini motivante.
Plugin experimental creado por SunsetSamu
En una lluvia de ideas para mejorar mi hábito de dibujo diario caí en cuenta en que podría crear un plugin con python para ayudarme en el programa de manera directa, tras algunas ideas inadecuadas pensé sobre la adictiva necesidad de subir niveles en juegos competitivos.
DGPP, o "Dopamine Generator Progression Plugin (for Krita)" es una nueva manera de conseguir tu atención para que sigas dibujando a diario ¡Con Insignias y un sistema de progreso basado en experiencia que se gana con cada acción registrada por el historial! (ninguna información de absolutamente nada es enviada a ninguna parte de ninguna manera)
La progresión de este plugin es fácilmente engañable, le recuerdo que el objetivo de este es retener su atención de una forma creativa basada un deseo de continuar el progreso de manera honesta, si la cantidad de progreso es modificada para mayor obtención de puntos su disfrute propio también se verá afectado.
-
🎖️ Insignias y barras de progreso animadas que se muestran en la parte superior de su programa (esto es personalizable, junto con el tamaño de estas, versiones no intrusivas en la UI, y la capacidad de inhabilitarlas), puede configurarlas para aparecer cada que sube de nivel, cada de guarda cambios y cada que exporta su documento.
-
📟 Docker de progresión en tiempo real dónde se muestra su experiencia actual y la restante para su siguiente nivel!
-
🔔 Sonidos personalizados para activar su dopamina! Puede deshabilitar estos sonidos si le parecen molestos, así como puede cambiarlos por los suyos propios como guste.
-
📂 Fácil de cambiar los assets de insignias, barras de progreso y prácticamente todo lo visual por sus propias versiones!
-
🖥️ Ligero y Compatible desde Krita 5 para aquellos quienes permanecen en sistemas operativos anteriores. Also, está en desarrollo desde una laptop i3 de 2da generación y 4gb de RAM, por lo que su funcionamiento debe estar garantizado para cualquier equipo similar o superior
-
📇 Ranking de progresión por medio de whitelist usando protocolos p2p para comparar tus niveles con amigos de confianza.
-
(==Pedido==) 💡 Retos personales tipo Habitica que el mismo usuario pueda personalizar junto a una recompensa en EXP que se obtendrá al completar estos retos.
Seria que permitas al usuario establecer "desafíos" donde se pueda escribir cosas como "hacer 30 minutos de practica de gestos al día" el usuario lo puede marcar como hecho y recibir alguna recompensa, no necesariamente implementar todo un cronometro u otra cosa, sino basarse en la buena fe del usuario que lo marcara como "hecho" cuando realmente termine. Lo que si tendría que estar es todo el tema del tiempo, periodicidad, un sistema de dificultad (mas difícil mayor recompensa), etc. (creo que seria mas una app separada que un plugin)
-
🔥 Sistema de rachas por días similar a Duolingo (basado en, basado en el "unix time" con plazo de hasta 26 horas). Los días acumulados no tienen efectos en la puntuación por EXP.
-
(==Pedido==) 🏆 Trofeos: autoexplicativo.
-
(==Tentativo==) 🌐 Progreso competitivo mundial! podrá ver su posición en una tabla mundial mediante un sistema de webhooks y aplicaciones de Discord. Se permitirá habilitar esta opción y se pedirá un username que no necesariamente debe ser del Discord (a menos que se quiera ingresar al mismo y obtener los rangos personalizados por nivel), las puntuaciones y experiencia serán subidas constantemente al servidor en donde se irán rankeando cada hora. Así mismo cada hora se el plugin cliente descarga este ranking y se actualiza el apartado del docker. Se debe pensar también en un método para banear usuarios que se detecten como tramposos. ==Respecto al pedido de los retos personales==, integrar esa función en este modo competitivo puede llegar a ser considerado una trampa, por lo que tenemos dos opciones;
- Que esos puntos solo cuenten en un modo offline.
- Establecer un contador de retos personales sin utilidad para el ranking
- (==Pedido==) 📡 Retos semanales integrados por medio de algún tipo de notificación + recompensa en EXP. Pueden estar conectados desde el Discord y las recompenzas pueden ser gestionadas de manera manual para evitar abusos (esto pensando en que se tendrá una cantidad moderada de usuarios).
-
Cualquier acción: 1 EXP
-
Acción de Pincel, Borrador, o pluma vectorial: 3 EXP
- Multiplicador X50 cada 100: 150 EXP
-
Guardar / Cargar documento: 5 EXP
-
Exportar documento: 20 EXP
- Multiplicador X4 cada 5: 80 EXP
-
Exportar TimeLapse (integrado de Krita): 100
- Multiplicador X5 cada 20: 500 EXP
-
EXP por tiempo (con documento abierto):
- 10min: 2 EXP
- 30min: 5 EXP
- 1H: 10 EXP
- 5H: 50 EXP + aviso de tomar un descanso (deshabilitable)
Aquí ChatGPT me dió una mano:
==Si queremos 500 niveles, ajustamos ( k ) para que la experiencia total para alcanzar el nivel 500 sea aproximadamente 2,929,458 EXP.== $$ [ \text{EXP_requerida}(500) = k \times 500^2 ] [ 2,929,458 = k \times 250,000 ] [ k = \frac{2,929,458}{250,000} = 11.717832 ] $$ Redondeamos ( k ) a 11.72.
Utilizando la fórmula ajustada: $$ [ \text{EXP_requerida}(n) = 11.72 \times n^2 ] $$ Aquí están algunos niveles y su experiencia requerida:
Nivel | EXP Requerida |
---|---|
1 | 12 |
2 | 47 |
3 | 105 |
4 | 188 |
5 | 295 |
... | ... |
10 | 1172 |
... | ... |
100 | 117,200 |
... | ... |
250 | 732,500 |
... | ... |
500 | 2,929,000 |
def exp_requerida(nivel, k=12):
"""
Calcula la experiencia requerida para alcanzar un nivel dado.
Args:
nivel (int): El nivel para el cual se quiere calcular la experiencia.
k (float): El factor de ajuste de la fórmula. Por defecto es 12.
Returns:
float: La experiencia requerida para alcanzar el nivel dado.
"""
return k * nivel**2
def mostrar_exp_para_niveles(max_nivel, k=12):
"""
Muestra la experiencia requerida para alcanzar niveles desde 1 hasta max_nivel.
Args:
max_nivel (int): El nivel máximo para el cual se quiere mostrar la experiencia.
k (float): El factor de ajuste de la fórmula. Por defecto es 12.
"""
for nivel in range(1, max_nivel + 1):
exp = exp_requerida(nivel, k)
print(f"Nivel {nivel}: {exp} EXP")
# Ejemplo de uso
mostrar_exp_para_niveles(700) # Muestra la experiencia requerida para los niveles del 1 al 700
Al ser un proyecto de tiempo muy parcial no propondré fechas, pero si versiones funcionales
Versión funcional 1: Base
- Crear un docker funcional
- Contador de acciones basado en el historial de acciones integrado en Krita
- Primer panel de control funcional
- Definir los valores de las acciones monitorizables para el contador
- Guardado y lectura del contador (En dos archivos, uno es de variables privadas y otro público)
- Guardado y lectura automáticas
- Establecer los distintos niveles para el contador
- Contar acciones como exportar imagen y grabación integrada
- Establecer multiplicadores del contador
- Variables visibles desde el panel de control
- Botón de prueba de sonido
- Sonidos funcionales para los niveles alcanzados
- Sonidos desactivables
- Acceso rápido a los recursos del plugin desde el panel de control
- Barra de progreso funcional para el contador
- insignias en el docker
- GIFs en el docker
- Elementos visuales (PNGs) fuera del docker
- GIFs fuera del docker (de no ser posible, saltar la parte de animado de insignias fuera del docker)
- desaparecer elementos externos al docker al pasar el cursor cerca
- Insignias fuera del docker al alcanzar un nivel nuevo
- Barra de progreso fuera del docker al alcanzar un nivel nuevo
- Opacidad dinámica de elementos fuera del docker
- Insignias especiales y barra de progreso fuera del docker al obtener EXP por multiplicador
- Elementos fuera del docker desactivables
- Elementos fuera del docker con tamaño y posición configurables desde el panel de control
- CONTROL DE CALIDAD
- Primera versión a GitHub :>