2010-10-13 4 views
1

Je cherche à faire un jeu relativement simple utilisant uniquement des primitives graphiques (Arcs, Lignes, Polygones, etc.). J'ai commencé à le faire en C# en dessinant sur un Panel, mais en ce moment je suis accroché à la façon dont toute la mise à l'échelle fonctionne en termes de garder les mêmes proportions quand on change de résolution. Est-ce que quelqu'un a des conseils et/ou des conseils sur la façon de faire quelque chose comme ça?Graphiques de jeux vidéo évolutifs

+1

Je voudrais demander à gamedev.stackexchange.com – Nate

+1

Désolé, nous n'avons pas la possibilité de passer des questions sur le site de gamedev. C'est une question de programmation, donc je ne vois rien de mal à la poser sur les deux sites car il y a un chevauchement entre eux. –

Répondre

3

Il y a deux options:

1 - tout échelle de sorte qu'il est de taille à un certain pourcentage de l'écran/fenêtre. Par exemple, si vous voulez que votre objet soit 1/4 de l'écran, alors sa largeur est ScreenWidth/4 et height est ScreenHeight/4. Le problème avec cette technique est que le rapport d'aspect d'un écran peut rendre les choses courtes et grosses ou grandes et larges. Habituellement, ceci est adressé en déterminant une dimension et en utilisant ensuite le rapport d'aspect de l'écran pour déterminer l'autre dimension. C'est-à-dire, Largeur = Hauteur * AspectRatio.

2 - Faites en sorte que tout soit de même dimension physique. Par exemple, vous pouvez vouloir qu'un objet apparaisse exactement 1 "par 1". Vous pouvez utiliser la résolution de l'écran (points par pouce) pour mettre à l'échelle vos dessins en conséquence. Le problème avec ceci est que, bien que cela puisse bien fonctionner pour les écrans de taille moyenne, les images peuvent être trop petites sur de grands écrans ou trop grandes sur de petits écrans.

La plupart des jeux utilisent la technique n ° 1 (avec compensation pour le rapport d'aspect). AR n'était pas toujours un gros problème, mais maintenant que les moniteurs grand écran sont si populaires, c'est presque nécessaire. De plus, comme Richard l'a dit, WinForms n'est pas génial pour les jeux (sauf le dragueur de mines!), Mais c'est probablement bien pour vous enseigner.

+0

"AR n'était pas toujours un gros problème, mais maintenant que les moniteurs grand écran sont si populaires, c'est presque nécessaire. " Je ne suis pas d'accord.Avec les fenêtres redimensionnables, vous devez toujours en tenir compte, sauf si vous voulez que vos cercles se transforment en ellipses et révèlent votre manque d'expérience. Mais bonne réponse dans l'ensemble. –

+0

Civilization IV affiche les cercles de ressources comme des ovales sur mon moniteur à écran large, ils ont finalement résolu le problème dans Civilization V. J'ai toujours détesté voir ces ovales, je pensais que leurs programmeurs étaient plus intelligents que ça. –

+0

En fait, le format d'image n'est pas trivial à résoudre - si vous voyez des cercles comme des ovales, il y a de fortes chances que la résolution requise ne soit pas prise en charge ou que ce que vous avez choisi soit erroné. Même ainsi, il n'y a aucun moyen pour le jeu de connaître le rapport d'aspect du moniteur ou des pixels, - soutenir chaque résolution est agréable et facile à faire en code, mais c'est beaucoup plus facile de ne pas le faire du tout. – jheriko

0

Pas vraiment une réponse utile, mais n'utilisez pas WinForms !! Si vous voulez une bonne plate-forme de jeu, utilisez DirectX ou XNA Game Studio.

+0

Bon sang, ce n'est pas vraiment utile. WinForms est parfait pour les petits jeux simples, et il semble que c'est l'objectif ici. Utiliser DirectX signifie apprendre à connaître les surfaces, les formats de pixels et un million d'autres détails de plomberie simplement pour dessiner un point sur l'écran. Et puis, existe-t-il une fonction de dessin en ligne ou en arc qui n'implique pas d'appels graphiques 3D? Et s'il y a ou non, * comment cela résout-il le problème réel? * – cHao

+0

Avez-vous réellement utilisé DirectX ??? L'API est horrible ... Je ne le recommanderais pas à un débutant. – jheriko

+0

Non, je n'ai pas beaucoup utilisé dx, mais j'utilise XNA a.lot, et c'est assez facile à comprendre, même si vous devez faire vos propres méthodes pour dessiner des primitives .... –

0

Vous pouvez le faire en utilisant GDI +, et transforme. Pour plus de détails sur l'utilisation de Matrix pour effectuer des transformations, voir this article on CodeProject. Cela étant dit, cela est beaucoup plus simple d'utiliser les options de dessin de WPF. En plus d'être un modèle en mode retenu, ce qui est beaucoup plus simple quand on fait des graphiques simples (ie: déplacer un objet au lieu de le redessiner constamment), il a d'autres avantages intéressants. Le principal avantage est que tout dans WPF est fait en utilisant des valeurs à virgule flottante, et est complètement évolutif, sans effort supplémentaire réel. Pour plus de détails à ce sujet, voir Shapes and Basic Drawing with WPF, qui inclut à la fois le dessin et la transformation de formes.