2009-10-19 11 views
3

Je suis confronté à un problème qui est probablement très commun dans la conception de jeux.2D World design question

  1. Supposons que nous avons un monde 2D
  2. taille du monde est M x N rect
  3. Le monde peut contenir certains des éléments qu'il
  4. Les articles ont (x, y) coords
  5. Le monde peut être parcouru via une fenêtre physiquement (mxn) grande.
  6. La fenêtre du navigateur peut être agrandie/désactivée
  7. La fenêtre du navigateur peut être déplacée vers le haut/bas + vers la gauche, dans l'étendue du rectangle du monde.

Comment dois-je procéder pour implémenter cela? Je suis particulièrement préoccupé par la fenêtre du navigateur. Quelqu'un peut-il recommander de bonnes lectures?

Ce n'est pas un devoir - c'est plus d'une tâche que je me suis mis à accomplir.

+0

Voulez-vous dire navigateur comme navigateur Web? En outre, je suppose que le mxn dans 5 est différent du MxN dans 2. – Tordek

+1

Est-ce une application Web? Ce n'est pas clair à partir de la question. –

+0

Qu'il s'agisse ou non d'une application Web n'est pas pertinent. J'essaie de me concentrer sur le problème lui-même, pas sur la méthode de déploiement :) – Maciek

Répondre

0

Vous pourriez être en mesure de sortir avec dhtml, mais flash ou silverlight serait beaucoup plus facile à mettre en œuvre quelque chose comme ça.

Jetez un oeil sur le code derrière google maps pour un peu d'inspiration. Ils font quelque chose de similaire à ce que vous voulez en html pur.

+0

Supposons que je suis html-impaired, honnêtement, je déteste diggin si elle lol – Maciek

1

comme vous Mettre en oeuvre souhaitez mettre en œuvre Google Maps avec des marqueurs spéciaux.

+1

et Comment pourrais-je implémenter google maps?lol – Maciek

+2

Eh bien, vous avez un div (avec 'position: relative') avec un tas de tuiles du monde à l'intérieur (' position: absolute'). Ceux-ci se déplacent par rapport à la position de votre personnage dans le monde. Lorsque la fenêtre d'affichage de l'utilisateur est en dehors de l'ensemble actuel de mosaïques chargées, vous ajoutez plus de mosaïques (et supprimez les mosaïques lorsqu'elles sont masquées). Vos tuiles du monde sont une couche ('z-index: 1'), vos ennemis sont dans une autre couche (' z-index: 2'), votre personnage est dans une autre couche ('z-index: 3'). Les tuiles dans chacun sont déplacées ('position: absolute, top: 39px, left: 107px') selon votre logique de jeu. –

1

Fondamentalement, vous mappez un sous-ensemble rectangulaire d'une zone à un autre rectangle, c'est-à-dire. la fenêtre du navigateur. Ceci est essentiellement juste 2 opérations - une de traduction, pour positionner la zone vue dans le monde, puis une de mise à l'échelle, pour prendre cette zone visible arbitraire et la mettre à l'échelle de la fenêtre. Séparer à cela est la question du zoom avant et arrière, ce qui modifie essentiellement la taille de la zone vue.

Dans le développement de jeux, il existe plusieurs façons d'aborder cela. Généralement, vous personnalisez une projection de vue pour montrer le monde dont vous avez besoin (c'est-à-dire transformer des coordonnées mondiales en coordonnées de visualisation, typiquement une projection orthographique) et simplement traduire le monde ou la vue pour placer la fenêtre pointant vers ce que vous voulez voir. Si vous avez correctement défini la position de vos objets, le matériel 3D dessinera ce que vous attendez.