Voir OpenCity.info en allemandVoir OpenCity.info en anglaisVoir OpenCity.info en italienVoir OpenCity.info en français
Entête du site OpenCity.info
NoPatent logoOpenSource logoOpenGL logoSourceForge.net logoValid CSS!Valid XHTML 1.0 Strict

Derrière la scène

OpenCity 0.0.6 plan de développement

Utilisez moins de triangles à rendre l'eau           (fait)
Améliorer l'affichage alpha                          (fait)
Améliorer l'abattage de calcul                       (fait)
Supprimer inutilisés modèle OCM                      (fait)
Supprimer OCM code                                   (fait)
Ajouter 1 bouton état                                (fait)
Ajouter une nouvelle requête icônes                  (fait)
Amélioration de la requête cercle                    (fait)
Amélioration de la sélection de calcul               (fait)
Amélioration de la sélection zone chaude             (fait)
Ajouter heightmap dans la libération                 (fait)
Fix mettre format string                             (fait)
Enregistrer le fichier vérification de version       (fait)
Correction bug d'affichage véhicule sur redémarrer   (fait)
Suppression de noms standard de tête                 (fait)
Améliorer la manipulation extension OpenGL           (fait)
Suppression de fenêtre DOS sur le lancement          (fait)
Simplifiez-vous la vidéo code d'installation         (fait)
Ajouter SDL accéléré visuel                          (fait)
Correction de plein-écran et GL-version pour         (fait)
Correction de détection de résolution en plein écran (fait)
Améliorer la texture de classe                       (fait)
De références texture cache                          (fait)

Design problème

L'actuel diagramme de classes UML est ici . Tout en vert n'est pas encore mis en œuvre. Tous les jaune les classes sont plus ou moins mis en œuvre et la rose rectangles sont les interfaces. Pour la plus complète, enfin mise à jour de conception UML, télécharger le fichier UML.xmi de la source de dépôt. Il est fait avec Umbrello, un environnement Open Source de conception UML que vous pouvez télécharger ici . Je voudrais vous à l'avis de la conception UML n'est pas toujours exacte, mais il peut améliorer les codes «compréhension. ici est le diagramme de collaboration lors de l'émission démarre, et celui-ci est la ville où la classe affiche une couche.

L'UML est principalement pour la conception. Et, vous avez raison, il ne devrait pas être "const", "&" ou d'autres langages de mots-clés en elle. La raison en est, au début, j'ai utilisé le built-in générateur de code de Umbrello . Si je mets certains de ces langages de mots-clés, je réussis à obtenir une fonctionnelle codes directement à partir d'un diagramme de classes UML. En plus, je suis très strictes sur l'aide de C + + mots-clés, c'est pourquoi j'ai décidé de les placer dans le diagramme de classes UML. Ils me rappeler comment je dois les mettre en oeuvre plus tard dans les codes.

Habituellement, je travaille sur la conception des classes avant leur mise en œuvre. En outre, j'utilise la Standard Template Library (STL) autant que possible. Toutefois, dans certains cas, la STL est trop lent pour OpenCity. C'est la raison pour laquelle je préfère la plaine vieux C-gamme de style au lieu d'un vecteur d'objets. Dans un avenir proche, chaque classe sera entièrement documenté (er. .. je ne l'a pas fait pour chacun d'entre eux encore ;-)). Depuis OpenCity est une ville simulateur 3D développé sous Linux, il tourne sur la plupart des distributions Linux. Toutefois, mon logiciel est codé dans la voie qui le rend facile (je l'espère) pour le porter sur d'autres OS. Actuellement, OpenCity peut fonctionner sur Win32 sans problème.

La STL classes suivantes sont utilisées actuellement dans les codes:

std::vecteur std::carte std::paire std::deque

3D problème

J'ai très peu d'expérience avec OpenGL et j'ai appris sur le voler . Fonctions plus avancées seront utilisées à l'avenir aussi longtemps que le développement de OpenCity progresse en vue d'accélérer le rendu fonctions et d'afficher de meilleurs graphismes. Pour l'instant, la version actuelle de très primitives OpenGL de base tels que:

GL_POLYGON GL_LINES GL_TRIANGLE_STRIP...

L'ensemble du terrain est appelée en tant que GL_TRIANGLE_STRIP unique pour la vitesse optimization. L'algorithme que j'ai utilisé est rapide et sale. Pour plus d'informations, vous pouvez lire les commentaires dans le code source.

L'ancienne version 0.0.3beta utilisations de la méthode objet de coloriage pour les modèles de la cueillette. Cette méthode est décrite dans le OpenGL Programming Guide "ou les" Red Book ". Lorsque le joueur clique dans la fenêtre, il attribue une autre combinaison RGB à chaque objet à l'arrière-tampon. Ensuite, il lit les valeurs RGB du pixel qui est droit en vertu de la position du curseur afin de déterminer quel objet est choisi par le joueur. Cette méthode est très facile à mettre en œuvre et il peut traiter très rapidement. En outre, comme il est utilisé avec la profondeur de vérification, vous n'avez même pas à gérer la profondeur des objets uniquement parce que le plus proche objet peut être choisi par le joueur. Les limites de cette méthode sont le nombre de bits par pixel disponible et le double-buffer. OpenCity exige 32bpp et double-tampon à cause de cette méthode de sélection.

Dans la nouvelle version 0.0.3stable, OpenCity utilisations GL_SELECT mode pour objet la cueillette. C'est la raison pour laquelle la 32bpp ou 24bpp modes vidéo ne sont pas plus requis.

Style de codage

Parfois, vous pouvez le voir "//TOKILL" dans mes codes. Comme vous pouvez le deviner facilement son sens, il est à l'opposé de "//TODO":-D Les codes qui suivent un "tokill" marque souvent fonctionner parfaitement. Toutefois, ils ne sont plus utilisés dans la version actuelle de OpenCity et seront "tués" dans un avenir proche. J'ai laissé là-bas à des fins de référence. Quoi qu'il en soit, ils ne seront pas ralentir le jeu car elles sont toutes en commentaire.

Chaque variable est préfixée par son type, par exemple: "uiCityWidth". Il s'agit d'une variable de type "unsigned int". Plus de détails sont donnés dans le document de conception: "OpenCity_Design.sxw" et le "CodingStyle .*" fichiers. Vous pouvez les télécharger à partir du SVN.

D'autres simulateurs de ville

J'avais cherché sur Internet pour en savoir plus sur d'autres simulateurs de ville. Il ya bien sûr, le célèbre SimCity de 1 à 4 et Sim Societies. Sous Linux, il vous beaucoup de SimCity comme trop. Cependant, en contraste de SimCity, elles sont gratuites et souvent, abandon de projets ... à l'exception des trois: LinCity, PocketCity, et Simutrans. Si vous vous demandez ce que les autres projets sont, voici la liste: TheCity, TransitExecutive, FreeReign, LCitySim et SimBlob.

Je voudrais déposer quelques lignes à LinCity-NG qui est une version mise à jour de l'ancien LinCity avec de nouveaux graphiques. Vous pouvez le vérifier à la page du projet LinCity-NG chez Berlios.

Tous ces projets sont grands et ils me font rêver d'un énorme ambition: intégrer les aspects de leur mieux en OpenCity.

SDL OpenGL Ogre3D STL Boost xhtmlCopyright (C) by Duong Khang NGUYEN - Tous droits réservés