<?xml version='1.0' encoding='UTF-8' ?> 
<rss version="2.0"> 
<channel> 
	<title>nonmateria.com RSS</title> 
	<link>https://nonmateria.com/main/index.html</link> 
	<description>in chronological order</description> 
	<language>en-us</language> 
	<docs>http://backend.userland.com/rss</docs> 
		<item> 
			<title>fundamentals</title> 
			<description><![CDATA[ 
			<section> 
			 
			<a href="https://nonmateria.com/data/devlog/2024/fundamentals.png"> 
			<img src="https://nonmateria.com/data/devlog/2024/fundamentals.png" loading="lazy"></a> 
			<span class="caption">exercises and studies</span> 
			<br> 
			 
			<p>In July and August i mostly suffered the hot weather while improving my art fundamentals: drawing cubes, cylinders, stuff in perspective, gesture drawing, all the usual beginner stuff, so there's not that much to see.</p> 
			 
			<p> While i study to put my art skill on the level with my coding and music there won't that much to see, so this devlog will now be indefinitely on hiatus, for following me on other places check the <a href="follow.html">"follow"</a> page </p> 
			 
			</section> 
			]]></description> 
			<pubDate>Wed, 28 Aug 2024 00:00:00 +0200</pubDate> 
			<link>https://nonmateria.com/2024_08_28__fundamentals.html</link> 
		</item> 
		<item> 
			<title>stg boilerplate</title> 
			<description><![CDATA[ 
			<section> 
			 
			<div class="center" style="width:540px"> 
			<video width="100%" preload="metadata" controls loop poster="https://nonmateria.com/data/devlog/2024/stg_fhd_thumb.jpg"> 
			    <source src="https://nonmateria.com/data/devlog/2024/stg_fhd.mp4" type="video/mp4"> 
			    Your browser does not support the video tag. 
			</video>  
			<span class="caption">a bare minimum vertical stg prototype, the ship slows down when shooting</span> 
			</div> 
			<br> 
			<p>In June i worked on some more code to make my 2d tile engine work for horizontal and vertical scrolling shooters ( also called STGs or "shmups" ).   
			<br> 
			<br> 
			<div style="text-align:center"> 
			--------technical--stuff--ahead--tear--along--the--dotted--line--------</div> 
			<p> 
			<div class="center" style="width:70%"> 
			<a href="https://nonmateria.com/data/devlog/2024/stg_tiled.png"> 
			<img src="https://nonmateria.com/data/devlog/2024/stg_tiled.png" loading="lazy"></a><br> 
			<span class="caption">working on the TileD map for the demo</span> 
			</div> 
			</p> 
			 
			<p>Features added to the engine or boilerplate classes: 
			<ul> 
			<li>render with camera autoscroll, now render works on a lower resolution canvas.</li> 
			<li>STG avatar that autoscrolls with camera.</li> 
			<li>RailMovement compoment for entities using TileD polylines or polygons, featuring: 
			<ul> 
				<li>movement in tiles per second or polyline nodes per second.</li> 
				<li>optional easing for movement between nodes.</li> 
				<li>optional smoothing of the polyline with <a href="https://qroph.github.io/2018/07/30/smooth-paths-using-catmull-rom-splines.html">catmul rom splines</a>, with settable alpha and tension.</li> 
			</ul> 
			<li>entity cloning with variable x,y offset or offset in points of the polyline.</li> 
			<li>easing.lua class with a compilation of easing methods, mostly from <a href="https://easings.net/">easings.net</a>.</li> 
			<li>loader.lua is now coroutine based, and I also used coroutines for entities behavior. (check out <a href="https://www.love2d.org/forums/viewtopic.php?t=36853">this thread</a> about coroutines!)</li> 
			</ul> 
			</p> 
			<p>All of this and more minor fixes, and a lot of research about shmups ( some of it being very fun I must admit! ).  
			</p> 
			</section> 
			]]></description> 
			<pubDate>Fri, 28 Jun 2024 00:00:00 +0200</pubDate> 
			<link>https://nonmateria.com/2024_06_28__stg_boilerplate.html</link> 
		</item> 
		<item> 
			<title>zona warpa</title> 
			<description><![CDATA[ 
			<section> 
			 
			<a href="https://nonmateria.com/data/devlog/2024/zona_warpa.jpg"> 
			<img src="https://nonmateria.com/data/devlog/2024/zona_warpa.jpg" loading="lazy"></a> 
			<span class="caption">no picture was fair to all the fun, so here it is the screenshot of a blurry video of people playing games at Bread & Roses ( with Kenobit as live soundtrack! )</span> 
			<br> 
			 
			<p>In May I mostly put my time in touring with <a href="https://zonawarpa.it">Zona Warpa</a>, and indipendent videogame festival and temporary arcade. We reached various (mostly squatted) places in Italy: </p> 
			<ul> 
			<li>Bisaboga, Marzabotto (BO)</li> 
			<li>CSOA Forte Prenestino, Roma</li> 
			<li>Case Matte, L'Aquila</li> 
			<li>Bread & Roses, Bari</li> 
			</ul> 
			 
			<p> It was a blast, with workshops, talks and live music, and also a good selection of indie and retro games on our machines. You can check it out (in italian) on the <a href="https://zonawarpa.it/">website</a> and on <a href="https://video.zonawarpa.it/">peertube</a>.</p> 
			 
			<p>... or set up your machines with coop games and emulators and bring them to a local underground (electronic?) music gig!</p> 
			 
			</section> 
			]]></description> 
			<pubDate>Tue, 28 May 2024 00:00:00 +0200</pubDate> 
			<link>https://nonmateria.com/2024_05_28__zona_warpa.html</link> 
		</item> 
		<item> 
			<title>templates</title> 
			<description><![CDATA[ 
			<section> 
			 
			<a href="https://nonmateria.com/data/devlog/2024/top_template.png"> 
			<img src="https://nonmateria.com/data/devlog/2024/top_template.png" loading="lazy"></a> 
			<span class="caption">top down map template</span> 
			<br> 
			<br> 
			<a href="https://nonmateria.com/data/devlog/2024/side_template.png"> 
			<img src="https://nonmateria.com/data/devlog/2024/side_template.png" loading="lazy"></a> 
			<span class="caption">side platformer map template</span> 
			<br> 
			 
			<p>In April the work on gamedev was mostly slow, as i'm putting a lot of time on improving my art fundamentals. I've just taken the previous maps and built two aseprite / tiled map template from that to use a starting point.</p> 
			 
			<p>For improving my drawing skill (and hopefully my pixel art) I've studied a bit of lessons from <a href="https://drawabox.com/">drawabox</a>. In the past months I got up to lesson 3 ( including drawing 250 boxes ) and now trying other resources, expecially Marc Brunet videos on <a href="https://www.youtube.com/@YTartschool/videos">youtube</a>. I've seen some improvement but there's still a lot of work to do ( leading to probably more months with less coding and few things to show ).</p> 
			</section> 
			]]></description> 
			<pubDate>Sun, 28 Apr 2024 00:00:00 +0200</pubDate> 
			<link>https://nonmateria.com/2024_04_28__templates.html</link> 
		</item> 
		<item> 
			<title>top down</title> 
			<description><![CDATA[ 
			<section> 
			 
			<video width="100%" preload="metadata" controls loop poster="https://nonmateria.com/data/devlog/2024/tile_engine_top_thumb.jpg"> 
			    <source src="https://nonmateria.com/data/devlog/2024/tile_engine_top.mp4" type="video/mp4"> 
			    Your browser does not support the video tag. 
			</video>  
			<span class="caption">bitmap brothery tiles and creamy clouds</span> 
			<br> 
			<p>In march i worked on making a top down character controller and tileset. I've also refactored and cleaned the existing codebase.</p> 
			<br> 
			<div style="text-align:center"> 
			--------technical--stuff--ahead--tear--along--the--dotted--line--------</div><br> 
			<p>The feature added to the engine i'm building with <a href="https://www.love2d.org/">love2d</a> are: 
			<ul> 
			<li>Correct rendering of top down rectangular tiles. The engine physics is based on square tiles but the graphics are rendered with the tileset ratio.</li> 
			<li>Top down character controller, with featuring dashing and some tweaks for automatically navigating around near corners. Different tipes of working walls and stairs.</li> 
			<li>Refactoring for both the top down and platformer avatar, functionality divided between a movement controller and an animation component.</li> 
			<li>More refactoring and cleaning.</li> 
			</ul> 
			</p> 
			 
			<p>I also researched a bit for a good workflow for animating sprites, this time i used as reference an animation downloaded from <a href="https://www.mixamo.com/#/?page=1&type=Motion%2CMotionPack">Mixamo</a> and rendered by Blender:</p> 
			<div class="center" style="width:70%"> 
			<a href="https://nonmateria.com/data/devlog/2024/blender_runs_wip.png"> 
			<img src="https://nonmateria.com/data/devlog/2024/blender_runs_wip.png"" loading="lazy"></a><br> 
			<span class="caption">blender can render 3d models in orthographic projection instad of using perspetive</span> 
			</div> 
			<br> 
			<br> 
			<div class="center" style="width:192px"> 
			<a href="https://nonmateria.com/data/devlog/2024/top_base_run_wip.gif"> 
			<img src="https://nonmateria.com/data/devlog/2024/top_base_run_wip.gif" loading="lazy"></a> 
			</div> 
			<div class="center" style="width:70%"> 
			<span class="caption">i always animate the skeleton moving before putting it in place, making it travel a constant amount of pixels ( 4px here )</span> 
			</div> 
			<br> 
			</p> 
			<p> 
			I've also scrapped a good amount of stuff, here it is the first character / tile design, the tiles were ispired by Ricardo Bofill's <a href="https://www.archdaily.com/332438/ad-classics-la-muralla-roja-ricardo-bofill">Muralla Roja</a> : 
			<br> 
			<div class="center" style="width:70%"> 
			<a href="https://nonmateria.com/data/devlog/2024/red_halls_wip.png"> 
			<img src="https://nonmateria.com/data/devlog/2024/red_halls_wip.png" loading="lazy"></a></div> 
			<div class="center" style="width:70%"> 
			<span class="caption">level editing with TileD</span> 
			</div> 
			</p> 
			</section> 
			]]></description> 
			<pubDate>Thu, 28 Mar 2024 00:00:00 +0100</pubDate> 
			<link>https://nonmateria.com/2024_03_28__top_down.html</link> 
		</item> 
		<item> 
			<title>ladders and menus</title> 
			<description><![CDATA[ 
			<section> 
			<video width="100%" preload="metadata" controls loop poster="https://nonmateria.com/data/devlog/2024/breakout_n_ladders_thumb.jpg"> 
			    <source src="https://nonmateria.com/data/devlog/2024/breakout_n_ladders.mp4" type="video/mp4"> 
			    Your browser does not support the video tag. 
			</video>  
			<span class="caption">we heard you like games, so we put a game inside your game</span> 
			 
			<br> 
			<p>In february I kept improving the 2d tile engine, I've added quite some features, expecially the code for managing audio tracks and FXs, improved character controller and full code for the menus and settings. Minigames can now be put inside the narration, as seen in the video above.<br> 
			<br> 
			I've added another pixel art study to <a href="pixel_studies.html">this page</a>.</p> 
			<br> 
			<div style="text-align:center"> 
			--------technical--stuff--ahead--tear--along--the--dotted--line-------- 
			</div> 
			<br> 
			<p>This is the list of added features implemented this month:</p> 
			<ul> 
			<li>single threaded level loading.</li> 
			<li>audio loops and fx manager.</li> 
			<li>game settings with working menus: 
				<ul><li>video: fullscreen, resolution, pixel scaling, borderless, vsync.</li> 
				<li>audio: group volumes, stereo panorama.</li> 
				<li>keyboard and gamepad rebinding, key/button fields automatically generated from a table.</li> 
				<li>accessibility: font switching between default (<a href="https://www.kreativekorp.com/software/fonts/fairfax/">Fairfax</a>), Atkinson <a href="https://brailleinstitute.org/freefont">HyperLegible</a> and <a href="https://opendyslexic.org/">OpenDyslexic</a>.   
				</ul></li> 
			<li>settings are correctly serialized and deserialized, obfuscated by compression (like in <a href="https://love2d.org/forums/viewtopic.php?p=231527&sid=420257ba393871ab5ef3cdc81f0e4f47#p231527">this post</a>, I will use the same serialize/deserialize functions for game saves).</li> 
			<li>full joystick support, the shown glyphs are switched on the fly between the keyboard keys and the correct buttons for PS / Xbox / Switch controllers (code taken from this <a href="https://github.com/idbrii/love-gamepadguesser/blob/main/gamepadguesser/init.lua">gamepad guesser</a>). Joystick rumble can be used!</li> 
			<li>collisions: stairs now have a direction to be traversed when going up, you can go down the stairs by holding down while walking (it actually invert the stair direction), added ladders.</li> 
			<li>text can now be aligned to the right or centered</li> 
			<li>big narrator* refactoring: added sequenced images and interactive widgets.</li> 
			<li>various minor tweaks: avatar and collision fixes, settable letterbox bands, an object representing triggerable animations, general cleaning (expecially for input bindings).</li> 
			</ul><br> 
			* narrator is the object managing all the overlays: text panel, image panels, interactive widgets. 
			</p> 
			 
			<p> I've also done some assets to test those functionality, like the ladder climb avatar animation and the breakout game elements, the TileD maps for the splash screen and the shown video and the relative music and sounds.</p>  
			 
			<p>I've setted for a random change in the ball x/y speed on paddle hit but probably a more interesting behavior can be coded ( maybe based on getting and setting the vector angle ).</p> 
			<br> 
			 
			<p> 
			<div class="center" style="width:70%"> 
			<a href="https://nonmateria.com/data/devlog/2024/orca_ost.png"> 
			<img src="https://nonmateria.com/data/devlog/2024/orca_ost.png"" loading="lazy"></a><br> 
			<span class="caption">the ORCA patch for the level background loops and sound fx</span> 
			</p></div> 
			 
			<p>For making both the music and the sound fx i've used the livecoding environment <a href="https://100r.co/site/orca.html">ORCA</a> (the <a href="https://github.com/hundredrabbits/Orca-c">c version</a>) together with my sampler/wavetable synth <a href="https://codeberg.org/nonmateria/folderkit">folderkit</a>. It's a combination that i've used to play music live for a few years so it's really convenient (for me).</p> 
			</section> 
			]]></description> 
			<pubDate>Wed, 28 Feb 2024 00:00:00 +0100</pubDate> 
			<link>https://nonmateria.com/2024_02_28__ladders_and_menus.html</link> 
		</item> 
		<item> 
			<title>tile engine</title> 
			<description><![CDATA[ 
			<section> 
			 
			<video width="100%" preload="metadata" controls loop poster="https://nonmateria.com/data/devlog/2024/tile_engine_fhd_thumb.jpg"> 
			    <source src="https://nonmateria.com/data/devlog/2024/tile_engine_fhd.mp4" type="video/mp4"> 
			    Your browser does not support the video tag. 
			</video>  
			<span class="caption">small tile engine demo, everything still a bit rough</span> 
			<br> 
			<p>In december and january i started coding a small "engine" for rapidly making some 2d games. It's made for making tile-based pixel art games, loading maps made with the <a href="https://www.mapeditor.org/">TileD</a> editor. I made some tiles and animations with <a href="https://www.aseprite.org/">aseprite</a>, but it's still everything rough to get fast with the workflow.<br> 
			I also started making some studies to improve my skills at pixel art, they have a page <a href="pixel_studies.html">here</a>.</p> 
			<br> 
			<div style="text-align:center"> 
			--------technical--stuff--ahead--tear--along--the--dotted--line--------</div> 
			<br> 
			<p>The engine is made with <a href="https://www.love2d.org/">love2d</a>, loading TileD maps exported to lua. After fully coding <a href="pulse_codex_ep.html">a game</a> in c, I found coding in lua really comfortable, it's a language built around a very flexible table container, and luaJIT is fast. This <a href="https://github.com/kikito/love-tile-tutorial/wiki">tutorial</a> helped me to both refresh my lua and swiftly learn love2d.</p> 
			<p>For now the "engine" feature: 
			<ul> 
			<li>Rendering tilemaps from the .lua level file, including mirrored or animated tiles (<a href="https://love2d.org/wiki/Tutorial:Efficient_Tile-based_Scrolling">this tutorial</a> was very helpful to understand how to use tilesets in love2d).</li> 
			<li>Rendering image layers from the .lua level file with parallax scrolling.</li> 
			<li>Basic collisions, built around the <a href="https://github.com/vrld/HC">HC</a> love2d library.</li><li>a character controller code suitable for an action-platformer, the jump code is based on <a href="https://www.gdcvault.com/play/1023559/Math-for-Game-Programmers-Building">this GDC talk</a> (still a bit glitchy).</li> 
			<li>Already tested simple bullets and entities.</li> 
			<li>Pathfinding built around the <a href="https://github.com/Yonaba/Jumper">jumper</a> library and <a href="https://deepnight.net/tutorial/bresenham-magic-raycasting-line-of-sight-pathfinding/">raycasting with the Bresenham algorithm</a>.</li> 
			<li>A dialog module, also retrofitted to manage simple menus.</li> 
			<li>A module to draw strings with some fancy fx (based on input characters), obviusly ispired by <a href="http://www.make.bitsy.org/">bitsy</a> games.</li> 
			<li>Rectangle areas that can trigger camera change or a dialog section, camera can be set to fixed or dynamic indipendently for x and y axis, camera movement is smoothed with a settable amount. Leaving the area exit the dialog, even though each line can be set to exclusively catch the input (for forcing the player to choose an option or to listen everything). 
			</ul> 
			</p> 
			 
			<p> 
			<div class="center" style="width:70%"> 
			<a href="https://nonmateria.com/data/devlog/2024/tilanesi.png"> 
			<img src="https://nonmateria.com/data/devlog/2024/tilanesi.png"" loading="lazy"></a><br> 
			<span class="caption">making the tileset</span> 
			<br> 
			<br> 
			<a href="https://nonmateria.com/data/devlog/2024/tiled1.png"> 
			<img src="https://nonmateria.com/data/devlog/2024/tiled1.png" loading="lazy"></a><br> 
			<span class="caption">working on the TileD map for the demo</span> 
			</div> 
			</p> 
			 
			<p> 
			There is still some work to do (audio code, gamepad support, level loading/switching, configurable settings, etc) but it could be ready for some game jams soon. 
			</p> 
			</section> 
			]]></description> 
			<pubDate>Sun, 28 Jan 2024 00:00:00 +0100</pubDate> 
			<link>https://nonmateria.com/2024_01_28__tile_engine.html</link> 
		</item> 
	</channel> 
</rss>
