Es normal que solo te muestre el ultimo juego porque en cada paso del foreach asignas el registro a las mismas variables.
Código PHP:
foreach ($query2->v as $ultimosj)
{
$categoria=($ultimosj->categoria);
$screenshot=($ultimosj->screenshot);
$screenshot=('<IMG SRC='."juegos/screenshot/".$screenshot.'.png'.'>');
}
Tu sistema de plantillas debe tener una opcion para crear bloques o ciclos, que es lo ideal para mostrar todos tus registros.
Sugerencia: Ya cargaste y leiste las categorias, es mas facil crear un array para despues asignar el nombre de categoria a cada juego:
Código PHP:
$acats = array();
$varmenu="";
foreach ($query->v as $menu)
{
$url=($menu->url);
$varmenu.=('<a href='.$url.'>'.$menu->nombre.'</a>'.' ');
$acats[$menu->id] = $menu->nombre;
}
// Mas abajo en vez del switch:
$categoria= "<strong>Categoria:</strong>"." ".$acats[$categoria];