Question

Il y a plus de 5 ans, je jouais avec DirectSound et Direct3D et je l'ai trouvé très excitant mais il a fallu beaucoup de temps pour obtenir de bons résultats avec C ++. J'étais un étudiant alors. Maintenant, j'ai surtout l'expérience de développement de l'entreprise en C # et PHP, et je le fais pour vivre. Il n'y a vraiment aucune chance de gagner de l'argent avec le développement de jeux sérieux dans notre pays. Chaque jour de plus en plus je trouve que je manque quelque chose. Alors je décide de passer une heure chaque jour pour faire de la programmation pour le plaisir.

Donc, mon idée est de construire une simulation mondiale. Je voudrais commencer par quelque chose de simple - des créatures ressemblant à l'homme qui vivent leur vie - comme Sims 3, mais les besoins beaucoup plus simple, il suffit de base, des animations de base, les actifs minimum graphiques - Je suppose que ce ne sera pas une ville mais juste un grande maison pour commencer. L'idée est d'avoir une sorte d'une application serveur qui stocke les données du monde dans la base de données MySQL, et certaines applications clientes - corps moins bots qui simulent le mouvement et des interactions avec le monde et chacun. Mais ce ne serait pas amusant sans 3D. Donc, il y a aussi des clients 3D - Je peux entrer dans ce monde virtuel et voir les bots vivant. Lorsque le robot entre dans la zone visible, il devient matière - charge un maillage et des animations, donc je peux le voir. Quand je pars, les bots perdent à nouveau leur corps en maille 3D, mais leur vie virtuelle continue encore.

Avec le temps, je l'espère pour le rendre comme un bac à sable scriptable extensible à expérimenter avec divers algorithmes AI et ainsi de suite. Mais je ne suis pas l'intention de créer un MMORPG complet: D

Je l'ai cherché beaucoup de choses possibles je besoin (source libre et ouvert) et maintenant je dois faire un choix:

  • Ogre3D + enet (ou RakNet). Bon vieux C ++. Mais ne pas me ralentir tant que je ne vous amuser plus?

  • Crystal Space

    . Formellement pas un moteur de jeu, mais très proche de cela. C ++ à nouveau.

  • Mogre (emballage Ogre3D pour .NET) + Lidgren (bibliothèque réseau qui est déjà utilisé dans certains projets de jeux). Bon - J'aime C #, il est bon pour la programmation rapide et peut également être utilisé pour les scripts.

  • XNA semble juste un cadre, pas un moteur, ont donc vraiment des doutes, je devrais même regarder XNA Game Studio: (

  • Panda3D - moteur de jeu complet avec des commentaires positifs. Je idée vraiment avoir tout le jeu d'outils dans un seul paquet, il a de bonnes critiques en tant que moteur de débutant convivial ... si vous connaissez Python. Du côté C, Panda3D dispose d'une documentation quasi inexistante. J'ai 0 expérience avec Python, mais je l'ai entendu, il est facile d'apprendre. Et si ce sera alors amusant et stimulant, je suppose que je bénéficier de l'expérience dans un autre langage de programmation.

Laquelle de ces proposeriez-vous, non pas à cause de fonctionnalités avancées ou un bon support de plate-forme, mais surtout pour le plaisir, flux de travail facile et évolutivité, et ainsi je peux créer et intégrer tous les composants dont j'ai besoin - le serveur avec la base de données, bots et une application client 3D?

Était-ce utile?

La solution

Si vous aimez python, il existe des liaisons pour Ogre. Consultez python-ogre. Je l'ai utilisé un peu et il semblait assez stable pour être utilisé. Cependant, vous rencontrerez le bug occasionnel comme la base d'utilisateurs est pas grand.

J'ai plus d'expérience avec plaine C ++ Ogre, que j'aime utiliser beaucoup. Je ne pense pas que cela va vous ralentir beaucoup. Il semble que votre projet pourrait évoluer à un niveau assez grand, et vous aurez besoin de beaucoup de performances pour le faire. Dans ce cas, C ++ est jamais un mauvais choix.

En tout cas une fois que le moteur est fait, il est à peu près tout sur les scripts. Et vous pouvez le faire dans un langage de haut niveau si vous voulez.

Autres conseils

Je ne l'ai utilisé XNA, donc je ne peux pas vraiment vous donner une bonne comparaison aux autres. Je dirai que tout XNA est juste un cadre, TorqueX 3D est un moteur. Vous avez accès aux binaires du moteur TorqueX 2D et 3D lorsque vous vous abonnez à développer pour XNA (100 / an $).

Je n'ai pas travaillé avec le moteur 3D, mais je l'ai utilisé le moteur 2D. Je dirai que la documentation sur l'API peut être un peu rares, mais ils ont de très bons tutoriels d'introduction et un forum assez utile et actif pour les questions qui ne sont pas répondues par les tutoriels.

Votre expérience avec C # va évidemment être très utile. Vous devrez en tenir au développement de Windows cependant, parce que vous n'aurez pas accès à la pile réseau (ou base de données) sur la Xbox 360.

Une fois que je travaillais dans les tutoriels et suis habitué au style de couple, je l'ai trouvé être assez amusant de travailler avec. Il est très facile d'ajouter des objets / comportements. le support du son a été amélioré et fait très simple avec certaines des dernières versions du cadre XNA. Il a un bon éditeur 2D, et je pense que l'éditeur 3D est décent et (ont pas vraiment essayé) pour vous aider à commencer à créer des niveaux. Je suppose que cela manque dans le département de réseau / base de données que vous auriez à utiliser la substance .NET standard ou apporter dans d'autres bibliothèques de travailler avec.

Je pense qu'il serait utile de votre temps de jeter un coup d'oeil de toute façon et le comparer aux autres. Je crois que vous pouvez télécharger un essai, même sans signer pour XNA libre (30 jours) si vous voulez jouer avec elle. Bonne chance!

Panda3D semble avoir la promesse car il a une façon de modifier les mailles à l'exécution (cette fonction fait défaut, buggy ou autrement difficiles à utiliser dans de nombreux moteurs 3D) qui serait ce dont vous avez besoin pour les changements de maillage interactifs côté client enregistrées par un serveur commun. Dans votre base de données assurez-vous d'inclure un horodatage sur les modifications de sorte que vous pouvez exécuter des requêtes appropriées pour générer des correctifs pour les clients pour obtenir la mise à jour des informations de maillage tel qu'il est modifié.

en utilisant InnoDB, vous pouvez faire quelque chose comme des tables SQL est probablement mon arrêt, mais cela donne l'idée:

create table `vertex` (
  `id` bigint(15) not null auto_increment,
  `when` timestamp default now() not null,
  `x` number not null,
  `y` number not null,
  `z` number not null,
  `cR` number default 0.0 not null,
  `cG` number default 0.0 not null,
  `cB` number default 0.0 not null,
  `cA` number default 1.0 not null,
  `u` number default 0.5 not null,
  `v` number default 0.5 not null
) primary key (id) ENGINE=InnoDB;

create table triangles (
  `p1` bigint(15) not null references (vertex.id) on delete restrict on update cascade,
  `p2` bigint(15) not null references (vertex.id) on delete restrict on update cascade,
  `p3` bigint(15) not null references (vertex.id) on delete restrict on update cascade,
  `when` timestamp default now() not null
) primary key (p1,p2,p3) ENGINE=InnoDB;

id est id sommet quand est timestamp vous permettant de faire des correctifs de mise à jour x, y, z est le point de sommet 3d cR, cg, Cb, cA est la couleur de sommet RGBA u, v est la texture des sommets de coordonnées p1, p2, p3 se réfèrent aux vertex dans la table de sommet pour former des triangles comme indiqué par les références clés étrangères ... InnoDB nous permet d'empêcher le sommet non défini (par exemple: cohérence) des questions connexes afin de bien l'utiliser. S'il est acceptable de supprimer tous les triangles avec un sommet supprimé dans votre changement de situation « restreindre » à « cascade » (limite en fait une erreur de supprimer un sommet avec des triangles qui l'utilisent)

En ce qui concerne l'algorithme de maillage bot, vous êtes essentiellement implemententing un abattage sélectif LOD pour les robots ne sont pas en vue. De nombreux moteurs sont déjà en mesure de le faire pour vous déjà. Par exemple toutes les mailles skinning / animation de la bot peuvent être les enfants à objet extérieur du bot dans Panda3D et si est cueillis hors de portée visible objet externe du bot alors aucun des enfants sont référencés du tout.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top