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?
software-engineering
java
Øyvind
la source
la source
Réponses:
É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.
la source
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.
la source
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.
la source