Jeu ZDS

Un jeu pour la communauté de Zeste de Savoir

a marqué ce sujet comme résolu.

Bonjour ami·e·s Zesteux·ses,

Avec l’actuel confinement, on a pu voir l’augmentation des soirées communautaires de Zeste de Savoir, qui s’organisent bien souvent autour de Jeux Vidéos. Le problème étant que ces soirées commence à ce ressembler entre Teeworld, petitbacenligne et skribbl.io. @Situphen tente de réunir le plus de serveur de jeu sur son raspberry.

Par ailleurs, lors des Zestes de Code, on a pu voir qu’un jeu vidéo (ici, un snake), avait un interet pédagogique non négligeable. C’est dans cet esprit de continuité que m’est venu l’idée de vous proposer de créer le jeu de Zeste de Savoir.

Intérêt pédagogique

  • Pratiquer la programmation
  • Apprendre la gestion d’un projet à plusieurs (Versioning)

Idée

Je ne m’y connais pas vraiment tellement en Jeu Vidéo, donc si vous avez des idées n’hésitez pas à les partager.

Ce que je met ici ne sont que des propositions

  • Clém' est le personnage principale
  • On peut jouer avec l'API de ZDS pour pouvoir avoir des PNJ’s basé sur les membres
  • Le jeu devra etre multijoueurs, puisque pensé à la base pour les soirées communautaires.

Technologies utilisées

Concernant la technique, avec l’aspect pédagogique du projet, je pense que l’orientation vers python est un bon choix, mais celui n’est absolument pas définitif. Pour les bibliothèques utilisés, je pense que ça dépend vers quel genre de jeu on se tourne (Je vois mal comment on pourrait faire de la 3D avec pygame, par exemple)

+7 -0

Salut,

Très bonne idée ! On risque d’être tous déconfinés le temps de s’accorder sur une idée, mais pourquoi pas. ;)

Pour ma part, j’ai cet avis là :

  • on part sur Python,
  • on part sur de la 2D avec pygame (RIP leur site malheureusement),
  • on essaie d’apprendre des erreurs des autres en faisant un vrai MVP, et donc en s’intéressant aux points durs (là ça risque d’être le réseau et le gameplay),
  • niveau gameplay, je pense qu’un truc rigolo pourrait être un jeu de plateformes coopératif, un peu dans l’esprit de Little Big Planet ou Entangled, avec peut-être moins d’aspects puzzle et un petit aspect course (genre coopérer pour aller le plus vite possible sur un parcours d’obstacle). Ça pourrait être sympa en soirée, où tout le monde s’interpelle par chat vocal pour s’organiser en direct).

Bon, je donne des idées et tout, mais je n’ai aucune expérience en jeu vidéo (quoique, ça compte un démineur en C avec la SDL il y a plus de 10 ans ?).

+1 -0

Je mets les trucs en vrac qui me sont venus à l’esprit (par contre l’aspect jouer Clem et les membres de ZdS en PNJ n’est pas vraiment là).

2D vue de dessus. Scrolling dans les deux sens. Tirs de laser/missile. Deux (plus?) équipes.

  • Éliminer les membres de l’autre équipe.
  • Emmener Clem d’un point A à un point B en la protégeant (un tir la tue). Clem peut être jouée par un joueur.
  • Capture the flag.

Génération aléatoire des cartes ?


Une sorte de Bomberman ou de Pacman collaboratif. Les images des joueurs sont différents sprites de Clem. Et pour chaque sprite, il y a un pouvoir différent.

+4 -0

J’avais fais le sujet Référencement des zestes dans cet l’optique. Je voulais pouvoir réutiliser les personnages fictifs des membres dans le jeu pour que chacun dise : "Oh je suis dans l’histoire !".

J’avais aussi commencé à faire des ébauches de sprites/animations de clems (apparemment ils ont fini dans la corbeille car je n’ai jamais réussi à les perfectionner). Mon erreur a été de vouloir concurrencer : https://zestedesavoir.com/static/images/home-clem.4a2f792744c9.png et de reproduire de façon complexe clem.

Si je dois tirer une conclusion de mon échec, c’est qu’on peut très utiliser les clemojis en sprite/animation par exemple deux ébauches :

  1. Les clemojis rendent assez bien dans des animations, par exemple :
  2. Les clemojis rende bien avec un contour noir :

Attention : Je ne propose pas de partir sur de l’isométrique. La vue de face/côté me convient parfaitement.

Que ça soit un snake, un jeu de plateforme ou autres, j’avais imaginé les bases d’un scénario pour faire une petite transition entre les différents niveaux du jeu :

Un personnage fantastique (zeste) raconte son histoire, au début tout se passe bien mais ensuite un méchant dérobe [des écrits originaux dans la bibliothèque de zeste de savoir ou des clémentines dans le jardin de clem], le personnage entreprend un parcours entre plusieurs niveaux jusqu’à récupérer les éléments dérobés.

Idée de méchant : Multi-face (-> change d’identité très rapidement) je m’inspire des zestes qui se sont fait remarquer

Salut,

Je fais suite à mon message d’hier pour présenter un prototype qui pourrait servir de base. J’ai regardé hier ce que j’avais encore qui traînait dans mon bazar de projets non aboutis, et je suis tombé sur un jeu en raycasting (technique de projection 3D très rudimentaire à la Wolfenstein / Doom).
Après avoir passé une bonne partie de la nuit à nettoyer le code et le réorganiser je suis en mesure de vous montrer un peu à quoi ça ressemble et donc vous présenter l’idée.

C’est du code Python (≥ 3.7), qui utilise pyglet comme bibliothèque graphique. Il s’agit d’un wrapper assez léger à OpenGL mais ça fait le boulot, en offrant des interfaces haut-niveau pour beaucoup d’opérations (gestion des événements, sprites) mais il est courant de devoir en venir à des appels plus bas-niveau.
Dans le code que je présente ensuite j’ai groupé tout le code concernant pyglet dans le module graphics. Il y a quelques tricks sur le texturing mais normalement le code est assez limpide.

Zolfenstein - capture d'écran
Au fait, ça ressemble à ça.
Capture d'écran GIF
Et ça bouge.

Le code du projet actuellement nommé Zolfenstein est dispo sur le gist ci-dessous. Je mettrai à disposition un dépôt Github public si l’idée est retenue.

Voilà la procédure à suivre si vous voulez lancer le code sous Linux.

Depuis le répertoire de votre choix (les commandes à exécuter sont les lignés précédées d’un %) :

# Un virtualenv pour installer les dépendances
% python -m venv venv
% source venv/bin/activate
% pip install pyglet
Collecting pyglet
  Using cached https://files.pythonhosted.org/packages/c9/55/f2f82b361878d706d0b3ad549218a958ba27ff4c040176cfe3ab80751bd5/pyglet-1.5.2-py2.py3-none-any.whl
Installing collected packages: pyglet
Successfully installed pyglet-1.5.2
# On télécharge le projet
% git clone https://gist.github.com/234f464865da7fba6a3da1875db9d571.git zolf
Clonage dans 'zolf'...
remote: Enumerating objects: 11, done.
remote: Counting objects: 100% (11/11), done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 11 (delta 0), reused 11 (delta 0), pack-reused 0
Dépaquetage des objets: 100% (11/11), 12.46 Kio | 4.15 Mio/s, fait.
# Désolé pour cette commande, gist ne gèrait pas les répertoires
% mv zolf/texture.png .
# Et hop !
% python -m zolf

Niveau fonctionnalités, voici ce qui est actuellement géré :

  • Affichage des murs présents sur la carte (avec de petites optimisations).
  • Textures variables suivant l’orientation du mur.
  • Déplacements au clavier (touches directionnelles).

Et tout ce qui reste (potentiellement) à faire :

  • Gestion des collisions.
  • Génération de cartes.
  • Déplacements à la souris.
  • Glissement le long des murs.
  • Affichage de sprites (arme, personnages, objets).
  • Textures pour le ciel et le sol.
  • Affichage d’une mini-carte.
  • Donner un but au jeu :D (capture-the-flag à deux équipes ?).
  • Multijoueur et réseau.
  • Récupération des sprites des joueurs depuis l’API ZdS.
  • Menus.
  • Tests (il y en a très peu pour l’instant).
  • Documentation.

Il s’agit de tâches assez diverses, souvent indépendantes les unes des autres donc c’est facile pour s’y mettre à plusieurs.

Voilà voilà, qu’en pensez-vous ?

Voilà voilà, qu’en pensez-vous ?

entwanne

Si la courbe d’apprentissage pour viser est rapide (contraire à Counter Strike), ça me va. (Pour moi les FPS ayant une courbe d’apprentissage rapide sont par exemple : TitanFall/Battlefield/Battlefront/Warrock…). Si on peut éviter qu’un seul joueur roule sur toute la game ça serait bien et fun pour tout le monde. ;)

Euh je sais pas, je ne comprends pas trop ce que tu dis, je n’ai jamais joué à un FPS. C’est quoi la courbe d’apprentissage pour apprendre à viser ?

entwanne

C’est une notion des industries, qui décrit l’avantage qu’un acteur à a réalisé une tâche similaire pour réduire l’effort nécessaire à cet tâche.

Dans notre cas, ça représente le temps de jeu en minutes ou années lumières qui séparent un débutant, d’un joueur confirmé. Cet apprentissage va permettre au joueur confirmé de rouler sur le débutant.

Il faut au minimum 200h, sur Counter Strike pour atteindre le niveau des bons joueurs. Et seulement quelques heures ou dizaine d’heures sur les jeux que j’ai cité ci-dessus.

Oui l’expression « courbe d’apprentissage » je l’avais, c’est juste que je ne vois pas ce que ça représente en terme d’apprendre à viser. Pour moi il suffira de déplacer le curseur horizontalement.

entwanne

Il y a des jeux ou même quand tu es débutant, tu tues d’autres joueurs (même parfois les expérimentés).

Oui l’expression « courbe d’apprentissage » je l’avais, c’est juste que je ne vois pas ce que ça représente en terme d’apprendre à viser. Pour moi il suffira de déplacer le curseur horizontalement.

entwanne

C’est juste que c’est plus subtil que simplement viser, c’est choisir la bonne arme pour le bon job, savoir quand cliquer pour tirer au bon moment pour toucher la cible quand la cible + le joueur (+l’arme par rapport au joueur…) bougent, savoir où viser sur la cible en cas de dégâts localisés / effets particuliers. Mais de toute façon, ces questions ne commencent à se poser que lorsque les mécaniques de jeux sont tout de même plutôt complexes, elles n’auront probablement jamais le moindre intérêt dans le cas présent. Avoir déjà quelque chose de simple mais d’agréable à jouer en terme de fluidité représente un objectif réaliste mais plus difficile qu’il n’y parait. Le rythme du jeu est une mécanique beaucoup plus importante dans le cas présent. :)

+1 -0

Je suis d’avis que selon le type de jeu, notre efficacités peut être influencé.

  • Est-ce qu’un FPS/TPS conviendra à tout le monde ?
  • Est-ce qu’on aura toujours le même entrain pour un jeu avec une technologie rétro, après plusieurs heures de jeu ? Comparé à ce qu’on pourrait faire avec un monde en 2D.
+0 -0

Oui, après ce que je présentais c’était effectivement un jeu en vue à la première personne et une projection particulière, mais ça n’a pas forcément besoin de prendre la forme d’un jeu de tir. Je ne sais pas si certains sont inspirés sur un gameplay à adopter.

Aussi ça n’a pas forcément un aspect rétro, avec des textures et couleurs bien choisies ça peut donner quelque chose d’actuel et plaisant à regarder.

Aussi ça n’a pas forcément un aspect rétro, avec des textures et couleurs bien choisies ça peut donner quelque chose d’actuel et plaisant à regarder.

On a quelqu’un de compétent pour ça ?


Il y a aussi la possibilité de faire jeu de plateforme 2D, vue de côté. A défaut de graphisme, on pourrait partir sur un gamekit qui vaut quelques dizaines d’€ :

Je pense vraiment pas que ça entre en considération, le sujet évoque l’idée de développer un jeu pour s’occuper, s’exercer et jouer en communauté. Pas d’acheter des packs graphiques et d’avoir le plus beau jeu possible.

Je pense vraiment pas que ça entre en considération, le sujet évoque l’idée de développer un jeu pour s’occuper, s’exercer et jouer en communauté. Pas d’acheter des packs graphiques et d’avoir le plus beau jeu possible.

entwanne

Je crois que tu sous-estimes la difficulté à faire des ressources pour un jeu, le plus simple soit-elle. Si tu pompes sur internet, il faut au minimum trouver deux ressources qui vont ensemble, avec un minimum de frame dans l’animation pour rendre ça agréable à l’œil.

Je ne tiens pas à un jeu magnifique mais agréable ou supportable. Il faut quand même que le jeu est un charme esthétique pour une personne extérieur au projet y joue. Les animations font partie de l’attrait en plus de la jouabilité. Si les graphismes ne sont pas immersif, ça n’aide pas.

+1 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte