Précédent FunOrb Central 3e partie : L'avenir des graphismes FunOrb

FunOrb Central developer diary banner

22 juillet 2009 – L'avenir des graphismes FunOrb

Pour FunOrb Central, nous procédons à l'intégration de nombreuses nouvelles technologies qui contribueront entre autres à l'amélioration des librairies graphiques.

À l'heure actuelle, les jeux FunOrb affichent les graphismes à l'aide d'un système de rendu logiciel. Cela signifie que le processeur de l'ordinateur se charge de tous les dessins effectués par le jeu et définit chaque pixel individuellement, un par un.

Cette méthode donne aux jeux FunOrb une excellente maîtrise de leurs propres graphiques et assure une rapidité suffisante dans la plupart des cas. Mais elle limite le taux de remplissage de nos jeux, car chaque pixel que nous modifions nécessite (approximativement) une ligne de code Java pour être exécuté. Les performances de nos jeux sont donc principalement limitées par le nombre de pixels que nous devons dessiner dans chaque image.

Cela a notamment pour effet de limiter la résolution disponible pour nos jeux. Prenons par exemple un jeu FunOrb classique, avec une fenêtre de 640x480 pixels (c.-à-d. environ 300 000 pixels au total) et supposons que, sur mon ordinateur, le jeu parvient à se redessiner 30 fois par secondes (30 f/s). Mon ordinateur peut donc écrire (ou définir) environ 9 millions de pixels par seconde. (En passant, ce calcul implique que chaque pixel soit défini seulement une fois, mais ce n'est pas toujours possible).

Passons maintenant au niveau supérieur. La taille standard suivante pour nos fenêtres de jeu est de 800x600 pixels. Le dessin de nos jeux à l'écran nécessite donc l'écriture de presque 500 000 pixels par image. Avec le budget de 9 millions de pixels par seconde de mon ordinateur, cela correspond seulement à 19 f/s, ce qui n'est pas très rapide. Pour la taille suivante (1024x768), on tombe à 12 f/s. Et pour les toutes dernières résolutions de jeu (1680x1050 et 5 f/s), les choses deviennent vraiment trop lentes.

Offensive galactique en haute résolution
Offensive galactique en haute résolution.
Cliquez ici pour voir l'image en plus grand.

Comme nous voulons étendre les jeux FunOrb à ces hautes résolutions, nous devons changer d'approche. Les ordinateurs modernes sont généralement équipés d'un processeur graphique (GPU) qui permet d'accélérer le traitement des graphismes. La plupart des jeux modernes utilisent ce processeur (y compris RuneScape HD) pour exécuter des hautes résolutions à grande vitesse. Nous voulons profiter de ces capacités pour la prochaine génération de jeux FunOrb dans FunOrb Central.

L'avantage principal qu'offrent les accélérateurs matériels tels que les GPU, c'est qu'ils permettent de libérer le processeur central (CPU). À l'heure actuelle, un jeu FunOrb doit copier individuellement à l'écran chaque pixel de la texture d'un terrain de Kickabout League, pour prendre un exemple. À l'avenir, le GPU pourra se charger de la copie pour permettre au CPU de se consacrer au calcul du comportement de la balle. En outre, le GPU étant une unité matérielle spécialisée qui s'exécute sans les restrictions d'un système d'exploitation ou d'un environnement Java, il peut faire beaucoup plus de travail pour chaque image.

L'un de nos objectifs est donc de modifier certains de nos jeux existants pour utiliser cette méthode et atteindre des résolutions plus élevées, à partir de 800x600. À terme, nous aimerions pouvoir proposer des modes écran large pour les jeux FunOrb.

Kickabout League en écran large
Un exemple de Kickabout League en écran large.
Pour voir l'image en taille réelle, cliquez ici.

Mais, comme vous vous en doutez sûrement, nous n'avons pas encore fait ce changement pour des raisons précises. L'utilisation de matériel d'accélération graphique pose deux problèmes principaux, même si nous avons les capacités techniques requises. Premièrement, de nombreux GPU disponibles actuellement sont dits « à fonction fixe », c'est-à-dire qu'ils ne peuvent effectuer efficacement qu'un nombre limité d'opérations (contrairement au CPU à usages multiples, qui peut être programmé pour faire à peu près toutes les tâches possibles). Certains jeux fonctionnent déjà parfaitement bien de ce point de vue. Tout ce dont Arcanistes, par exemple, a vraiment besoin, c'est de copier des sprites (images) à l'écran, une opération que les accélérateurs les plus basiques peuvent exécuter sans problème. Par contre, des jeux comme Star Cannon utilisent des effets plus avancés (contours, flous, lueurs, distorsions en ondulation, etc.) et nécessitent donc des efforts supplémentaires. Nous devons évaluer s'il est possible de reproduire l'effet existant, et s'il faut le remplacer, nous devons choisir ce que nous pouvons utiliser à sa place qui permettrait de bénéficier des nouvelles capacités matérielles.

L'autre problème principal concerne la compatibilité. Si vous avez déjà utilisé le menu Options Java du site FunOrb, vous avez peut-être remarqué une option permettant de choisir parmi des applets signés ou non signés. Les applets signés, si vous les autorisez, bénéficient d'un plus grand contrôle de votre ordinateur (qui inclut l'accès à votre accélérateur graphique, si vous en avez un). Pour les joueurs ne pouvant pas utiliser les applets signés (c'est souvent le cas dans les bureaux ou bibliothèques, où ils sont interdits par les paramètres de sécurité de l'ordinateur) et pour ceux qui n'ont pas le matériel adéquat, nous devons nous assurer que le mode logiciel des jeux FunOrb continue à fonctionner de manière optimale. Dans cette optique, il est donc nécessaire de consacrer plus de temps aux phases de conception, développement et test.

Je pense que les avantages de cette solution en valent la peine. Nous ne pourrons probablement pas lancer FunOrb Central avec tous nos jeux immédiatement disponibles en haute résolution, mais notre travail actuel permet certainement de poser les fondations requises. J'ai hâte d'avoir plus de place sur mon écran pour jouer, en tant que développeur mais aussi en tant que joueur, et de pouvoir profiter de modes encore plus détaillés. Pour un petit aperçu de ces possibilités, regardez les images de Kickabout League et Offensive galactique ci-dessus.

Mod Artifice
Développeur FunOrb


Haut de la page