<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[BitsGofer Studio]]></title><description><![CDATA[Developer log of the game "Have a Sip", where a quiet robot runs a coffee truck and witness stories from all walks of life.]]></description><link>https://www.bitsgofer.com</link><image><url>https://substackcdn.com/image/fetch/$s_!zKkB!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c32f61d-cece-4d9b-b515-b7ef4ac45092_192x192.png</url><title>BitsGofer Studio</title><link>https://www.bitsgofer.com</link></image><generator>Substack</generator><lastBuildDate>Fri, 01 May 2026 04:27:04 GMT</lastBuildDate><atom:link href="https://www.bitsgofer.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Bitsgofer]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[bitsgofer@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[bitsgofer@substack.com]]></itunes:email><itunes:name><![CDATA[bitsgofer]]></itunes:name></itunes:owner><itunes:author><![CDATA[bitsgofer]]></itunes:author><googleplay:owner><![CDATA[bitsgofer@substack.com]]></googleplay:owner><googleplay:email><![CDATA[bitsgofer@substack.com]]></googleplay:email><googleplay:author><![CDATA[bitsgofer]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[HaS-003: Discovering the process]]></title><description><![CDATA[On finding out my own process for game development]]></description><link>https://www.bitsgofer.com/p/has-003-discovering-the-process</link><guid isPermaLink="false">https://www.bitsgofer.com/p/has-003-discovering-the-process</guid><dc:creator><![CDATA[bitsgofer]]></dc:creator><pubDate>Fri, 10 Apr 2026 23:52:30 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!zKkB!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c32f61d-cece-4d9b-b515-b7ef4ac45092_192x192.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I recently finished another narrative piece for Have a Sip (HaS), published in the game&#8217;s companion blog as &#8220;<a href="https://aftersunsetbeforesunrise.substack.com/p/the-view-from-here">The view from here</a>&#8221;, a story about stumbling back into children&#8217;s vantage point.</p><p>It&#8217;s good that there&#8217;s finally some output, because there has been weeks where the lack of progress has been quite frustrating. </p><p>However, when I look back at the last 1+ month, I realized there is a lot of hidden work that went into discovering a structure for how to develop HaS. And it was not what I had in my when I first started.</p><p>A lot of the process&#8217;s peculiar details came from my own constraints:</p><ul><li><p>Mostly solo development, with no prior background in actual gamedev.</p></li><li><p>Running this on the side of my full-time work + family duties.</p></li><li><p>HaS being what it is: a narrative driven game that strive for directed, but also procedural stories.</p></li></ul><p>What I discovered was that: for a particular game &amp; team setup, a good process can really reduce the friction and overhead.</p><p>In this case, I stumbled-upon production pipeline was:</p><blockquote><p>&#8594; Write the stories for HaS in blog post form </p><p>&#8594; break them apart to create an Interactive Fiction prototype (Twine) </p><p>&#8594; imagine what art/music to add</p><p>&#8594; translate to engine/code requirements. </p></blockquote><p>This accomplished a few things:</p><h4>Fleshed out the characters</h4><p>Now, the characters feels pretty strong. From major ones like PICO and Elodin to the support casts like Eleanor, Martin, Shiori, Diego, etc feels fleshed out. This happened as a consequence to writing and thinking about what they would say or do.</p><p>And instead of creating them from a top-down troupes, stitch them back from separate writing pieces allowed them to be nuanced, full of different beliefs and contradictions - the very value that HaS aims to portrait.</p><p>On the mechanical side, it also led to the creation of a &#8220;framework&#8221; for each character: internal thoughts, habits, speech/cognitive pattern, personality types, etc. This keep them coherent across various pieces (a hat tip to <a href="https://www.brandonsanderson.com/blogs/blog/creating-proactive-relatable-and-capable-characters-brandon-sandersons-writing-lecture-5-2025">Brandon Sanderson&#8217;s lecture on building characters</a>).</p><p>After some initial investments, HaS&#8217;s characters feels like they are alive now. I could then place them into a scene and ask &#8220;what would they do/say&#8221;, simplifying a lot of the writing process.</p><h4>Structured the story&#8217;s pace</h4><p>Writing taught me pace-control at various level: the macro of the whole blog post and the micros of paragraphs and sentences. This is emphasized even more as I attempt to turn the writing into the IF prototype.</p><p>At many times, it kinda felt like making cut-scenes for the game, the sort that you would see in Stardew Valley when you hit a certain relationship threshold. And if my instinct are right, HaS will be a game with lots of cut-scenes.</p><h4>Supported the after-hour, solo-dev setup</h4><p>This turned out to be huge for me. Making HaS required learning about writing, pixel art and (later) music production, besides the usual programming bits. But learning them past a certain level turned out to be seriously hard work, which drained energy quickly.</p><p>Thus, a more gradual process that centralized around writing allowed me to make constant progress, which means maintaining momentum and morale. And those are the necessary currency when you are working for passion pay instead of hard cash.</p><p>With deliberate practice, it&#8217;s also getting easier to slot writing time into the 1-2 hours free time I have every night, without cutting back too much on sleep, family time and other important things.</p><h3>Set the stage for the visual/audio</h3><p>I actually didn&#8217;t found time to get back into Aseprite or to learn to make music. But because of the writing work, I feel that there are now vivid pictures of what the pixel-art environment and characters should look like.</p><p>As for music, it currently comes in the form of a playlist that I kept while writing, as well as a list of artist, composer and style notes whenever something catchy came up. I&#8217;m cautiously optimistic that I this will train my music taste somewhat, so I can make some okay tracks later (just not sure about timeline, haha&#128541;).</p><h4>Kick-started game-design thinking</h4><p>This mostly happen with the IF prototypes + back-and-forth thoughts. Because HaS&#8217;s player interaction is mostly reading, observing and sometimes making decisions, the IF format feels quite appropriate to test them.</p><p>Obviously it won&#8217;t be enough, but the prototyping helped pinning down better ideas about 2 separate mechanisms: observing characters and story &#8220;branching&#8221; with the drinks PICO serve.</p><h4>Sketched the requirements for the game engine</h4><p>Having explore Bevy more recently, I am of the leaning into the idea that the modular, ECS nature of it will be a good fit for HaS. If each character have a unique system of behavior, it would be feasible to &#8220;plug&#8221; their systems into the game (we&#8217;ll have to see about performance at scale, but I&#8217;m hopeful).</p><blockquote><p>Because I work on infra automation at work, I can&#8217;t stop comparing this to k8s controller, haha.</p></blockquote><p>Surprisingly here, I found the writing work to be more helpful than the IF prototypes, since the space to describe what a character&#8217;s &#8220;loop&#8221; is more broad.</p><p>Obviously, writing alone don&#8217;t cut it, so we will have to do a lot more exploration with Bevy in the future. However, being able to see a more concrete shape of the required system is still a great boon.</p><h4>Built something to show</h4><p>The last, and somewhat intentional, result of all this work is that I have something to show. Instead of vaguely talking about the game, I can now share blog posts about the story beats to people, showing them what kind of story to expect. This has already earned a few unexpected encouragement (thank you), which really helps with motivation!</p><h2>After thoughts</h2><p>All this is to say that I&#8217;m somewhat optimistic about the progress so far, even though some weeks things moved at the snail&#8217;s pace. The hidden part of the iceberg is being built. And hopefully it will build the foundation to make more things.</p>]]></content:encoded></item><item><title><![CDATA[HaS-002: Nix and Rust + Bevy]]></title><description><![CDATA[Towards a more repeatable game builds]]></description><link>https://www.bitsgofer.com/p/hs-002-nix-and-rust-bevy</link><guid isPermaLink="false">https://www.bitsgofer.com/p/hs-002-nix-and-rust-bevy</guid><dc:creator><![CDATA[bitsgofer]]></dc:creator><pubDate>Sun, 01 Feb 2026 08:28:20 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!zKkB!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c32f61d-cece-4d9b-b515-b7ef4ac45092_192x192.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>One of a big technical decision I need to deal with is setting up repeatable builds.</p><p>While I mostly work on the code by myself, hopefully there will be a point where I can bring in others to help with programming. This means setting up the repository such that others feels easy to start developing.</p><p>For games, a challenge here would be packaging the development environments: you would need a compiler + linker (Rust), lots of low-level library for device graphics, input, audio, etc. Things might be different across combinations of OS and CPU architecture, too.</p><p>At work, where I only build back end/infra software, we typically put the development dependencies into a Docker image (running Linux)and run that. However, this is not as straight forward for games:</p><ul><li><p>For once, the performance of a Linux-based container in OSX is terrible.</p></li><li><p>I also read that it&#8217;s not simple to funnel things like graphics and audio out of a container (haven&#8217;t tried it, actually).</p></li></ul><p>=&gt; This call for a different packaging approach.</p><p>I have been dabbling with Nix for other stuff, and maybe it is a better match for this problem, because:</p><ul><li><p>We can declarative define an environment (binary, env variables, file systems, etc) and pin those dependencies.</p></li><li><p>We can define variations of the environment for Linux, OSX, as well as different CPU/GPU architectures.</p></li><li><p>The environments setup with Nix will be native to the developer&#8217;s machine.</p></li></ul><p>It&#8217;s a bit of work to create. For example, instead of running lots of <code>apt-get install [pkgs]</code> and rely on assumed system paths, I now have to declare them upfront and set variables like <code>LD_LIBRARY_PATH</code>. Knowing exactly what to do takes a decent of work to figure out. You typically need to dive into Github issues, obscure forums and other Slack/Reddit, etc. Though this is slightly easier nowadays with support from tools like Copilot or Claude, however.</p><blockquote><p>I also found: <a href="https://github.com/drxm1/bevy-project-template-nixos-wayland">https://github.com/drxm1/bevy-project-template-nixos-wayland</a>, which helps a lot when I need to reference how to do something.</p></blockquote><p>Hopefully this approach will pay off sometime in the future. At least for now, the real benefit is that it teaches me exactly what is required to build the game. It also helped me understand where Nix, Docker, package managers (Go, Rust), Bazel, etc fits in the big picture of building a program.</p>]]></content:encoded></item><item><title><![CDATA[BG-001: On the use of gen-AI and LLMs]]></title><description><![CDATA[Three things led me to write this article:]]></description><link>https://www.bitsgofer.com/p/bg-001-on-the-use-of-gen-ai-and-llms</link><guid isPermaLink="false">https://www.bitsgofer.com/p/bg-001-on-the-use-of-gen-ai-and-llms</guid><dc:creator><![CDATA[bitsgofer]]></dc:creator><pubDate>Mon, 15 Dec 2025 07:56:44 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!zKkB!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c32f61d-cece-4d9b-b515-b7ef4ac45092_192x192.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Three things led me to write this article:</p><ul><li><p>The recent<a href="https://www.reddit.com/r/pcgaming/comments/1p7eh60/epic_ceo_says_ai_disclosures_like_steams_make_no/"> AI disclosure saga involving Steam and Epic&#8217;s CEO</a>.</p></li><li><p>An<a href="https://rfd.shared.oxide.computer/rfd/0576"> RFD about LLM use from Oxide Computer</a>, a company whose engineering culture I really like.</p></li><li><p>My own thoughts (and fears) about how people will react to how I use LLMs in certain pre-production phrases of &#8220;Have a sip&#8221; (yes, this is also that kind of disclosure).</p></li></ul><p>Since I still have a day job as a software engineer in infrastructure, it&#8217;s very hard to totally ignore &#8220;gen-AI&#8221; (or LLMs, specifically). And what&#8217;s more, because &#8220;Have a sip&#8220; is centered around an intelligent, self-conscious robot and also touches on how AI impacts on ordinary people&#8217;s lives, it&#8217;s a topic to talk about early.</p><p>This is explored in more depth below.</p><h1><strong>Values of gen-AI usages</strong></h1><p>I generally consider gen-AI in its current iteration more like a tool. Thus, I think it&#8217;s worth looking at its usage like other tools: in terms of the values it brings to the table.</p><p>What comes to my mind is<a href="https://rfd.shared.oxide.computer/rfd/0576#_values_in_llm_usage"> very similar to what (I think) Oxide&#8217;s leans towards</a>:</p><ul><li><p>Using gen-AI does not replace human&#8217;s responsibility and role in creative endeavors, of which writing, drawing, composing and even writing software are parts of.</p></li><li><p>We have to be mindful when using gen-AI, for while its outputs can sharpen our thoughts, over-reliance can potentially atrophy the &#8220;thinking muscles&#8221;, which is our most important tool.</p></li><li><p>Gen-AI (and specifically LLMs) are probabilistic tools that can be guided by human-designed workflows, which either comes from the gen-AI companies or from us. Because of this nature, it&#8217;s nigh impossible to expect their output to rigorously capture the full gamut of nuances and emotions that we need to handle/express.</p></li><li><p>Leaning too hard in gen-AI can erode human trust, which are essential to our teamwork, as well as the relationships we have with our players and other partners.</p></li></ul><h1><strong>When/where and how to use gen-AI</strong></h1><p>I will separate gen-AI in general and LLMs a bit here, because there are cases where they are used for distinctive purposes.</p><h2><strong>For research</strong></h2><p>I strongly believe that all<a href="https://paulgraham.com/greatwork.html"> great work</a> is the result of spending an unreasonable amount of time on problems others simply dismiss (but not necessarily the other way around, unfortunately). What this means is that a great deal of research and experimentation must happen for us to write good stories, draw interesting artworks, compose pleasing music or write robust code.</p><p>In the past, when (Google&#8217;s) search was not littered with SEO ads, it was the de facto research tool on the Internet. Before that, we would go to the library, read curated magazines, talk to experts, go to classes, etc. These are all research activities.</p><p>LLMs, due to being new, do not exhibit this issue. Thus, its large corpus of material is very useful if we need to do any kind of research. Though, I would argue that it&#8217;s better at text-based search, which is useful for writing and software engineering. I have yet to find any prominent image-based or melody-based search tool.</p><p>Still, this is just a phase. Should there come a time when even LLMs are littered with ads and engineered contents, we should do fine if our research skills remain strong. This means honing basic skills like fact-checking, finding and navigating specialized publications (research journals, community forums, user groups, etc.), as well as reading-comprehension.</p><h2><strong>For editing, reviewing</strong></h2><p>LLMs presents two very powerful paradigm:</p><ul><li><p>An instant feedback loop, trained on a large corpus of human behaviors on the Internet.</p></li><li><p>A dataset of what many people considered to be &#8220;good&#8221;, in the sense that it&#8217;s popular (instead of being an absolute good, if there is such a thing).</p></li></ul><p>This allows them to assist as editors and reviewers in the form of things (e.g: spelling, grammar, structure, flow, etc.). However, it does not offer much beyond telling us what&#8217;s popular, when it comes to the essence of things.</p><p>To produce good work, we must perfect both the form and the essence.</p><h2><strong>For creating</strong></h2><p>This section is really long, because I think this is where the most debate about gen-AI usage will be. Plus, I have personal anecdotes to tell.</p><p>One of the hardest tasks for any creative person, in my opinion, is to create something from a blank state. Here, gen-AI is very powerful here, as it can leap into the unknown with just a little bit of prompting. It&#8217;s like sending a scout into the fog of war, so that we can get the lay of the land (and spot important activities, sometimes).</p><p>If used well, this essentially facilitates faster prototyping and visualization of concepts that would have taken considerable efforts to get started.</p><p>However, I would caution against using gen-AI beyond prototypes and throw-away sketches, because it&#8217;s not going to match exactly what we have in our mind at the end of the day. Plus, relying too much on prompting derives ones from the actual production skills and knowledge that we will need to finish the work.</p><p>I think my first hand experiences here will help, because I have experienced this from multiple angles: a newbie (in pixel art), an intermediate hobbyist (in writing) and an expert (in software engineering). Because of the timing, I have perspectives for both pre/post gen-AI rise.</p><h3><strong>As a newbie</strong></h3><p>When we are new, we lack both the understanding of the domain, as well as the language and context to ask questions. For example, when I first started drawing pixel art, I struggled to understand how to pick colors for shades. It was only after learning about color ramps that I had a better idea on the how and why. It turns out that there is both a logical process and an artistic choice behind these. During this phase, it was actually being able to find good books or guided learning experiences (e.g<a href="https://pixellogicbook.com/"> Pixel Logic</a>,<a href="https://pixelart.academy/"> Pixel Art Academy: Learn Mode</a>). They gave me a more holistic lay of the land, which helped a lot in mapping out how I should improve my skills.</p><p>During this time, I also dabbled in using Stable Diffusion and DALL-E and even specific pixel art gen-AI tools like<a href="https://www.pixellab.ai/"> PixelLab.ai</a> to generate some work, but the result has not been dissatisfactory. I would chart this partly due to not knowing how to prompt and partly because what I have in mine is very unpopular (e.g: non-human character, scene with very specific compositions, etc).</p><h3><strong>As an intermediately-skilled person</strong></h3><p>When we are somewhat knowledgeable, it&#8217;s actually the practice bits that will get us to produce better results. Using gen-AI will not help us here.</p><ul><li><p>Before gen-AI, I had already written a fair bit of things (mostly technical stuff, but also the script for a music play and some fictions). Also I read a lot of fiction, so I roughly knew what good writing should feel like, even if I couldn&#8217;t produce to that degree.</p></li><li><p>When chatGPT came out, I was amazed at first in how it can write very convincing stories albeit with me prompting heavily. However, I realized it was a clutch once I started on writing for &#8220;Have a sip&#8221;, as I ended up spending far more time prompting to reach a particular feeling than actually writing (maybe I don&#8217;t know how to prompt it to write mono-no-aware stories). But at that point, I realized a more detailed prompt doesn&#8217;t actually help. To save time, I should just do the dirty work instead. And over the 1+ year of writing and re-writing a lot of parts in &#8220;Have a sip&#8221;, I think things have gotten better, to the point where I can sit down and write an acceptable piece in 1-3 weekend evenings (around 4-12 hours of writing, excluding the thinking time). This article, for example, took about 4.5 hours.</p></li><li><p>Meanwhile, continued use of chatGPT to generate things start to feel weird, beyond a certain point (especially with the chatGPT 5.x). Sometimes it would throw me back a technobabble that had neither head nor tail. Or when it works, it would sometimes generate stories so clique that it&#8217;s cringy to read, not the type of nuanced writing that I would have enjoyed.</p></li></ul><p>Looking back, I believe the act of writing frequently helped more. With a good and fast feedback loop, which LLMs can somewhat provide, it&#8217;s easier to do deliberate practice and improve our own skills. This pays dividends more than any advance prompting technique can give, because now we don&#8217;t need an extra layer to translate our ideas into reality.</p><h3><strong>As a person with expertise</strong></h3><p>When we have reasonable expertise, LLMs are time-savers. This applies to my day job as a software engineer. In most cases, even at 200 WPM, I can&#8217;t match the output of a few simple prompts in chatGPT at all. And sometimes I would spend far too much time thinking/procrastinating that I don&#8217;t have anything to show for output. This is where I think gen-AI shines, as I can give it pretty specific instructions on what I want, get the generated output and do a bit of editing to arrive at exactly what I would need. However, to get to this point, I had already spent 10+ years writing a crap load of code, reading both good and terribly-written programs (both my own and others), as well as building enough intuition on what worked and what didn&#8217;t.</p><p>This is where there is a dividend in learning how to prompt, actually, because it allows us to exert more precise control on the output of LLMs. And if we think about it, this is no different from learning a programming language/DSLs. Then, the more we understand the underlying mechanics, the better we will be at controlling the outcome.</p><h1><strong>A note on ethics/copyright</strong></h1><p>This part could be sensitive, since as creative people, we also need to make ends meet. And it&#8217;s quite clear that gen-AI is eating our shares of the pie.</p><p>I&#8217;m somewhat lucky that I don&#8217;t have to compete with gen-AI for my day job yet. And for my work on &#8220;Have a sip&#8221;, I have shifted from a protective, commercial-minded mindset to more of a hobbyist one, so I don&#8217;t mind things being scraped and copied as much.</p><p>However, it&#8217;s pretty clear that these gen-AI techs are being trained without people&#8217;s consent, whether we like it or not. And it&#8217;s a real issue that it&#8217;s taking away jobs and growth opportunities for various people, especially folks who make a living producing creative works.</p><p>So it&#8217;s a conundrum: as people keep paying for gen-AI and work that leverages gen-AI, things will be increasingly harder for us creatives. But at the same time, it&#8217;s not possible to escape from gen-AI usage, especially because it does have some real benefits.</p><p>I&#8217;m not so visionary that I have a solution here. Personally, I feel that applying the canceling culture on anything AI-generated is just venting, as we can&#8217;t fight the tides alone. Plus, I believe a certain group of creatives, myself included, benefits from being able to leverage gen-AI to do more things with less resources and time. However, I also don&#8217;t want to fully embrace generated content, which has started to flood the Internet.</p><p>I just hope that as we struggle against this new phenomenon, we will be able to come out of it stronger instead. And to that end, I think it&#8217;s better to be more kind to those we feel are genuine human creators, while being more critical of generated content.</p><p>If it&#8217;s any consolation, I actually feel that it&#8217;s the very act of using gen-AI to assist with production of &#8220;Have a sip&#8221; that left me feeling more confident in my own skills. As I became more aware that, without significant investments, gen-AI wouldn&#8217;t be able to produce work that is close to my expectations.</p><blockquote><p>Admittedly, these thoughts might change in the future, as more powerful models are rolled out, or if someone uses gen-AI to actively steal my work. But if someone really wants it to happen, it would happen regardless of if gen-AI was involved or not.</p></blockquote><p>In the end, I don&#8217;t think we can fight the tides of our time. But at least within BitsGofer Studio, I will remain committed to ship human-crafted products and be honest about how it&#8217;s made. The audience will be the judge on whether the results are hollow or genuine.</p><h1><strong>Conclusions</strong></h1><p>As with many of my musings, there isn&#8217;t a clear outcome from this article.</p><p>However, as this gets applied to BitsGofer studio, I think what will stay is that:</p><ul><li><p>We don&#8217;t reject gen-AI outright. Instead, we will learn to leverage it well.</p></li><li><p>We will still work on honing our creative muscles.</p></li><li><p>We should be honest about how we use gen-AI to our players and partners, even if it hurts reception at first.<br>This is because we value human trust, and that means not lying about how we do things.</p></li></ul><h1><strong>A surprising outcome</strong></h1><p>Since I have been thinking about this AI debate for many months now, it actually produced something that I&#8217;m quite pleased about:</p><p>In &#8220;Have a sip&#8221;, there will be a character (Rebecca) who is an aspiring musician, with a love-hate relationship with AI-generated music. A lot of my musing here will actually fuel that aspect of her character.</p><p>Try to copy that , LLMs :)</p><div><hr></div><blockquote><p>P.S. Forgive my StarCraft references, if you notice them.</p><p>A friend of mine mentioned the idea that using gen-AI is like &#8220;sending a scout to the fog of war&#8221;, and it immediately trigger me to think about &#8220;form&#8221; and &#8220;essence&#8221;, haha.</p></blockquote>]]></content:encoded></item><item><title><![CDATA[Stardew Valley mod: Seasonal NPCs]]></title><description><![CDATA[https://www.nexusmods.com/stardewvalley/mods/10999]]></description><link>https://www.bitsgofer.com/p/stardew-valley-mod-seasonal-npcs</link><guid isPermaLink="false">https://www.bitsgofer.com/p/stardew-valley-mod-seasonal-npcs</guid><dc:creator><![CDATA[bitsgofer]]></dc:creator><pubDate>Sun, 14 Dec 2025 20:33:52 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!zKkB!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c32f61d-cece-4d9b-b515-b7ef4ac45092_192x192.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This mod was started because I had conflicts between various Portrait/Sprite mods and Stardew Valley expansions like SVE and RSV.</p><p>Sometimes I don&#8217;t know why I still put hours into such an old game (1000+ hours now, haha), but it&#8217;s definitely something that I keep coming back for comfort.</p><p>During these plays, I found myself increasingly wanting to customize various aspect of the game, especially the NPCs. A big part of it is stylish preference (I tend to like certain styles that are more common in older anime manga). It&#8217;s also nice to see variety after playing for so long.</p><p>I used to have lots of portraits and character sprites mods. However, because the load order and different programming styles, they ended up conflict with each other. So at first I started a mod where I can program these changes correctly.</p><p>In the midst of that, I got interested in pixel art. So the thought became: how about actually customizing the game assets myself. This led me down to learn a completely new skillset in drawing, which turned out to be a fun hobby, too. Thus, I attempted to create extra outfits that each NPCs that matches the seasons.</p><p>The mod is incomplete, as other priorities in work, life and recently my own work for &#8220;Have a sip&#8221; have picked up. However, it&#8217;s here if you still play Stardew Valley:</p><p><a href="https://www.nexusmods.com/stardewvalley/mods/10999">https://www.nexusmods.com/stardewvalley/mods/10999</a></p><blockquote><p>Credits: I just based my edits on <a href="https://www.nexusmods.com/stardewvalley/mods/1839">Ohodavi&#8217;s incredible work for the Stardew Valley&#8217;s anime portraits</a>. He&#8217;s a talented artist and produce much better quality work than my shabby things.</p></blockquote><p>Here are some samples:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xcIC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59452e97-6934-405a-97e7-c935e603c5c0_224x224.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xcIC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59452e97-6934-405a-97e7-c935e603c5c0_224x224.png 424w, https://substackcdn.com/image/fetch/$s_!xcIC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59452e97-6934-405a-97e7-c935e603c5c0_224x224.png 848w, https://substackcdn.com/image/fetch/$s_!xcIC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59452e97-6934-405a-97e7-c935e603c5c0_224x224.png 1272w, https://substackcdn.com/image/fetch/$s_!xcIC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59452e97-6934-405a-97e7-c935e603c5c0_224x224.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xcIC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59452e97-6934-405a-97e7-c935e603c5c0_224x224.png" width="224" height="224" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/59452e97-6934-405a-97e7-c935e603c5c0_224x224.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:224,&quot;width&quot;:224,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:13095,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://bitsgofer.substack.com/i/181618146?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59452e97-6934-405a-97e7-c935e603c5c0_224x224.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xcIC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59452e97-6934-405a-97e7-c935e603c5c0_224x224.png 424w, https://substackcdn.com/image/fetch/$s_!xcIC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59452e97-6934-405a-97e7-c935e603c5c0_224x224.png 848w, https://substackcdn.com/image/fetch/$s_!xcIC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59452e97-6934-405a-97e7-c935e603c5c0_224x224.png 1272w, https://substackcdn.com/image/fetch/$s_!xcIC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59452e97-6934-405a-97e7-c935e603c5c0_224x224.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fiek!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd51cdf07-7dbc-4cff-a729-6f93ef07a2da_224x224.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fiek!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd51cdf07-7dbc-4cff-a729-6f93ef07a2da_224x224.png 424w, https://substackcdn.com/image/fetch/$s_!fiek!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd51cdf07-7dbc-4cff-a729-6f93ef07a2da_224x224.png 848w, https://substackcdn.com/image/fetch/$s_!fiek!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd51cdf07-7dbc-4cff-a729-6f93ef07a2da_224x224.png 1272w, https://substackcdn.com/image/fetch/$s_!fiek!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd51cdf07-7dbc-4cff-a729-6f93ef07a2da_224x224.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fiek!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd51cdf07-7dbc-4cff-a729-6f93ef07a2da_224x224.png" width="224" height="224" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d51cdf07-7dbc-4cff-a729-6f93ef07a2da_224x224.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:224,&quot;width&quot;:224,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:12443,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://bitsgofer.substack.com/i/181618146?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd51cdf07-7dbc-4cff-a729-6f93ef07a2da_224x224.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!fiek!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd51cdf07-7dbc-4cff-a729-6f93ef07a2da_224x224.png 424w, https://substackcdn.com/image/fetch/$s_!fiek!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd51cdf07-7dbc-4cff-a729-6f93ef07a2da_224x224.png 848w, https://substackcdn.com/image/fetch/$s_!fiek!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd51cdf07-7dbc-4cff-a729-6f93ef07a2da_224x224.png 1272w, https://substackcdn.com/image/fetch/$s_!fiek!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd51cdf07-7dbc-4cff-a729-6f93ef07a2da_224x224.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vjZS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc58d6e1a-dbb3-4e2e-af77-f4075631f491_224x224.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vjZS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc58d6e1a-dbb3-4e2e-af77-f4075631f491_224x224.png 424w, https://substackcdn.com/image/fetch/$s_!vjZS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc58d6e1a-dbb3-4e2e-af77-f4075631f491_224x224.png 848w, https://substackcdn.com/image/fetch/$s_!vjZS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc58d6e1a-dbb3-4e2e-af77-f4075631f491_224x224.png 1272w, https://substackcdn.com/image/fetch/$s_!vjZS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc58d6e1a-dbb3-4e2e-af77-f4075631f491_224x224.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vjZS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc58d6e1a-dbb3-4e2e-af77-f4075631f491_224x224.png" width="224" height="224" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c58d6e1a-dbb3-4e2e-af77-f4075631f491_224x224.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:224,&quot;width&quot;:224,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:14894,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://bitsgofer.substack.com/i/181618146?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc58d6e1a-dbb3-4e2e-af77-f4075631f491_224x224.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!vjZS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc58d6e1a-dbb3-4e2e-af77-f4075631f491_224x224.png 424w, https://substackcdn.com/image/fetch/$s_!vjZS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc58d6e1a-dbb3-4e2e-af77-f4075631f491_224x224.png 848w, https://substackcdn.com/image/fetch/$s_!vjZS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc58d6e1a-dbb3-4e2e-af77-f4075631f491_224x224.png 1272w, https://substackcdn.com/image/fetch/$s_!vjZS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc58d6e1a-dbb3-4e2e-af77-f4075631f491_224x224.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!c4BP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdb7a6b3-11a6-4983-8268-df0cb16ffd3d_224x224.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!c4BP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdb7a6b3-11a6-4983-8268-df0cb16ffd3d_224x224.png 424w, https://substackcdn.com/image/fetch/$s_!c4BP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdb7a6b3-11a6-4983-8268-df0cb16ffd3d_224x224.png 848w, https://substackcdn.com/image/fetch/$s_!c4BP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdb7a6b3-11a6-4983-8268-df0cb16ffd3d_224x224.png 1272w, https://substackcdn.com/image/fetch/$s_!c4BP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdb7a6b3-11a6-4983-8268-df0cb16ffd3d_224x224.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!c4BP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdb7a6b3-11a6-4983-8268-df0cb16ffd3d_224x224.png" width="224" height="224" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fdb7a6b3-11a6-4983-8268-df0cb16ffd3d_224x224.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:224,&quot;width&quot;:224,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:11020,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://bitsgofer.substack.com/i/181618146?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdb7a6b3-11a6-4983-8268-df0cb16ffd3d_224x224.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!c4BP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdb7a6b3-11a6-4983-8268-df0cb16ffd3d_224x224.png 424w, https://substackcdn.com/image/fetch/$s_!c4BP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdb7a6b3-11a6-4983-8268-df0cb16ffd3d_224x224.png 848w, https://substackcdn.com/image/fetch/$s_!c4BP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdb7a6b3-11a6-4983-8268-df0cb16ffd3d_224x224.png 1272w, https://substackcdn.com/image/fetch/$s_!c4BP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdb7a6b3-11a6-4983-8268-df0cb16ffd3d_224x224.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>The base characters are from Ohodavi&#8217;s mod, with the (shabby, lol) extra outfits are made by me :P</p><p>Enjoy,<br>exklamationmark</p>]]></content:encoded></item><item><title><![CDATA[BG-000. The IT of a game studio]]></title><description><![CDATA[I have some inkling about what I need to do to setup BitsGofer Studio.]]></description><link>https://www.bitsgofer.com/p/bg-000-the-it-of-a-game-studio</link><guid isPermaLink="false">https://www.bitsgofer.com/p/bg-000-the-it-of-a-game-studio</guid><dc:creator><![CDATA[bitsgofer]]></dc:creator><pubDate>Thu, 11 Dec 2025 07:41:57 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!zKkB!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c32f61d-cece-4d9b-b515-b7ef4ac45092_192x192.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I have some inkling about what I need to do to setup BitsGofer Studio. Still, it was a lot more work than I ever expected.</p><p>Outside of making the game, just setting up the technical infrastructure to run everything is no simple task. For example, there are:</p><ul><li><p>Github</p></li><li><p>Google Workspace</p></li><li><p>Communication</p></li><li><p>and more</p></li></ul><p>Even as someone who work in infra, thus having the knowledge and know-how, I actually doing all this work is tiresome for me, haha. But I think it&#8217;s worth it, especially if I ever need to bring in external collaborators in the future (e.g: artists, composers, developers, etc).</p><p>One thing I learnt from my job and decide to do different this time, however, is to try and manage things as code.</p><p>Of course, it can&#8217;t be 100% infrastructure-as-code. But it should be possible to as automated as possible. That way, it will be possible to keep the technical operations lean (since it&#8217;s automated).</p><div><hr></div><p>Aside: Choosing a communication platform</p><p>This actually took a few days to figure out. At first, I was wonder if it make sense to self-host a communication tool like <a href="https://matrix.org">matrix</a>. This is because most tools out there like Slack, Google Workspace, MS Office, Discord, etc will charge you per user, which, if you are running a studio of mostly contractors and part-timer, will be a huge unnecessary cost.</p><p>But diving deeper into the hosting work involved revealed that the labor cost is expensive as well. At this point, I&#8217;d prefer some free service, try not to rely on it too much and the re-evaluate in the future.</p><p>In the end, I chose Slack because that&#8217;s what I&#8217;m using daily &amp;&amp; feel that it&#8217;s a good platform (as opposed to Google Talk or MS Teams, which I also used in the past).</p><p>Let&#8217;s just hope that it&#8217;s possible to migrate/manage this better in the future.</p>]]></content:encoded></item><item><title><![CDATA[HaS-001: The sci-fi in Have a sip]]></title><description><![CDATA[HS-001: The sci-fi in Have a sip]]></description><link>https://www.bitsgofer.com/p/building-the-world-of-have-a-sip</link><guid isPermaLink="false">https://www.bitsgofer.com/p/building-the-world-of-have-a-sip</guid><dc:creator><![CDATA[bitsgofer]]></dc:creator><pubDate>Tue, 09 Dec 2025 08:26:57 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!zKkB!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c32f61d-cece-4d9b-b515-b7ef4ac45092_192x192.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>HS-001: The sci-fi in Have a sip</p><p>The game &#8220;Have a sip&#8221; is about quiet human moments. Because of this, the game&#8217;s stories need a certain type of context and background. And because it&#8217;s 2025, writing about a &#8220;robot running a traveling coffee truck&#8221; actually requires serious thinking, especially against the backdrop of all the current AI developments.</p><h1>The starting points</h1><p>I chose a near-future fiction world of 206X (when HS is hopefully finished :P), so these axioms can be established:</p><ul><li><p>Robots are (somewhat) wide-spread in society.</p></li><li><p>There isn&#8217;t an artificial super-intelligence.</p></li><li><p>People and society as we know it today still exist at large.</p></li></ul><p>This means a robot serving coffee is not a spectacle that draws a crowd. It also allows for the player&#8217;s character - the quiet robot - to feel unique.</p><p>Similarly, the lack of an artificial super-intelligence is intentional, because the presence of a Skynet/GLaDOS, or even a benevolent super-AI will cast a very, very different light on how society would feel about thinking machines.</p><blockquote><p>Corollary, this implies that in our fictional world, advanced computing techs like quantum computing or biocomputation haven&#8217;t had a commercial breakthrough. Plus, other life-improving techs like fusion energy, neural links, etc are not there yet either.</p></blockquote><p>Lastly, keeping the fictional society more or less the same as we know it today (late 2025) is a key point for HS. It means that stories about life&#8217;s impermanence, small joys and happiness are still relevant. It also allows us to carry existing tensions of the time into the game: rich vs poor, native vs foreigners, city vs rural, AI vs human, etc. These conflicts then serve as contrasts to the cozy, healing sections, clearly delineating emotional peaks and valleys.</p><p>In fact, ensuring this &#8220;human 1.0&#8221; setup is fairly important to me, as I read a fair amount of sci-fi where a single technology leap, like brain-computer interface, gene-editing or even <a href="https://en.wikipedia.org/wiki/Story_of_Your_Life">language comprehension</a> can change the very fabric of society/thoughts. I don&#8217;t want those to be the focus of HS, because this is not a cyberpunk game.</p><p>The game&#8217;s world is definitely far from <a href="https://en.wikipedia.org/wiki/Grimdark">grimdark</a>, but I also don&#8217;t feel that it&#8217;s exactly <a href="https://en.wikipedia.org/wiki/Solarpunk">solarpunk</a>/<a href="https://en.wikipedia.org/wiki/Hopepunk">hopepunk</a> either. If you know of a label for this, feel free to suggest it to me.</p><h1>Even more details</h1><p>Next, the three axioms above need to be furnished with additional details, so the world feels more &#8220;full&#8221;, consistent and believable. For example, let&#8217;s take the &#8220;no artificial super-intelligence&#8221; axiom, which seems to run against a lot of pep talk about AI as of late 2025. To make it flow better in the fiction, I added these three trains of thoughts:</p><h2>AI growth is stagnant due to economic causes</h2><p>This is quite likely to me. Similar to many hype cycles, there will be a point where people and investors start to demand value from AI investments. This is likely to retain only profitable AI companies who produce models that are closer to tools than real intelligence (because those will sell). As an older person in tech, I feel this is more likely, unless we actually experienced another breakthrough similar to the jump from expert systems to deep learning.</p><h2>Legal and bureaucratic frameworks drag growth even further</h2><p>This is probably the weakest part of the fiction, seeing that AI companies are doing whatever they please for the most part. But maybe at some point, there will be large-enough issues that force regulations to step in, like GDPR.</p><h2>Moral and existential hesitation runs strong</h2><p>This one is quite believable, as we already saw people who were key to modern AI developments talk about their fears of AI. The degree of severity will be different depending on who we ask, but I think it&#8217;s safe to say that most regular folks harbor some doubts about whether AI is truly a good thing to have. If you are in doubt, look no further than the recent Steam&#8217;s AI disclosure saga to see how this plays out.</p><blockquote><p>I am a tech/knowledge worker who lives and breathes these technology bubbles. And I have to admit it&#8217;s not always easy to distinguish where the actual possible technological progress ends and where the koolaid begins.</p></blockquote><h1>Closing thoughts</h1><p>Anyway, we should have enough AI speculations for now. What I want to share here is the logic behind the world of HS. I hope all this work will make the phrase &#8220;a robot running a traveling coffee truck&#8221; feel more believable.</p><p>If you enjoy reading these world-building details ^_^, there&#8217;s more to come. Please stay tuned!</p><p>Cheers,<br><em>exklamationmark</em></p>]]></content:encoded></item><item><title><![CDATA[HaS-000: Have a sip, a game about life]]></title><description><![CDATA[Journey with a quiet robot who inherits a traveling coffee truck.]]></description><link>https://www.bitsgofer.com/p/have-a-sip-a-game-about-life</link><guid isPermaLink="false">https://www.bitsgofer.com/p/have-a-sip-a-game-about-life</guid><dc:creator><![CDATA[bitsgofer]]></dc:creator><pubDate>Tue, 09 Dec 2025 06:59:50 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!zKkB!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c32f61d-cece-4d9b-b515-b7ef4ac45092_192x192.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p>Journey with a quiet robot who inherits a traveling coffee truck. Keep a cozy space for strangers and regulars. Master brewing and learn the rhythms of the business. In a city optimized for hustle, would you still serve with mindfulness and care?</p></blockquote><p>After many revisions, the game I first envisioned in 2023: Have a sip (HS) now feels quite solid.</p><p>The trigger that sparked work on HS was my own mid-life crisis [@_@]. This was, after all, a time when I desperately needed a creative effort that I have full agency over. The project has also been sustained by the desire to create stories for myself and others (perhaps even for my son when he&#8217;s old enough). These are stories that are not preachy, more grown-up, yet can still channel hopefulness against the backdrop of cold, harsh reality.</p><p>Since then, the project has started to take on a life of its own. And it&#8217;s now at a point where I am comfortable sharing more details.</p><div><hr></div><p>At its heart, &#8220;Have a sip&#8221; has a simple premise: serve drinks to patrons, then sit back as their stories unfold. While the part about drink-making is interesting itself, it&#8217;s the characters that ordered the drinks, their conversations and life that are the core identity of the game.</p><p>On that front, I do have specific stories to tell, for example:</p><ul><li><p>A moment filled with child-like amazement, where a toddler attempts to show her parents the new flower she noticed on the sidewalk.</p></li><li><p>A wishful, melancholic evening when an aged worker thought about his past choices and how things could have turned out differently.</p></li><li><p>Minutes after a son sent off his elderly parents at the train station, with him noticing visible marks of time on their silhouette.</p></li><li><p>Break time after school, with excited teenagers swapping tips and theories on their latest (board) games.</p></li><li><p>A lazy Sunday morning where a tabby cat greets two strangers, rubbing his cheek at their legs and purring with satisfaction.</p></li><li><p>and other small, fleeting stories like these...</p></li></ul><p>These moments are not epic adventure stories. In many cases, they aren&#8217;t particularly dramatic either. They are also not the sensational stories that seem to dominate my media feeds. Still, I deeply believe there&#8217;s something to be gained from stories like these, where we slow down and see the world through a more grounded, nuanced and personal lens. It&#8217;s relaxing and cleansing, in a spiritual way, too.</p><blockquote><p>If you have ever read or watched <a href="https://mangadex.org/title/5eeda7ba-bd6e-4f10-8c2d-0a70f5d68a6e/bartender">Bartender</a>, <a href="https://mangadex.org/title/ffd3aad0-7dcc-47ff-bb36-caa0b9409a2b/gohan-no-otomo">Gohan no Otomo</a> or <a href="https://mangadex.org/title/1a69d1cc-b060-4f35-8778-4621424fe5f4/yokohama-kaidashi-kikou">Yokohama Kaidashi Kikou</a>, these stories about life should feel familiar. It&#8217;s because &#8220;Have a sip&#8221; draw a great deal of inspiration from Japanese works categorized as mono no aware (&#29289;&#12398;&#21696;&#12428;) or iyashikei (&#30290;&#12375;&#31995;).</p></blockquote><p>Going further, I want these stories told not just with words, but also accompanied with visuals, audio and interactivity. As a result, &#8220;Have a sip&#8221; is a game instead of a fiction series. Being ambitious, I also wanted to push the envelope so there&#8217;s actual gameplay: making drinks, running an F&amp;B business, delivering to people. This will invite the &#8220;readers&#8221; to participate in the world, where people-watching goes beyond lines in the dialog box itself. Now as &#8220;players&#8221;, they will be able to interact with the stories&#8217; characters, contemplate the events in the context of a larger world, and even draw their own meaning about the negative space between conversations.</p><p>I believe this is a goal worth striving for, even though it immediately raises the difficulty level by 1000x!</p><p>Surprisingly, rather than feeling dread and giving up, I found myself coming back to work on HS again and again, even as I drown in work deadlines, family responsibilities and health issues. Having produced some fictions in the past, this tells me that the idea has legs and will go places in the future. So it&#8217;s a responsibility of mine to see this through.</p><div><hr></div><p>As the end of 2025 draws near, it&#8217;s almost 2 years of moonlighting on &#8220;Have a sip&#8221;. I&#8217;m pretty happy, actually, that there&#8217;s enough material to share about it publicly.</p><p>It&#8217;s probably not going to be finished anytime soon and there will be a lot of production hurdles, especially as I have very limited time as a solo dev on a hobby project.</p><p>However, if you have read this far, I believe that HS will be a project that you will enjoy. So please keep coming back to this blog from time to time for more updates :)</p><p>Finally, I wish you well and sincerely hope we can connect around HS in the future.</p><p>Cheers,<br><em>exklamationmark</em></p>]]></content:encoded></item></channel></rss>