¿De alguna manera puedes ejecutar juegos de un solo hilo en dos o cuatro núcleos?

Hay dos problemas para hacer que un programa se ejecute en muchos núcleos:

  1. 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).
  2. 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).

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 🙂

No. A menos que el software se haya diseñado específicamente para ejecutar “subprocesos múltiples” (es decir, simultáneamente en múltiples núcleos), no hay forma de usar más de 1 núcleo.

Por supuesto, con algunos tipos de programa de subproceso único puede utilizar múltiples núcleos ejecutando varias instancias del programa, pero eso no lo ayudará en este caso.

No.

En algún escenario hipotético sí.

Algunos juegos usan bibliotecas para las que puede haber una versión multiproceso. La biblioteca intel MKL, por ejemplo, puede realizar múltiples subprocesos en operaciones de bajo nivel. Sin embargo, no sé si se usa en juegos.

Si el juego y las bibliotecas utilizadas se ejecutan como un solo proceso, ese proceso no puede ejecutarse en dos núcleos a la vez.

Bueno, la respuesta corta es no, pero eso no significa que no se beneficiaría de múltiples núcleos. Sí, el juego en sí mismo no se ejecutaría en múltiples núcleos, pero su sistema operativo sí, y muchas otras utilidades también. En resumen, el juego será más rápido en una máquina multinúcleo.