<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>manuq's blog</title><link>https://blog.manuq.ar/en/</link><description>recent content on manuq's blog</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Sun, 03 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.manuq.ar/en/index.xml" rel="self" type="application/rss+xml"/><item><title>jogos from Gamescom Latam 2026</title><link>https://blog.manuq.ar/en/posts/juegos-de-gamescom-2026/</link><pubDate>Sun, 03 May 2026 00:00:00 +0000</pubDate><guid>https://blog.manuq.ar/en/posts/juegos-de-gamescom-2026/</guid><description>what I played and a bit about the event</description><content:encoded><![CDATA[<p>I went to <a href="https://latam.gamescom.global/en/">this event</a> in São Paulo, Brasil. In three days I played many videogames and had nice conversations. Thanks to Endless Access for sending me! Muito obrigado. Also obrigado to my colleague Joana for being a great company. We used the time to brainstorm a lot about our work. She also did the arrangements for the trip, and was my tourist guide for dinner in a very paulista place.</p>
<p>Needless to say, the list below is very subjective to my own taste and interests. Most of these games were at the booth as finalists of the BIG festival.</p>
<h2 id="slay-clones">slay clones</h2>
<p>In the 90&rsquo;s DOOM was so influential that many similar games appeared. They were called <em>the doom clones</em> (I recommend listening to <a href="https://open.spotify.com/episode/269Ap2L5ekYpCzDzVO5UJp?si=6c1a8da09bcb4110">episode #89 of Modo Historia - is in Spanish</a>). It looks like today we are having a lot of <a href="/en/posts/qu%C3%A9-aprender-de-slay-the-spire-2/">slay the spire</a> clones. Although it&rsquo;s a bit unfair to say it, because each one tries hard to stand out with a unique twist. Here are the ones	 I played, and their twists:</p>
<p><a href="https://1plus1gamestudios.com/duo-quest-digital-game/">Duo Quest</a>, from Malasia. I enjoy couch-coop games, I enjoy slay the spire&hellip; so this one is a perfect fit for me! The duo of players shares the health bar, and each have their own cards based on the role they picked (mage, warrior, etc). And one more twist: at one point the normal gameplay turns into a question-and-answer show: both players have to pick an answer for the same question, without knowing what the other player is picking. For instance &ldquo;what is your best excuse when you are cooking and spoil the food?&rdquo;. If they pick the same answer they have a powerup card to play. I was lucky to play together with Rizal, the game designer! He and her partner were very kind and we talked a bit about designing card-based games, their complexity (they talked about managing multiple excel spreadsheets and constantly balancing the game after playtesting), and how they work around interrupting gameplay with text on screen (the questions can be long, the answers are short). They also have a board game version. Good luck with your games, Rizal!</p>
<p><a href="https://store.steampowered.com/app/3271280/Shroom_and_Gloom/">Shroom and Gloom</a>, from&hellip; ? Is a first-person dungeon. The thing that attracted me to the booth was the hand-drawn visuals for a 3D game, which is a problem I use to think about (sorry, I am this). The trick for them is: many many layers and a very controlled camera: you can move forward or backward, like on rails, but not turn. And you can slightly glance around with the mouse a little, enough to perceive depth without breaking the illusion.</p>
<p>And finally <a href="https://ghostpixel-games.itch.io/keepers-of-vyrellia">Keepers of Vyrellia</a> or just &ldquo;the keepers&rdquo;, from Córdoba, Argentina. This one is being made in Godot and I know it well from the local Godot Meetup community. I hanged out at the event with Fran, game developer and with Ire, the game producer. And I also said hi to Nico, the game director and also developer. I have already played the demo some weeks ago (they have a web build on itch.io) and gave them my feedback. The twist in this one is that cards have 2 sides, and that duality is present in all the game: attack/defend, edge/dull, violet/magenta. It was great to see their booth always busy. Nico gave a talk but unfortunately for me, it was at the business side, so I couldn&rsquo;t attend. I wish the best for this game. Oh and thanks for the Godot pin, Fran! I had to wear something Godot-related.</p>
<h2 id="top-downs">top-downs</h2>
<p>Because I work doing <a href="https://github.com/endlessm/threadbare">Threadbare</a>, when I see a top-down view I get immediately attracted. Either to see how they do the pixel art, how controls work, how they solve dialogue and HUD, etc. Even more if the game has some sort of action-puzzle or narrative.</p>
<p>That was the case when I saw <a href="https://store.steampowered.com/app/3070390/Master_Lemon_The_Quest_for_Iceland/">Master Lemon: The quest for Iceland</a>, a narrative game from Brasil nominated for its social impact. The game is a tribute to a real person, André Lima, who it seems was a Brazilian polyglot and adventurer who tragically passed away in Iceland. The background story is so similar to the one in Threadbare: language is in danger, a plague is spreading, devouring the memories of the world.</p>
<p>Also <a href="https://store.steampowered.com/app/3488640/Magical_Blush/">Magical Blush</a>, which has a slip-on-ice puzzle mechanic that I saw implemented by learners in <a href="https://github.com/Gamelab5-UTP-Grupo8-2/threadbare/tree/el_valiente_soldadito">a fork of Threadbare</a>.</p>
<p>On the top-down combat side I played <a href="https://store.steampowered.com/app/2350790/Moonlighter_2_The_Endless_Vault/">Moonlighter 2: The Endless Vault</a> (totally unrelated with Endless Access), from Spain. And <a href="https://isart-digital.itch.io/candellum">Candellum</a>, from France. The latter was made by students! And it has an interesting combat mechanic: You are a wax candle, and when you enter combat the flame consumes you. You can throw the flame to your enemies (also candles) to save some time and defeat them. But then enemies with armor appear, and the only way to break their armor is by having the flame on you. So it has a clever risk/reward compromise.</p>
<p>And another one I liked very much: <a href="https://store.steampowered.com/app/4186490/Dungeon_Concierge/">Dungeon Concierge</a> is an action-puzzle from Argentina, also made by students! I had the chance to talk to one of them, Federico, who was at the booth lurking how the people played and to reset the game. The theme here is really interesting. You are <em>not</em> the hero: you are the precarious person in charge of the cleaning at the dungeon. Luckly you also have magic powers to do it! Fede told me about the importance of putting the workers as protagonists, and making a game about social justice these days. And now I realize that the day after we talked was May 1, workers day. Idea for them: add an easter egg, each May 1 the player character refuses to work. With students like these there is future! I played only a little but I was able to see the action-puzzle mechanics and talk with Fede about how they designed them.</p>
<h2 id="and-a-popurrí">and a <em>popurrí</em></h2>
<p><a href="https://whitethorngames.com/colorbound">Colorbound</a> from Chile reminded me of <a href="https://willthompson.co.uk/posts/bgcolor-2025/">BgColor 2025</a>, the puzzle platformer that my team mate Will did. But this one is so hard! I couldn&rsquo;t pass the third level at the event, I should try the demo at home. The <a href="https://en.wikipedia.org/wiki/Andes">andean</a> music was lovely, also the pixel art, including the <a href="https://en.wikipedia.org/wiki/Siku_%28instrument%29">sicus</a> as cursor or pointer. It took me some time to realize that it was a pointer that I could move with the right stick, not just a sprite on the screen. The game would really welcome some control hints.</p>
<p><a href="https://spooky.express/">Spooky Express</a> from UK was there. Which has Phoenix as technical artist in the credits, the person who did the sokoban puzzles for Threadbare. I had played a demo before in my android phone. Playing in a big screen feels much better. This game is so cute.</p>
<p><a href="https://store.steampowered.com/app/3215230/Go_Slimey_Go/">Go Slimey Go</a> from Argentina was there too. I already played it in another event. Love it.</p>
<p><a href="https://store.steampowered.com/app/3629780/Tingus_Goose/">Tingus Goose</a>, from&hellip; Australia? (the game designer was at the stand and was brazilian). This was a stand with several games of the same publisher, Playsaurus. They are dedicated to idlers: clickers, incremental games, auto battlers. These kinds of genres are somewhat news to me, although I like games without an aparent goal, like sandboxes. Tingus Goose is a bit like it: so bizarre, has crazy drawings and animations by artist <a href="https://mastertingus.com/">Master Tingus</a>.</p>
<p><a href="https://store.steampowered.com/app/3035120/Is_This_Seat_Taken/">Is this seat taken?</a>, from Spain, is a nice cozy puzzle. I played it with Joana. Side note, we also had dinner in <a href="https://www.instagram.com/reels/DRCsoT6jf95/">a traditional place with very tasty food</a>. Thanks Joana!</p>
<p><a href="https://store.steampowered.com/app/2121510/Tenebris_Somnia/">Tenebris Somnia</a>, from Argentina. It was funny (and scary) when, after being stuck for a while, I received a hint &ldquo;you have to bring the candle to&hellip;&rdquo; from the actress herself, who was next to me, dressed as the character of the game.</p>
<h2 id="besides-games">besides games</h2>
<p><strong>Cosplayers</strong> with the brazilian carnaval touch. So many cosplayers!</p>
<p>Long lines of youngers in the <strong>meet &amp; greet</strong> with influencers, which are idols in Brasil much more than in other countries.</p>
<p>Long lines of people at the <strong>big booths</strong> (Nintendo, Riot/LoL, etc) making challenges to win souvenirs.</p>
<p><strong>Talks</strong>. I attended some, although I didn&rsquo;t have a business pass and it looks like the talks oriented to developers, the ones I would attend, were on the restricted side. And this wasn&rsquo;t marked in the schedule at the website. The talks at the general area were sponsored and more for gamers or fans than for developers, with some good exceptions. Hopefully next year the organizers are more careful, I already sent them this feedback.</p>
<p><strong>Workshops</strong>. It was great to see one on pixel art with Piskel (the same app used in Endless workshops) and game dev in general. It was a showcase of the one-year program that they do at Prefeitura de São Paulo. Which in Argentina would be ministry of social development (which as of this writing it doesn&rsquo;t exist&hellip; pff, but it did, and it will, when the madness ends, I hope).</p>
<p>Since we are considering a demo build of Threadbare that can be put in a booth without our presence, I watched closely what these games do. The answer in almost all the cases is: nothing at all. They rely on the people using the game menu to start a new game, sometimes figuring out themselves which button to press (usually Start in a joypad, or Escape key in a keyboard). Sometimes the person from the event staff at the area learned how to reset the game and helps. Other times, the game creators themselves were around to do it. Only one game I saw which had a especial build, and it ended with a &ldquo;thanks for playing the demo&rdquo; credits screen, then restarted itself.</p>
<p>Excluding GDC in 2019, this was the biggest event I&rsquo;ve ever been! I&rsquo;m more used to smaller events, so maybe I wasn&rsquo;t so well prepared. I think I have more tools now for taking more advantage of the next big one.</p>
]]></content:encoded></item><item><title>sobre videojuegos y truco</title><link>https://blog.manuq.ar/en/posts/sobre-videojuego-y-truco/</link><pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate><guid>https://blog.manuq.ar/en/posts/sobre-videojuego-y-truco/</guid><description>this post is available only in Spanish, sorry!</description><content:encoded>&lt;p>This post is available only in Spanish, sorry!&lt;/p>
</content:encoded></item><item><title>qué aprender de Slay the Spire 2</title><link>https://blog.manuq.ar/en/posts/qu%C3%A9-aprender-de-slay-the-spire-2/</link><pubDate>Mon, 13 Apr 2026 00:00:00 +0000</pubDate><guid>https://blog.manuq.ar/en/posts/qu%C3%A9-aprender-de-slay-the-spire-2/</guid><description>this post is available only in Spanish, sorry!</description><content:encoded>&lt;p>This post is available only in Spanish, sorry!&lt;/p>
</content:encoded></item><item><title>participating in VsJam</title><link>https://blog.manuq.ar/en/posts/participando-en-la-vsjam/</link><pubDate>Sun, 16 Nov 2025 00:00:00 +0000</pubDate><guid>https://blog.manuq.ar/en/posts/participando-en-la-vsjam/</guid><description>two crazy weeks making a game for a very peculiar console</description><content:encoded><![CDATA[<p><a href="https://github.com/ventilastation/vsdk/pull/81">This was my submission</a> for ventilastation jam! (video included). The game I was able do in the short time I had to dedicate to it, in a pair of weeks. I had a blast. It helped a lot that it rained during the weekend and I couldn&rsquo;t go sailing. I proceed to tell a bit&hellip;</p>
<h2 id="three-pycamps">Three pycamps</h2>
<p>&hellip;summarize my story with <a href="https://ventilastation.protocultura.net/en/">ventilastation</a>:</p>
<ul>
<li>
<p>2013: The pycamp in which I saw them swinging a strip of leds to write &ldquo;hello world&rdquo; in the air. Months later, my friend alecu surprised us with the <em>&ldquo;super ventilagon&rdquo;</em>, his port of <a href="https://superhexagon.com/">super hexagon</a>. I was even more surprised when I was able to play it and confirm that the port was as precise and mesmerizing as the original.</p>
</li>
<li>
<p>2018? The pycamp in which together with SAn we started to do the emulator for the ventilastation in <a href="https://pyglet.org/">pyglet</a>, while alecu was fighting with <a href="https://micropython.org/">micropython</a>.</p>
</li>
<li>
<p>2025: Much closer in time&hellip; March this year! The pycamp in which I did assets for &ldquo;a jugar con vugo&rdquo; (game inspired in <a href="https://en.wikipedia.org/wiki/Hugo_%28franchise%29">the Hugo television show</a>), having the real ventilastation at hand.</p>
</li>
</ul>
<p>(What a pycamp is can&rsquo;t be summarized; it deserves a separate post. But it&rsquo;s basically an unconference of <a href="https://www.python.org.ar/">the argentine python community</a> that has its own unique character. I usually join in for the video games.)</p>
<p>The ventilastation is a spectacular project for several reasons: the free hardware and software, the fact that it can be programmed in (micro)python, that the microchip is spinning at full speed along with the leds, and the hacker/punk/rebellious aesthetic of the games.</p>
<h2 id="the-jam">The jam</h2>
<p>I found out about the online jam a week late, but I decided to join anyway. It had been <a href="https://github.com/manuq/aereo.manuq.ar">aages</a> since I&rsquo;d participated in a jam! We worked exclusively in the emulator, sharing our progress on the event&rsquo;s Discord server. And in three sessions, on Thursdays (two for me), alecu showed us how what we had pushed looked on the real hardware, streaming the camera on Discord and pointing it squarely at the fan. He figured out how to synchronize both speeds (the camera and the fan) to make it look pretty faithful.</p>
<p>I started by installing <a href="https://github.com/ventilastation/vsdk">the vsdk</a> inside <a href="https://containertoolbx.org/">a toolbx</a>. I&rsquo;m leaving the steps <a href="https://gist.github.com/manuq/bbfc2fbd87a2acd72d5a1da865511dbe">in this gist</a> for anyone who, like me, likes using immutable systems.</p>
<p>My idea was to continue the &ldquo;a jugar con vugo&rdquo; project. From that experience, I learned:</p>
<ul>
<li>What types of assets look bad for the path / tunnel tiles. They shrink very quickly along the Y axis. Past the halfway of the tunnel, the 16-pixel-high tile is displayed at 4 <a href="https://github.com/ventilastation/vsdk/blob/main/docs/developers-guide.md#part-iv-ventilastation-display-and-sprites">arxeles</a> or less.</li>
<li>That you shouldn&rsquo;t use bright backgrounds. It&rsquo;s better to leave dark areas!</li>
</ul>
<p>But I got bogged down in this and wasted a lot of time, especially with workarounds that seemed to look good in the emulator but proved not to be the case on the real hardware. My <a href="https://github.com/ventilastation/vsdk/pull/54">first pull request</a> (includes video) was a demo of a tunnel that goes back and forth, nothing more.</p>
<h2 id="tincho-vrunner">Tincho vrunner</h2>
<p>Just recently, Nico, a journalist friend who works at the local newspaper, published <a href="https://www.ellitoral.com/area-metropolitana/video-viral-tincho-carpincho-jorge-alvarez-martin-familia-periodista-personaje-realizador-canal13-santafe-islas-capibara-muneco-mascota-abuelo-lobato_0_bJrUxksHhR.html">a chronicle</a> about a character from our pop culture. And it occurred to me to <a href="https://github.com/ventilastation/vsdk/pull/56">include him as a character in the game</a>. This also gave me the motivation to continue the game jam, add gameplay, and turn the demo into a real game: tincho carpincho&rsquo;s game. Having a theme or something to inspire you is great. You can read more about Tincho in the <a href="https://github.com/ventilastation/vsdk/tree/main/apps/micropython/apps/tincho_vrunner#tincho-vrunner">README</a> (in Spanish).</p>
<p>I turned it into a time trial, a &ldquo;vrunner&rdquo;. Tradition says that every ventilation title is a pun using the letter V. I made two levels and <a href="https://github.com/ventilastation/vsdk/pull/65">made it possible to win or lose</a> (video in the link). In the first level, the objective is to go forward, inwards. And in the second, the objective is to go backwards or outwards, bouncing off the&hellip; boxes? pillows? rocks? There are red blocks that slow you down, which later became weeds in <a href="https://www.aseprite.org/">aseprite</a>.</p>
<p>The <em>sdk</em> is very simple, all you can do fits <a href="https://docs.google.com/presentation/d/1gfKrzKq1-QdnFjiBYQB6Z456wWDf1JxnY42-vLq9Bws/">in three slides</a>:</p>
<ul>
<li>the <strong>Sprite</strong> class. With setters y getters like <code>Sprite.y() -&gt; int</code>, <code>Sprite.set_y(int)</code>, <code>Sprite.set_perspective(int)</code></li>
<li>the <strong>Scene</strong> class. With methods to be redefined like <code>Scene.on_enter()</code>, <code>Scene.step()</code></li>
<li>the <strong>director</strong> singleton. With methods like <code>director.push(scene)</code>, <code>director.was_pressed(joy_const)</code>, <code>director.sound_play(filename)</code></li>
</ul>
<p>Coming from working daily with <a href="https://godotengine.org/">godot</a>, where anything is possible, the restrictions of ventilastation are fresh air for me, and a great trigger for creating. It&rsquo;s something I was reflecting on recently in the game club we have at work, where we played <a href="https://minitgame.com/">minit</a> (a game with a 1-bit palette).</p>
<p>For example, in <a href="https://github.com/endlessm/threadbare">threadbare</a> we have layers and layers of tiles. Several of them end up fully occluded. So unless the engine is doing something smart, things must be being drawn unnecessarily. And since the hardware of a modern personal computer is more than enough for the game, it doesn&rsquo;t matter. In contrast, in ventilastation, you have to be careful with memory, and you can&rsquo;t instantiate sprites in the middle of the game loop. For the tiles, for example, I have a fixed list of sprites that I reuse throughout the tunnel. When the horizontal strips of tiles leave the circle, they are placed back in the center, using the image (the frame) that corresponds to that height of the tunnel. I do the same with the props.</p>
<p>What&rsquo;s unique about the ventilastation is its circular screen, which is super cool, and the fact that the coordinates are radial. There are 3 perspective modes for a sprite, and mastering them is really important for making games:</p>
<ul>
<li>
<p>Mode 0: I call it &ldquo;fullscreen&rdquo;. It reprojects the image in cartesian coordinates so it appears exactly as it is. I used this for the backgrounds, like the capybara fishing on the initial screen.</p>
</li>
<li>
<p>Mode 1: I call it &ldquo;tunnel&rdquo;. The image appears bent and rotated along the X coordinate and shrinks as the Y coordinate increases, until it disappears in the center, without losing its aspect ratio. I used this for the ground and the props.</p>
</li>
<li>
<p>Mode 2: I call it &ldquo;HUD&rdquo;. Like the previous mode, the image appears bent and rotated along the X coordinate. But along the Y coordinate, it always occupies the same amount of arcs (which total 54), so when you move it along the Y coordinate, it distorts (its aspect ratio changes). I used this for the player that runs in loop, and for the signs. You can see how it distorts in the signs I animated vertically with the instructions: &ldquo;reach the bottom,&rdquo; &ldquo;reach the outside.&rdquo; It creates a lovely squash &amp; stretch effect that&rsquo;s worth taking advantage of next time!</p>
</li>
</ul>
<p>Modulus operator (%) everywhere! For frame-by-frame animations, the speed is adjusted like this:</p>
<pre tabindex="0"><code>self.cur_frame = (self.cur_frame + 1) % 256
self.player.set_frame((self.cur_frame // 16) % 4)
</code></pre><p>That&rsquo;s inside the <code>step()</code> method of the scene. It makes tincho&rsquo;s sprite change every 16 steps, displaying the 4-frame animation in a loop.</p>
<p>Once I had some gameplay, I iterated over the assets again. I added signs like &ldquo;you won&rdquo; to inform the players, communicate the objective and controls. For the retro sound effects I used the <a href="https://sfxr.me/">sfxr</a> generator, which fits the console&rsquo;s mood well. Playing with the sliders, I made three variations of each. The code randomizes them like this:</p>
<pre tabindex="0"><code>director.sound_play(&#34;tincho_vrunner/powerup%d&#34; % randrange(3))
</code></pre><p>There isn&rsquo;t much more to rescue <a href="https://github.com/ventilastation/vsdk/blob/main/apps/micropython/apps/tincho_vrunner/tincho_level.py">from the code</a> beyond these snippets, which is jam-level code. Let&rsquo;s say it doesn&rsquo;t follow the highest industry standards.</p>
<p>Finally, I iterated on the design of the two levels and tweaked the mechanics a bit. I asked for help with the music on Discord, and <a href="https://juanelhongo.itch.io/">JuanElHongo</a> sent me several tracks they had, one of which was perfect. Landed.</p>
<p>I loved seeing the process of the other games in the jam, and although there wasn&rsquo;t much interaction between us, the set of games turned out great!</p>
<h2 id="post-jam">Post jam?</h2>
<p>These are things I left out, what I&rsquo;d like to do if I were to resume development of the game:</p>
<ul>
<li>Improve collisions. I received really good feedback on this, and it&rsquo;s something I&rsquo;d also noticed in the emulator. Due to time constraints, I used the collision detection that comes with the Sprite class. But in game development, you almost always end up using a different collision detection than the asset, smaller or larger, to make the game less harsh, less punishing. It&rsquo;s also strange that it doesn&rsquo;t collide when moving backward, but that&rsquo;s what enables the bounce mechanic.</li>
<li>Fix bug: music doesn&rsquo;t play at level 2.</li>
<li>Improve the level definition so they can be edited faster.</li>
<li>Add a couple more levels. Make better use of the bounce mechanic, the backward movement, which is the game&rsquo;s signature feature.</li>
</ul>
]]></content:encoded></item></channel></rss>