ACTIONS 2024

Bonjour,
Il semblerait que nous sommes partis sur un post récapitulatif par an. En 2024, nous avons reconduit nos actions dans le cadre du parcours @rchimède (St Gab’ classe de 4e) et à CYU (L3 Professionnelle des Métiers du numérique).

Vroum (St Gab’)

vroum
Une moto, un circuit… C’est parti pour une course de vitesse !
Le jeu est assez classique mais la technique est particulièrement audacieuse* : le circuit est géré par portion que l’on peut assembler (voir concevoir) à volonté. Après avoir fait un chrono sur le circuit, libre à vous d’en réaliser de nouveaux (avec les portions fournies) ou de personnaliser/créer des portions.
*) C’est ça la mécanique : pour voir, il faut ouvrir le capot.

Flip (CYU)

flip

Voici un petit jeu original, il faut parfois basculer l’écran pour circuler dans le décor. L’objectif est d’activer les interrupteurs pour libérer des passages et progresser le plus rapidement possible.
C’est un joli petit casse-tête auquel on se surprend à rejouer : une première fois pour trouver la solution de chaque niveau, la seconde pour les parcourir le plus rapidement possible.

Vous pouvez télécharger tous les sources (au format .p8).

Mensa
Un atelier de découverte de la programmation en Pico-8 a été animé pendant le Lud’été PLO (à Grésillons). Les participants ont très vite pris en main l’outil pour leurs propres projets. Mensa est un club international réservé aux personnes ayant un QI dans les 2 % les plus élevés de la population (HPI).

Pico… tron ?
En complément de Pico-8 (et dans le cadre de notre collaboration fructueuse avec son concepteur, Josep White), nous avons étendu notre domaine d’expertise à sa nouvelle console virtuelle en cours développent : Picotron ! C’est du pico+++ : plus de capacité, plus de possibilités, plus de complexité. Il ne s’agit pas d’une évolution de Pico-8. C’est carrément un nouvel environnement même s’il est possible de lui trouver des similitudes avec Pico-8 (ce qui aide à la prise en main).

Nous avons renouvelé nos licences avec Lexaloffle et tenons à
remercier Joseph pour son soutien.

8bit & Cie
Dans le même esprit, nous avons ouvert des activités de développement sur Atari 8bit (400/800/XL/XE) en Action/assembleur 6502 et sur Sinclair QL en Digital C SE/assembleur 68008. Elles se destinent à un public adulte et aguerri (doté de l’équipement requis).

Salutations,
jihem
(discord: .janetan)

Actions 2022-2023

Nous vous prions de nous excuser pour cette panne momentanée de l’image et du son. Le site n’est pas actualisé aussi régulièrement que nous le souhaiterions. En effet, nous sommes une équipe de bénévoles et privilégions nos actions à notre image. J’avoue que là, nous avons effectué une longue plongée en apnée : plus d’un an sans nouvelle publication…

Lors de l’année 2022 et 2023 nous avons renouvelé notre partenariat avec St Gab’ dans le cadre du parcours @rchimède.

Les productions suivantes ont été réalisées par les élèves (de 4e).

2022
PICO-8_3
– un jeu de la vie (automate cellulaire imaginé par John Horton Conway en 1970)

PICO-8_4
– un jeu de plates-formes (avec génération procédurale des niveaux)

2023
– une approche de l’algèbre de Bool (pdf)

PICO-8_2
– un pong survitaminé

CYU
L’année 2023 a été l’occasion de proposer un atelier retro gaming dans le cadre d’une formation en 3e année de Licence Professionnelle des Métiers du numérique à l’université de Cergy-Pontoise.

Les productions suivantes ont été réalisées par les étudiants (en 3 jours sans aucune connaissance préalable de l’environnement PICO-8).

PICO-8_1
– une approche d’un espace vectoriel (façon console Vectrex)

PICO-8_0
– un démineur floral en vue « Animal Crossing »

Vous pouvez télécharger tous les sources (au format .p8).

Salutations,
jihem
(twitter: @wdwave)

Sprite Show2

Sprite Show2

Donnez vie à vos sprites avec Sprite_Show2 !
(réalisé par @s_yanik)

Cet outil fait gagner beaucoup de temps aux graphistes et aux codeurs qui peuvent estimer, en temps réel, la qualité des sprites et la cohérence de leurs animations.

Commencez par sélectionner les sprites dans [Sprite Bank] puis revenez dans le menu et cliquez sur [Show] pour les animer.

Dans la version complète, vous pouvez dessiner vos sprites sur Sprite_Show2 ou les charger depuis une cartouche nommée « my_sprite1.p8 ». Dans Sprite_Show2 vous les affichez facilement à l’écran où ils vont s’animer : avancer, sauter, voler…

Vous pouvez les redessiner immédiatement ou les coder dans votre jeu.

Amusez-vous 😉

Pour en savoir plus : Sprite Show2.

Parcours @rchimède !

archimede
Dans le cadre du Parcours @rchimède, l’association Picoscope est intervenue auprès d’élèves de 4e pour proposer une animation sur l’emploi des mathématiques dans le domaine des jeux vidéo (avec pico-8 !). Afin de faciliter l’emploi des connaissances acquises en cours de mathématique, une librairie dédiée (« lib_math.p8 ») a été conçue. Elle permet de créer figures géométriques à l’aide de points et de segments, puis d’appliquer des transformations : homothétie, rotation, symétrie axiale, translation, etc. L’origine (0,0) du repère orthonormé utilisé est au centre de l’écran. Le repère est orienté de façon « classique » : les axes des abscisses et ordonnées croissent respectivement vers la droite et le haut. Les angles sont exprimés en degré.

La bibliothèque, les supports de cours et les programmes connexes des modules (L1 et L2) sont proposés en téléchargement. Le premier module (L1) présente les fonctions de la bibliothèque et leurs mises en œuvre à travers de courts exemples. Le second module (L2) propose de réaliser un petit jeu vidéo (avec des graphismes vectoriels).

test1
Télécharger le Module L1 (<1Mo)

test4
Télécharger le Module L2 (<1Mo)

Exemples de production « élève » :

test2

#include lib_math.p8

carre=m:figure({
  points={
    {-10,-10}, {-10, 10},
    { 10, 10}, { 10,-10}
 },
 segments={{1,2}, {2,3}, {3,4}, {4,1}},
}):deplace({0,30}):tourne(45)

carre2=m:clone(carre):zoome(0.5)

function _draw()
  if (t()%24<12) then
    cls()
    m:segment({0,50},{0,-50}):trace(8)
    m:segment({-50,0},{50,0}):trace(8)
    m:point(0,0):trace(7)
  end
  carre
    :centre({0,0})
    :tourne(-1)
    :centre()
    :tourne(5)
  carre2
    :centre(carre.m_central)
    :tourne(5)
  if (t()%0.2<0.01) or (t()%24<12) then
    carre:trace(10)
    carre2:trace(9)
  end
end

test3

#include lib_math.p8

pts={}
for a=0,350,10 do
  add(pts,{40*m:cos(a),40*m:sin(a)})
end

sts36={}
for i=1,35,3 do
  for j=i,36,6 do
    add(sts36,{i,j})
  end
end

sts66={}
for i=1,35,6 do
  for j=i,36,6 do
    add(sts66,{i,j})
  end
end

fig36=m:figure({
  points=m:clone(pts),
  segments=sts36
})

fig66=m:figure({
  points=m:clone(pts),
  segments=sts66
}):zoome(.8)

function _draw()
  cls()
  fig36:trace(13):tourne(-1)
  fig66:trace(6):tourne(-2)
end

Nous remercions toute l’équipe de St Gab’ ainsi que Cloé et Jean-Baptiste pour leur accueil. Tous nos encouragements aux apprentis codeurs (qui sont maintenant convaincu que les maths n’ont pas été inventées uniquement pour leur donner des exercices). Un high five à Yannick (@s_yanik) pour son assistance technique. Nous n’étions pas trop de deux 😉

Pour prendre contact, n’hésitez à laisser un mot sur facebook ou twitter.

Salutations,
jihem
(twitter: @wdwave)

PICO-8 0.2.0 !

Ça y est : le PICO nouveau (0.2.0) est sorti. J’ai dû faire un gros effort sur le titre pour le pas ajouter une vingtaine de points d’exclamations. Pour être honnête, après le 5e, je me suis dit que cela ne faisait pas très sérieux : j’en ai donc retiré 4.

PICO_0.2.0

Les nouveautés les plus visibles sont l’arrivés de 16 onglets, de la possibilité d’afficher les tabulations (aide à aligner le code), l’ajout de deux polices de caractères supplémentaires :  Puny  (minuscule latine => [ctrl]-[p]) et Katanaka (japonais => [ctrl]-[k]).

Les nouvelles fonction ord() et chr() permettent respectivement  de récupérer le code ASCII d’un caractère et le caractère d’un code ASCII, exemple :
2020-04-16_15h12_26

Affiche : 97, 128, 65, 204. A noter que le ‘A’ classque correspond au ‘A’ en minuscule (de la table ASCII) et le ‘A’ pony (3e) au ‘A’ majuscule (malgré leur aspect respectif à l’écran).

La nouvelle  instruction   tline permet  de dessiner des lignes texturées à l’écran.  La durée d’attente d’une pression sur les boutons de la manette (ou d’une touches associées au clavier) avec btnp peut être réglée. De nouveaux opérateurs en préfixe d’affection sont également disponibles , exemple  :  ..=   ,   ^=   , etc. L’accès à la mémoire est simplifiée : $<adresse> à la place de PEEK(<adresse>). etc. Les amateurs de tweet  card vont apprécier.

La fonction de parcours ipairs() vient également étendre les capacité du  language.  De nombreuses autres  ajouts et modifications sont également présents, voir liste ci-après :

 v0.2.0
Added: 8-bit character set with kana, alt font
 Added: ord(), chr()
 Added: SFX / Pattern organiser view
 Added: SFX edit buttons on pattern channels
 Added: tline // textured line drawing
 Added: SPLORE automatically updates BBS carts when online
 Added: Search for similar (shared tags) cartridges, or by thread
 Added: predefined fillp() pattern values assigned to glyphs
 Added: btnp() custom delays (poke 0x5f5c, 0x5f5d)
 Added: "." shorthand command for advancing a single frame (calls _update, _draw if they exist)
 Added: Current editor/cart view is recorded every 3 seconds to [app_data]/activity_log.txt
 Added: Cutting (ctrl-x) and pasting selected sprites while in map view to also adjust map references to those sprites
 Added: Clipboard is supported in the html exports (with some limitations) // load #wobblepaint for an example.
 Added: Can load .lua files as cartridges
 Added: Operators: ..= ^= \ \= & | ^^ << >> >>> ~ &= |= ^^= <<= >>= >>>= @ @@ $
 Added: New demo carts: waves.p8 dots3d.p8 auto2d.p8 wander.p8 cast.p8 jelpi.p8 (use INSTALL_DEMOS)
 Added: Extra pre-installed games: Embrace, 8 Legs to Love (use INSTALL_GAMES)
 Added: Splore cart labels for .p8 files
 Added: Now 16 code tabs (click on the rightmost ones to scroll)
 Added: ipairs()
 Added: SAVE from commandline to quick-save current cartridge (same as ctrl-s)
 Added: BACKUP from commandline to save a backup of current cartridge
 Added: CPU usage widget (ctrl-p while running cartridge)
 Added: Button / dpad states exposed in memory at 0x5f4c (8 bytes)
 Added: Random number generator state exposed at 0x5f44 (8 bytes)
 Added: pico8_dyn version is included when exporting to Raspberry Pi
 Added: allow_function_keys option in config.txt (CTRL 6..9 are now preferred -- will phase out F6..F9 if practical)
 Added: Visible tab characters (draw_tabs in config.txt)
 Added: pal(16,{1,2,3..}) means: use the value for each key 0..15 in a table
 Added: palt(16, bitfield) means: set the colour transparency for all 16 colours, starting with the highest bit
 Added: Options menu for binary exports (sound / fullscreen / controls)
 Added: Shape drawing tools in sprite and map editor
 Improved: Miscellaneous HTML shell / player optimisations and adjustments
 Improved: Lower cpu usage for small foreground_sleep_ms values (changed host event loop & fps switching strategy)
 Changed: This update is called 0.2.0, not 0.1.12d! (grew into plans for 0.2.0, and bumped cart version number)
 Changed: negative numbers expressed with a '-' count as a single token
 Changed: glitchy reset effect does not leave residue in base RAM (but maybe on screen when using sprites / tiles)
 Changed: sset() with 2 parameters uses the draw state colour as default
 Changed: line() or line(col) can be used to skip drawing and set the (line_x1, line_y1) state on the next call to line(x1,y1)
 Changed: vital system functions (load, reboot etc.) can only be overwritten during cartridge execution
 Changed: sqrt(x) is now more accurate, and a little faster than x^.5
 Changed: sqrt(x) returns 0 for negative values of x
 Changed: btnp() delay and repeats now work independently per-button
 Changed: pairs(nil) returns an empty function
 Changed: Default screenshot scale (now 4x), gif scale (now 3x)
 Changed: gif_len now means the length when no start point is specified (used to be the maximum recordable length)
 Changed: (Multicarts) When loading data from many different carts, the swap delay maxes out at ~2 seconds
 Changed: (Raspberry Pi) removed support for (and dependency on) libsndio
 Changed: camera(), cursor(), color(), pal(), palt(), fillp(), clip() return their previous state
 Changed: Can not call folder() from a BBS cart running under splore
 Changed: F9 resets the video, so that multiple presses results in a sequence of clips that can be joined to together
 Changed: color() defaults to 6 (was 0)
 Changed: Backed up filenames are prefixed with a timestamp.
 Changed: Automatically start on the (host's) current path if it is inside PICO-8's root path
 Changed: tostr(x,true) can also be used to view the hex value of functions and tables (uses Lua's tostring)
 Changed: Can hold control when clicking number fields (spd, pattern index etc.) to increment/decrement by 4 (was shift)
 Fixed: HTML exports running at 60fps sometimes appear to repeatedly speed up and slow down
 Fixed: HTML export layout: sometimes broken -- option buttons overlapping in the same place
 Fixed: __tostring metatable methods not observed by tostr() / print() / printh()
 Fixed: Mac OSX keyboard permissions (fixed in SDL2 0.2.12)
 Fixed: Audio mixer: SFX with loop_end > 32 would sometimes fail to loop back
 Fixed: btn() firing a frame late, and not on the same frame as stat(30)
 Fixed: #include can not handle files saved by some Windows text editors in default format (w/ BOM / CRLF)
 Fixed: Exports do not flatten #include'd files
 Fixed: Default window size has too much black border (now reverted to previous default)
 Fixed: Functions yielded inbetween frames occasionally push an extra return value (type:function) to the stack
 Fixed: can't load png-encoded carts with code that starts with a :
 Fixed: .gif output unnecessarily large
 Fixed: .gif recording skipping frames when running at 15fps
 Fixed: printh does not convert to unicode when writing to console or to a file
 Fixed: cart data sometimes not flushed when loading another cart during runtime
 Fixed: Can not navigate patterns with -,+ during music playback
 Fixed: Mouse cursor not a hand over some buttons
 Fixed: Laggy mouseover messages (e.g. showing current colour index, or map coordinates)
 Fixed: Can't paste glyphs into search field
 Fixed: Tab spacing always jumps config.tab_spaces instead of snapping to next column
 Fixed: -p switch name is wrong (was only accepting "-param" in 0.12.*
 Fixed: Code editor highlighting goes out of sync after some operations
 Fixed: Multicart communication problem (affecting PICOWARE)
 Fixed: time() speeds up after using the RESUME command
 Fixed: Audio state is clobbered when using the RESUME command
 Fixed: Audio glitch when fading out music containing slide effect (1)
 Fixed: Toggling sound from splore cart->options menu has no effect
 Fixed: Devkit keyboard works when paused
 Fixed: "-32768 % y" gives wrong results
 Fixed: Replacing all text in code editor breaks undo history
 Fixed: Double click to select last word in code does not include the last character
 Fixed: Weird block comment behavior in code editor
 Fixed: HTML export: cart names can not contain quotes
 Fixed: HTML export: menu button layout under chromium
 Fixed: HTML export: Adding content above cartridge breaks mobile layout
 Fixed: HTML export: Can touch-drag PICO-8 screen around (breaks simulated mouse input)
 Fixed: LOAD("#ABC") does not always immediately yield
 Fixed: Infinite RUN() loop crashes PICO-8
 Fixed: Mouse cursor is not a finger on top of most "pressable" button-style elements
 Fixed: CD command fails when root_path is relative (e.g. "pico8 -root_path .")
 Fixed: poke in fill pattern addresses (0x5f31..0x5f33) discards some bits
 Fixed: After using ctrl-click in map editor, can not modify map outside that region
 Fixed: Shift-selecting sprites from bottom right to top left selects wrong region
 Fixed: Changing GIF_LEN from PICO-8 commandline sometimes breaks gif saving
 Fixed: pget() sometimes returns values with high bits set
 Fixed: Preprocessor: unary operator lhs is not separated in some cases (e.g. x=1y+=1)
 Fixed: Preprocessor: ? shorthand prevents other preprocess replacements on same line
 Fixed: Preprocessor: fails when multiple shorthand expressions + strings containing brackets appear on the same line
 Fixed: Loading a .p8 file with too many tabs discards the excess code.
 Fixed: Map editor's stamp tool wraps around when stamping overlapping the right edge.
 Fixed: Very quick/light tap events sometimes do not register
 Fixed: SFX tracker mode: can't copy notes with shift-cursors before clicking (whole sfx is copied instead)
 Fixed: "..." breaks syntax highlighting
 Fixed: Click on text, press up/down -> cursor reverts to previous horizontal position
 Fixed: CTRL-[a..z] combinations processed twice under some linux window managers
 Fixed: ctrl-up/down to jump to functions in the code editor breaks when "function" is followed by a tab
 Fixed: map & gfx drawing selection is not applied consistently between tools
 Fixed: Using right mouse button to pick up a colour / tile value sometimes also applies current tool

Et oui… tout ça :-)
La mise à jour est disponible sur le site officiel :  https://lexaloffle.com.

Bon code à tous,
jihem

 

FUZE, documentation en français (brouillon)

Bonjour,

Je travaille sur une traduction française de la documentation officielle de FUZE. Si vous souhaitez obtenir le brouillon (version en cours), vous pouvez le télécharger en format pdf.

Vous êtes invités à faire suivre vos remarques et commentaires sur twitter (@wdwave).  Il reste encore par mal de travail mais c’est un début :-)

Salutations,
jihem

 

A propos de FUZE…

fuze_orig
FUZE4 Nintendo Switch est une application de codage pour Nintendo Switch. Elle a été conçue et développée par une équipe de joueurs, programmeurs, artistes et éducateurs aguerris. Le résultat final est un langage parfaitement adapté aux jeux et applications de codage pour les débutants absolus, mais aussi les programmeurs chevronnés.

Sprite-Show pour PICO-8 sous Windows

En janvier 2020, @s_yanik (pixel artist et développeur PICO-8) a publié sur itch.io un éditeur d’animations. Ci-après le verbatim d’un (court) échange avec l’auteur  :

Yannick, pourquoi avoir développé Sprite-Show  ?

  • Chaque fois que je dessinais un décor pour un jeu ou un personnage à animer, je perdais du temps à tester les animations ou les décors. Puisqu’il n’y avait pas d’outil aussi simple à utiliser que PICO-8, j’ai fait Sprite-Show que j’ai testé avec succès en tant que designer lors du jam Ludum Dare45. (Jouez à Greta-LDd45 sur itch.io et Lexaloffle).

Comment s’utilise Sprite-Show ?

  • Après avoir dessiné vos sprites (comme d’habitude) sous PICO-8 et avoir enregistré la cartouche sous le nom « mysprite.p8 », vous pouvez lancer Sprite-Show. A partir de celui-ci, vous pouvez simplement les afficher sur l’écran où ils vont se déplacer, sauter, voler, etc. Vous pouvez alors décider de les retravailler immédiatement ou de les utiliser dans votre Jeu.

Est-il possible de voir quelques images ?

sprite-show-2

Mise en situation des animations

sprite-show-1

Planche de   sprites

Combien ça coûte  ?

Ludum Dare 45

Du 5 au 8 octobre se tenait la 45e édition du Ludum Dare. Il s’agit d’une compétition ou vous disposez de 2 ou 3 jours (selon le challenge que vous vous fixez) pour réaliser un jeu sur un sujet « surprise ». Pour cette édition, le sujet est : « Start with nothing ».

Les fougueux chevaliers de la pico-team ont dégainé leur clavier et ont produit (en une après-midi faute de temps) un petit jeu : Greta !

25f16

Ce jeu a été conçu pour Ludum Dare 45: «Commencez avec rien». Vous êtes l’esprit de la nature. Vous n’avez rien et devriez recueillir avec l’outil approprié des gouttelettes d’eau, de soleil et de terre pour nourrir la plante.

Utilisez les flèches pour vous déplacer et la touche [x] pour changer d’ustensile.

Pouvez-vous aider Greta à grandir? (le nom de la fleur)

Pour jouer c’est par >> ici << !
Et pour voter (si vous participez à la LD45), c’est par >> <<.

Le score ultime est 200 points. Bonne chance 😉
jihem