Conseils pour une première année CS majeure [fermé]

17

J'arrive à la fin de ma première année de CS qui a été principalement un cours basé sur Java. J'aimerais me mouiller les pieds avec un peu de développement de jeu mais je ne sais pas par où commencer.

Certaines personnes ont suggéré que je commence par un créateur de jeux qui a un langage de script de style C (qui devrait être facile à comprendre) car il est probablement le plus simple et me permet de me concentrer principalement sur la conception du jeu et la façon dont l'ensemble du jeu s'assemble.

Je vois que beaucoup de gens ont recommandé XNA, car il a une bonne abstraction de opengl et directX grâce à ses API. J'entends également que C # est très similaire à Java.

J'ai également envisagé la programmation de jeux en Java depuis que je suis assez à l'aise avec cela et j'ai fait des lectures supplémentaires sur le multi-threading et les API graphiques 2d.

Enfin, un ami m'a récemment montré pygame qui sonne aussi très bien même si je ne sais pas grand-chose à ce sujet.

Je ne sais pas si le C ++ est un bon point de départ, beaucoup de messages que j'ai vus pour les développeurs de jeux débutants ne le recommandent pas pour un premier projet de jeu.

J'apprécierais toute contribution, en particulier de ceux qui se sont lancés dans le développement de jeux à partir d'un arrière-plan Java

avatarX
la source
5
Le C ++ est dur, sacrément dur, mais c'est plus facile à long terme si vous essayez de vous en occuper avant que Java ne le définisse vraiment. Il est certainement plus difficile d'essayer d'apprendre C ++ à partir d'un arrière-plan Java que d'apprendre Java à partir d'un arrière-plan C ++. joelonsoftware.com/articles/ThePerilsofJavaSchools.html
David Young
1
Je serais mort en essayant d'apprendre le C ++ après avoir commencé avec Java, j'ai commencé avec un style plus ancien C ++, puis j'ai appris Java. Si vous êtes inquiet de passer aux pointeurs, je vous recommande simplement d'apprendre la programmation directe en C et Unix. Cela vous met dans une toute nouvelle mentalité, vous êtes donc moins susceptible d'appliquer des concepts Java inapplicables.
michael.bartnett

Réponses:

14

Il y a beaucoup de bons choix. (J'enseigne CS1 et CS2, ainsi que la programmation de jeux.) Tout d'abord, bien sûr, apprenez à penser comme un informaticien. Ne soyez pas trop lié à la langue, car les concepts sont vraiment universels.

Java est un assez bon langage, mais construire un jeu en Java est un peu fastidieux. Il existe des moteurs intéressants qui facilitent un peu le processus. Malheureusement, il peut être un peu pénible d'attacher un moteur de jeu à votre outil d'édition.

J'aime le moteur FANG (malheureusement, je ne peux pas encore publier d'hyperliens, alors recherchez-le sur Google.) Une partie intéressante de ce projet est l'éditeur en ligne. Cela signifie que vous pouvez commencer immédiatement sans avoir à vous soucier des paramètres d'éclipse.

Je ne suis vraiment pas fan de Game Maker. L'interface graphique convient aux personnes qui ne veulent pas apprendre à programmer, et c'est un outil de prototypage décent (mais pas génial). Cependant, il y a deux choses que je n'aime pas. Tout d'abord, c'est commercial. Ce n'est pas une mauvaise chose, mais s'il existe des alternatives open source gratuites qui sont tout aussi bonnes (et il y en a), vous devriez peut-être les examiner en premier. Le plus gros problème avec Game Maker est le langage de script. Finalement, vous allez devenir trop grand pour l'interface graphique et vous voudrez réellement commencer à écrire du code. Le langage de script dans GM est assez rétrospectif. Puisque vous êtes un CS majeur, vous êtes (j'espère) intéressé par la réutilisation du code, l'élégance, la clarté, l'efficacité et la modularité. La langue GM vous décevra.

J'adore Python et Pygame. (En fait, j'ai écrit un livre à leur sujet. Voir toutes mes notes et vidéos en ligne sur mon site si vous le souhaitez. Vous êtes les bienvenus à ces ressources, que vous ayez le livre ou non.) t trop difficile à apprendre (surtout si vous savez déjà programmer.) Pygame est un wrapper sur le populaire moteur SDL 2D. En fait, j'ai ajouté un deuxième wrapper à pygame pour le rendre aussi facile à utiliser que Flash.

En parlant de Flash, je ne pense pas que cela en vaille la peine. (Je sais que vous ne l'avez pas demandé) C'est une bonne plate-forme, mais le coût et l'incertitude sur la façon dont elle se comportera sur les appareils mobiles signifie que ce n'est peut-être pas un excellent outil d'apprentissage. (J'ai aussi écrit un livre sur le développement de jeux dans Flash, mais je n'enseigne plus Flash.)

Voici d'autres bonnes choses à essayer. Obtenez une copie de zéro du MIT: scratch.mit.edu Il est fait pour les enfants, mais ne vous découragez pas. C'est un jeu et un outil d'animation absolument incroyables. La programmation utilise des tuiles, il est donc facile de commencer avec. Vous serez complètement étonné de ce que vous pourrez en faire.

Vous pouvez également essayer Alice de Carnegie Melon www.alice.org La dernière (3e) édition est en fait une extension de Java, qui utilise les modèles Sims2.

Scratch et Alice sont gratuits.

Un autre excellent outil à étudier est Blender www.blender.org

C'est un outil de modélisation 3D, mais beaucoup de gens ne savent pas que c'est aussi un moteur de jeu complet avec une interface de programmation par glisser-déposer. Une fois que vous avez dépassé les tuiles, le support Python est intégré.

Maintenant, je suis assez intéressé par HTML5 (qui est à peine HTML - c'est vraiment HTML, CSS et JavaScript.) Il n'est pas tout à fait là en tant qu'environnement de développement de jeux, mais je crois que ce sera un grand joueur. Mon prochain livre sera consacré au développement de jeux en HTML5.

Bonne chance à vous et faites-moi savoir si vous avez d'autres questions.

Deux pi
la source
Merci pour votre contribution, je vérifie votre site pendant que nous parlons. Je suis sûr que ce sera précieux d'avoir quelqu'un avec votre expérience qui contribue ici
avatarX
La gestion du pointeur n'est pas universelle = (maudire ma mise en place de Java.
David Young
Je voudrais savoir pourquoi vous pensez que la construction d'un jeu en Java est fastidieuse. En outre, il semble que vous suggériez que Python est moins fastidieux. Avec autant de superbes frameworks et bibliothèques centrés sur les jeux Java, cela semble être une déclaration très audacieuse à faire.
zfedoran
1
Pour un programmeur débutant, tout en Java peut être plus fastidieux. Comparez quelque chose comme printf. En python, cela fait partie de l'instruction print: affichez "% s, votre score est% d"% (étudiant, score). En php, vous devez convertir toutes les primitives en classes wrapper, les convertir en objets et créer un tableau d'objets anonyme. J'aime Java. (Je l'ai enseigné pendant des années et j'ai écrit un livre à ce sujet.) Cependant, si l'objectif est de faire entrer quelqu'un dans la programmation de jeux, je veux un langage qui s'éloigne autant que possible.
Two pi
Merci d'avoir pris le temps de commenter. Cela m'a aidé à comprendre d'où vous venez. Cependant, je ne suis pas encore tout à fait convaincu que le python est une meilleure langue pour les étudiants, tout comme la faculté de mon université a remis en question leur récent changement en Python pour les étudiants de première année. Peut-être que les étudiants sont simplement bloqués sur de nouveaux problèmes. Auparavant, les étudiants rendaient tout «public statique», maintenant ils ont du mal à comprendre la différence entre les types.
zfedoran
5

Cela dépend de votre objectif et de la partie du développement de jeu dans laquelle vous souhaitez vous lancer.

Êtes-vous plus intéressé par les véritables écrous du fonctionnement des moteurs de jeu et la construction de quelque chose à partir de zéro ou voulez-vous entrer dans les parties de développement du jeu le plus rapidement possible.

Écrous et boulons: XNA est un bon moyen de plonger vos orteils dans cette arène. Le cadre fait beaucoup pour vous, mais vous pouvez lentement remplacer chaque pièce par votre propre code à mesure que vous vous familiarisez avec C #. L'apprentissage de C # est bon pour les futurs postes de développement de jeux car les outils sont souvent construits avec C #.

Programmation du gameplay: l' unité est une bonne option ici. Gratuit et vous permet de coder dans plusieurs langues, y compris JavaScript et C #. Vous serez en mesure de faire fonctionner les choses rapidement, ce qui est une bonne motivation. De plus, vous pouvez passer à une autre langue et même mélanger des langues pour vous aider à élargir votre compréhension.

Ce qui est bien, c'est qu'ils sont tous deux libres de jouer avec et peuvent être connectés à une variété de matériel pour un coût assez minime.

wkerslake
la source
4

Pourrait toujours faire des jeux basés sur Java, rien de mal à ceux-ci (http://zetcode.com/tutorials/javagamestutorial/)

XNA et AS3 sont très proches et peuvent créer des jeux aussi compliqués ou aussi simples que vous le souhaitez. (même si cela est vrai avec java)

Une chose à retenir est toujours la pratique et il suffit de jouer avec le code.

Spooks
la source
3

Java Monkey Engine

Si vous êtes plus à l'aise avec Java, vous pouvez utiliser Java Monkey Engine pour un cadre à utiliser lors de la création de jeux. Il a également une quantité décente de documentation / tutoriels, y compris des instructions pour l'intégration avec Netbeans et Eclipse.

lathomas64
la source
Je dois dire que JMonkeyEngine a l'air bien. Je vais certainement le vérifier. Merci pour votre contribution
avatarX
2

Unité

Je dirais essayer Unity . Ils ont une version gratuite et vous pouvez vous mouiller les pieds en quelques heures pour avoir l'idée de base en suivant deux tutoriels fournis par Unity:

L'autre chose intéressante à propos de l'unité est que vous pouvez utiliser JavaScript comme langage de script et vous pouvez également publier votre jeu sur Windows, MacOS, Web, iPhone et maintenant avec la version 3 sur les appareils Android.

Ils utilisent également le moteur StackExchange pour les réponses Unity et ils ont une merveilleuse communauté pour toutes vos questions liées à Unity.

Lipis
la source
1

N'importe lequel d'entre eux serait un bon début, parlant en tant que développeur dont la formation initiale en CS était à Java.

C # est très proche de Java (je plaisante parfois qu'il s'agit de Java à plate-forme limitée avec de meilleures bibliothèques), donc XNA pourrait être un bon choix. Minecraft est développé en Java avec la bibliothèque de jeux lwjgl, donc si vous voulez rester avec Java, c'est une bonne méthode. Bien sûr, le développement 3D est un peu compliqué; en fonction de vos connaissances, de votre expérience et de votre persévérance, vous voudrez peut-être attendre en 3D (ou même en 2D dans un système basé sur la 3D) jusqu'à ce que vous obteniez plus d'éducation à votre actif.

Pour les solutions 2D: Game Maker est très simple et a été utilisé pour créer de superbes jeux. Vous devriez être capable de récupérer son langage de script assez facilement, mais cela pourrait être trop simple pour quelqu'un avec un an d'expérience Java. Je développe en Flash en utilisant pur AS3 ( tutoriel ), assez proche de Java pour que vos compétences se traduisent facilement.

Gregory Avery-Weir
la source
1

Je recommanderais fortement d'aller avec XNA. C'est une plate-forme assez performante et bien supportée avec une communauté croissante. XNA commence vraiment à trouver sa «place» dans l'écosystème maintenant que le framework est livré sur plus de plateformes que jamais (y compris Windows Phone 7). Plus important encore, cependant, l'utilisation de XNA vous obligera à apprendre le développement C # et .NET général. Il vous incomberait d'acquérir de l'expérience avec cette plate-forme, que vous décidiez de vous lancer dans le développement de jeux, car le développement .NET se développe et a un marché du travail très sain. Java, quant à lui, est en train de mourir lentement depuis un certain temps maintenant, et les événements récents n'ont fait que hâter sa disparition. Si votre programme CS, comme celui que j'ai terminé, est fortement axé sur Java, alors il vous serait utile d'apprendre C # /. NET à votre rythme.

Même si Java continue de vivre et que vous décidez de poursuivre une carrière dans le développement Java, vous finirez probablement par devoir vous intégrer aux systèmes .NET. Donc, quelle que soit la situation, l'expérience ne vous aiderait qu'à long terme.

Mike Strobel
la source
Indeed.com/jobtrends?q=java&l= et Indeed.com/jobtrends?q=.net&l= sont assez représentatifs de la demande du marché pour les deux. On dirait que Java est celui qui se développe réellement.
David Young
Je n'avais pas envisagé l'afflux de développement Java provoqué par le succès de la plateforme Android. Cela a probablement beaucoup à voir avec le saut des ouvertures d'emplois connexes fin 2008 et début 2009. Il sera intéressant de voir comment WP7 et la disponibilité de MonoTouch pour iOS et MonoDroid pour Android impactent la présence mobile de Java.
Mike Strobel
1

Si vous êtes intéressé par la conception de jeux , pourquoi ne pas commencer par créer un jeu de cartes ou quelque chose qui ne nécessite aucune programmation? Cela vous permettra de vous concentrer sur la conception et la mécanique du jeu plutôt que de vous frayer un chemin à travers des API, des langages et des cadres que vous ne connaissez pas.

Trimbo
la source
1

Vous pourriez également aimer utiliser http://Processing.org . C'est un excellent environnement pour apprendre la programmation graphique. Bien qu'il ne soit pas strictement un outil de développement de jeu, il a beaucoup à offrir. Son langage est une extension / simplification de java et il sera rapide à apprendre.

xer0x
la source
0

Un conseil non lié à la programmation de ma part:

Créez un projet soigné et montrez-le à vos professeurs.

C'est ainsi que j'ai obtenu des emplois d'été en tant que programmeur après la première et la deuxième année à l'école.

Cloueur
la source
Cela peut être utile, mais cela ne résout pas vraiment la crise linguistique / API à laquelle l'OP arrive.
The Communist Duck du
0

Si vous recherchez uniquement le développement de jeux, pourquoi apprendre une autre langue en même temps? Je resterais avec Java, à moins que vous ne vouliez apprendre une nouvelle langue.

Les principales options pour Java que je connais sont jMonkeyEngine, qui est un moteur graphique 3D et généralement considéré comme assez bon.

Et il y a jOGL, qui est un wrapper Java sur OpenGL. C'est naturellement un niveau beaucoup plus bas.

Si vous débutez et que vous souhaitez travailler avec la logique plus que de gérer les tampons et les liaisons de shaders et autres, optez pour jMonkeyEngine. Si vous voulez approfondir pour commencer, optez pour jOGL.

Si vous voulez apprendre un nouveau langage, en C # et Python, je dirais probablement C #. La syntaxe est très similaire à Java, et XNA et SlimDX sont très bons pour les graphiques. XNA étant de niveau supérieur et ayant fait certaines choses pour vous. Cependant, cela vient avec une restriction Windows uniquement, sans Mono.

Python est un langage très facile à obtenir (cela m'a pris environ une semaine au maximum avec peu d'attention d'un livre, provenant d'une année de C ++). Pygame est un wrapper autour des bibliothèques SDL de C, donc n'a probablement pas la même quantité de fonctionnalités que XNA.

Le canard communiste
la source
0

Un autre vote pour l' unité . Vous aurez beaucoup de temps au cours de vos prochaines années d'études CS pour engager C ++ et d'autres langages. Si votre objectif est de développer un jeu, être lié à ce qui est essentiellement le travail de développement d'un moteur va prendre trop de temps. Si vous voulez être un concepteur de moteur, revenez certainement et essayez une implémentation de niveau inférieur.

Le moteur Unity vous permettra d'abstraire la plupart des détails afin que vous puissiez vous concentrer sur la programmation du gameplay. La communauté sur les forums et les réponses Unity basées sur Stack Exchange sont incroyablement utiles. Vous pouvez programmer en Javascript ou en C #. Venant de Java, j'ai commencé avec Javascript car beaucoup de tutoriels ont été écrits pour cela, mais je suis passé en C # (ce qui était assez simple).

Je pense que XNA et Pygame pourraient également être bons (car ils résument certaines des choses les plus fastidieuses), mais je n'ai pas d'expérience avec eux.

Enfin, ne visez pas trop grand avec votre premier match. Il peut être très facile de sous-estimer combien de temps il faut pour implémenter des fonctionnalités dans un jeu. Commencez avec un mécanisme de jeu de base qui vous permet de mettre le jeu dans un état jouable rapidement. Ensuite, vous pouvez commencer à ajouter d'autres éléments.

S'amuser!

acmshar
la source
0

XNA est une excellente solution si vous sortez de Java. C # se penchera et lira presque IDENTIVEMENT sur java pour vous, vous pourrez donc vous lancer très rapidement sans apprendre de nouvelle syntaxe. Le framework XNA fournit des tonnes de bonnes API avec lesquelles travailler, et il y a beaucoup de code ouvert gratuit "licence permissive microsoft" pour vous permettre de démarrer certains projets.

Je ne vous recommanderais pas d'utiliser Java, la plupart des API graphiques sont terribles, il n'y a pas une tonne de support 3D et généralement Java fonctionne lentement; pas un gros problème pour la plupart des applications java, mais les jeux vidéo ont besoin de BEAUCOUP de performances.

C ++ est le moyen de créer des jeux vidéo, à peu près période. Cependant, passer de java -> C ++ va être assez discordant. Sans oublier que la plupart des programmes graphiques hardcore de bas niveau sont vraiment du style C, pas du C ++, donc vous allez faire un tas d'arithmétique de pointeurs pour essayer d'obtenir plus de performances. Cela peut être intéressant, mais prend du temps. Cela peut également prendre beaucoup pour vous aider à démarrer.

Il y a beaucoup de bons moteurs de jeu comme Ogre, mais ensuite vous devez passer des tonnes de temps à apprendre comment faire les choses d'abord, cela peut sembler trop compliqué.

Soyez prudent, aussi génial que soient vos idées de jeux, rappelez-vous que les jeux vidéo sont chers, prennent beaucoup de temps de développement et ont de grandes équipes de développement.

Si vous voulez créer un jeu et être la seule personne à y travailler, vous allez presque devoir en faire un jeu 2D (même si vous devriez quand même commencer par la 2D) et vous devrez commencer VRAIMENT, VRAIMENT simple.

Presque tout ce que vous pouvez imaginer qui serait amusant est probablement trop ambitieux pour le moment.

Mon conseil: obtenez gratuitement Visual Studio 2010 Express si vous ne l'avez pas. Téléchargez le studio de jeux XNA et le framework .net 4. Téléchargez une démo XNA. Exécutez la démo, puis parcourez le code et voyez ce qui fait quoi. Essayez de lire de la documentation sur la façon dont XNA fait les jeux 2D.

ALORS, choisissez votre jeu préféré, old school, super facile. Pac-Man? Pong? Astéroïdes? Envahisseurs de l'espace? Mario? Choisissez quelque chose de STUPIDE, STUPIDE facile. Il suffit ensuite de refaire le jeu tel qu'il était. Vous en avez assez de vous soucier de la programmation et de l'apprentissage d'une nouvelle API dont vous n'avez PAS besoin de vous soucier de la conception de jeux; cela va juste vous distraire.

Ensuite, une fois que vous avez créé votre clone mario ou tout ce que vous avez fait, vous pouvez commencer à expérimenter le gameplay et essayer d'ajouter de nouvelles choses.

Commencez petit à petit, et ce sera beaucoup plus amusant et vous en apprendrez beaucoup plus.

Essayez de sauter dans la modification du code source de Quake3 en C ++ pour créer un jeu et vous allez être vraiment frustré, et même si vous le faites fonctionner, vous n'allez pas en apprendre beaucoup en le faisant.

S'AMUSER JUSTE: D

SpacePrez
la source
0

Éclat

L'AS3 de Flash est un langage fantastique pour enrouler votre tête autour de concepts OOP importants sans avoir à vous soucier de la gestion de la mémoire et de l'écriture des fichiers d'en-tête. C'est aussi à peu près un moteur de jeu 2D complet, avec une arborescence d'affichage, un système d'événements et toutes sortes d'autres fonctionnalités pratiques.

Il existe une énorme communauté de développeurs de jeux Flash, et contrairement à la croyance populaire, vous pouvez développer des jeux Flash à l'aide d'outils open source. Si vous êtes sous Windows, je recommanderais FlashDevelop .

Je dirais que Flash est encore plus convivial sur plusieurs plates-formes que Java ou vraiment toute autre technologie, sauf peut-être Unity. 99% des gens peuvent voir des fichiers Flash dans leur navigateur de bureau, il est donc facile de partager vos créations avec le monde. La plupart des smartphones prennent lentement en charge Flash, et pour iOS, la seule plateforme qui ne prend pas en charge Flash dans le navigateur, vous pouvez créer des applications avec Flash CS5 (bien que cela ait un coût).

Je pense que ce serait dommage pour vous d'avoir à lutter avec quelque chose de plus complexe comme C ++ ou même C # quand vous pourriez commencer à apprendre les bases de la création de jeux dès maintenant avec AS3. Une fois que vous comprendrez AS3, il sera facile de passer à d'autres langues plus tard. Dans mon cas, j'étais développeur Flash, mais j'ai appris à programmer avec Objective-C et j'ai réussi à créer un jeu iPhone à succès. Rendez-vous service et visitez http://www.flashgamedojo.com/ - Je ne pense pas que vous serez déçu!

Unité

Unity présente les mêmes avantages que Flash, mais en 3D.

Avec Unity, vous pouvez programmer en C # ou en UnityScript (qui est javascript-y). Ce n'est pas open source, mais c'est gratuit. C'est très bien soutenu et il y a une grande communauté. Le problème avec le développement de jeux 3D est que pour la plupart des jeux, vous aurez besoin de beaucoup d'art et d'atouts. Cela peut également être un problème avec les jeux 2D, mais en général, l'art 3D prend beaucoup plus de temps et il est beaucoup plus difficile de faire de "l'art programmeur".

Une note sur l'open source

Il n'y a rien de mal à utiliser un logiciel open source, mais vous vous perdez si vous ne l'utilisez que parce qu'il est open source. Choisissez la meilleure langue et les meilleurs outils qui vous aideront à apprendre le plus rapidement avec le moins de friction. Dans le même ordre d'idées, la mentalité de «d'abord apprendre la chose la plus difficile» (c'est-à-dire le C ++) est folle. Ce que vous devriez vraiment apprendre, c'est la logique, pas la syntaxe, alors apprenez quelle langue a le moins de bagages et les barrières à l'entrée. À mon avis, c'est AS3.

Matt Rix
la source