É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.