{"id":143,"date":"2026-09-25T21:59:52","date_gmt":"2026-09-25T20:59:52","guid":{"rendered":"https:\/\/www.matteobononi.it\/blog\/?p=143"},"modified":"2026-09-25T23:35:46","modified_gmt":"2026-09-25T22:35:46","slug":"my-little-monster-mostriciattolo-pixel-art-per-il-tuo-sito","status":"publish","type":"post","link":"https:\/\/www.matteobononi.it\/blog\/my-little-monster-mostriciattolo-pixel-art-per-il-tuo-sito\/","title":{"rendered":"My Little Monster: un mostriciattolo pixel-art per il tuo sito"},"content":{"rendered":"\n<p>Ok, mi stavo annoiando.<\/p>\n\n\n\n<p>Non ricordo bene come ci sono arrivato, ma stavo pensando ai giochi in pixel art. In particolare a un sito dove ti creavi un piccolo mostro, modulare, pezzo per pezzo. Carinissimo. Quel sito non l&#8217;ho pi\u00f9 trovato. In compenso ne ho trovato un altro che fa creare personaggi in pixel art, carini uguale.<\/p>\n\n\n\n<p>Da l\u00ec a My Little Monster \u00e8 stato un attimo.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Sviluppato dal telefono<\/h2>\n\n\n\n<p>Per farlo ho provato una cosa nuova: un progetto in locale con ChatGPT, collegato in remoto. In pratica guidavo lo sviluppo dallo smartphone. Io scrivevo cosa volevo, lui lavorava sul mio computer, io guardavo il risultato. Deploy sul server compreso.<\/p>\n\n\n\n<p>Bellissimo. E ho scoperto che ChatGPT con Sol, prima il 5.6 e poi il 6, lavora alla grande. Consuma, eh: devi starci attento. Ma in una serata un mostro che gira per la pagina lo fai. Con la landing, il configuratore e un sacco di cose che all&#8217;inizio non avevo nemmeno in mente.<\/p>\n\n\n\n<p>C&#8217;\u00e8 un rovescio, per\u00f2. Se il computer lavora anche mentre sei in giro, viene voglia di lasciarlo sempre acceso e attaccato, con qualcosa in corso. E di non staccare mai davvero. Intanto i token se ne vanno, e i modelli cambiano nel giro di una settimana: pi\u00f9 veloci, meno affamati. \u00c8 il mondo che volevo da bambino, e ci sto benissimo. Solo, ogni tanto, bisogna ricordarsi di chiudere il coperchio.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Cosa fa<\/h2>\n\n\n\n<p>Quello di serie ha una televisione al posto della testa. Gira sopra i titoli, salta da una card all&#8217;altra e ogni tanto dice la sua. Se lo clicchi si apre il suo pannello: puoi dargli da mangiare, portarlo a spasso o provocarlo. Lo sconsiglio.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cammina sulla pagina.<\/strong> Titoli, card e blocchi diventano piattaforme: corre, salta, ogni tanto vola.<\/li>\n\n\n\n<li><strong>Esplora.<\/strong> Si avvicina a un titolo o a un link e lo commenta. Non clicca niente: guarda e basta.<\/li>\n\n\n\n<li><strong>Ha fame, umore ed energia.<\/strong> Biscotto, pizza, caff\u00e8, torta, gelato. Se esageri, rifiuta. Se lo provochi si arrabbia e corre pi\u00f9 veloce.<\/li>\n\n\n\n<li><strong>Si ricorda di te.<\/strong> Dopo un po&#8217; ti chiede come ti chiami. Puoi anche non dirglielo.<\/li>\n\n\n\n<li><strong>Non muore.<\/strong> Niente Tamagotchi coi sensi di colpa: sparisci per un mese e al ritorno \u00e8 ancora l\u00ec.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Una riga, e ce l&#8217;hai anche tu<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;script src=\"https:\/\/www.matteobononi.it\/my-little-monster\/my-little-monster.js\"\n        data-character=\"tv\" defer>&lt;\/script><\/code><\/pre>\n\n\n\n<p>Niente dipendenze, niente account. Vive in uno Shadow DOM, quindi non tocca il CSS del tuo sito e il tuo sito non tocca lui. Quello che si ricorda (nome, umore, fame) sta nel <code>localStorage<\/code> del browser e non va da nessuna parte. Vuol dire anche che ogni sito ha il suo mostro: quello che hai nutrito qui, altrove non ti riconosce.<\/p>\n\n\n\n<p>Se vuoi che parli del tuo sito, gli passi un JSON con <code>data-phrases<\/code>. Battute tue, link tuoi:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;\n  \"Non badare a me. \u00c8 quello che faccio meglio.\",\n  { \"text\": \"Ho trovato i prezzi. Io non pago.\", \"href\": \"\/prezzi\/\" },\n  { \"text\": \"Il blog \u00e8 di l\u00e0.\", \"href\": \"\/blog\/\", \"target\": \"_self\" }\n]<\/code><\/pre>\n\n\n\n<p>Il resto (personaggi, posizione, quanto si muove) lo scegli nel configuratore sulla <a href=\"\/my-little-monster\/\">pagina del progetto<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Tre mostri, un foglio sprite<\/h2>\n\n\n\n<p>TV, Dyno e Utini, nove vestiti in tutto. Ogni vestito \u00e8 un PNG con la stessa griglia: frame da 16\u00d724 pixel, 118 righe di animazioni. Corsa, salto, doppio salto, teletrasporto, esplosione. Ci sono anche nuoto e armi, ma per ora non li usa nessuno. Le icone del cibo sono di <a href=\"https:\/\/kenney.nl\/\" target=\"_blank\" rel=\"noopener\">Kenney<\/a>, CC0.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u00c8 in alpha, ma \u00e8 gi\u00e0 fuori<\/h2>\n\n\n\n<p>Una serata, e il giorno dopo era gi\u00e0 alla 0.13. Con un sito che lo stava usando. Quindi fino alla 1.0 la regola \u00e8 questa: se cambio qualcosa che rompe chi lo usa, lo scrivo. Quello che funziona oggi continua a funzionare.<\/p>\n\n\n\n<p>Non \u00e8 un assistente. Non risponde alle domande e non ti aiuta a comprare niente. Gira per la pagina senza un motivo preciso, solo perch\u00e9 pu\u00f2 permetterselo. \u00c8 carino, e lo sa.<\/p>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"\/my-little-monster\/\">Conoscilo<\/a><\/div>\n\n\n\n<div class=\"wp-block-button is-style-outline is-style-outline--1\"><a class=\"wp-block-button__link wp-element-button\" href=\"\/progetti\/my-little-monster\/\">La scheda del progetto<\/a><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Mi stavo annoiando e mi \u00e8 venuto in mente un mostriciattolo in pixel art. Una serata con ChatGPT, guidato dal telefono, ed eccolo: gira sulla pagina, commenta i link, ha fame. E si installa con una riga.<\/p>\n","protected":false},"author":1,"featured_media":154,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[59],"tags":[46,70,69,48,10],"class_list":["post-143","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-esperimenti","tag-javascript","tag-localstorage","tag-pixel-art","tag-side-project","tag-widget"],"_links":{"self":[{"href":"https:\/\/www.matteobononi.it\/blog\/wp-json\/wp\/v2\/posts\/143","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.matteobononi.it\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.matteobononi.it\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.matteobononi.it\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.matteobononi.it\/blog\/wp-json\/wp\/v2\/comments?post=143"}],"version-history":[{"count":5,"href":"https:\/\/www.matteobononi.it\/blog\/wp-json\/wp\/v2\/posts\/143\/revisions"}],"predecessor-version":[{"id":152,"href":"https:\/\/www.matteobononi.it\/blog\/wp-json\/wp\/v2\/posts\/143\/revisions\/152"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.matteobononi.it\/blog\/wp-json\/wp\/v2\/media\/154"}],"wp:attachment":[{"href":"https:\/\/www.matteobononi.it\/blog\/wp-json\/wp\/v2\/media?parent=143"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.matteobononi.it\/blog\/wp-json\/wp\/v2\/categories?post=143"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.matteobononi.it\/blog\/wp-json\/wp\/v2\/tags?post=143"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}