Posts in Gaming (20 found)
Playtank 2 days ago

The Playtank Blog Guide

This blog started as a place to gather tabletop role-playing thoughts. Over time, it transformed into an outlet for professional musings. When my focus shifted professionally to systemic design, the blog shifted along. I’m quite proud of this collection of tips, tricks, and practices. It’s come to the point where there’s a consistent monthly readership. But it’s also quite meandering and weird, not exactly accessible for a newcomer. So here’s a brand spanking new Playtank Blog Guide to light your way, Monsieur Newcomer (or returning blog peruser)! As always, you can contact me at [email protected] or make a comment if you feel a sudden need to tell me something. Key posts for understanding what this blog is about. Systemic Building Blocks : examples showcasing what a system can be in a video game. The Systemic Master Scale : investigates the design dichotomy between authorship and emergence. Your Next Systemic Game : a practical process for making systemic games. Designing a Systemic Game : an overview of what goes into designing a systemic game. Simulated Immersion : a series in three parts that starts by talking about the immersive sim legacy , discusses their game design , and then immersive sims as products . First-Person 3Cs : another series in three parts that deals with camera , controls , and character for when you are making first-person games. There’s just one of them yet, but here’s a spot specifically for posts written by someone other than yours truly. Game Economy Design : the fantastic system designer Keelan Bowker-O’Brien teaches you how to design economies, providing some reference spreadsheets for your practical use. As with all things game design, much is just opinion. These are mine. The Interaction Frontier : a treatment on why interaction matters more than you may think. Definitions in Game Design : an argument against the never-ending attempts at trying to define things using words no one ever agreed on. Challenges to Systemic Design : ten specific challenges facing systemic design and how you may approach them. My Game Engine Journey : my own personal journey learning to work with different game engines. A Love Letter to Cyberpunk 2077 : written right after finishing the amazing Cyberpunk 2077 , back in 2021. Ways to Not Have Cooldowns : written because I was annoyed with over-reliance on cooldowns. It’s (Not) an Iterative Process : an attempt to conceptualise how “it’s an iterative process” is actually a problematic adage often used to hide bad processes. Speak to Me! : some musings on why game dialogue hasn’t really improved in the past four decades. Boom, Headshot! : an attempt at a constructive treatment of violence in video games. These posts are practical and game design-related, with a broad segment of topics. Books for Game Designers : by far the most referenced post on the blog. Some recommendations for good game design books. Game Balancing Guide : a guide for anyone about to go knee-deep into game balancing. Eras of Game Design : a very broad walkthrough of different “eras” of game design and the many lessons that risk being lost to time if we’re not curious enough. Designing Good Rules : dedicated to the designing of rules . The glue that make systems work. Combat Design Philosophy : a multi-part series that goes through Melee , Gunplay , Sport , and Drama in the context of combat. Stages of a Game’s Design : one of the first posts where I started exploring how to be more specific with the work of a game designer. Future Game Story : thoughts on the unique elements of video game storytelling and the modes of discourse they create. Originally written in 2014. Tabletop Roleplaying as a Game Design Tool : one of my personal favorites, talking about tabletop roleplaying as a practical design tool. Gamification : dips your toes into the Origin and Implementation of gamification systems, as well as the subject of Loot . Game Design Philosophy : my first attempt at concretising what’s important to me in game design. Systemic design is nothing without its practical dimension. These posts are not nearly as technical as they should be, but keeps the code pseudo. Building a Systemic Gun : the very first pseudocode post, and still probably the best one. State-Space Prototyping : a general discussion on prototyping, but also my favorite method for prototyping systemic games. An Object-Rich World : pivotal for my own personal understanding of object-object relationships, and still mostly holds up. A State-Rich Simulation : an expansion of the object-rich world with the meaning and implementation of states and contexts. What Systems Do : a slightly too general treatment of what systems may do when objects interact. Maximum Iteration : the five broad things you must facilitate if you want to maximise your iteration. Ideas that aren’t really design- or systemic design-related but more about the games industry or game development practices in general. The Systemic Pitch : how to pitch, and how to pitch a systemic game specifically, based on lessons learned. Custom Tools and Work Debt : the cost of pushing work forward onto “someone” before there’s a definition of the work or the tools it may require. The Content Treadmill : one of the biggest problems facing game development today and how you can look at the content you create from a different perspective. Making Money Making Games : a post on budgeting and some of the many unintuitive ways that game developers make money. Where it all began. A mix of musings and one-shots played during the Covid pandemic. When in Doubt, Improvise : goes into my favorite way of playing tabletop role-playing games. Player vs. Player in TTRPGs : my other favorite way of playing tabletop role-playing games: having the players in the room play against each other. Courtroom Intrigue : a mini-campaign where players play the leftover nobles who are forced to step up to a challenge bigger than they are. Investigate Your Own Murder : scenario where you play a ghastly supernatural murder both as the people being murdered and as the agents investigating the crime scene. Tigers, Horses, and Weird Danish Rock Songs : over the top violence, full of angry man-eating horses and divas. Cyberpunk + Heist = Grand Slam : a cyberpunk scenario that the game group asked for specifically and that turned into a mini-campaign.

0 views
Jeff Geerling 2 days ago

Can the MacBook Neo replace my M4 Air?

Many of us wonder if the MacBook Neo is 'the one'. Because I have a faster desktop (currently a M4 Max Mac Studio), I've always used a lower-end Mac laptop, like the iBook or MacBook Air, for travel. I've used MacBook Pros in the past, but I like the portability of smaller, cheaper models. In fact, my favorite Mac laptop ever was the 11" Air.

0 views
JSLegendDev 4 days ago

My Small RPG Is Finally Taking Shape

Previously, I went on a quest to make a small RPG game. I initially thought it would take only 1 to 2 months to complete. However, in practice, the project is still not done and I’d like to show what I’ve been up to. My game can be summarized as follows. It’s an action RPG with a mouse driven combat system where you avoid projectiles and attack by colliding with attack zones. The goal is to defeat a tyrant king named Donovan accessible from the start. You can move around the over-world and fight various foes to become stronger and therefore, be more prepared for the final encounter. Now that I had a battle editor allowing me to quickly design battle patterns for various enemies, I still needed to diversify the types of attacks that could happen in battle. At this point, I only had two attack types implemented : linear and wavy. While you could play around with speed, amplitude, frequency to make attacks more varied, my options felt too limited. For this reason, I implemented : A curved attack type with the ability to set its speed and curve height. The ability to set the rate at which each projectile spawns. Initially, I only could spawn one projectile every second and it couldn’t be modified per projectile. Now, I could have one projectile spawn every 3 seconds and another every 2 seconds, etc… And finally, allow any projectile to rotate on itself at a configurable speed. With these new additions, I felt I had enough building blocks to make novel attack patterns for every enemy and therefore avoid repetitiveness as much as possible. That said, instead of continuing to work on designing battle patterns, I decided I would tackle this later. My game has a somewhat unique encounter system. Instead of having random battle encounters, you have encounter stars appearing on the map. It’s then up to the player to determine which encounter to engage with by colliding with one of the stars. Yellowish stars are for battles, the red star is for the final boss and finally, greyish stars are for lore encounters. They are the main way I plan to deliver the game’s story and lore. Except for the intro cutscene which tells the story more directly, my idea behind lore encounters is that when the player collides with one, they get a description that tells them more about the world they’re evolving in. This is mostly just text. However, I also implemented the ability to show images and split dialogue into multiple parts that could be viewed as a slideshow of some sort. To summarize, the player would either, get a text-only dialogue and when more important, a slideshow. Considering that my game is non-linear, as everything is accessible from the start, I still needed to come up with a compelling way to deliver the game’s story. My plan therefore, is to take the same approach they did in Zelda Breath of The Wild. In that game, the player could find memories that depicted past events in the form of cutscenes. The issue with this system, is that you could often find memories out of order since you were free to explore the world in whatever order you desired. This destroyed any sense of tension or emotional investment in the story. To not make the same mistake in my game, I came up with the concept of memory chains. For example, I could have multiple memories as part of a given chain. The player can access the first memory in the chain whenever, however, from then onward, the game will check if you’ve already seen the first memory in that chain before showing you the second. While there would be multiple independent chains accessible from the start, some would require that you’ve seen the last memory of a previous chain as a prerequisite. Of course, the player wouldn’t be aware of this as the unlocking of memories would be done in the background. Here is a diagram to better illustrate the idea. I suspect that creating many memories will be somewhat time intensive. To alleviate the workload, these memories will be intermixed with plain lore descriptions. Finally, to motivate the player to engage with lore encounters, rather than just battling, sometimes a lore encounter will grant the player loot in the form of added currency or a health boost. A thing that bothered me with my game, is how barren the world felt. At any given point, you only had one or two encounter opportunities spawning and you had to move all the way to that point which felt tedious. However, the fix was quite simple, increase the number of encounter stars available at once. This meant that the player always had many options to choose from every time. That said, I had to be careful to not put too many stars at once as to not overwhelm the player. One thing that’s very important when making a game, is making sure it’s visually appealing so that marketing it will be easier. After having announced my project, I’ve received comments telling me that my game looked like a SNES RPG. To lean into that vibe, what if I offered a CRT effect? I knew that it was something I could offer as the game library I was using had an example I could take. So I took it and applied it to my game. I posted the result on Reddit and received interesting feedback. To summarize : Some disliked CRT effects in general because they caused eyestrain. Some liked the effect but wanted the ability to configure it. Some mentioned that the effect wasn’t realistic enough. Therefore, I went back to the drawing board and this time, used another CRT shader but from a website called shadertoy which was more accurate and adapted it for my game. Now, I needed to make it toggleable and configurable. For this purpose, I decided to create a settings menu that would be accessible by right-clicking. Considering that my game is actually built using web technologies rather than a standard game engine like Unity or Godot, I had the option of either rendering the menu within the game or on top of it. I opted for the latter because I could access many of the affordances of the web which made making UI elements like sliders, tabs, toggles, etc… a breeze. The issue of course, is that it looks out of place considering the CRT shader can’t be applied to it, plus the fact that the UI looks too modern. However, you could view this differently. Dialogue boxes, attack and upgrade menus are all designed to be part of the game’s visual language while a settings menu could be considered as something separate, a bit like you’re playing the game through an emulator. What do you think? Should I lean more into the settings UI being different than the game’s UI or I should reimplement the menu within the game. That said, I know that the current settings menu UI still needs tweaking either way. Before moving to other aspects of the project, would you prefer if the game had the CRT effect on by default or you would prefer that it would be opt-in rather than opt-out. To make each battle meaningful, I had the idea that every enemy should say a few lines before battle. This would give each of them more personality. I was inspired to do this once I realized that in Pokémon, every encounter with a trainer starts with a few lines of dialogue before the battle starts. If I wanted to apply something similar, I couldn’t really do it in the over-world as you couldn’t see the specific enemy there. Therefore, I had to put this in the battle scene. Considering that the battle zone is a giant rectangle, It didn’t feel right to place a text box at the center bottom of the screen. I tried bringing it upward, but it still looked weird. This is where I had the idea of displaying dialogue as a speech bubble near the enemy rather than a traditional text box. Instead of having the same line over and over, I added up to three different lines per enemy and one would be randomly selected every encounter. For now all enemy dialogue is random placeholder. In a previous devlog, I explained that to level up or heal, the player needed to spend a currency that was earned by battling enemies. I also mentioned that the player would lose all their currency if they lost a battle. I wanted to take this approach because I was inspired by soulslikes and this is what they did. In the end, however, I think this mechanic is too punishing for my own game. The main reason is that there’s no way to recover lost currency by winning the next battle, like in many soulslikes. I could’ve implemented that mechanic as well, but I opted to lean on the fact that my game already had variable rewards after battle. If you won a battle hitless, you would get the full reward for that enemy otherwise, you would get less relative to the damage you took. It was suggested to me under my playtest page on itch.io that I should make sure the cost required to upgrade the attack stat wouldn’t be the same as the one for health. They found out that if they put all their attention in leveling up the attack stat, they could become easily overpowered making upgrading the health stat useless. I agree with this sentiment. Even if the scaling of costs for the two stats you could upgrade in the playtest version wasn’t final, I thought having different costs for each was a very good idea. I therefore proceeded to implement it. Adding Legendary/Greater Foes While working on the game, the following idea came to mind : What if I added enemies that could only be beaten once. The idea came about when I remembered that in Elden Ring some enemies (like Dragons) could only be defeated once and would therefore disappear from the world. I thought this would be a nice way to bring actual bosses to my game. For this purpose, I designed a new enemy that would fit the bill. That said, I’m still not sure if I should commit to this idea, just yet. What do you think? To face a greater foe, you would need to collide with an encounter star of an orange-ish red color which would be used to signifiy that the enemy ahead is an actual boss. They would grant a sizeable reward when defeated. Anyway, I think I’ll need to add more enemies in general to the game for it to feel like a more complete experience. When I started working on this game, the goal was always to sell it on Steam. However, up until recently this felt a bit abstract as I never released something there before. I’d like to announce that I have created my Steamworks account, filled the required info, paid the 100$ fee and used it to create a Steam page. The page is not public as I’m still filling it in. The biggest bottleneck that prevented me from making it public is the fact that I need capsule art for my game. I’ll tackle this aspect in a moment but in the meantime, I’d like to ask about my game’s description. If you were in my place, how would you describe my game? This is the description I currently have : A challenging action RPG featuring precise, mouse-driven combat. Liberate the land of Hydralia from the oppressive king Donovan. Strengthen yourself by battling fearsome foes, or confront Donovan directly… if you dare! What do you think? Please let me know in the comments. Making effective capsule art for Steam is harder than it looks. I first needed to think about composition, so I started sketching something in Aseprite (a pixel art editing software) using my mouse. In the same vein, I tried something else. Then I tried to polish it up a bit. However, I started to realize that the composition was getting too complicated and it might not translate to an effective capsule art. Another issue was that the game is called Hydralia : Donovan’s Demise but looking at the previous sketches, someone unfamiliar could easily confuse the main character as being Donovan as he was about to get taken out. Feeling a bit discouraged, I tried put something together using only art I had already made for the game. Unfortunately, it didn’t turn out well at all. This time, I decided to just watch a video of Chris Zukowski (the Steam marketing expert) reviewing capsule art while I was sketching something using proper tools. Mainly an an ipad + apple pencil rather than a mouse. This is the result I was able to achieve. Overall I’m more satisfied with the final composition as it’s more true to what the game is about. I’ve noticed that almost all games on Steam have their title in the capsule. This made me realize that I should probably drop the Hydralia part of my game’s title as it made it too challenging to put in the capsule. Donovan’s Demise is simpler to search for and write than Hydralia : Donovan’s Demise . Anyway, I still haven’t started working on the final capsule yet so it would be nice to have your input on which composition I’ve shown here you prefer. That’s all I have to share for now. I would say that my game’s systems are mostly complete and what’s left is really producing compelling content for the game. I also need to prioritize getting the Steam capsule done so I can publish my Steam page and start collecting wishlists as early as possible. If you’re interested in seeing where this game dev journey will lead, I recommend subscribing to not miss out on future devlogs. Subscribe now If you’ve missed the previous devlogs, I recommend checking them out. Previously, I went on a quest to make a small RPG game. I initially thought it would take only 1 to 2 months to complete. However, in practice, the project is still not done and I’d like to show what I’ve been up to. My game can be summarized as follows. It’s an action RPG with a mouse driven combat system where you avoid projectiles and attack by colliding with attack zones. The goal is to defeat a tyrant king named Donovan accessible from the start. You can move around the over-world and fight various foes to become stronger and therefore, be more prepared for the final encounter. Now that I had a battle editor allowing me to quickly design battle patterns for various enemies, I still needed to diversify the types of attacks that could happen in battle. At this point, I only had two attack types implemented : linear and wavy. While you could play around with speed, amplitude, frequency to make attacks more varied, my options felt too limited. Battle System Additions For this reason, I implemented : A curved attack type with the ability to set its speed and curve height. The ability to set the rate at which each projectile spawns. Initially, I only could spawn one projectile every second and it couldn’t be modified per projectile. Now, I could have one projectile spawn every 3 seconds and another every 2 seconds, etc… And finally, allow any projectile to rotate on itself at a configurable speed. I suspect that creating many memories will be somewhat time intensive. To alleviate the workload, these memories will be intermixed with plain lore descriptions. Finally, to motivate the player to engage with lore encounters, rather than just battling, sometimes a lore encounter will grant the player loot in the form of added currency or a health boost. Adding More Encounters Available at Once A thing that bothered me with my game, is how barren the world felt. At any given point, you only had one or two encounter opportunities spawning and you had to move all the way to that point which felt tedious. However, the fix was quite simple, increase the number of encounter stars available at once. This meant that the player always had many options to choose from every time. That said, I had to be careful to not put too many stars at once as to not overwhelm the player. CRT Effect Shader One thing that’s very important when making a game, is making sure it’s visually appealing so that marketing it will be easier. After having announced my project, I’ve received comments telling me that my game looked like a SNES RPG. To lean into that vibe, what if I offered a CRT effect? I knew that it was something I could offer as the game library I was using had an example I could take. So I took it and applied it to my game. I posted the result on Reddit and received interesting feedback. To summarize : Some disliked CRT effects in general because they caused eyestrain. Some liked the effect but wanted the ability to configure it. Some mentioned that the effect wasn’t realistic enough.

0 views
Gabe Mays 1 weeks ago

Main Character 🦸‍♂️

I’m working on a new app called Main Character. It’s a gamified productivity app where you earn XP and level up for completing tasks & tracking habits. Tasks run on a kanban board and habits show up on a GitHub-style consistency graph. Basic tasks + habit tracking are live today and I use it daily. Long term I’m turning it into an AI orchestration…

0 views
Brain Baking 1 weeks ago

Favourites of February 2026

A sudden burst of Japanese cherry flowers sparkling in the sun brings much-needed lightheartedness into our late February lives. Before we know it, the garden will be littered with these little pink petals, and the very short blossom season will be behind us. Our cherry tree always had the tendency of being early, eager, and then running out of steam. It’s weird to have temperatures reach almost twenty degrees Celsius while a few weeks ago it was still freezing. No wonder the tree is confused. A deep blue sky overlooking the cherry blossom in our garden. In case you were wondering: no, this weather is not normal: it’s yet another noticeable temperature spike. Our local (retired) weatherman Frank explains the spikes and provides proof towards upwards instead of downwards temperature peaks (in Dutch). At this point, I’m just grateful for the much needed sunshine. Previous month: January 2026 . I’m giving up on Ruffy. It’s just unplayable on the Switch which is a damn shame as the N64 throwback collect-a-thon 3D platformer with rough edges looks like the perfect fit for the Switch—and it should be. It’s far from a demanding game so the only conclusion I can make is that it was poorly optimized for my platform of choice. And I bought the Limited Run Games physical version… Instead, I’ve turned to Gobliins 6 , a quirky French adventure game made by just one guy. It has equally frustrating moments and rough edges but I can more easily forgive it for its faults: it’s Gobliins! The fact that after 34 years (!!), there’s an official sequel to Gobliins 2: The Prince Buffoon is just crazy. I have fond memories of that game as I used to play it together with my dad on his brand new 486. I didn’t understand English nor was I able to solve most time-based puzzles but the Gobliins exposure got permanently burned into my brain—so much so that its pixel art became a basis for my retro blog . Even though it’s advertised to be a Windows-only game, ScummVM has got you covered: In the Fox Bar just after Fingus reunites with Winkle. If Gob6 sells well, Pierre might go ahead and make Gob7 a direct sequel to Goblins Quest 3 . Fingus—err, fingers crossed for Blount’s return! Related topics: / metapost / By Wouter Groeneveld on 4 March 2026.  Reply via email . Let’s start with more Gobliins stuff: Michael Klamerus summarized the history of the games to bring you up to speed. Mark self-hosted a book library tool called Booklore that links to your Kobo account. Michał Sapka nuances the “ I hate genAI ” screams of late. Elmine Wijnia writes in De Stadsbron (in Dutch) about OpenStreetMap and wonders whether we can finally get rid of Google Maps. Space Panda continues fighting against bots on their site . It’s fun to see the bot honey pots working but aren’t we now wasting even more resources doing nothing? Arjan van der Gaag shares how he uses snippets in Emacs with Yasnippet . I think I’m going to migrate to Tempel.el instead, but that’s for another story. There’s an interesting thread on ResetERA about old games that have yet to be replicated . Someone mentioned Magic the Gathering: Shandalar ! Jeff Kaufman shared a photo of two chairs placed on a snowy parking space . Apparently, that’s customary to “reserve” your spot. I’ve never seen such a ridiculous selfish act in a while. Is this a typical USA thing? Wolfgang Ziegler continues his Game Boy modding spree, this time with an IPS screen mod . The result looks stunning! Hamilton Greene shares his adventure with programming languages and talks about the “missing language”. I don’t agree with his stance but it’s interesting nonetheless. Scott Nesbitt writes on an old Singer desk ! Greg Newman organized the Emacs writing carnival challenge and shares links of others’ writing experiences with their favourite editor (25 entries). Greg also designed the Org-mode unicorn logo! Speaking of which; James Dyer shows his streamlined Eshell configuration that inspired me to hack together my own. To be continued in a future blog post, whether you’ll like it or not. Markus Dosch shares his journey from Bash to Zsh and now Fish . I’m slowly but surely getting fed up with Zsh and all those semi-required plugins so I might switch to Fish as well. But actually… I switched to Eshell. You didn’t see that coming, did you? Henrique Dias redesigned his website and the result looks very good, congrats! I especially like the fact that the new theme takes advantage of wide screens (note to self). Michael Stapelberg tried out Wayland and concludes that it’s still not ready yet. X11 is not dead yet. I found the Lockfile Explorer documentation on pnpm lockfiles to be very thorough and insightful. Feishin is a modern rewrite of Sonixd, a Subsonic-compatible music desktop client that looks promising. I’ve been a Navidrome user for five years now but am looking for a good client that supports offline playback. It doesn’t (yet) . Related: the Symfonium Android app that does do caching. I’m using Substreamer for that and that works well enough. scrcpy is a tiny Android-based screen sharing tool that I use in classes to project my Android screen. Handy! Another tool for presenting: keycastr helped me teach students how to use shortcuts. I might have already shared this, but you should replace pip with uv : it’s +10x faster and can also manage your project’s . Oh, and in case you haven’t already, replace npm with bun . Discord’s age verification facial recognition tool got bypassed pretty fast —rightfully so.

0 views
JSLegendDev 1 weeks ago

If You Like PICO-8, You'll Love KAPLAY (Probably)

I’ve been checking out PICO-8 recently. For those unaware, It’s a nicely constrained environment for making small games in Lua. It provides a built-in editor allowing you to write code, make sprites, make tile maps and make sounds. This makes it ideal to prototype game ideas or make small games. You know what tool is also great for prototyping game ideas or making small games? Well… KAPLAY ! It’s a simple free and open source library for making games in JavaScript. I suspect there might be a sizeable overlap between people who like PICO-8 and those who would end up liking or even loving KAPLAY as well if they gave it a try. During my PICO-8 learning journey, I came across this nice tutorial teaching you how to make a coin collecting game in 10 minutes. In this article, I’d like to teach you how to build roughly the same game in KAPLAY. This will better demonstrate in what ways this game library makes game development faster much like PICO-8. Feel free to follow along if you wish to! KAPLAY lacks all of the tools included in PICO-8. There is no all-in-one package you can use to write your code, make your sprites, build your maps or even make sounds. You might be wondering, then, how KAPLAY is in any way similar to PICO-8 if it lacks all of this? My answer : KAPLAY makes up for it by making the coding part really easy by offering you a lot logic built-in. For example, it handles collisions, physics, scene management, animations etc… for you. You’ll see some of this in action when we arrive at the part where we write the game’s code. Now, how do we use KAPLAY? Here’s the simplest way I’ve found. You install VSCode (a popular code editor) along with the Live Server extension (can be found in the extensions marketplace within the editor). You then create a folder that you open within VSCode. Once the folder is opened, we only need to create two files. One called index.html and the other main.js. Your index.html file should contain the following : Since KAPLAY works on the web, it lives within a web page. index.html is that page. Then, we link our JavaScript file to it. We set the type to “module” so we can use import statements in our JS. We then add the following : Voilà! We can now use the KAPLAY library. Since we installed the Live Server extension, you should now have access to a “Go Live” button at the bottom of the editor. To actually run the game, all you have to do is click it. This will open the web page in your default browser. KAPLAY by default creates a canvas with a checkered pattern. One thing pretty cool with this setup, is that every time you change something in your code and hit save (Ctrl+S or Cmd+S on a Mac), the web page reloads and you can see your latest changes instantly. I’ve created the following spritesheet to be used in our game. Note that since the image is transparent, the cloud to the right is not really visible. You can download the image above to follow along. The next step is to place the image in the same folder as our HTML page and JavaScript file. We’re now ready to make our game. Here we set the width and the height of our canvas. The letterbox option is used to make sure the canvas scales according to the browser window but without losing its aspect ratio. We can load our spritesheet by using the loadSprite KAPLAY function. The first param is the name you want to use to refer to it elsewhere in your code. The second param is the path to get that asset. Finally, the third param is used to tell KAPLAY how to slice your image into individual frames. Considering that in our spritesheet we have three sprites placed in a row, the sliceX property should be set to 3. Since we have only one sprite per column (because we only have one column) sliceY should be set to 1. To make the coins fall from the top, we’ll use KAPLAY’s physics system. You can set the gravity by calling KAPLAY’s setGravity function. KAPLAY’s add function is used to create a game object by providing an array of components. These components are offered by KAPLAY and come with prebuilt functionality. The rect() component sets the graphics of the game object to be a rectangle with a width and height of 1000. On the other hand, the color component sets its color. You should have the following result at this stage. Creating The Basket The basket is a also a game object with several different components. Here is what each does : Sets the sprite used by the game object. The first param is for providing the name of the sprite we want to use. Since we’re using a spritesheet which contains three different sprites in the same image, we need to specify the frame to use. The basket sprite corresponds to frame 0. anchor() By default, game objects are positioned based on their top-left corner. However, I prefer having it centered. The anchor component is for this purpose. This component is used to set the position of the game object on the canvas. Here we also use center() which is a KAPLAY provided function that provides the coordinates of the center of the canvas. This component is used to set the hitbox of a game object. This will allow KAPLAY’s physics system to handle collisions for us. There is a debug mode you can access by pressing the f1 (fn+f1 on Mac) key which will make hitboxes visible. Example when debug mode is on. As for setting the shape of the hitbox, you can use the Rect class which takes 3 params. The first expects a vec2 (a data structure offered by KAPLAY used to set pair of values) describing where to place the hitbox relative to the game object. If set to 0, the hitbox will have the same position as the game object. The two params left are used to set its width and height. Finally, the body component is used to make the game object susceptible to physics. If added alone, the game object will be affected by gravity. However, to prevent this, we can set the isStatic property to true. This is very useful, for example, in a platformer where platforms need to be static so they don’t fall off. Here we can use the move method available on all game objects to make the basket move in the desired direction. The loop function spawns a coin every second. We use the randi function to set a random X position between 10 and 950. The offscreen component is used to destroy the game object once it’s out of view. Finally a simple string “coin” is added alongside the array of components to tag the game object being created. This will allow us to determine which coin collided with the basket so we can destroy it and increase the score. Text can be displayed by creating a game object with the text component. To know when a coin collides with the basket, we can use its onCollide method (available by default). The first param of that method is the tag of the game object you want to check collisions with. Since we have multiple coins using the “coin” tag, the specific coin currently colliding with the basket will be passed as a param to the collision handler. Now we can destroy the coin, increase the score and display the new score. As mentioned earlier, KAPLAY does not have a map making tool. However, it does offer the ability to create maps using arrays of strings. For anything more complex, you should check out Tiled which is also open source and made for that purpose. Where we place the # character in the string array determines where clouds will be placed in the game. Publishing a KAPLAY game is very simple. You compress your folder into a .zip archive and you upload it to itch.io or any other site you wish to. The game will be playable in the browser without players needing to download it. Now, what if you’d like to make it downloadable as well? A very simple tool you can use is GemShell. It allows you to make executables for Windows/Mac/Linux in what amounts to a click. You can use the lite version for free. If you plan on upgrading, you can use my link to get 15% off your purchase. To be transparent, this is an affliate link. If you end purchasing the tool using my link, I’ll get a cut of that sale. I just scratched the surface with KAPLAY today. I hope it gave you a good idea of what it’s like to make games with it. If you’re interested in more technical articles like this one, I recommend subscribing to not miss out on future publications. Subscribe now In the meantime, you can check out the following :

0 views
Xe Iaso 2 weeks ago

Killing my inner Necron

Hey everybody, I wanted to make this post to be the announcement that I did in fact survive my surgery I am leaving the hospital today and I want to just write up what I've had on my mind over these last couple months and why have not been as active and open source I wanted to. This is being dictated to my iPhone using voice control. I have not edited this. I am in the hospital bed right now, I have no ability to doubted this. As a result of all typos are intact and are intended as part of the reading experience. That week leading up to surgery was probably one of the scariest weeks of my life. Statistically I know that with the procedure that I was going to go through that there's a very low all-time mortality rate. I also know that with propofol the anesthesia that was being used, there is also a very all-time low mortality rate. However one person is all it takes to be that one lucky one in 1 million. No, I mean unlucky. Leading up to surgery I was afraid that I was going to die during the surgery so I prepared everything possible such that if I did die there would be as a little bad happening as possible. I made peace with my God. I wrote a will. I did everything it is that one was expected to do when there is a potential chance that your life could be ended including filing an extension for my taxes. Anyway, the point of this post is that I want to explain why I named the lastest release of Anubis Necron. Final Fantasy is a series of role-playing games originally based on one development teams game of advanced Dungeons & Dragons of the 80s. In the Final Fantasy series there are a number of legendary summons that get repeated throughout different incarnations of the games. These summons usually represent concepts or spiritual forces or forces of nature. The one that was coming to mind when I was in that pre-operative state was Necron. Necron is summoned through the fear of death. Specifically, the fear of the death of entire kingdom. All the subjects absolutely mortified that they are going to die and nothing that they can do is going to change that. Content warning: spoilers for Final Fantasy 14 expansion Dawntrail. In Final Fantasy 14 these legendary summons are named primals. These primals become the main story driver of several expansions. I'd be willing to argue that the first expansion a realm reborn is actually just the story of Ifrit (Fire), Garuda (Wind), Titan (Earth), and Lahabrea (Edgelord). Late into Dawn Trail, Nekron gets introduced. The nation state of Alexandria has fused into the main overworld. In Alexandria citizens know not death. When they die, their memories are uploaded into the cloud so that they can live forever in living memory. As a result, nobody alive really knows what death is or how to process it because it's just not a threat to them. Worst case if their body actually dies they can just have a new soul injected into it and revive on the spot. Part of your job as the player is to break this system of eternal life, as powering it requires the lives of countless other creatures. So by the end of the expansion, an entire kingdom of people that did not know the concept of death suddenly have it thrust into them. They cannot just go get more souls in order to compensate for accidental injuries in the field. They cannot just get uploaded when they die. The kingdom that lost the fear of death suddenly had the fear of death thrust back at them. And thus, Necron was summoned by the Big Bad™️ using that fear of death. I really didn't understand that part of the story until the week leading up to my surgery. The week where I was contacting people to let people know what was going on, how to know if I was OK, and what they should do if I'm not. In that week I ended up killing my fear of death. I don't remember much from the day of the operation, but what I do remember is this: when I was wheeled into the operating theater before they placed the mask over my head to put me to sleep they asked me one single question. "Do you want to continue?" In that moment everything swirled into my head again. all of the fear of death. All of the worries that my husband would be alone. That fear that I would be that unlucky 1 in 1 million person. And with all of that in my head, with my heart beating out of my chest, I said yes. The mask went down. And everything went dark. I got what felt like the best sleep in my life. And then I felt myself, aware again. In that awareness I felt absolutely nothing. Total oblivion. I was worried that that was it. I was gone. And then I heard the heart rate monitor and the blood pressure cuff squeezed around my arm. And in that moment I knew I was alive. I had slain my inner Necron and I felt the deepest peace in my life. And now I am in recovery. I am safe. I am going to make it. Do not worry about me. I will make it. Thank you for reading this, I hope it helped somehow. If anything it helped me to write this all out. I'm going to be using claude code to publish this on my blog, please forgive me like I said I am literally dictating this from an iPhone in the hospital room that I've been in for the last seven days. Let the people close to you know that you love them.

0 views

Who is the Kimwolf Botmaster “Dort”?

In early January 2026, KrebsOnSecurity revealed how a security researcher disclosed a vulnerability that was used to build Kimwolf , the world’s largest and most disruptive botnet. Since then, the person in control of Kimwolf — who goes by the handle “ Dort ” — has coordinated a barrage of distributed denial-of-service (DDoS), doxing and email flooding attacks against the researcher and this author, and more recently caused a SWAT team to be sent to the researcher’s home. This post examines what is knowable about Dort based on public information. A public “dox” created in 2020 asserted Dort was a teenager from Canada (DOB August 2003) who used the aliases “ CPacket ” and “ M1ce .” A search on the username CPacket at the open source intelligence platform OSINT Industries finds a GitHub account under the names Dort and CPacket that was created in 2017 using the email address [email protected] . Image: osint.industries. The cyber intelligence firm Intel 471 says [email protected] was used between 2015 and 2019 to create accounts at multiple cybercrime forums, including Nulled (username “Uubuntuu”) and Cracked (user “Dorted”); Intel 471 reports that both of these accounts were created from the same Internet address at Rogers Canada (99.241.112.24). Dort was an extremely active player in the Microsoft game Minecraft who gained notoriety for their “ Dortware ” software that helped players cheat. But somewhere along the way, Dort graduated from hacking Minecraft games to enabling far more serious crimes. Dort also used the nickname DortDev , an identity that was active in March 2022 on the chat server for the prolific cybercrime group known as LAPSUS$ . Dort peddled a service for registering temporary email addresses, as well as “ Dortsolver ,” code that could bypass various CAPTCHA services designed to prevent automated account abuse. Both of these offerings were advertised in 2022 on SIM Land , a Telegram channel dedicated to SIM-swapping and account takeover activity. The cyber intelligence firm Flashpoint indexed 2022 posts on SIM Land by Dort that show this person developed the disposable email and CAPTCHA bypass services with the help of another hacker who went by the handle “ Qoft .” “I legit just work with Jacob,” Qoft said in 2022 in reply to another user, referring to their exclusive business partner Dort. In the same conversation, Qoft bragged that the two had stolen more than $250,000 worth of Microsoft Xbox Game Pass accounts by developing a program that mass-created Game Pass identities using stolen payment card data. Who is the Jacob that Qoft referred to as their business partner? The breach tracking service Constella Intelligence finds the password used by [email protected] was reused by just one other email address: [email protected] . Recall that the 2020 dox of Dort said their date of birth was August 2003 (8/03). Searching this email address at DomainTools.com reveals it was used in 2015 to register several Minecraft-themed domains, all assigned to a Jacob Butler in Ottawa, Canada and to the Ottawa phone number 613-909-9727. Constella Intelligence finds [email protected] was used to register an account on the hacker forum Nulled in 2016, as well as the account name “M1CE” on Minecraft. Pivoting off the password used by their Nulled account shows it was shared by the email addresses [email protected] and [email protected] , the latter being an address at a domain for the Ottawa-Carelton District School Board . Data indexed by the breach tracking service Spycloud suggests that at one point Jacob Butler shared a computer with his mother and a sibling, which might explain why their email accounts were connected to the password “jacobsplugs.” Neither Jacob nor any of the other Butler household members responded to requests for comment. The open source intelligence service Epieos finds [email protected] created the GitHub account “ MemeClient .” Meanwhile, Flashpoint indexed a deleted anonymous Pastebin.com post from 2017 declaring that MemeClient was the creation of a user named CPacket — one of Dort’s early monikers. Why is Dort so mad? On January 2, KrebsOnSecurity published The Kimwolf Botnet is Stalking Your Local Network , which explored research into the botnet by Benjamin Brundage , founder of the proxy tracking service Synthient . Brundage figured out that the Kimwolf botmasters were exploiting a little-known weakness in residential proxy services to infect poorly-defended devices — like TV boxes and digital photo frames — plugged into the internal, private networks of proxy endpoints. By the time that story went live, most of the vulnerable proxy providers had been notified by Brundage and had fixed the weaknesses in their systems. That vulnerability remediation process massively slowed Kimwolf’s ability to spread, and within hours of the story’s publication Dort created a Discord server in my name that began publishing personal information about and violent threats against Brundage, Yours Truly, and others. Dort and friends incriminating themselves by planning swatting attacks in a public Discord server. Last week, Dort and friends used that same Discord server (then named “Krebs’s Koinbase Kallers”) to threaten a swatting attack against Brundage, again posting his home address and personal information. Brundage told KrebsOnSecurity that local police officers subsequently visited his home in response to a swatting hoax which occurred around the same time that another member of the server posted a door emoji and taunted Brundage further. Dort, using the alias “Meow,” taunts Synthient founder Ben Brundage with a picture of a door. Someone on the server then linked to a cringeworthy (and NSFW) new Soundcloud diss track recorded by the user DortDev that included a stickied message from Dort saying, “Ur dead nigga. u better watch ur fucking back. sleep with one eye open. bitch.” “It’s a pretty hefty penny for a new front door,” the diss track intoned. “If his head doesn’t get blown off by SWAT officers. What’s it like not having a front door?” With any luck, Dort will soon be able to tell us all exactly what it’s like. Update, 10:29 a.m.: Jacob Butler responded to requests for comment, speaking with KrebsOnSecurity briefly via telephone. Butler said he didn’t notice earlier requests for comment because he hasn’t really been online since 2021, after his home was swatted multiple times. He acknowledged making and distributing a Minecraft cheat long ago, but said he hasn’t played the game in years and was not involved in Dortsolver or any other activity attributed to the Dort nickname after 2021. “It was a really old cheat and I don’t remember the name of it,” Butler said of his Minecraft modification. “I’m very stressed, man. I don’t know if people are going to swat me again or what. After that, I pretty much walked away from everything, logged off and said fuck that. I don’t go online anymore. I don’t know why people would still be going after me, to be completely honest.” When asked what he does for a living, Butler said he mostly stays home and helps his mom around the house because he struggles with autism and social interaction. He maintains that someone must have compromised one or more of his old accounts and is impersonating him online as Dort. “Someone is actually probably impersonating me, and now I’m really worried,” Butler said. “This is making me relive everything.” But there are issues with Butler’s timeline. For example, Jacob’s voice in our phone conversation was remarkably similar to the Jacob/Dort whose voice can be heard in this Sept. 2022 Clash of Code competition between Dort and another coder (Dort lost). At around 6 minutes and 10 seconds into the recording, Dort launches into a cursing tirade that mirrors the stream of profanity in the diss rap that Dortdev posted threatening Brundage. Dort can be heard again at around 16 minutes; at around 26:00, Dort threatens to swat his opponent. Butler said the voice of Dort is not his, exactly, but rather that of an impersonator who had likely cloned his voice. “I would like to clarify that was absolutely not me,” Butler said. “There must be someone using a voice changer. Or something of the sorts. Because people were cloning my voice before and sending audio clips of ‘me’ saying outrageous stuff.”

0 views
Stratechery 2 weeks ago

2026.09: This Was an Xbox

Welcome back to This Week in Stratechery! As a reminder, each week, every Friday, we’re sending out this overview of content in the Stratechery bundle; highlighted links are free for everyone . Additionally, you have complete control over what we send to you. If you don’t want to receive This Week in Stratechery emails (there is no podcast), please uncheck the box in your delivery settings . On that note, here were a few of our favorites this week. This week’s Stratechery video is on Thin Is In . From Owning the Living Room to Ceding the Hardware Market ? After Phil Spencer’s exit at Microsoft,  Wednesday’s Daily Update provided an entertaining tour of Xbox history , including strategy that has been misaligned for at least 15 years, and why some of those red flags were ignored at the time (spoiler: “[Microsoft] held onto Xbox as the sole piece of evidence that the company could be cool and interesting to consumers”). Today, though, there are new pivots to discuss. So what’s next? Ben builds on the fraught history to explain why, given the lack of growth in the gaming market and competitive pressures on the rest of Microsoft’s business, the days of 1st party Xbox hardware may be over.  — Andrew Sharp From MJ to Wemby and Everything in Between. With Andrew on vacation, Greatest of All Talk was lucky to have the illustrious Rachel Nichols on as a guest. From sharing stories from her early days as an intern covering Michael Jordan to reflecting on the end of the Washington Post Sports section and the changing media landscape, Rachel’s unique experience provided a compelling through line across eras of sports and media. Come for the discussion of whether Wemby and the Spurs can win it all, stay for the greatest moose related headline of all time. — Ben Thompson It’s Time to Build… In Space?  In 2016 Jeff Bezos said, “We can build gigantic chip factories in space.” 10 years later, with chip constraints  as urgent as ever , a number of companies are already exploring manufacturing in space (data centers, pharmaceuticals), so why not chips too?  This week’s Asianometry video  answers that question comprehensively, noting that LEO chip fabbing would impose incredible logistics challenges (cooling, cleaning, managing radiation, constant maintenance  in space ), and would probably require reimagining the entire chip stack (how do you handle packaging in space?). It’s a great, itemized breakdown of the obstacles —  available as a podcast or transcript for Stratechery Plus subscribers  — that also underscores how many incredible challenges we’ve already solved on earth. — AS Another Viral AI Doomer Article, The Fundamental Error, DoorDash’s AI Advantages — Another AI doomer article has gone viral, and like many in the genre, it lacks an appreciation for dynamism and markets. Then, why DoorDash is going to be fine. Xbox Replaces Head of Gaming, Xbox History, Whither Xbox — Xbox has a new head, who isn’t a gamer; I suspect Microsoft is doing what it should have done a decade ago: get out of the console business. An Interview with Bill Gurley About Runnin’ Down a Dream — An interview with long-time (retired) VC Bill Gurley about his new book about building a career you love, Uber, and the modern state of VC. AI Xbox Doom Privacy Screens and Apple Report Cards Chip Fabs in Space: Technically Possible, Completely Impractical The GOAT pod visits No Dunks Rachel Nichols on Mike, WaPo, Luka & Wemby

0 views
Stratechery 2 weeks ago

Xbox Replaces Head of Gaming, Xbox History, Whither Xbox

Xbox has a new head, who isn't a gamer; I suspect Microsoft is doing what it should have done a decade ago: get out of the console business.

0 views
Caleb Leak 2 weeks ago

I Taught My Dog to Vibe Code Games

My cavapoo Momo vibe coded playable Godot games. All I had to do was teach her to type, route her input to Claude Code, and build the right tools.

0 views
Evan Hahn 3 weeks ago

Track Zelda release anniversaries in your calendar

The original Legend of Zelda came out 40 years ago today. With other birthdays on the horizon, like Twilight Princess ’s 20th in November, I wanted a calendar that showed the anniversary of every Zelda game. So I made one. Subscribe to this URL in your calendar app: Once you do, you’ll get calendar events on the anniversary of each game’s release. For example, you’ll be able to see that the Oracle games turn 25 in less than a week…I feel old. If you want to build this file yourself, I wrote a little Python script that generates an ICS file from a CSV of release dates .

0 views
Stratechery 3 weeks ago

An Interview with Matthew Ball About Gaming and the Fight for Attention

An interview with Matthew Ball about the state of the video gaming industry in 2026, and why everything is a fight for attention.

0 views
JSLegendDev 3 weeks ago

I Tried 3 Web Game Frameworks (So You Don’t Have To)

I went on a quest to test the 3 most popular 2D web game frameworks according to their NPM download numbers. To achieve this, I set out to build a Sonic infinite runner game in each framework. Today, I’d like to share my findings. Below are links to playable demos along with the source code for each version of the game. I recommend browsing the code of each version to get a better feel of the differences between them. KAPLAY version - ( live demo ) - ( source code ) Phaser version - ( live demo ) - ( source code ) Excalibur version - ( live demo ) - ( source code ) Note that even though KAPLAY markets itself as a library and Excalibur as a game engine they still feel like frameworks and occupy the same space as Phaser. That’s why I took the liberty to refer to them as frameworks. I will not beat around the bush. If you want stability and performance, you should pick Phaser. That said, overall, KAPLAY is the easiest one to learn but the least scalable of the 3. This makes it a good choice to get into game development as a beginner and to prototype ideas quickly but you’ll end up facing performance issues eventually. I’d like to note that there have been recent performance improvements. However, KAPLAY’s performance still doesn’t come anywhere close to the one offered by Phaser. Additionally, Phaser has an AI advantage. For example, if you ask ChatGPT a question related to Phaser, more likely than not, the answer provided will be right. As for KAPLAY and Excalibur, you’ll get a lot more hallucinations. This AI advantage lowers the barrier of learning for Phaser which, in contrast, makes the easiness of KAPLAY less compelling. While Phaser’s API is verbose, you get over it especially when you get performance and stability in exchange. Finally, Phaser is significantly more popular than the other 2 which means it will be easier to find help when needed. If you’re looking to target mobile, Phaser is also your best bet between the 3 as the performance on Safari is also quite good and the best. This is relevant because Safari uses the Webkit web engine which is what’s forced on every browser and webview on iOS. Finally, for multiplayer games, Phaser offers the ability to run it on the server in headless mode. This makes it much easier to handle state in a multiplayer game. To my knowledge, neither KAPLAY nor Excalibur offers something like this. As mentioned previously, KAPLAY might still be worth using in the context of prototyping or for game jams, as its component based approach allows you to truly iterate quickly on game design. Its simplicity also makes it an ideal candidate for teaching game development to beginners. Some have used it to teach children. Phaser and Excalibur felt very similar when using them as they both relied on the object oriented paradigm. Yet, I felt that Excalibur sometimes required more work. A notable example of this is when coming back to a scene after having switched away from it. The state of that scene would be left as is before transitioning over. This meant you had to write extra logic to reset the scene’s state, something you didn’t have to do in Phaser. That said, I still felt that Excalibur’s API was on average a bit more concise than Phaser’s. In conclusion, the issue with Excalibur is that it didn’t feel different enough from Phaser to warrant switching over to it, considering Phaser is more performant, more featureful, and more popular. At the same time, I was impressed with how Excalibur handled its debug mode. Instead of having it within the framework, it was instead available as a browser extension. Debug mode would therefore appear in the browser devtools and could be toggled and configured from there. It was a nice experience. Regardless of the web framework you end up using, if you want to bring your web game to Steam, the easiest tool for achieving this is GemShell. It allows you to create executables for Windows, Mac and Linux in what amounts to a single click. It also offers an integration with Steam so you can easily have access to features like Steam achievements and now also the Steam overlay. (The latter might not be available yet at the time of publishing this post.) (Video by the developer showcasing the use of Steam overlay on top of a game packaged with GemShell) This tool will save you hours that would have been wasted configuring tools like Electron and Steamworks.js. Time which could have been spent working on your game instead. To have a consistent experience across operating systems, GemShell now makes each executable Chromium based so that your game renders the same way on all platforms. Additionally, The developer is also considering implementing the ability to export for mobile platforms as well. Due to how useful this tool is, I have decided to partner with its developer to offer you a 15% discount if you use the following link : https://l0om.itch.io/jslegend To be completely transparent, if you end up purchasing GemShell using the link above, I’ll get a cut of that sale. That said, a free lite version is available, if you want to get a feel for the tool. I hope you enjoyed this post, I recommend subscribing to not miss out on future releases. Subscribe now In the meantime, you can read the following : I went on a quest to test the 3 most popular 2D web game frameworks according to their NPM download numbers. To achieve this, I set out to build a Sonic infinite runner game in each framework. Today, I’d like to share my findings. Below are links to playable demos along with the source code for each version of the game. I recommend browsing the code of each version to get a better feel of the differences between them. KAPLAY version - ( live demo ) - ( source code ) Phaser version - ( live demo ) - ( source code ) Excalibur version - ( live demo ) - ( source code )

0 views
Kev Quirk 3 weeks ago

Step Aside, Phone: Week 1

OK, so here we are at the end of the first week of Step Aside, Phone . Quick re-cap from last week - my average phone and tablet usage combined was approximately 4 hours per day (2.5hrs on phone, and 1.5hr on tablet). That's high! Hopefully this week was better? This one is easy - my screen time on my tablet has been zero, as I turned it off last week, and haven't turned it back on again. Instead I've been either reading RSS feeds quickly on my phone before bed, or reading a book on my Kindle. It took me a couple days to get back into reading a book; I haven't done it for a while and as a result my mind kept wandering. I'm back in the swing of things now though and I'm enjoying the book I'm currently reading. Honestly, I haven't missed my tablet at all. I'm not sure if that thing will get turned back on. So the phone...that's also reduced for the most part, but I have had a couple days with heavier usage. Here's how the breakdown went: Ok, so from 2.5hr average to 1:19hr average. I'll take that. My usage was up for a few days between Wed-Fri as I was shopping for stuff Amazon, as well as browsing for a new car for my wife. The only day where I really wasted time was on Thursday where I spent some time on YouTube during my son's swimming lesson (that's the only time I went on YT all week), and on Friday where I spent 16 mins playing on my silly game. Overall I think it's been a pretty good week, and I hope the next 3 weeks continue to improve. Although, not quite as good as Manu this week ! Mon - 48 mins Tue - 61 mins Wed - 55 mins Thur - 2hrs 13mins Fri - 1hr 42mins Sat - 2hrs 01min Sun - 30 mins Average - 1hr 19mins

0 views
Playtank 1 months ago

The Systemic Pitch

The past few years prove that there is a market for premium systemic singleplayer games. Few have listened to us (developers) when we tried to pitch such games for the past decade. Or ever. This isn’t because there is some kind of conspiracy against systemic games. Not at all. Systemic designs are very hard to sell. Not just to publishers or to customers; systemic designs are hard to sell even to your own team. We get caught by our own excitement, or we try to sell technology or tools as if they are designs when they are really not. The fleeting nature of systemic design feels like losing control, or like a potentially bloated mess of optional sandbox content that we have to make for the simulation to be complete but that will add little for the average player. In this post, I try to address pitching systemic games, based on my own mistakes. There’s a wealth of literature on how to sell something. Including how to make a good sales pitch. For this post, we’ll stick to a very general high level idea of what pitching needs to achieve, and leave all of that expertise to the real experts. One great book you can take a look at is the book Pitch Anything, by Oren Klaff. For this post, let’s assume a pitch needs to do three things: The origins of AAA (or “triple-A”) is from credit ratings. It stands for a rating of low risk, high reward. Or, in the terms of investment banks, “exceptional creditworthiness with minimal risk of default.” It was used in early game development, including pitching, to signify projects that were safe bets with high financial potential. Today, AAA is used to describe anything from team size to budget size. Like many of the terms we use in game development, it’s become almost meaningless, or at least the interpretations have become too varied for consistent use. But these origins are relevant. When you pitch something, the value proposition still needs as small a risk as possible with as big of a potential reward as possible. Pitching is to ask for something. It may be funding to get your game across the finish line, developer buy-in to make the next feature, or something else. Be specific with what you are asking for and you will have a less frustrating conversation. When you pitch, you must offer something to the people you are pitching to. Money, ownership, future commitments. It’s not enough to offer them a potentially great game, you need to show how it’s more than the sum of its parts. Game development comes with many risks that you must address with your pitch. You don’t have to call them out and tell people what your solution will be, but you should consider them and hold yourself accountable for them. The systemic value proposition is extremely tricky. For many external stakeholders it’s not the same as the creative argument or the design paradigms . Many stakeholders want replayable content that’s cheap to make , and will read “systemic” as making content production easier or cheaper. Perhaps using procedural generation techniques to generate multiple levels from a small set of content, thereby not needing as many level designers or prop artists. This is not the same as systemic design at all. Systemic design is about letting go of authorial control and allowing players to have the fun. This almost invariably makes a systemic design sound more expensive to make, since it implies a high degree of freedom and a sandbox nature. If you detect excitement around systemic ideas, be really careful to note what is generating the excitement, or this could be the fundamental misunderstanding you’re experiencing. Anyone can have ideas but everyone can’t turn ideas into games. You must be able to prove why you should be the person making your thing. What to lead your credibility pitch with is tricky. For systemic games, it helps to demonstrate technical expertise immediately. To line up all the key roles that will address the risks you’ve already mentioned and explain how you’ve filled them. Studios may get a lot of attention after releasing games that sold many copies, attracted many concurrent players, or gained high scores in reviews and good media attention. Though this front row attention may be fleeting in the media, it will matter a lot for your credibility to be part of these journeys. People may even talk about the best place to be at a given time. If you’ve mostly worked as a salaried employee, your studio pedigree will be the most important thing you can offer to state your credibility. It also tends to be the first thing many will ask to know. If you worked at particularly big modern studios, you mention which roles you held and not just the name of the studio. This is because if your title was Junior Assistant to the Senior Assistant’s Assistant, your impact was probably quite small, and talking about this studio doesn’t actually provide much credibility. Simple maths. If you have fewer years of experience, you have probably learned less. But the keyword here is “relevant.” If you are pitching a big sprawling open world role-playing game after working on first-person shooters for 15 years, people may believe that you know how to make games, but may be weary that you haven’t made this type of game before. This will then become a risk that you must address. Something that’s almost a joke at this point is to sum up the experience of your team and use that in your pitch. E.g., “250 years of combined gamedev experience.” You can of course do this anyway, but it doesn’t really mean anything. The easiest and most quantifiable way to demonstrate that this isn’t your first rodeo (if it isn’t) is to list the box art for the games you shipped. If this is a very long list, you can stick to the ones that were important or are more likely to be known by the people you are pitching to. Similarly to studio experience, you may want to specify what you did on each game too, but only if it becomes too anonymous otherwise. You shouldn’t turn the credibility element of your pitch into a reason to talk about yourself at length. For an external stakeholder, technology that exists and has been proven through previous game releases is worth a lot more than experimental technology. For this reason, technology becomes part of your credibility. If you come to a pitch and you say you are working on your own engine that will probably be finished a couple of months ahead of release, this will send off warning flags for everyone in the room. But if you say that your team is working with an established third-party engine and you have a working prototype already in place, this will give a much better first impression. It helps to have a team already lined up and waiting for your go-signal. A team shortlist is a list of people who have agreed to let you put their name down for if you find the funds. It’s very rarely treated as a commitment, more a way to lend weight to a pitch. It’s better than saying you’ll start recruiting when you have your funding, but it’s not as good as having people already onboard. The packaging refers to how you communicate value and credibility. There’s no right or wrong way here, but it will matter a lot based on who you are talking to. According to the It Was a Sh!tshow podcast, Futurama spent two to three years in preparation before it was pitched to studios. During that time, they explored characters, key art, technology, and many other things. In game development, we rarely have this room for pitch or concept development. But you do need to prepare as much as you possibly can. You need to figure out the risks, foresee what potential stakeholders will be worried about, and proactively respond allay their concerns. Stories resonate with people. Introductions, reversals, and climaxes. Presenting your pitch as a story doesn’t mean you should lead with your game’s story, it means that your whole pitch should be a story with a proper beginning and end. Start with a bang, end with a call to action. There are some pitfalls you should avoid, however. Don’t ask open-ended rhetorical questions, e.g. “Have you ever thought about why dogs have two ears?!” Because chances are that they only confuse people and don’t actually make them think the way you want. Take charge of the story and walk through your pitch’s narrative beat by beat. Leave nothing to chance. If you want to frame your pitch as a story, use video and visual aids as much as possible and let the story come from you rather than the pitch deck. A strong metaphor can also carry a pitch. In an interview with Designer Notes, games venture capitalist Mitch Lasky talked about his EA pitch using a container to illustrate the benefits of standardisation. Metaphors can of course be traps as well, if they in fact illustrate something you don’t intend, but you’ll figure that out as you work through it. Use a strong metaphor if it fits your whole pitch and doesn’t leave strange questions. A sad fact is that no one wants novelty. Novelty almost always looks like a risk more than a gain. From Railroad Tycoon to The Sims , many of the most groundbreaking games through the years had few fans in management. Similarly, Markus Persson (“Notch”) said that no publisher would’ve cared about Minecraft if he had pitched it to them: it could only happen by selling it directly to players. You can absolutely lead with how your game is different and new, but be aware of this risk. Only focus on novelty if you can incorporate a strong why into your pitch. I have a whole post that laments the use of the word “content.” But it’s enough to say that it’s a word often equated with quantity and used by both developers and consumers. Developers will talk about how much content they offer, while consumers will usually ask for more of it no matter how much is on offer. Most systemic games are not built to funnel “content” to users. Churning out downloadable content (DLC) fits really poorly, and most of the time replayability is a matter of smoke and mirrors. Choosing A instead of B, or approaching through the secret door instead of the main entrance. Functionally, the very same content , but a different experience . Some systemic games manage to pull it off, like Prey and its excellent Mooncrash DLC, but at other times it ends up feeling artificial and a bit forced. Thief wouldn’t benefit from offering you a special gold-lined blackjack, for example. It would only risk diminishing the core experience. Therefore, if you want to offer a systemic game, don’t pitch your game on its quantity of content . People generally use harsher words than good or bad. What often gets lost is the reasons why we think something is good or bad. Particularly when good or bad is applied to specific parts of a game, such as its story or gameplay. If you didn’t like the gameplay, maybe this made you dislike the story. If you really loved the premise, then maybe you felt better about the gameplay than it actually deserved. This means that good or bad is mostly a loud declaration of opinion that muddles any real qualities or faults of the thing being touted. If you disagree with the zeitgeist effectively countless “masterpieces,” the gamer population is quick to call you an idiot. Publishers may not call you an idiot, but you should still avoid calling things good or bad. It may even be that the thing you’re trash-talking is something one of the people you’re pitching to happened to work on. Therefore, avoid value terms and comparisons to other games . There are many words for this. Janky, buggy, glitchy, broken, even unplayable. Some game companies have gained a reputation for their games feeling “janky,” while others may have segments that are more or less so. “Eurojank” is sometimes used as its own term. The issue with this language is that it’s also often applied to complex games. Having to use multiple mapped controls, or using menus in certain ways, will become conversationally equivalent to jank. No matter what you do, do not use these words to describe your own game unless it’s deeply intentional. If you are making the next Goat Simulator or Gang Beasts , then by all means call it janky. You can also acknowledge if your audience calls your concept janky, and run with it, but don’t introduce the term on your own. Don’t talk about your own game as janky, buggy, or messy . In the marketing buildup to the release of No Man’s Sky , if you followed games media to any extent, you would’ve seen Hello Games’ Sean Murray. He was the face and voice for the project and his infectious enthusiasm built a gigaton of hype. But he was also first and foremost a developer. Someone who was enthusiastic not just about what the game actually was but what it could be. A mentality that everyone in game development understands. If you talk about technology and its potential, be careful to not promise more than you can deliver . Maybe it’s because of the clickbait era and the tendency for a lot of people to only read the headlines and not the main points, using examples can actually be a problem. If you describe a general system you have and you then say that it’ll be used to generate something like a metal ball, it’ll then become the Metal Ball System and nothing else to some of the people listening to the pitch. It’s better to provide a framework for your systems and let the audience’s imagination put things together, or you can easily fall into the trap that you need to start defending your example or expand on what makes the example interesting. You don’t want to be put in that spot. Even worse, if you use examples from other games , they may infer different things for the audience than what you had in mind. Avoid using examples, or they may become people’s most concrete takeaways. Let’s get one thing perfectly clear: you can’t convert your own excitement into a signed contract . Excitement is important when you deliver your message, since we’re social beings, and it can definitely affect your believability and how compelling your message is. But in every other way, your excitement is strictly yours. No one cares about your deep lore, the motivations of your characters, the 1,000 years of world history you wrote for your fantasyland, or anything else of that sort, until after they have crossed what I call the excitement threshold . At that point, everyone won’t care, but a subset may suddenly care to the point of obsession. For every player that praises all the well-written logbooks and audio journals, there are nine others who completely ignore them. For every publisher rep you talk to who loves the cool technical solutions you’re talking about, there are nine others who have never seen Visual Studio and will simply not get what you are trying to make. For every complex systemic thing you added to your prototype, there will be someone at the other end of the table who asks why the shadows look wrong or why your prototype doesn’t look as visually polished as the one from some other pitch they just saw. All this and more is bound to happen, and you must learn to really read the room when it comes to which parts of the message to focus on. As an example of the excitement threshold, take a look at the original trailer for the movie Raiders of the Lost Ark . Note how this trailer focuses, not on the Indiana Jones we know today, but on the mystery of the Ark of the Covenant and its terrifying implications in the 1930s. Lost artifacts, Egyptian ruins, and nazis: as pulp as it gets. Compare this to a modern trailer for the same movie . A trailer that focuses clearly on all the character flaws and iconic shenanigans that many of us remember fondly from the original movie. This illustrates the difference excitement makes. In the original trailer, no one cares about the character of Indiana Jones. We don’t know him yet, or why we should care about him. But once the second trailer hits, and the movie is now renamed Indiana Jones and the Raiders of the Lost Ark, it’s all about Dr Jones, his fear of snakes, and those cool scenes that we all remember. This comparison is important, because most of us will be facing what Raiders of the Lost Ark faced: an audience that needs to have something else to latch on to than what you want them to be excited about. An audience that doesn’t know Dr Jones yet and will have to discover him on their own. The same goes for our pitch — you need to treat your audience (the stakeholders) to something that excites them . If you can do that, you’ve won half the battle! Convince the party you are pitching to that a thing is worth making. A value proposition . Also convince them that you are the ones who should make it. Establish your credibility . Cater both messages specifically to the people you are pitching to. The packaging . Financial security: If your project fails miserably, maybe doesn’t even get released, they will usually soak up the loss while you simply move on. This part is rarely said out loud, but it’s a key ask nonetheless. Funding advances : The most obvious ask towards publishers and investors: getting a chunk of change that pays for development. Just make sure to make it realistic and not low- or high-balling your numbers. Say how much you need and why. Commitment: Asking for your team to commit to your project or to key changes. This can sometimes be the hardest pitching you’ll do. Even more so if your team has low morale. Marketing help : Getting help marketing your game. Be specific with this ask, since some partners may only do the minimum if you don’t have a concrete marketing spend that is contractually obligated. Be clear with your ask. It’s not uncommon to match marketing spend with development spend. Technical support: Server architecture, cloud infrastructure, console porting, and other elements of development that are beyond your capabilities as a developer and therefore included in your ask. Cash : Unless you are unable to afford asked rates or you are making a very big ask from a busy partner, you will rarely have to pitch as much if you have cash to spend. But it’s definitely a gain to be considered. If you pay for something upfront, you will rarely have to part with things you’d rather keep. Revenue : There are more ways to share revenue than there are stars in the sky. It may be time-limited or permanent, the percentage may shrink or grow over time, and the share may or may not be taken from one party to compensate another (advance on royalties). If you want to offer revenue share, you should provide a revenue projection based on real data. One that shows how large the earning potential is in multiple scenarios, for example based on number of copies sold. Just be realistic. Equity : Instead of potential future profits you can offer ownership. It can be ownership in your company, or a newly founded company that handles this specific project under mutual conditions with investors. Equity allows someone to have a bigger stake in what you are doing and will of course mean that they get a chunk of future profits also . Just be careful to part with too much equity. Property : You can offer up the intellectual property (IP) you are creating. Your game, its characters and likenesses, assets, etc. Usually including everything related to it, such as potential sequels, merchandise, tie-ins, and more. I’ve been told you shouldn’t accept deals like this today, but it may be on the table and you may not have much authority to say no. Exclusivity : Something that will often be heavily implied anyway, but not always formalised, is exclusivity: that you won’t be launching on more platforms or making more than one game at the same time. This is less relevant today, where platform holders seem less inclined to pay for exclusivity, but depending on who you are talking to, it’s still something worth considering. It can be forever, it can be time-limited, or have other restrictions. But offering exclusivity can be valuable. Delays : explain how you plan to deliver your project on schedule. Almost every game project suffers from some kind of delays (for no good reasons). Sometimes those could’ve been foreseen, planned for, or even mitigated. This is really where your credibility comes in. Convince people why you won’t suffer those delays. Complexity : this is where many systemic designs fail stakeholder scrutiny. They will look or sound complex or complicated, and may imply scale that is not actually required. Inexperience : if there are things in the project that you haven’t done before, or technologies you need to evaluate and research properly, you have to be very transparent about it. If your whole team hasn’t delivered a game before, this is a major risk that you must be able to address. Time constraints : release windows, budget timeframes; there can be multiple reasons why your time is constrained. Perhaps you can’t start fulltime until you get the third programmer onboard, and that won’t happen until six months from now. Bring out a concrete timeline that you can safely commit to. Non-Compliance : the game may become something else than what you agreed on, for creative or financial reasons. Smaller, larger, or styled differently than intended. This is where most creative differences will come from, since many signed deals will be commitments and you’ve just chosen to break them. This is the main reason you’re likely to have milestones and other deliverables along the way, so that any accident about to happen can be course corrected. DOA : the game may be dead on arrival, missing its target audience or simply failing to gain traction against other launches in the same window. In the best of worlds, this doesn’t just kill your studio, but provides at least six months to a year of time where you can do your best to salvage or improve the situation.

0 views
./techtipsy 1 months ago

SteamOS on a ThinkPad P14s gen 4 (AMD) is quite nice

In April 2024, I wrote on the Lenovo ThinkPad P14s gen 4 and how it does not suck under Linux. That is still true. It’s been fantastic, and a very reliable laptop during all that time. The P14s gen 4 comes with a CPU that is still solid today, the AMD Ryzen 7 PRO 7840U, and that comes with impressive integrated graphics in the form of an AMD Radeon 780M. I’ve had a Steam Deck. I’ve also accidentally built a Steam Machine. I had to put SteamOS on this laptop to see how well it does. I did a quick Bazzite test the last time around, but after being impressed with how well the stock SteamOS image runs on a random machine with an AMD GPU, I had to test that, too. The normal way to install SteamOS on a machine is to take the Steam Deck recovery image and to install it on your own machine that has one NVMe SSD. I didn’t want to do exactly that, I wanted to run it off of an USB SATA SSD, which the recovery image does not support, as it hard-codes the target SSD for the SteamOS installation to . There’s a handy project out there that customizes the recovery script to allow you to install SteamOS to any target device, but I learned about that after the fact. I went a slightly different route: I imaged the SteamOS installation from my DIY Steam Machine build, wrote it to the 4TB USB SSD that I had available for testing, and after that I resized the partition to take up the full disk. Bam, clean SteamOS on a USB SSD! Oh, and before I did that, I did the same process but to a 128 GB Samsung FIT USB 3.0 thumb drive. The game library images did load a bit slowly, but it was a great demonstration of how low you can go with the hardware requirements. I wouldn’t recommend actually installing games on such a setup as that would likely kill the USB thumb drive very quickly. I ran the SteamOS setup on this laptop over a USB-C dock that only supports running at up to 4K at 30Hz, so I did testing at 1080p 60Hz setup. You’re unlikely to want to run this setup at 4K anyway, unless you’re a fan of light, easy to run games like Katamari or Donut County. In most games, the experience was enjoyable. 1080p resolution, maybe change the settings to medium or low in some cases, and you’ll likely have a solid gaming experience. Forza Horizon 4? No problem, 1080p high settings and a solid, consistent experience. Need for Speed Hot Pursuit Remastered was an equally enjoyable experience, and I did not have to turn the settings down from high/ultra. God of War Ragnarök was pushing the setup to the limits. With 1080p, low/medium settings you can expect 30+ FPS. If you include AMD FSR settings in the mix and also enable FSR frame generation, you can have a perfectly enjoyable 50-60 FPS experience. Some UI hints were a bit “laggy” with frame generation, but I’m genuinely surprised how well that rendering trick worked. I’ll admit it, my eyesight is not the best, but given the choice of a crisp but laggy picture, and a slightly blurrier but smoother experience, I’d pick the latter. After a pint of Winter Stout, you won’t even notice the difference. 1 Wreckfest was also heaps fun. It did push the limits of the GPU at times, but running it at 1080p and medium/high settings is perfectly enjoyable. The observed power usage throughout the heaviest games measured via SteamOS performance metrics ( ) were around 30-40 W, with the GPU using up the most of that budget. In most games, the CPU was less heavily loaded, and in the games that required good single thread performance, it could provide it. I like SteamOS. It’s intentionally locked down in some aspects (but you can unlock it with one command), and the Flatpak-only approach to software installation will make some people mad, but I like this balance. It almost feels like a proper console-type experience, almost . Valve does not officially support running SteamOS on random devices, but they haven’t explicitly prevented it either. I love that. Take any computer from AMD that has been manufactured from the last 5 years, slap SteamOS on it, and there is a very high chance that you’ll have a lovely gaming experience, with the level of detail and resolution varying depending on what hardware you pick. A top of the line APU from AMD seems to do the job well enough for most casual gamers like myself, and if the AMD Strix Halo based systems were more affordable, I would definitely recommend getting one if you want a small but efficient SteamOS machine. Last year, we saw the proliferation of gaming-oriented Linux distros. The Steam Machine is shipping this year. DankPods is covering gaming on Linux. 2026 has to be the year of the Linux (gaming) desktop. that’s the tipsy part in techtipsy   ↩︎ that’s the tipsy part in techtipsy   ↩︎

0 views
Brain Baking 1 months ago

Favourites of January 2026

The end of the start of another year has ended. So now all there is left to do is to look forward to the end of the next month, starting effective immediately, and of course ending after the end of the end we are going to look forward to. Quite the end-eavour. I guess I’ll end these ramblings by ending this paragraph. But not before this message of general interest: children can be very end-earing, but sometimes you also want to end their endless whining! Fin. Previous month: January 2026 . Is Emacs a game? I think it is. I spent every precious free minute of my time tinkering with my configuration, exploring and discovering all the weird and cool stuff the editor and the thousands of community-provided packages offer. You can tell when you’ve joined the cult when you’re exchanging emails with random internet strangers about obscure Elisp functions and even joining the sporadic “let’s share Emacs learnings!” video calls (thanks Seb ). Does receiving pre-ordered games count as played ? I removed the shrink wrap from Ruffy and my calendar tells me I should start ordering UFO 50 very very soon via . Now if only that stupid Emacs config would stabilise; perhaps then I could pick up the Switch again… The intention was to start learning Clojure but I somehow got distracted after learning the Emacs CIDER REPL is the one you want. A zoomed-out top-down view of the project, centered on Brain Baking (left) and Jefklak's Codex (right). Related topics: / metapost / By Wouter Groeneveld on 4 February 2026.  Reply via email . Nathan Rooy created a very cool One million (small web) screnshots project and explains the technicalities behind it. Browsing to find your blog (mine are in there!) is really cool. It’s also funny to discover the GenAI purple-slop-blob. Brain Baking is located just north of a small dark green lake of expired domain name screenshots. Jefklak’s Codex , being much more colourful, is located at the far edge, to the right of a small Spaceship-domain-shark lake: Shom Bandopadhaya helped me regain my sanity with the Emacs undo philosophy. Install vundo. Done. Related: Sacha Chua was writing and thinking about time travel with Emacs, Org mode, and backups . I promise there’ll be non-Emacs related links in here, somewhere! Keep on digging! Michael Klamerus reminded me the BioMenace remaster is already out there. I loved that game as a kid but couldn’t get past level 3 or 4. It’s known to be extremely difficult. Or I am known to be a noob. Lars Ingebrigtsen combats link rot with taking screenshots of external links . I wrote about link rot a while ago and I must say that’s a genius addition. On hover, a small screenshot appears to permanently frame the thing you’re pointing to. I need to think about implementing this myself. Seb pointed me towards Karthinks’ Emacs window management almanac , a wall of text I will have to re-read a couple of times. I did manage to write a few simple window management helper functions that primarily do stuff with only a 2-split, which is good enough. Mikko shared his Board Gaming Year recap of 2025 . Forest Shuffle reaching 500 plays is simply insane, even if you take out the BoardGameArena numbers. Alex Harri spent a lot of time building an image-to-ASCII renderer and explains how the project was approached. This Precondition Guide to Home Row Mods is really cool and with Karabiner Elements in MacOS totally possible. It will get messy once you start fiddling with the timing. Elsa Gonsiorowski wrote about Emacs Delete vs. Kill which again helped me build a proper mental state of what the hell is going on in this Alien editor. Matt Might shared shell scripts to improve your academic writing by simply scanning the text for so-called “weasel words”. Bad: We used various methods to isolate four samples Better: We isolated four samples . I must say, academic prose sure could use this script. Robert Lützner discovered and prefers it over Git . I’m interested in its interoperability with Git. Charles Choi tuned Emacs to write prose by modifying quite a few settings I have yet to dig into. A friend installed PiVPN recently. I hadn’t heard from that one just yet so perhaps it’s worth a mention here. KeepassXC is getting on my nerves. Perhaps I should simply use pass , the standard unix password manager. But it should also be usable by my wife so… Nah. Input is a cool flexible font system designed for code but also offers proportional fonts. I tried it for a while but now prefer… Iosevka for my variable pitch font. Here’s a random Orgdown cheat sheet that might be of use. With RepoSense it’s easy to visualise programmer activities across Git repositories. We’re using it to track student activities and make sure everyone participates. Tired of configuring tab vs space indent stuff for every programming language? Use EditorConfig , something that works across editors and IDEs.

0 views
DHH 1 months ago

Cloud gaming is kinda amazing

I fully understand the nostalgia for real ownership of physical-media games. I grew up on cassette tapes (C64 + Amstrad 464!), floppy disks (C64 5-1/4" then Amiga 3-1/2"), cartridges, and CDs. I occasionally envy the retro gamers on YouTube with an entire wall full of such physical media. But do you know what I like more than collecting? Playing! Anywhere. Anything. Anytime. We went through the same coping phases with movies and music. Yes, vinyl had a resurgence, but it's still a tiny sliver of hours listened. Same too with 4K Blue-rays. Almost everyone just listens to Spotify or watches on Netflix these days. It's simply cheaper, faster, and, thus, better. Not "better" in some abstract philosophical way (ownership vs rent) or even in a concrete technical way (bit rates), but in a practical way. Paying $20/month for unlimited music and the same again for a broad selection of shows and movies is clearly a deal most consumers are happy to make. So why not video games? Well, because it just wasn't good enough! Netflix tried for casual gaming, but I didn't hear much of that after the announcement. Google Stadia appears to have been just a few years ahead of reality (eerie how often that happens for big G, like with both AI and AR!) as they shut down their service already. NVIDIA, though, kept working, and its GeForce NOW service is actually, finally kinda amazing! I had tried it back in the late 2010s, and just didn't see anything worth using back then. Maybe my internet was too slow, maybe the service just wasn't good enough yet. But then I tried it again a few days ago, just after NVIDIA shipped the native GFN client for Linux, and holy smokes!! You can legitimately play Fortnite in 2880x1800 at 120 fps through a remote 4080, and it looks incredible. Yes, there's a little input lag, but it's shockingly, surprisingly playable on a good internet connection. And that's with the hardest possible genre: competitive shooters! If you play racing games like Forza Horizon or story-mode games like Warhammer 40K: Space Marine 2, you can barely tell! This is obviously a great option for anyone with a modest computer that can't run the latest triple-A titles, but also for Linux gamers who don't have access to run the cheat-protection software required for Fortnite and a few other games.  And, like Spotify and Netflix, it's pretty competitively priced. It's $20/month for access to that 4080-tier. You'd quickly spend $2,000+ on a gaming rig with a 4080, so this isn't a half bad deal: it's a payback of 100 months, and by then you'd probably want a 6080 anyway. Funny how NVIDIA is better at offering the promise of cheap cloud costs than the likes of AWS! Anyway, I've been very impressed with NVIDIA GeForce NOW. We're going to bake the Linux installer straight into the next version of Omarchy, so you can just go to Install > Gaming > NVIDIA GeForce NOW to get going (just like we have such options for Steam and Minecraft). But of course seeing Fortnite running in full graphics on that remote 4080 made me hungry for even more. I've been playing Fortnite every week for the last five years or so with the kids, but the majority of my gameplay has actually been on tablet. A high-end tablet, like an iPad M5, can play the game with good-for-mobile graphics at 120 Hz. It's smooth, it's easy, and the kids and I can lounge on the couch and play together. Good Family Fun! Not peak visual fidelity, though. So after the NVIDIA GeForce NOW experience, I found a way to use the same amazing game streaming technology at home through a local-server solution called Apollo and a client called Moonlight. This allowed me to turn my racing-sim PC that's stuck downstairs into a cloud-like remote gaming service that I can access anywhere on the local network, so I can borrow its 4090 to play 120-fps, ultra-settings Fortnite with zero perceivable input lag on any computer in the house. The NVIDIA cloud streaming is very impressive, but the local-server version of the same is mind-blowing. I'm mostly using the Asus G14 laptop as a client, so Fortnite looks incredible with those ultra, high-resolution settings on its OLED, but unlike when you use that laptop's built-in graphics card, the machine stays perfectly cool and silent pulling a meager 18 watts. And the graphics are of course a lot nicer. The Moonlight client is available for virtually every platform: Mac, iOS, Android, and of course Linux. That means no need to dual boot to enjoy the best games at the highest fidelity. No need for a honking big PC on my primary desk. I did not know this was an option!! Whether you give NVIDIA's cloud gaming setup a try or repurpose a local gaming PC for the same, you're in for a real treat of what's possible with streaming Fortnite on ultra settings at 120 fps on Linux (or even Mac!). GG, NVIDIA!

0 views