En contrebas, à l’est, Shinsekai s’étend comme une strate intermédiaire : à mi-chemin entre le pouvoir et le peuple, entre l’ordre imposé et l’ordre intériorisé. Jadis quartier commerçant animé, Shinsekai a été reconfiguré — non rasé, mais transformé dans sa nature. Les anciens entrepôts sont devenus des académies. Les auberges, des lieux de débat cadré. Les rues marchandes sont bordées de résidences closes, protégées par des portails sculptés et des gardes privés. Des bâtiments sophistiqués métalliques sont disséminés, ils sont les lieux d'expérimentation.
C’est ici que l’on forme les esprits de demain — pas les généraux ni les grands juges, mais tous ceux qui porteront la parole de l’Empire dans les coins reculés du pays : secrétaires, archivistes, formateurs, enquêteurs, émissaires. L’enseignement y est strict, nourri de dogmes impériaux et d’histoire remaniée. Les élèves récitent par cœur les versets du Code du Juste Pouvoir, un texte fondateur que tout sujet impérial est supposé connaître.
Mais Shinsekai n’est pas un lieu uniquement fait de devoirs : on y cultive aussi l’élégance. Les arts y sont encouragés, à condition qu’ils servent la narration du régime. Calligraphie, théâtre, poésie sont pratiqués dans des salons feutrés, mais toute expression doit être filtrée, codifiée.
Les habitants de Shinsekai vivent dans des maisons mitoyennes, souvent sur deux niveaux, avec des jardins intérieurs soigneusement aménagés. La décoration intérieure respecte une esthétique raffinée mais normée. On évite tout objet trop ancien.
SELECT DATEDIFF(CURRENT_DATE, msg.dateMessage) howManyDays,
lastMessage.participants, lieu.lblLieu, sousForum.nomSousForum,
sousForum.description, topic.idTopic, topic.nomTopic, topic.descriptionTopic,
topic.annee, topic.saison, msg.idComptePrin,
msg.idMessage, msg.dateMessage, msg.idUtilisateur, LEFT(msg.texteMessage, 400) as texteMessage,
msg.idForum, lastMessage.nbMessages, perso.nomPerso, perso.villagePerso, (SELECT urlAva FROM s_miniAvatars WHERE idPnj=0 AND idPersonnage=msg.idUtilisateur
ORDER BY avaPrincipal DESC, idAva ASC LIMIT 0,1) as miniAva
FROM (
SELECT MAX(idMessage) idMessage, MAX(dateMessage) dateMessage, COUNT(idMessage) as nbMessages,
JSON_ARRAYAGG(
DISTINCT JSON_OBJECT(
'idUtilisateur', t_message.idUtilisateur,
'nomPerso', s_personnage.nomPerso,
'villagePerso', s_personnage.villagePerso,
'miniAva', (SELECT urlAva FROM s_miniAvatars WHERE idPnj=0 AND idPersonnage=t_message.idUtilisateur
ORDER BY avaPrincipal DESC, idAva ASC LIMIT 0,1)
)
) AS participants
FROM t_message
LEFT JOIN s_personnage ON t_message.idUtilisateur=s_personnage.idUtilisateur
GROUP BY idTopic ) as lastMessage
LEFT JOIN t_message msg ON lastMessage.idMessage = msg.idMessage
AND lastMessage.dateMessage = msg.dateMessage
LEFT JOIN s_personnage perso ON msg.idUtilisateur=perso.idUtilisateur
LEFT JOIN t_topic topic ON msg.idTopic=topic.idTopic LEFT JOIN t_sousforumlieu lieu ON topic.idLieu=lieu.idLieu
LEFT JOIN t_sousforum sousForum ON msg.idSousForum=sousForum.idSousForum WHERE msg.idSousForum=:idSousforum AND 'gore' NOT IN (SELECT idType FROM t_topicType WHERE idTopic=msg.idTopic) ORDER BY msg.idMessage DESC