Comment les développeurs non indépendants peuvent-ils arrêter de réinventer la roue?

8

Il semble que le statu quo dans l'industrie des jeux consiste à écrire la plupart des logiciels en interne, peut-être en excluant le moteur si vous en utilisez une douzaine. Avant de travailler ici, j'étais principalement un développeur open-source, donc cet état d'esprit me semble carrément fou. Existe-t-il un bon moyen pour que nous puissions tous arrêter de créer des choses comme les visualiseurs de journaux, les diagnostics de réseau et les systèmes de correctifs?

2 tours
la source

Réponses:

15

On peut arrêter de réinventer la roue en ... cessant de réinventer la roue. Utilisez des bibliothèques externes, des moteurs de jeu, etc.

Je me sens que les gens ne réinventent la roue à:

  • Évitez les droits d'auteur, les redevances, etc. sur les bibliothèques ou le code emprunté
  • Évitez de payer pour un moteur de jeu (pour un jeu complet sur AAA, cela peut être extrêmement coûteux)
  • Restez familier avec l'intégralité de la base de code - l'ajout de bibliothèques externes, la liaison à des moteurs de jeu, etc. signifie simplement plus de code pour se familiariser avec et éventuellement maintenir
  • L'écriture de tout votre code vous permet de l'optimiser spécifiquement pour votre jeu
  • Ce code peut ensuite être concédé sous licence à d'autres si vous le souhaitez, le réutiliser pour d'autres projets, etc. tout en conservant un contrôle propriétaire
Sean James
la source
Je suis d'accord avec tout cela! J'ai moi-même dû réinventer des trucs pour éviter le code breveté, j'ai aussi dû éviter de payer pour un moteur de jeu, et finalement, j'ai souvent des problèmes qui ne sont pas de ma faute (comme mon jeu actuel qui a 3 défauts, l'un est que le moteur physique a un comportement contre-intuitif ... cela signifie que je devrai lire sa source en profondeur ... l'autre est que le mélangeur a apparemment un moyen arbitraire de choisir les priorités, et enfin, le moteur de jeu lui-même avec l'éditeur de carte, segfaults au hasard lorsque je décharge une carte ... Encore une fois, ce balayage de code signifie ...)
speeder
La question est plus sociale, comment pouvons-nous encourager cela? Existe-t-il, par exemple, des outils de correction qui ne dépendent pas du jeu? Il existe des algorithmes et des bibliothèques sous-jacents pour la manipulation des données (algorithme rsync, zlib) mais je ne connais rien qui puisse aller jusqu'à une interface utilisateur.
coderanger
1
Vous avez manqué de pouvoir pénétrer et résoudre les problèmes dans les bibliothèques pendant la crise sans avoir à prendre en compte le délai d'exécution d'un tiers sur leur source fermée et à optimiser les bibliothèques pour votre cas d'utilisation précis. Ceux-ci peuvent être assez précieux.
moonshadow du
1

Ça dépend. Je pense qu'il y a en fait une bonne quantité de middleware, qui est utilisé, ... si vous êtes prêt à payer.

En même temps, il est parfois facile de pirater quelque chose pour devenir vraiment rapide sans autant de dépendances externes, si la portée est petite.

Je pense que sur le haut de gamme, vous devez comparer des entreprises comme EA et Ubisoft à d'autres grandes sociétés de logiciels, comme Apple, Google, Facebook, qu'avez-vous.

Ils écrivent tous une très grande quantité de code personnalisé, lorsqu'il existe des alternatives, car ils veulent obtenir un avantage concurrentiel.

Comme l'a dit @Sean James, il existe des raisons juridiques et de nombreuses autres raisons, mais je pense que même s'il n'y avait pas de barrages routiers, les éditeurs de logiciels inventifs continueraient à développer des alternatives personnalisées aux composants logiciels existants s'ils pensaient pouvoir les améliorer.

Cependant, je conviens également qu'il est toujours possible de démarrer certains projets dont nous pourrions tous bénéficier. Par exemple, je pense que nous devons remplacer COLLADA par quelque chose de beaucoup plus simple basé sur JSON. Peut-être quelque chose qui ne gère que des maillages arbitraires, mais rien d'autre. Je pense que nous avons vraiment besoin d'un meilleur format de maillage.

Jonathan Fischoff
la source
Il n'y a pas seulement l'avantage concurrentiel d'écrire votre propre «middleware», mais cela signifie également un support interne. Cela peut être utile en cas de crise majeure ou lorsqu'un bug est impossible à reproduire sans remettre l'intégralité de votre jeu.
Kaj
Sans trop mentionner si la société de moteur de jeu est achetée ou si son code est piraté, la liste continue. Selon quelqu'un d'autre, le code est une responsabilité qui peut être difficile à quantifier, il n'y a pas beaucoup d'utilisateurs, ce qui est le cas avec beaucoup de middleware spécialisés
Jonathan Fischoff
Je ne pense pas que le code personnalisé disparaîtra, mais l'absence de format (s) réalisable (s) pour le partage de données n'aide pas au développement d'outils.
Jonathan Fischoff
Beaucoup de temps, au moins dans mon entreprise, les gens préfèrent reconstruire des choses en interne simplement parce que les effectifs sont déjà budgétés et que l'achat de middleware commercial ne l'est pas (et il est plus facile de demander aux programmeurs de travailler 10 heures par jour que de le faire obtenir le siège social pour autoriser de grandes dépenses en capital). Les avantages d'une collaboration plus libre ne seraient-ils pas plus avantageux que l'avantage concurrentiel des outils propriétaires?
coderanger
Je pense qu'il peut être amélioré, mais il pense que c'est un problème qui s'étend au-delà des sociétés de jeux. Il y a beaucoup moins de réutilisation de code qu'il ne devrait en général, pas seulement avec les jeux. Sur un plan personnel, je serais ravi d'aider à lancer certains projets.
Jonathan Fischoff
1

Existe-t-il un bon moyen pour que nous puissions tous arrêter de créer des choses comme les visualiseurs de journaux, les diagnostics de réseau et les systèmes de correctifs?

D'après mon expérience, ces choses sont traitées comme de simples extras qui peuvent être ajoutés à votre "vraie" programmation. Bien sûr, ils s'avèrent loin d'être simples et loin d'être «supplémentaires», étant des parties complexes et importantes du système, mais d'ici là, il y a déjà trop d'investissement dans la version sur mesure.

Existe-t-il de bonnes bibliothèques open source ou commerciales qui offrent ce type de fonctionnalité? Je ne suis pas sûr qu'il y en ait, et jusqu'à ce que quelqu'un intervienne et en fournisse un, cela restera ainsi. Les développeurs commerciaux ne sont souvent pas en mesure de produire des bibliothèques adaptées aux jeux (" quoi, vous voulez dire que vous ne pouvez pas supprimer complètement tous les appels dans une version Release?! ") Et les développeurs de jeux ne sont souvent pas intéressés à faire ce genre de chose comme un package autonome quand ils ont un jeu à faire.

Kylotan
la source