Jeu Java dans un jour ou deux [fermé]

9

Nous sommes trois personnes qui vont faire un jeu simple en Java comme projet scolaire (Université, première année). Le jeu doit être orienté objet. Nous n'avons pas beaucoup de temps, des sommets de 10 à 20 heures . Aucun de nous n'a d'expérience dans le développement de jeux, mais nous avons tous de bonnes compétences en Java.

Nous pouvons choisir exactement quel type de jeu, et c'est là que réside le problème. Quelle hauteur devrions-nous viser? Il y a une compétition en jeu, nous voulons donc faire le meilleur jeu dans le temps dont nous disposons. Un jeu 3D est-il irréaliste? Devrions-nous utiliser des moteurs de jeu / bibliothèques? Quel type de fonctionnalité devons-nous éviter?

Øyvind
la source
4
La 3D vise un peu trop haut quelle que soit l'heure, étant donné que vous n'avez aucune expérience de gamedev. ; P
The Communist Duck
malheureusement, je pensais que: P
Øyvind
PONG! pagaies, ballon y a-t-il des objets propres, ajoutez une partition. la balle frappe une pagaie vous multiplie la direction par -1. si le ballon dépasse le point de pagaie de l'autre équipe, faites servir le ballon à l'autre joueur. ou est-ce trop facile?>
Spooks
Je pense que nous devrions peut-être viser un concept meilleur et plus créatif, mais facile à développer ...
Øyvind
1
Que diriez-vous de partager votre jeu avec nous? :)
ashes999

Réponses:

23

Évitez la 3D , car vous devez savoir comment créer des modèles 3D ou en trouver de bons, vous devez savoir comment charger ces modèles (souvent une tâche épique en soi, malheureusement) et comment les dessiner à l'écran (par exemple, OpenGL ou DirectX demande beaucoup de travail pour peu de gain, et même un moteur comme jMonkeyEngine nécessite des connaissances sur l'utilisation du moteur, ainsi que des connaissances 3D de base). Blitting d'images 2D sur l'écran et les déplacer est beaucoup plus simple que de traiter des sommets, des matériaux, des matrices de vue, des transformations, etc. etc. Je pense que vous comprenez.

Restez fidèle aux bibliothèques et classes Java intégrées: Graphics2D, ImageIO, écouteurs de souris et de clavier AWT, Canvas, Java Sound API, etc. Les avantages de s'en tenir à ceux-ci au lieu de trouver une autre bibliothèque comprennent: vous les connaissez déjà (dans une certaine mesure), vous savez qu'ils sont bien testés et stables et ont généralement du sens, la documentation et les ressources en ligne sont abondantes et elles sont portables, donc vous n'avez pas à vous soucier d'installer des bibliothèques supplémentaires avec des bibliothèques natives et tout ça.

Créez une petite bibliothèque d'extraits de code à l'avance. Cela inclut des choses comme le chargement d'une image, le dessin d'une position à l'écran, la mise à l'échelle de l'image et d'autres effets, la lecture d'un son, la musique de fond en boucle, la détection de collision de boîte englobante, le dessin de texte. Ayez également une application squelette qui ouvre un cadre (ou une applet), y ajoute un canevas, et les méthodes de peinture et de repeinture du canevas doivent être remplacées, et un fil doit boucler la méthode de repeinture du canevas (ou un minuteur qui l'appelle). Vous pouvez apprendre ces choses en cherchant Java 2D game programming. En supposant que vous ayez accès à la bibliothèque de votre université, vous devriez avoir un certain nombre de bons livres de jeux Java à votre disposition; vérifiez-les et parcourez-les pour les extraits mentionnés ci-dessus et d'autres que j'ai manqués.

Pratiquer le contrôle des sources et la division du travail avec votre équipe à l'avance.Allez-vous utiliser Subversion, Git, Mercurial ou autre chose? Les ordinateurs de tout le monde sont-ils configurés sur la même version à jour de Java? Créez votre référentiel, validez / envoyez des fichiers, assurez-vous que tout le monde a le référentiel extrait et prêt à être installé sur votre système. Peut-être valider une application «bonjour le monde» et s'assurer que tout le monde est capable de la tirer, de la modifier et de la valider; et assurez-vous de savoir comment gérer la fusion (que vous l'évitiez entièrement avec une bonne communication ou une bonne programmation par paires, ou que vous sachiez utiliser un outil de fusion). Ou, si vous n'êtes pas familier avec le contrôle de code source, assurez-vous de trouver une solution qui fonctionne; que ce soit la programmation en binôme pendant que la troisième personne fait de l'art ou des sons, ou autre chose, assurez-vous d'être organisé dès le début ou vous perdrez des tonnes de temps.

Ajoutez des liens vers des sites Web proposant des médias gratuits. De nombreux sites de ce type ont été répertoriés dans d'autres questions ici; des sites comme freesoundsont parfaits pour trouver rapidement des supports utiles à utiliser dans votre jeu lorsque vous n'avez pas le temps de le faire à partir de zéro. Bien sûr, mettez ce site en signet pour pouvoir poser une question si vous êtes coincé sur quelque chose. Marquez des forums tels que les forums gamedev.net afin que vous puissiez les rechercher pour trouver des réponses. Si vous choisissez d'utiliser une bibliothèque tierce, ajoutez leur site Web à vos favoris. Organisez ces signets dans des dossiers et saisissez-en autant que possible, et assurez-vous de les partager afin que vous ayez tous les trois la même bibliothèque utile de signets. Il ne faut pas beaucoup de temps pour faire le tour et collecter ces signets et les organiser par type / sujet, mais cela vous fait gagner beaucoup de temps lorsque vous n'avez pas à vous souvenir de tous ces sites Web au milieu de votre projet.

Pour plus de suggestions, voir les réponses à ma question "Comment se préparer à un concours de développement de jeux?" .


Pour répondre au reste de votre question ... Le conseil général est: ne visez pas haut . Cependant, cela peut varier considérablement en fonction de votre préparation (c'est-à-dire mes suggestions ci-dessus) et de vos compétences en Java. Il s'agit en grande partie d'un jugement personnel basé sur votre histoire, mais comme aucun d'entre vous n'a déjà fait de jeux (et ne peut donc pas juger du temps nécessaire), visez vraiment très bas . Trouvez une idée vraiment basique qui peut être facilement implémentée en 2D sans aucun concept avancé (par exemple, évitez les collisions pixel par pixel, les calculs physiques fous, les effets de particules, etc.). Mais ensuite créez une liste prioritairedes fonctionnalités du jeu, avec autant de détails que possible (par exemple, divisez chaque fonctionnalité en autant de tâches distinctes que possible). De cette façon, vous descendez la liste autant que possible, et si vous n'obtenez pas certaines tâches de faible priorité, cela ne devrait pas être un gros problème. Cela doit être fait avec soin (vous avez toujours besoin d'un jeu fonctionnel à la fin du temps, donc il y a un ensemble minimum de tâches qui doivent être faites et certaines tâches dépendent d'autres tâches), mais en général je pense que c'est le meilleure approche lorsque vous ne savez pas combien de temps les choses prendront.

Ricket
la source
Voilà d'excellents conseils.
Alexander Gessler
1
Bons points. Bien que je pense que le contrôle de source peut aussi rendre les choses plus compliquées pour les débutants (imaginez que quelqu'un gâche le repo). Lorsque le temps est critique, il ne faut pas commencer à utiliser de nouveaux outils. Mais si vous êtes déjà familier avec un VCS, il devrait certainement être utilisé.
bummzack
4
Les conseils de Ricket pour viser bas et utiliser une liste prioritaire sont excellents - ils visent à minimiser les risques et à augmenter l'itération. Vous voulez éviter les situations où vous devez travailler pendant 8 heures avant de faire fonctionner quoi que ce soit. Si cela ne fonctionne pas ou si cela prend plus de temps, vous pourriez vous retrouver avec rien. Au lieu de cela, essayez de lancer un jeu en moins d'une heure, puis passez le reste de vos 10 heures à ajouter des choses, jouer à des tests, affiner. Pendant que vous jouez, vous trouverez toujours plus de choses à ajouter.
amitp
@bummzack D'accord! Il peut vraiment gêner, donc s'entraîner et en être sûr est essentiel, mais il peut également être super génial et utile s'il est utilisé correctement.
Ricket
La meilleure chose à faire pour que les choses fonctionnent rapidement est de le faire en mode de programmation extrême (mieux que svns), ce qui signifie que des équipes entières s'assoient ensemble devant un ordinateur. Cela fonctionne très bien en petites équipes (2-3 max). Vous vous soutenez mutuellement et les problèmes sont résolus plus rapidement - vous ne vous sentez pas frustré.
Notabene
2

Ne visez pas trop haut. Choisissez quelque chose qui vous intéresse et construisez quelque chose de simple autour de cela. Exemple: Peut-être êtes-vous vraiment intéressé à en apprendre davantage sur un moteur physique. Pourquoi ne pas construire un casse-tête physique comme totem-destroyer ou similaire? Essayez de tourner autour d'un élément central et n'incluez pas d'autres choses compliquées comme l'IA, le rendu / les graphiques / les shaders sophistiqués, etc.

Concentrez-vous sur un aspect et essayez de trouver un mécanisme de jeu qui convient à cela. Si vous êtes intéressé par la 3D, votre jeu pourrait être aussi simple que tic-tac-toe, mais concentrez-vous sur l'obtention de bons graphiques 3D à l'écran.

N'essayez pas d'apprendre trop de nouvelles choses à la fois. Utilisez autant que possible les cadres / outils existants.

Pour compléter ceci, voici quelques idées pour un jeu de "démarrage": Quels sont les bons jeux pour "gagner vos ailes"?

Mise à jour: Puisque vous manquez vraiment de temps, je réduirais les "nouvelles choses à apprendre" au minimum absolu. Un moteur physique peut déjà être exagéré si vous n'en avez jamais utilisé auparavant. Choisissez également un mécanicien de jeu que vous connaissez déjà, de préférence avec un petit ensemble de règles bien défini et un nombre limité d'états de jeu.

bummzack
la source
2

Si vous n'avez aucune expérience préalable dans l'écriture de jeux 3D, je laisserais tomber l'idée 3D immédiatement. Au lieu de cela, concentrez-vous sur un concept de jeu simple et essayez de l'implémenter à l'aide de graphiques 2D simples. Assurez-vous de mettre en œuvre les mécanismes de jeu en premier - si vous avez terminé plus tôt, vous pouvez toujours ajouter des effets visuels sophistiqués.

Mais un jeu sans gameplay n'est pas un jeu tandis qu'un jeu sans graphismes époustouflants peut toujours être amusant.

20-30 heures de travail est très peu de temps pour un bon jeu, donc vous devez vraiment planifier et hiérarchiser vos tâches avec soin ou vous n'obtiendrez jamais un résultat correct.

Alexander Gessler
la source
Un bon point en effet :)
Øyvind