La plupart des moteurs et frameworks décents offrent les fonctionnalités dont vous avez besoin et ne vous gênent jamais.
Est-ce qu'ils? Cela dépend plutôt exactement de ce que vous faites, graphiquement.
Pour de nombreux types de jeux, il existe des réponses standard aux questions graphiques. Le jeu 2D moyen par exemple peut être très bien géré avec les prouesses 2D de, par exemple, XNA / MonoGame. Ce ne sont que des sprites, qui peuvent venir par lots pour le terrain, peuvent être tournés, etc.
Mais que se passe-t-il si votre jeu était le jeu 2D moyen, vous lisez des techniques intéressantes, telles que l'utilisation d'une carte de hauteur pour construire un imposteur qui a l'apparence de la profondeur par rapport à l'écran. Et vous voulez faire ça.
Vous utilisez maintenant un mappage normal et peut-être même un mappage de parallaxe. Le tout dans le même contexte de "rendu des sprites", mais nécessitant plus que beaucoup de moteurs 2D purs. Plus précisément, cela nécessite un "sprite blitting" multitexturé, ce qui n'est pas quelque chose que de nombreux moteurs 2D peuvent faire.
Que faites-vous si votre moteur ne peut pas s'adapter avec vous? Cela signifie donc que vous devez effectuer plusieurs passes, une pour la couleur et une pour l'éclairage via une carte normale. Mais cela ne fonctionne pas, car vous avez besoin du champ de hauteur normal de la carte pour utiliser le mappage de parallaxe avec la recherche de couleur. Et maintenant? Vous avez besoin de l'alpha pour faire de la transparence, donc vous ne pouvez pas voler l'alpha. Et le moteur ne prend tout simplement pas en charge les multitextures.
Vous devez donc choisir l'une des options suivantes:
- Abandonnez l'idée. Cela signifie que votre jeu est fonctionnellement limité par votre moteur.
- Piratez le moteur pour avoir le multitexture. En supposant que vous ayez accès au code source, vous vous chargez maintenant de piquer le code de quelqu'un d'autre. Cela signifie également que vous devez le maintenir et ne pas le casser avec vos trébuchements.
- Faites de votre mieux, dans les limites du moteur. Vous pouvez donc obtenir la parallaxe sur les cartes normales, mais pas sur les couleurs. Ce n'est peut-être pas exactement ce que vous vouliez, mais c'est mieux que rien.
À titre d'exemple, prenez Geometry Wars. La plupart des moteurs 2D aspireraient à ces types de visuels, car la plupart d'entre eux sont construits autour de sprites de dessin, pas de lignes. C'est un jeu qui a besoin d'un rendu très spécialisé.
À la fin de la journée, vous devez assumer la responsabilité des éléments de votre jeu qui sont importants pour les besoins de votre jeu. Si l'apparence visuelle de votre jeu est principalement développée par le style artistique des images et des modèles que vous utilisez, plutôt que par des effets spécifiques, alors utiliser une solution pré-packagée est très bien. Mais si le style visuel de votre jeu est défini de manière significative par un code de rendu personnalisé, les chances sont bonnes qu'un moteur standard puisse devenir une sérieuse limitation si vous décidez de faire des choses qui sont hors de la boîte.
De plus, il y a un problème très pratique: tous les moteurs de jeu ne sont pas également portables.
Avec la récente montée en puissance des plates-formes mobiles, le marché des jeux est réparti sur de nombreux systèmes d'exploitation et appareils d'interface utilisateur. Tous les moteurs ne fonctionnent pas sur tous les appareils. Et si votre moteur ne fonctionne pas sur une plate-forme, vous ne prendrez certainement pas le temps de le faire fonctionner sur une seule. Après tout, c'est pourquoi vous avez utilisé un moteur en premier lieu, non?
S'il est important pour vous que votre jeu fonctionne sur une plate-forme particulière, vous devez à nouveau en assumer la responsabilité. Et la façon la plus "simple" de réussir avec cela est de le faire vous-même. Pour construire un moteur qui peut fonctionner sur plusieurs plates-formes, en utilisant peut-être des cadres spécifiques à la plate-forme plus simples lorsque cela est nécessaire pour gérer certains détails de bas niveau. De cette façon, s'il se casse, c'est votre code; vous êtes la meilleure personne pour y remédier.