Ludum Dare 29

Ce week-end avait lieux la 29ème édition de la Ludum Dare (du latin « donner à jouer »), une compétition dont le but est de créer un jeu en 48hr. Plus précisement, il y a deux événement en même temps: La compétition et le boeuf.

La compétition est plus stricte:

  • On doit travailler seul.
  • Tout le code et le contenu (graphismes, sons, etc…) doit être créé pendant les 48hr.
  • Le jeu doit être basé sur le thème annoncé au début des 48hr.
  • Toutes les librairies, moteurs de jeu, outils de création, etc… publiquement disponible sont autorisés.
  • Le code source doit être inclus.
  • Le code personnel pré-existant est autorisé, à condition de l’avoir déclaré et publié avant la compétition.

    Le boeuf est plus détendu:
  • La durée est de 72hr (3 jours au lieu de 2).
  • On peut travailler en équipe!
  • Suivre le thème est conseillé mais pas obligatoire.
  • On n’est pas obligé de livrer son source.


    Comme pour une fois j’ai été averti avant qu’elle ne commence*, et que j’avais du temps libre, j’ai saisi l’opportunité de me forcer à commencer et finir à coder un jeu, ici et maintenant, au lieu de me contenter de rêver à comment je pourrais faire un jeu, puis de soupirer en pensant à tous ce que je voudrais faire par ailleurs. Ou de démarrer un nouveau projet, m’arrêter en plein milieu, et de laisser plusieurs année s’écouler avant de reprendre là où j’en étais.
     
    Je vous présente donc:
     
    « Le tueur sans couleur », un jeu fait en 48hrs.
     
    KillerWithoutColor05.gif

  • La page pour télécharger, commenter et voter pour mon jeu.
  • Les quatre entrées du mini-journal écris pendant la création du jeu.
  • Merci Bussière! Qui a lui aussi participé: la page de son projet, qui n’a malheureusement pas pu être terminé.
  • Au fait, vous-ai-je raconté qu’il y a trois mois, une Game Jam s’est tenu littéralement de l’autre coté de la rue du bâtiment où j’habite maintenant, et que je ne m’en suis rendu compte que par hasard, en voyant un hall remplis de geeks, alors que j’étais entré pour des papiers administratifs? L’étape la plus difficile pour ce genre d’évenement est souvent d’en entendre parler avant qu’il ne soit déjà entamé. :wink:
     

 

ca me fascine moi les gens qui arrivent à faire un jeu....
- Si t'es sur geekzone.fr tu es un geek. - Si t'es un geek tu sais coder. - Si tu sais coder, tu peux faire un jeu.

Ok, j’ai fais quelque raccourci mais c’est l’idée. Le plus dire c’est de se dire à un moment, allez zou je me lance. Et la Ludum Dare (ou les autres game jam) servent justement de déclencheur. A forcer à se dire, c’est ce weekend, là, tout de suite, au lieu de continuellement reporter à plus tard.

Ah et aussi, faire un truc simple! Faut viser Space Invader, pas World Of Warcraft. Comme de toute façon la comparaison se fait avec les autres jeux de la Ludum Dare et pas aux sorties AAA du moment, tu peux faire un jeu moche, simple, pourri, et récolter des éloges!

 

@zwzsg : GG pour ton jeu, à mon avis le seul truc qui manque c'est un "but" (ne pas passer plus de X secondes sans manger par exemple, ou faire le score maximum en un temps imposé). J'ai peut-être eu un bug aussi, passé sur une banquise avec 3 phoques et pas un seul de mangé
Oui, en effet il n'est possible ni de gagner ni de perdre dans mon jeu. J'aurais pu rajouter un timer ou une limite de score, mais ça aurait été artificiel je trouve. Et puis de laisser le joueur libre de chasser les phoques, ou de juste s'amuser à faire des pirouettes, sans contraintes de temps et d'objectif, c'est pas plus mal je trouve.

 

cool, si ça me prend, est-ce que tu permets que je m'en inspire, s'il te plaît?
Je ne vois pas trop ce que tu comptre réutiliser. Le concept? Les images? Le code? Ca reste un truc fait le temps d'un weekend, donc vite-fait mal-fait et sans trop de valeur. Si t'as des questions je peux détailler.

Félicitations pour le jeu et merci pour le récit !

Yep je cherche un site central sur les gamejams qui annonce quand il y en a :confused:

J’ai loupé la cyberpunk gamejam.
http://itch.io/jam/cyberpunk-jam
Dans les trucs a gérer y’a son sommeil que j’ai eu un peu de mal a gérer (j’ai trop dormis).
Et j’ai passé trop de temps sur l’interface graphique -_-

J’ai beau être codeur, je me sens incapable de faire tout ça en 48h. Donc chapeau !

Je dis pas que je suis incapable d’apprendre, mais j’ai juste pas le temps de cerveau disponible pour apprendre un autre langage et surtout tout un autre environnement, les contraintes liés au web doivent pas franchement être les mêmes dans le domaine du compilé.

J’ai déjà pas assez de temps pour mes propres projets, alors un jeu avec graphisme et tout… Je bosse 10H/jour en moyenne, une femme, j’ai besoin de repos intellectuel en plus, je vois pas comment je rentre 48h de coding là dedans…

Donc GG les gars :slight_smile:

« un jour moi aussi je vous montrerai mes projets… un jour, sisisi » (mantra à répeter ^^)

[quote=“zwzsg, post:1, topic: 55641”][/quote]

Encore GG a toi… Mais… non ^^
Je connais rien du tout au code moi^^ c’est pas trop mon domaine
[quote=“Donjohn, post:4, topic: 55641”][/quote]

Ha bha merci^^

Félicitations ! 

Heu, pourquoi apprendre un autre domaine ou un autre environnement? Si t’es à l’aise dans un, tu seras plus productif. Y’a aucune obligation de langage ou autre. Au contraire, si ton jeu est basé sur du web, ce sera plus facile pour les gens de l’essayer et donc de voter. Et je dirais même d’éviter les langages compilés, mieux vaut un langage de script bien robuste que de prendre le risque d’introduire un segfault dix minutes avant la fin.

Bon après, clair que ça aide d’être en interco pour avoir le temps et la tranquilité pour passer un week-end à developper. :stuck_out_tongue:

[quote=« zwzsg, post:1, topic: 55641 »][/quote]

Salopard, je vais te dénoncer à la SPA !!! :smiley:

Blague à part, c’est sympa, il y a du potentiel ! Personnellement, je m’amuse à descendre dans les profondeurs de l’océan avant de remonter à la surface pour sauter. Même si je sais que je ne peux pas faire de figures ^^

J’ai aussi regardé ton code LUA. Ça va, tu ne t’es pas ennuyé :smiley:

[quote=« zwzsg, post:7, topic: 55641 »][/quote]

Yep, je précise qu’on peut aussi utiliser des outils comme Game Maker, Stencil, etc. qui ne nécessitent pas (voire pas du tout) de programmer. On peut aussi utiliser des librairies qui facilite la tâche. C’est même conseillé par la Ludum Dare. Les profils des participants sont trés variés (débutant, pro, codeurs, graphistes, game designer, etc.)

J’ai jeté un oeil rapide sur deux valeurs sures (des français qui bossent dans le JV) : 

Je me suis emmêlé les pinceaux. Le deuxième n'est pas d'un français, mais il mérite le détour quand même. 

[quote=“Tomma, post:8, topic: 55641”][/quote]

C’est à dire?

[quote=“Bussiere, post:3, topic: 55641”][/quote]

On viens de me souffler http://compohub.net

[quote=« zwzsg, post:9, topic: 55641 »][/quote]

C’est bien rempli et je vois qu’il y a pas mal de formules de math :slight_smile:

Certains bouts de code, comme le mouvement de l’orque et des phoques, ou bien la dichotomie pour trouver le bout de banquise le plus proche, ont été dupliqué. D’habitude je déteste ça, je factorise un max quitte à rendre mon code illisible. Mais pour une compo de ce genre, le but est d’aller au plus vite, pas de faire du code propre. Et je ne voulais pas prendre le risque d’introduire des bugs en refactorisant. Donc bon, ça fait déjà 150 lignes en moins sur les 900.

Je n’avais pas prévu de faire des math compliqués, mais vu que le joueur (ansi que les phoques) ont une orientation libre, ça m’a obligé à me prendre la tête avec des calculs en modulo tau (ouep, sans faire de prosélytisme, je trouve plus simple et intuitif de poser tau=2pi).

Le truc le plus délicat, ça a été quand j’ai décidé de d’incliner un peu les bouts de banquises (parce que des rectangles tous alignés, ça faisait moche), et que je me suis rendu compte que je ne retrouvais plus la formule pour calculer une rotation:
x=a
cos-bsin
y=a
sin+b*cos
Je savais que c’était un truc du genre, mais je n’arrive jamais à placer les + et les - correctement! Et en essayant au pif je n’arrivais pas à retrouver la bonne formule. Du coup j’ai du zieuter un exemple de matrice de rotation sur wikipedia. Bon, j’aurais pu utiliser un love.graphics.rotate, mais pff, trop facile, où est l’intérêt? (Non en fait je comptais utiliser les coordonnés des coins après rotation pour le code de collision/glisse, même si en fin de compte je suis resté sur des rectangle horizontaux.)

Sinon, les liens entre position, vitesse, et accélération de pesanteur (genre à chaque itération x=x+dx; y=y+dy; dy=dy-g;), je les réutilise dans mes jeux depuis tout petit, donc c’est naturel pour moi.

[quote=“zwzsg, post:11, topic: 55641”][/quote]

oO lapin compris pinaise^^

Non, je ne suis définitivement pas un geek selon tes termes^^ 

[quote=“zwzsg, post:9, topic: 55641”][/quote]
Merci

[quote=“Drakulls, post:12, topic: 55641”][/quote]

Mais non, c’est simple, attends je t’explique:

Dichotomie

La dichotomie, c’est un mot compliqué pour désigner un algorithme de recherche du zéro d’une fonction strictemement croissante ou décroissante en coupant l’espace de recherche en intervalle de longeur puissance de deux décroissante. Heu non merde, présenté comme ça, j’arriverais jamais à te convaincre que c’est simple.

Bon, j’ai 4000 bouts de banquise (oui mon arctique n’est pas infini).

Il se trouve que je les ait crés de façon ordonnés: Le numéro 1 tout à gauche, le 2 juste à coté, etc… et le numéro 4000 à l’extrême droite. Je veux savoir quel est le bout de banquise au dessus d’un phoque.

Je pourrais tous les tester un par un jusqu’a trouver le bon. Ca me ferait en moyenne 2000 tests. Pour un seul phoque. Trop d’opération, pas bon!

Donc, ce que fais, c’est que teste le bout de banquise du milieu:

  • J’ai 4000 bouts de banquise, je teste le bout de banquise numéro 2000.

  • Je regarde si le phoque est à droite ou à gauche.

  • Si il est à gauche, la solution est parmis les bouts de banquise de 1 à 2000.

  • Si il est à droite, la solution est parmis les bouts de banquise de 2000 à 4000.
    J’ai un intervalle de recherche deux fois plus petit!

    On va dire qu’il est à gauche. Je recommence sur ce nouvel intervalle.

  • Je teste par rapport au milieu du nouvel intervalle, soit 1000.

  • Si il est à gauche, la solution est parmis les bouts de banquise de 1 à 1000.

  • Si il est à droite, la solution est parmis les bouts de banquise de 1000 à 2000.

    On va dire qu’il est à droite du 1000.

  • Donc il est entre 1000 et 2000. Je teste le milieu de ce nouveau intervalle, soit 1500.

  • Si il est à gauche (de 1500), la solution est parmis les bouts de banquise de 1000 à 1500.

  • Si il est à droite (de 1500), la solution est parmis les bouts de banquise de 1500 à 2000.

  • Plus que 500 bouts de banquise!

  • Je continue jusqu’à avoir un intervalle de longueur 1.
  • J’ai trouvé quel était le bout de banquise le plus proche du phoque!

    Le tout m’a pris genre 12 itérations, au lieu de 4000.

    Une boucle qui tourne 12 fois, c’est plus efficace qu’une boucle qui tourne 4000 fois!

    C’est ça la dichotomie. C’est un peu délicat à écrire pour bien gérer les cas spéciaux (genre quand la solution est pile poil au bord d’un intervalle). Ca ça marche pas dans tous les cas: il faut que les valeurs (ici la position des bouts de banquise) soient dans le bon ordre au départ. Mais ça permet de trouver en un temps tout petit une solution qui prendrais un temps déraisonnable si on devait tester toutes les possibilités une par une. C’est un algo très utile à connaître, et pas juste pour gérer des phoques sous la banquise.




    Angles et Modulo

    Bon, tu vois l’orque, il peut tourner sur lui même. Donc j’ai une variable, A, pour l’angle de l’orque. Je veux qu’il tourne vers la gauche de 10°, je fais A=A-10°. Je veux qu’il tourne vers la droite de 10°, je fais A=A+10°. Oui mais si il fait un tour complet, il revient à l’orientation de départ! Donc A+360° doit être égal à A. C’est ce qu’on appelle “modulo 360°”.

    Dans la pratique, on n’utilise pas des degrés pour mesurer les angles, mais une autre unité de mesure d’angle, appelés radians. Avec 360 degrés = 6,28… radians. Ce 6.28… a en réalité beaucoup de chiffre après la virgule. Il vaut 2pi. Mais ce facteur 2, là, il est pas beau, il casse toute l’harmonie de mon cercle. Je préfère poser tau=2pi, comme ça: un tour complet = 1 tau, un demi-tour = tau/2, etc… Je trouve plus simple et plus clair d’écrire “tau” que "2pi". Une fois que tau est posé, on n’a plus à se poser la question de si on travail en degrés ou en radians, on peut tout exprimer en “fraction de tour”.

    Bref. On note %tau l’opération “modulo tau”, qui veut dire "enlever ou retrancher tau jusqu’à retomber dans l’intervalle [0…tau]. En fait ça consiste à prendre le reste dans une division euclidienne, mais bon, c’est plus simple d’imaginer qu’on enlève ou retranche la valeur du modulo jusqu’à retomber dans le bon intervalle.

    Donc, à chaque fois que je touche à un angle, je dois faire un “modulo tau”. Et ça complique les choses!

    Par exemple pour faire aller l’orque dans le sens opposé, on pourrait croire qu’il suffit d’inverser l’angle, soit A=-A, alors qu’en fait non, il faut rajouter un demi-tour, soit A=A+tau/2. Suivi d’un modulo tau pour qu’il reste dans le bon intervalle, soit A=(A+tau/2)%tau

    J’ai eu la mauvaise idée de positionner le zéro de mon angle dans la direction: orque regarde vers la droite. Du coup, la direction “haut” vaut -tau/4 (un quart de tour vers la gauche), soit 3/4 tau (trois quart de tour vers la droite, c’est la même chose qu’un quart de tour vers la gauche). De même, la direction bas vaut tau/4.

    Quand l’orque est en l’air, je veux qu’il ait tendance à piquer du nez. C’est à dire à rapprocher son angle de tau/4. Oui mais comment savoir si il faut augmenter ou diminuer une valeur d’angle pour la rapprocher de tau/4? Spontanément, on a envie de regarder si A>tau/4 ou si A<tau/4. Oui mais non, ça ne marche pas à cause de ce que tout est en modulo tau. Genre si A=0.8*tau, on a envie de diminuer tau pour se rapprocher de 0.25 tau, alors que non, en l’augmentant on attient plus vite A=1.25 tau, avec 1.25 tau qui est en fait la même chose que 0.25 tau, modulo tau. Comme tu le vois, c’est prise de tête.

Bon, je voulais aussi expliquer le passage sur la rotation de coordonnées cartésiennes, mais en fait je me rends compte maintenant qu’effectivement, ça reste des mathématiques pas super simple à expliquer. Bah, au moins ça donne un exemple de “à quoi servent les maths à l’école”.

Hé hé, ouais la dichotomie et le modulo, c’est pas bien méchant. On l’apprend au lycée ou collège ? J’ai un doute. Le modulo, il me semble que c’est abordé au lycée aussi. Comme je code aussi dans les jeux, je m’en sers régulièrement. 

Ce qui est amusant, c’est que récemment, j’ai fait à peu près la même chose que toi pour une appli type GPS avec des pointeurs qui se déplacent au bord de l’écran et qui doivent s’orienter vers des lieux en dehors l’écran. Bonjour la prise de tête, surtout pour optimiser les calculs. Surtout quand tu oublies de convertir en radian ou degré  :sweating: 

Atomium a fait une video sur quelques jeux de la ludum :

Ca permet d’en decouvrir

J’ai aussi découvert cette année qu’il y a un grand décalage entre les reportages comme celui de cette vidéo, où on ne parle que de bons jeux, biens finis, originaux, et la réalité de la majeur partie des entrées, qui sont des copies de concepts éculés, à la réalisation pauvres, et même souvent désagréable à jouer.

Parce que si on se limite aux jeux dont on parle ensuite dans les articles, c’est décourageant (pour ceux qui voudraient participer). Alors que dans la pratique, la plupart des entrées sont des jeux sans intérêt autre que d’avoir réussi pour son auteur à avoir fait un jeu. Ce qui est déjà super, et est le but premier de ce genre d’évènement.

Alors certes, parmis les 2500 jeux de cette édition, il y a forcément quelques perles, mais elles restent l’exception, pas la régle.

[quote=« zwzsg, post:17, topic: 55641 »][/quote]

Clairement deja finir son jeu c’est pas mal :slight_smile:
nt
Ensuite tu as les semis pros qui participent aussi ou des studios / personnes pro avec le matos qui va avec …

Suffit de voir que certains jeux sont devenus commerciaux apres.

Mais apres si tu as 1% de pepites sur 2500 entrées ca fait quand meme 25 jeux interessants :slight_smile:

Apres ca permet surtout de s’exercer et je pense qu’il faut quelques gamejam avant de mondre un truc bien.
J’ai appris quelques trucs durant celle la.

Le seul probleme que j’ai avec aussi les votes c’est que les essais se font beaucoup a la vignette :confused: donc etre un minimun graphiste joue.

Mais je ne pense qu’il y ait de solution a ce defaut …

Probablement le gagnant un jeu d’infiltration en tour par tour
http://deepnight.net/games/beneath-the-city/

D’être jugé sur une image me gêne beaucoup moins que l’effet boule de neige qui fait que, par exemple, tu viens de citer le même jeu dont google me sort direct le screenshot alors je demande simplement “Ludum Dare”.

En gros, il faut non seulement faire un bon jeu, mais être suffisament connu pour avoir la masse critique de voteurs initiaux permettant de sortir la tête du lot. Et après pouf c’est l’explosion. Parce que personne ne va tester individuellement les 2500 jeux. Par contre copier-coller un lien vers un jeu, sans regarder les autres (ni même parfois le jeu en question), ça, ça peut progresser de façon exponentielle sur internet.

Pour prendre un exemple plus parlant: Sur une liste alphabétique des jeux de la LD29, mon oeil a été attiré par:
Wriggle Worm: 500 votes
Wormy’s Adventure: 2 votes
De voir ces deux entrées, quasi contigüe dans l’ordre alphabétique, mais si éloigné par l’attention qu’elles recevaient, m’a intrigué. J’ai testé les deux, et bah ça m’a dégouté de voir le petit jeu fait maison avec ses graphismes paint tout mignon écrasé à ce points par une sorte de gadget d’iPhone froid, creux, sans âme ni code.


Bref, je propose de ne citer que les jeux qu’on a trouvé soi-même sur le site de Ludum Dare, pas ceux qu’on s’est fait linké.
J’ouvre avec mon top 6 de la quarantaine de jeux que j’ai essayé :
Tunnel Gunner: Graphique MS-Paint, mais un gameplay intéressant.
Where Is My Bone?: Du pixel art overcute, contrairement à l’histoire: sous la surface étant pris ici simultanément dans le sens propre et le sens métaphorique.
Kill or Kill: Graphiques moche, gameplay mal fait, mais j’ai bien aimé le passage avec le distributeur de billet.
Portable Forcepoint Generator: Plateforme/Puzzle, un peu genre portal. Difficulté malheureuseument mal dosée.
Miner Problem: Un petit jeu de plateforme hyper léché, genre spelunky.
Wireside: Il me semble que Bussière aime bien le cyberpunk et le tour-par-tour?