Hay dos problemas para hacer que un programa se ejecute en muchos núcleos:
- El programador debe decidir cómo dividir el trabajo (generalmente esto será algo como “poner la IA y la búsqueda de caminos en un núcleo y la física y la lógica del juego en otro”). Si la división no es buena, el programa se ejecutará lentamente (todo el programa se ejecuta tan lento como la parte más lenta).
- Si los diferentes subprocesos acceden a algún estado compartido, por ejemplo, cosas como una variable “isGamePaused” que describe si ha presionado “escape”, debe haber guardias y controles especiales para evitar una clase especial de errores que aparecen en ese contexto. Imagine a un grupo de personas trabajando juntos en algún proyecto, pero nadie comprueba si las tijeras o el pegamento están libres: solo alcanzan el lugar donde creían que estaban, y simplemente hacen todos los movimientos como si los tuvieran en sus manos (y después de eso solo considere el trabajo realizado).
Automatizar los dos problemas anteriores es uno de los “Santos Griales” de la informática, especialmente con las CPU de múltiples núcleos actuales, pero esto ha sido un problema durante décadas en las supercomputadoras. Por ahora, hay algunas soluciones parciales, pero también requieren técnicas especiales de ingeniería de software, no pueden simplemente tomar un programa normal y auto-paralelizarlo.
Dicho esto, ya obtienes algún beneficio al tener múltiples núcleos, ya que al menos el sistema operativo puede realizar sus tareas de limpieza en algún lugar donde no interfiera con tu juego. Además, el juego realmente se ejecuta en múltiples núcleos, pero no al mismo tiempo (se programará un proceso en espera de ejecución en cualquier núcleo que actualmente sea gratuito, con una ligera preferencia hacia el núcleo donde ya estaba antes, pero en general cambiará los núcleos muchas veces por segundo).
- ¿Qué es el campo académico 'Computer Vision'?
- ¿Cómo se raspan los datos de las redes WiFi?
- En Windows, ¿cómo se reduce el tamaño de los cursores, evitando la pixelación predeterminada?
- Si un informático se despertara en el año 1500, ¿cuánto tiempo les tomaría construir una computadora con estándares modernos?
- ¿Por qué se habilita Superfetch después de un tiempo o después de reiniciar la computadora?
TL; DR: No, no hay ningún software que pueda hacer lo que pides, ¡pero felicidades por descubrir por tu cuenta uno de los problemas más importantes (sin resolver) en informática!
PD: Algunas cosas que puedes probar:
- Vaya a “Administrador de tareas” -> “Procesos”, luego encuentre el proceso de su juego, haga clic derecho, “Establecer prioridad” -> “Alto”.
- Nuevamente en el mismo menú, “Establecer afinidad” y luego deje una casilla de verificación solo en una CPU (es decir, desmarque el resto).
Pruébelos independientemente uno del otro (es decir, todas las combinaciones) y vea si hacen alguna diferencia. A veces lo hacen, a veces no, a veces lo empeoran 🙂