Parin es un motor de juegos 2D desarrollado para el lenguaje de programación D, diseñado para proporcionar un equilibrio entre el minimalismo de una librería y las características integrales de un motor a gran escala. El desarrollador, Kapendev, posicionó la herramienta para ofrecer más dirección estructural que una librería pequeña como raylib, manteniendo al mismo tiempo una sobrecarga significativamente menor que un motor pesado como Godot. Está construido sobre Joka, una librería de utilidades portátil, y está destinado a ser 'deliciosamente simple' y fácilmente modificable para desarrolladores que prefieren un enfoque orientado al código sobre las arquitecturas impuestas por un motor.
Esta imagen representa el motor Parin, que sirve como un punto intermedio entre las librerías de bajo nivel y los motores a gran escala.
La filosofía de diseño del motor se centra en tres pilares fundamentales: diseño impulsado por código, abstracción flexible y modularidad. A diferencia de muchos motores que obligan al usuario a utilizar un sistema de escenas o entidades específico, Parin permite que el código de juego se estructure de la manera que el desarrollador considere conveniente. También ofrece una gestión de memoria flexible, proporcionando recolección de basura por conveniencia mientras permite a los desarrolladores optar por la gestión manual o evitarla por completo. Para simplificar el desarrollo, Parin incluye funciones de 'baterías incluidas' como asistentes de animación, temporizadores, búsqueda de rutas y un motor de física de píxeles perfectos, junto con un sistema de diálogo flexible y una librería de animación basada en atlas.
Si bien Parin proporciona una base sólida para juegos 2D, tiene límites y requisitos técnicos específicos. Actualmente es compatible con Web (a través de WebAssembly), Windows, Linux y macOS, pero no incluye un lenguaje de scripting integrado; los desarrolladores que busquen scripting deben integrar proyectos externos como Wren o Lua. Además, aunque incluye enlaces para Steamworks y ENet para admitir el modo multijugador y la integración con Steam, los binarios en sí no están incluidos y deben enlazarse por separado. Para las compilaciones web, el motor requiere el compilador LDC y Emscripten para funcionar. El proyecto también carece de recarga en caliente (hot reloading) de serie, una elección realizada por el desarrollador para mantener el motor central ligero y enfocado en sus mecánicas principales.