<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Mateusz Dzikowski on Medium]]></title>
        <description><![CDATA[Stories by Mateusz Dzikowski on Medium]]></description>
        <link>https://medium.com/@mdzikowski?source=rss-1c34d2fa3864------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*jXHxm9lAzL3-1wsylUBl0A.jpeg</url>
            <title>Stories by Mateusz Dzikowski on Medium</title>
            <link>https://medium.com/@mdzikowski?source=rss-1c34d2fa3864------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sun, 15 Nov 2026 06:40:33 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@mdzikowski/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com/" rel="hub"/>
        <item>
            <title><![CDATA[Zombie Kebab VR — a solo indie dev project that came a long way]]></title>
            <link>https://medium.com/@mdzikowski/zombie-kebab-vr-a-solo-indie-dev-project-that-came-a-long-way-bc23ad59b394?source=rss-1c34d2fa3864------2</link>
            <guid isPermaLink="false">https://medium.com/p/bc23ad59b394</guid>
            <category><![CDATA[game-development]]></category>
            <category><![CDATA[design-process]]></category>
            <category><![CDATA[games]]></category>
            <category><![CDATA[game-design]]></category>
            <category><![CDATA[design]]></category>
            <dc:creator><![CDATA[Mateusz Dzikowski]]></dc:creator>
            <pubDate>Sun, 09 Feb 2025 22:00:19 GMT</pubDate>
            <atom:updated>2026-08-10T14:35:09.903Z</atom:updated>
            <content:encoded><![CDATA[<h3>Zombie Kebab VR : an indie dev project that came a long way</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*TMbbqYO5_r9ttiGdGyfFhg.png" /></figure><h3>How did the idea for Zombie Kebab VR come about?</h3><p>On August 15, 2012, at Gamescom in Cologne, I saw Fruit Ninja VR.<br>I thought: cool, but what’s cooler than fruit? Kebab! And what instead of ninjas? ZOMBIE! Shivers went through me, and I haven’t been able to free myself from that thought since.</p><h3>What did the first steps of the project look like?</h3><p>The idea was simple, but the vision evolved over the years. At first it was to be a mobile game — in those years kitchen time-management titles, where you prepared orders on time, were still quite popular. I wanted to add zombies, which were at their peak in 2012. This concept helped me get a job in mobile games. I thought I would quickly learn how to make games and release my project — a combination of Cooking Fever and Into the Dead. Two mobile prototypes were created, but the feedback was clear: shooting zombies on a phone is mediocre. Limitations in control precision, a small workspace and a stationary camera meant that it just didn’t work.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*46hESTIYdBOTvjY4E8OS8w.png" /><figcaption>“Nah… not like that. Make it so the players feel they’re there.”</figcaption></figure><h3>What was the biggest breakthrough?</h3><p>One day when I was collecting feedback after another redesign of mobile screens I heard: “Nah… not like that. Make it so the players feel they’re there.” Context was missing and the game lacked character. I started collecting references, taking pictures of the TV when a frame suited me. <br>I could see it in my head: 1970s Brooklyn, 1990s Gdansk at night, industrial districts, graffiti, street trash, dark alleys. But how to embed it in the game?</p><p>The breakthrough came when I discovered <a href="https://en.wikipedia.org/wiki/Tilt_Brush">Tilt Brush</a>. <br>I could quickly sketch the world around me in a natural way. One night, after several hours of drawing, I suddenly took off the headset, convinced there was a zombie behind me. I felt there was no turning back — I knew that fear had to find its way into the game.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*PI0BgA3_b_bR_SdWL9sm8Q.jpeg" /></figure><h3>Were there moments of doubt?</h3><p>Sure, there were moments of doubt. Friends would ask: “Yo Dziki, how is Zombie Kebab?” I did not know myself: “What platform is this game coming out on?”, “Is this kebab made of zombies?”, “Why are you shooting them? — They just want to eat kebab at 4 a.m.”. When I had no answers to these questions, the project seemed absurd. Then VR opened my eyes. I just started creating this world around me, and magically it all started making sense to me. As I immersed myself in this place I realized that the Zombies don’t come for kebabs — zombies come to kill you, and you cook for people who have buried themselves in their houses — they’re afraid to come out because zombies are prowling around. You have a gun, a car, and people to feed. Sometimes an armed courier will come to pick up orders, sometimes a drone will come, and if you think hard enough — you’ll figure out how to turn on the ordering system on a broken TV.</p><h3>How has TikTok influenced the project?</h3><p>In 2020, I started uploading short snippets of gameplay to TikTok. No promotion, no trends. And suddenly? Tens — hundreds of thousands of views. Finally, measurable interest. That gave me a signal: the project was alive.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*hJiggoTiXLlYnVm3k5VteA.png" /></figure><h3>What was it like to learn the necessary skills?</h3><p>Learning what turned out to be necessary was not obvious. It’s not always clear what you need to learn. Tools: Inkscape, Photoshop, Blender, Unity, programming basics. But the key is to combine them consciously. You want a house in the game? You build a model in Blender, texture it in Photoshop, set up the materials in Unity, and look at it on the headset. That’s how I built my workflow.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*1e4tUhk71j5erjkVFkVDSQ.png" /></figure><h3>What surprised you most about the game’s reception?</h3><p>TikTok showed me what people were interested in — not the art, but the gameplay. So I started sharing the development progress. The videos sometimes got a second life, most recently our footage with a truncated logo — signed “<a href="https://fb.watch/xESrE2g_km/">Armenian Fast Food Simulator</a>” — is circulating on facebook a year after its release on TikTok. People sometimes ask in the comments: “What game is this?” And fortunately, an answer appears: It’s <strong>ZOMBIE KEBAB VR!</strong></p><h3>What advice would you give to people who want to make their own game?</h3><p>Creating a game is not just a matter of wanting to, it is a matter of regular, deliberate action. It doesn’t matter how long it takes to make a game. Even if it takes 10+ years, do what you feel, work at your own pace, iterate to your heart’s content. If you have the space to work intensely, get a team together, set up a repository, organize a channel on Discord, and make decisions. Make commits, post updates, and share your progress on social media, because when you see that someone cares, you know it makes sense, and the work moves forward somehow. Progress, however small, is more important than spectacular results achieved through superhuman effort. And remember:</p><blockquote>A goal without a plan, deadlines, and regular work is just a fantasy.</blockquote><h3>So when will the game be available?</h3><p>As someone once said — it’s coming when it’s ready.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=bc23ad59b394" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Create responsive websites with ChatGPT, Miro and Canva in minutes!]]></title>
            <link>https://medium.com/@mdzikowski/create-responsive-websites-with-chatgpt-miro-and-canva-in-minutes-631ae9452c83?source=rss-1c34d2fa3864------2</link>
            <guid isPermaLink="false">https://medium.com/p/631ae9452c83</guid>
            <category><![CDATA[web-design]]></category>
            <category><![CDATA[indie-game]]></category>
            <category><![CDATA[ai-tools]]></category>
            <dc:creator><![CDATA[Mateusz Dzikowski]]></dc:creator>
            <pubDate>Sat, 20 Jan 2024 16:37:23 GMT</pubDate>
            <atom:updated>2024-01-22T13:08:35.622Z</atom:updated>
            <content:encoded><![CDATA[<p><em>Just like in every other field, web design experiences the AI revolution. How to survive it?</em></p><p>My very first gigs in the IT world were designing websites. I remember when Microsoft Front Page was introduced to the market in the mysterious aura of WYSIWYG technology. The term ‘What You See is What You Get’ had already been circulating in IT since the mid-1970s when printing technology first started allowing content to be edited in a form that resembles its appearance when printed as a finished product. Some 20 years later the same idea was revived in web design in Microsoft’s advertising campaigns.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/640/0*5XIP7BUQTgOzS0fp.png" /><figcaption>Using Microsoft FrontPage felt like cheating. The code was awful, the file size was crazy big but you could quickly have a working website that looked exactly as you designed it.</figcaption></figure><h3>OK boomer</h3><p>Year 2024 is as far away from 1997 as 1997 was from 1970. So naturally I thought maybe now all you need to do is to give ChatGPT an image and it would write the code for your website? I tried and this is what I got:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/699/1*gKFCJIzY7WUXzd2QWbKQJw.png" /><figcaption>Pretty close, right? Good attempt, but it was far from being shippable.</figcaption></figure><p>I tried several AI tools as well but nothing seemed to be able to painlessly translate the image to a working code. What now? I looked at fiverr — maybe if I spend a few bucks on a gig I could get it done in one day?</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*CdCT3tLRAfgLXFCdGucTyw.png" /><figcaption>24h and around 100EUR to have one WordPress page or 10 EUR for a Photoshop file from an unknown user…</figcaption></figure><p>I was convinced that it can be done faster and cheaper than that. So I went to see what are some other options. I remember WIX.com — they used to have a free plan that allowed you to quickly design webpages, they also added some AI tools on top of that recently, and if all I wanted to do was to customize a pre-made template I would have it ready in no time. <br>However, that wasn’t the case — I had the layout already designed. I felt like I was almost there. Just one more step…</p><p>But let’s start from the begining.</p><h3>The creative process</h3><p>First, I explored some concepts with ChatGPT and dall-e and put them on a Miro board to have an overview of possibilities:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/977/1*nnTm-UqydnsLTH70BnFyWA.png" /></figure><p>Then I picked the elements that made sense for me and roughly placed them on a dirty mockup:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/603/1*_0h7Pceeri4_2IcILRqO6Q.png" /></figure><p>After that I refined every element, added in-game assets and real testimonials from the feedback we got on social media.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/681/1*FTAweTQi0f0CfSXHn4dm4A.png" /><figcaption>Read more about the button: <a href="https://medium.com/@mdzikowski/hey-chatgpt-can-you-make-this-button-more-clickable-663b2706ee2c">https://medium.com/@mdzikowski/hey-chatgpt-can-you-make-this-button-more-clickable-663b2706ee2c</a></figcaption></figure><p>But what to do with them? And how to make sure the layout is responsive, mobile friendly etc? And then I reminded myself about Canva. All my non-artist friends who used it were amazed how easy it was to create beautiful and shippable content in a matter of minutes. So I decided to give it a try.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/334/1*5dIzSgIqfqc9m4StFJXo3Q.png" /></figure><p>I simply placed all the elements on an empty page, used layers, and set the largest image as the background.</p><p>Then I grouped elements like text and image together:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/626/1*mr_d29W6vHleFULm3o7wTQ.png" /><figcaption>No, it’s not fake :) See the full article here: <a href="https://www.kotaku.com.au/2023/12/zombie-kebab-vr/">https://www.kotaku.com.au/2023/12/zombie-kebab-vr/</a></figcaption></figure><p>and aligned elements to each other and to the page itself, made sure it looked ok on different screens:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/423/1*vy8KdW3tq1YZhEQ5usAxUQ.png" /></figure><p>published it for free at <a href="https://zombiekebab.my.canva.site/sign-up">https://zombiekebab.my.canva.site/sign-up</a>, and asked my friends to visit it and tell me if it displays correctly. It did.</p><p>The last step was to link my website to this address. We could be paying a monthly fee for Canva premium but as an indie studio we cut all expenses by a rule of thumb. So naturally, I asked ChatGPT how to redirect the traffic from zombiekebab.com to <a href="https://zombiekebab.my.canva.site/sign-up">zombiekebab.my.canva.site/sign-up</a> the easiest way. And I received this HTML snippet:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/703/1*S5DXfTGLS4VUY6Bie-_wMg.png" /></figure><h3>And that’s it!</h3><p>For the first time since creating the domain in 2013–08–15 it was live. More importantly, it features <a href="https://medium.com/@mdzikowski/hey-chatgpt-can-you-make-this-button-more-clickable-663b2706ee2c">a prominent button that allows the players to sign up for the upcoming release.</a> The waiting list is growing quickly, and we’ll soon be sending out the newsletter as Valentine’s Day approaches. And what’s better than a kebab on Valentine’s Day?</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*R823gCcMkZuAP7awMzbzEQ.png" /></figure><p>P.S. Feel free to visit <a href="http://www.zombiekebab.com/">www.zombiekebab.com</a> and let me know if it does not display correctly for you :)</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=631ae9452c83" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AI Basics for Game Designers: From Philosophy to Markov Chains.]]></title>
            <link>https://medium.com/@mdzikowski/from-philosophy-to-markov-chains-a-journey-through-probability-in-game-design-bf95d19a0e12?source=rss-1c34d2fa3864------2</link>
            <guid isPermaLink="false">https://medium.com/p/bf95d19a0e12</guid>
            <category><![CDATA[game-design]]></category>
            <category><![CDATA[markov-chains]]></category>
            <category><![CDATA[vr]]></category>
            <category><![CDATA[indie-game]]></category>
            <category><![CDATA[ai]]></category>
            <dc:creator><![CDATA[Mateusz Dzikowski]]></dc:creator>
            <pubDate>Fri, 19 Jan 2024 03:08:32 GMT</pubDate>
            <atom:updated>2024-01-22T08:54:42.494Z</atom:updated>
            <content:encoded><![CDATA[<h3>AI Basics for Game Designers: From Philosophy to Markov Chains. Modeling probability and randomness.</h3><blockquote>Game designers continually seek tools and methods that can enhance their games’ mechanics, story progression, and decision-making. While neural networks and AI have gained significant traction, mathematical models like graphs and Markov Chains offer unique advantages for designing dynamic, responsive, and unpredictable game environments.</blockquote><p>In this article, we’ll journey from understanding a couple of fundamental concepts to implementing Markov Chains, allowing game designers to harness the power of probability and statistics in game design.</p><h3>Ancient Philosophical Puzzles and Modern Stochastics</h3><p>Andrey Markov, a Russian mathematician, introduced Markov chains in the early 20th century. Before Markov’s, the explicit concept of a Markov chain as we understand it today did not exist. Despite this, ancient holds numerous examples of preliminary considerations on stochastics, laying some groundwork for future explorations in the realm of probability.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/775/1*ee1k9nFx5kygP5JlFeZYFA.png" /><figcaption>“The Thinker,” symbolizing profound introspection, can represent Dante contemplating the infernal journey.</figcaption></figure><p>The concept of probability can be traced back to ancient civilizations’ games of chance. Ancient Greeks, including philosophers like Plato and Aristotle, discussed randomness and determinism. However, their discussions were more philosophical and not mathematical in the way modern probability theory is. Plato believed in an inherently ordered universe where randomness was but an illusion. In contrast, Aristotle preached the existence of genuine random events in the universe.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/918/1*GmhI3CW6jZ_lzTXytU8D2Q.png" /></figure><p>The word “stochastic”, rooted in the Greek term “στόχος” for “aim”, brings forth an intriguing connection, especially in the world of</p><h4><strong>precision and accuracy</strong>.</h4><p>In any endeavor the distinction between the two is paramount. Let’s consider the mechanics of aiming and shooting. Every competitive player knows that when your shots are both accurate and precise, you’re not just playing the game — you’re dominating it.</p><p>To put it in game terms, imagine every shot you take in a first-person shooter game as a data point. There are four targets, each representing a different combination of accuracy and precision. Accuracy refers to how close your shots are to the target’s center, while precision refers to how close your shots are to each other.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/875/1*FiynvIn3TMiOsLKq8Pvgcw.png" /></figure><ul><li><strong>Low Accuracy, Low Precision</strong>: Your shots are scattered, indicating inconsistency and unpredictability in gameplay.</li><li><strong>Low Accuracy, High Precision</strong>: Your shots consistently hit the same wrong spot, suggesting a systematic error or bias in the game’s aiming mechanics.</li><li><strong>High Accuracy, Low Precision</strong>: Your shots hit around the target center but are widely spaced, implying a correct aim but high variability in execution or outcome.</li><li><strong>High Accuracy, High Precision</strong>: Your shots are tightly grouped at the target’s center, the ideal state for a player seeking to master the game.</li></ul><p>Each action in a game, much like the ancient games of chance, can be seen as a part of a stochastic process, a sequence of events influenced by random variables.</p><h4>State machine</h4><p>Aiming and shooting in a game can be modeled as a Markov chain, where each shot represents a state transition. The probabilities of hitting or missing the target could depend on in-game factors such as the player’s skill, weapon accuracy, or even the game’s inherent randomness.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/277/1*BqKrjOWByElZIX5BYMq3Kw.png" /></figure><p>So what is the missing link between these two graphs?</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/862/1*9NSxehXE-VhF31_G0eA4rQ.png" /></figure><h3>The answer is: literature!</h3><p>Andrey Markov’s theory was indeed influenced by his interest in the statistical patterns of letters in literature. He sought to prove the <em>Law of Large Numbers</em> for dependent events, as opposed to the then-common application to independent events like coin tosses.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*2RAg2ZN6uWLBQq5dnj7d2A.png" /></figure><p>Markov was intrigued by the work of other mathematicians who were analyzing the frequency of vowels and consonants in Russian poetry. They treated the letters in text as a sequence of independent events, but Markov suspected that the letters were not independent — that the appearance of a certain letter could depend on the letters that came before it.</p><blockquote>This was a departure from existing statistical methods which typically assumed that each event (or letter, in this case) occurred independently of others.</blockquote><p>Markov’s analysis involved creating chains where each letter was a state. He then examined how the sequence of letters transitioned from one state to another. For example, if the letter ‘a’ appeared, what was the probability that it would be followed by a vowel versus a consonant?</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*ps1IwIm4Y1E1-Nqq" /></figure><p>The culmination of Markov’s work, opened the door to further advancements in understanding sequences and probabilities. One significant extension of this concept is the <strong>Hidden Markov Model (HMM)</strong>.</p><p>In an HMM, we observe a series of outputs generated by a sequence of hidden states, and the model aims to infer the hidden states based on the observable outputs. They are well-suited for modeling sequential data with temporal dependencies. HMMs are trained using algorithms like the Baum-Welch algorithm for unsupervised learning. They can be used in cases where labeled data is limited or unavailable.</p><h3>How to apply Markov chains in game design?</h3><p>In the realm of game design, applying Markov chains can significantly enhance the dynamism and realism of in-game AI behavior. By integrating these probabilistic models, designers can create characters that react in varied and unpredictable ways, providing a richer gaming experience.</p><h4>State Machine: A Markov Chain in Action</h4><p>Let’s see how Markov chains can be utilized, particularly within the context of our game <strong>“</strong><a href="http://zombiekebab.com/"><strong>Zombie Kebab VR</strong></a><strong>”</strong>.</p><p>Consider the behavior of a zombie in a survival horror game. This list of states represent a set of zombie’s potential actions:</p><ul><li><strong>Idle:</strong> calm state, unaware of the player’s presence.</li><li><strong>Wandering:</strong> aimlessly moving until something catches its attention.</li><li><strong>Chasing: </strong>As in sensing its prey, it engages in pursuit upon the player’s detection.</li><li><strong>Attacking:</strong> In close combat with the player.</li><li><strong>Dying:</strong> The final state leading to total decay.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/836/0*IKlWSBEQNvl04hYE.png" /></figure><p>The transitions between these states are influenced by game-world stimuli — much like the way ancient philosophers believed external forces influenced the roll of dice or the flight of an arrow. For example, the proximity of the player can affect whether the zombie starts wandering or chasing. Tweak the transition probabilities, and you alter the tension and pace of the game. Add more enemies and time pressure to increase difficulty.</p><p>The result should be a gameplay mechanic that feels organic, as if having a set of natural laws, while being fueled by a probabilistic model.</p><p>If you are interested how do we implement the opponent’s behaviors in our upcoming VR title, visit <a href="http://www.zombiekebab.com/"><strong><em>www.zombiekebab.com</em></strong></a></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/647/1*HOYgT6dLfXr_ajlVjkdmpQ.png" /></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=bf95d19a0e12" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Hey ChatGPT can you make this button more clickable?]]></title>
            <link>https://medium.com/@mdzikowski/hey-chatgpt-can-you-make-this-button-more-clickable-663b2706ee2c?source=rss-1c34d2fa3864------2</link>
            <guid isPermaLink="false">https://medium.com/p/663b2706ee2c</guid>
            <category><![CDATA[artificial-intelligence]]></category>
            <category><![CDATA[technology]]></category>
            <category><![CDATA[creativity]]></category>
            <category><![CDATA[graphic-design]]></category>
            <category><![CDATA[innovation]]></category>
            <dc:creator><![CDATA[Mateusz Dzikowski]]></dc:creator>
            <pubDate>Thu, 04 Jan 2024 15:33:59 GMT</pubDate>
            <atom:updated>2024-03-13T10:37:04.707Z</atom:updated>
            <content:encoded><![CDATA[<p><em>Case of a designer being replaced by ChatGPT 😱</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/651/1*d68XGbuD9pkD9oQfD-1Vwg.png" /></figure><p>It’s 2024, and using a computer now feels like stepping into the special effects of the movies we watched as kids. We were promised to be able to chat with our computers, zoom-in into low-res images and see all the details in one click etc. I remember looking at my C-64 hoping one day computers will be powerful enough to actually perform this kind of magic, while twisting the screwdriver in a cassette player in order to load the Great Giana Sisters from a ferro-magnetic bootleg tape. Fast-forward 30 something years:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/888/0*8IKT3AVmV4iFtR08.jpg" /></figure><p>To be honest, conversing with ChatGPT as my clients once did when I was a graphic designer yields surprisingly good results. They’re not perfect at first, as this example shows:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*mTALajJobUxHBIScnnOqsQ.png" /></figure><p>My first reaction was “OK this button actually IS uber-clickable but not really useful for what I was working on”. I just needed a button that “looks better” i.e. has the same shape, proportions, colors, fonts… yes sounds like useful context to begin with. But it doesn’t have to be. I was sure we can still get there in a very few prompts. What did the trick was adding the following information:</p><blockquote>- it is an asset on a webpage it needs to be roughly the same size shape and bgr is white,<br>- make sure that the shape of the button is rectangular, wide and short enough to put “SIGN UP” in one line</blockquote><p>Using it, ChatGPT redacted the prompt :</p><blockquote>A realistic-looking rectangular button with a smooth gradient from light orange to deep red, and the text ‘SIGN UP’ in bold, white, sans-serif font across one line. The button has a subtle, realistic texture suggesting a semi-gloss finish and is designed with slight shadowing to appear clickable against a white webpage background. The shape is a wide rectangle, ensuring the text fits on one line without breaks, size 1792x256.</blockquote><p>and used DALL-E to generate:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*g_JtwD4X2cUMLOVf" /></figure><p>All this happened roughly in the amount of time that 10 years ago I would use to start my PC, open Blender and delete the default cube. But is this asset any good for prototyping? Almost.</p><p>Next, I needed to cut it out from the background and isolate the shadow. And for this I went super old-school and used Adobe Photoshop. Some 9 months ago they have introduced the “Object Selection Tool” — it should handle a simple shape like this, right?</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/760/1*lJpFdF2coDfwuPifgBUssg.png" /></figure><p>It is just a rectangle with rounded corners and Adobe always seemed to me like an expert on math behind shapes like these but I think, judging by the results, these are still two separate technologies :D</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Z8W3qH2sLL6ifke4u3BdcQ.png" /></figure><p>So yes, there is still some space for manual work to be done. You can define a vector shape, use it as a mask, invert it, select the color range of the shadow and cut it out. This way you will have two elements and a transparent background. I would say it’s enough to use it on a rough mockup. There are also some typical AI-hallucinated artifacts like shapes that make very little sense from a typographic point of view. But again it’s nothing that a good old stamp and brush won’t fix:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/405/1*AM1og-Snz2RfIaxQkqgu_g.png" /><figcaption>TADA! Human touch makes a world of difference.</figcaption></figure><p>Now this finally looks like a job for a human designer! One could spend at least a couple of hours making the shape look spotless. Fixing the lights, shadows, geometry and gradients until it looks perfect. But do we really need it? Depending on the context we could hold a series of meetings to discuss what to do with it or confirm what works better via AB tests, but since we’re a small indie studio, at this stage all this activities are out of scope.</p><p>…and it still looks better than just a flat shape done in Miro.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*CzoSZxcp_H3SfAudcFt7Og.png" /></figure><h3>Wait what? Using Miro for UX?</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*DE8oQicMTP8fi5jhRtzPPQ.png" /></figure><p>Some of you may react allergic to creating mock-up screens in Miro instead of preparing them in Figma, but when the design is relatively simple, there are not many elements and all you need is some basic layout — I would argue that Miro + Photoshop + basic HTML and CSS is enough. And if you want to have responsive design or parallax effects, I think you can just ask ChatGPT to write some custom .js Would I bet my last penny on it? Definitely not. Would I write an another article if it looks decent enough? Absolutely!</p><p>(EDIT: see <a href="https://medium.com/@mdzikowski/create-responsive-websites-with-chatgpt-miro-and-canva-in-minutes-631ae9452c83">https://medium.com/@mdzikowski/create-responsive-websites-with-chatgpt-miro-and-canva-in-minutes-631ae9452c83</a> for the follow-up)</p><h3>Conclusion</h3><p>So here’s the thing: even as AIs like ChatGPT and DALL-E make design faster, we’re the ones who make sure that our design doesn’t just look good, it’s about making it <strong><em>feel</em></strong> right. I don’t think we’re being replaced — we’re evolving. As designers, our role is to blend AI efficiency with our creative instincts. We’re adding soul to the silicon. And that’s something AI can’t replicate.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=663b2706ee2c" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Affordable Mo-Cap Animation with AI and Smartphones]]></title>
            <link>https://medium.com/@mdzikowski/vr-revolution-one-step-at-a-time-f45d924a408b?source=rss-1c34d2fa3864------2</link>
            <guid isPermaLink="false">https://medium.com/p/f45d924a408b</guid>
            <category><![CDATA[ai]]></category>
            <category><![CDATA[game-development]]></category>
            <category><![CDATA[indie-game]]></category>
            <category><![CDATA[vr]]></category>
            <category><![CDATA[motion-capture]]></category>
            <dc:creator><![CDATA[Mateusz Dzikowski]]></dc:creator>
            <pubDate>Sun, 24 Dec 2023 04:40:05 GMT</pubDate>
            <atom:updated>2023-12-31T13:47:20.871Z</atom:updated>
            <content:encoded><![CDATA[<p>In developing the upcoming ZOMBIE KEBAB VR game, we’ve discovered an ingenious method to employ a smartphone and AI tools for capturing a realistic zombie walk cycle. This approach could be a useful option for smaller teams or independent developers who may not have access to more expensive motion capture equipment.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/864/1*a_9BtKH7nBviJ1HoGM1H_g.png" /></figure><p>Traditionally, capturing high-quality motion capture data for VR games has been a complex and expensive process, requiring specialized equipment and software. This technique could be an invaluable asset, especially for smaller teams or independent developers who might not have the budget for high-end motion capture technology.</p><p>Having some extra time during the winter break, we wanted to see if we can prototype some custom zombie animations for our project. With just a couple of hours at hand the goal was to minimize the effort while working on adding <em>states</em> to the zombie characters. Why do we even need <em>states</em> — one may ask. The simple answer could be:</p><blockquote>We add character states because changing them is what enables us to create meaningful situations in the gameplay. Let’s take the example of a Zombie itself. Is it dead or alive? Defining states can be tricky but also is very useful from a game designer’s perspective.</blockquote><p>So how to add meaning to a walking Zombie? For example, you could assign a different purpose to it’s movement, let’s say it walks not just for the sake of walking but it walks with a goal to kill the player. That *should* influence the game dynamics, right?</p><h3>A walk is at least two steps.</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/928/1*yERKQR5fqxXpPzb4r5WU5A.png" /><figcaption>Screenshot from Rokoko Vision: Free AI motion capture tool</figcaption></figure><p>Our initial idea was to use two tools: <a href="https://vision.rokoko.com/">https://vision.rokoko.com/</a> and <a href="https://www.youtube.com/@Cascadeur">https://www.youtube.com/@Cascadeur</a> in order to capture a video from a phone, clean it with an AI-tool and then use it in <a href="https://unity.com/">Unity Engine</a> as a 3d animation for our Zombie. It sounds like a crazy fast animation development cycle but are we there yet?</p><p>At the current stage our workflow involves:</p><ul><li>capturing short video clips on a Samsung SM-S918</li><li>uploading them to <a href="https://vision.rokoko.com/">https://vision.rokoko.com/</a></li><li>cleaning keyframes in Blender</li><li>and exporting fbx animations to Unity.</li></ul><p>We decided to go with this workflow because so far it looks like a well balanced approach between joining the ubiquitous AI automation craze and adding enough human touch to respect of the tradition of crafting video games, but most importantly we chose it because we were able to create some in-game assets.</p><h3>The prototype</h3><p>Our initial motion capturing session resulted in having recorded around 20 clips that could potentially be used as <em>hit reactions</em> or <em>walking cycles</em>:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/766/1*JgjvQc4RAmyNJr8ngmzaPw.png" /></figure><p>But rushing the process without making sure the initial settings are correct feels a bit like gambling with the industry’s good practices. So in order to mitigate the risk of not delivering the assets within a rather radically short timeframe of a couple of hours we needed to refine the process and reiterate.</p><h3>It s always “step i+1”</h3><p>When trying to achieve an ambitious goal like “have zombie walking-cycle ASAP working in the game” we wanted to make sure that achieving our goal is possible to a measurable degree. We knew that anything else than a seamless integration of all elements in the pipeline could potentially compromise our goal. Processing the initial sample recordings revealed only one issue, but interestingly enough, quite a severe one:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/809/1*-ud003nnMoX-fqqSEHqgJQ.png" /><figcaption>When the actor was passing the center of the screen, too close to the camera, its movement was interpreted as elliptical instead of linear.</figcaption></figure><p>Our assumption was that the distortion is caused by the optical system using a wide lens. So as this problem was adding extra complexity by requiring fixing not only the positions but also the rotations of the bones during the cleaning stage and we didn’t know of any auto-magical AI tools that would do it in an instant, we needed to reiterate the approach. Again.</p><h3>Step 02</h3><p>Compared to the initial calibration test, in the second experiment we were using a larger distance (5 steps instead of 3) and the same camera: 10MP 1/3.52″ sensor, 1.12 μm pixels, f/2.4-aperture</p><p>Additionally in this setting we have captured footage with the steps made towards the camera as well as in parallel to it:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/824/1*XOby9nHoJMwdtvnbS0_Chg.png" /><figcaption>We wanted to achieve two things: capture data that is precise enough to get clear poses and make sure to have captured a tleast two steps to have enough movement for a loop.</figcaption></figure><p>In our experiment walking towards the camera resulted in missing data:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/750/1*QZU3JFIyatwa5wY1VryCxg.gif" /><figcaption>Despite taking two steps towards the camera — the fbx contained too little information about the leg movement.</figcaption></figure><p>But luckily the second approach yielded much better results:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/750/1*tLPNrYMSfBgMTNdLkET_Cw.gif" /></figure><h3>Conclusion</h3><p>Creating character animation for games at home using nothing but your phone and free AI tools looks very promising in the final weeks of the year 2023. Of course this is not a recipe to get a AAA quality asset in under 5 minutes… yet. But it is worth noting that the motion-capture technology has recently become much more accessible than ever allowing indie designers to tell their stories even easier than before.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*AvMXWjwz_bOcQWIQUyeUww.png" /></figure><h3>Join the Horde!</h3><p>If you would like to see the animations implemented in the game — follow the development of “Zombie Kebab” on our TikTok account <a href="https://www.tiktok.com/@zombiekebab">https://www.tiktok.com/@zombiekebab</a> and in case you would like to get the early access to our game, please feel free to <a href="https://forms.gle/W4D2TSsNgHwBZcr49">contact us via this form</a>.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=f45d924a408b" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Zombie Kebab VR: Where Urban Nightlife Meets Zombie Apocalypse]]></title>
            <link>https://medium.com/@mdzikowski/zombie-kebab-vr-where-urban-nightlife-meets-zombie-apocalypse-c02e9a9a3a10?source=rss-1c34d2fa3864------2</link>
            <guid isPermaLink="false">https://medium.com/p/c02e9a9a3a10</guid>
            <category><![CDATA[indie-game]]></category>
            <category><![CDATA[virtual-reality]]></category>
            <category><![CDATA[technology]]></category>
            <category><![CDATA[gaming]]></category>
            <category><![CDATA[community-engagement]]></category>
            <dc:creator><![CDATA[Mateusz Dzikowski]]></dc:creator>
            <pubDate>Sun, 03 Dec 2023 17:00:05 GMT</pubDate>
            <atom:updated>2026-08-10T15:01:30.407Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Sk77__QYlCBtZPf2qzbquw.png" /></figure><h3>A Viral Sensation Capturing the Heart of the City’s Late-Night Charm</h3><p>In a world where indie games often struggle to make a mark, “Zombie Kebab VR” stands out as a viral phenomenon. We’re focusing on the vibrant, sometimes chaotic energy of city life at 4 AM, reimagined in a post-apocalyptic world. Our TikTok video unveiling pre-alpha footage captured a staggering 1 million views just a couple of days after posting it, with reposts on instagram YT and vk with the most notable coverage from <a href="https://www.instagram.com/make_life_harder/">@makelifeharder</a>. (total organic reach estimated 50M views in 30 days).</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/253/1*_ka731ocrL8MvzoEwre2_A.gif" /></figure><p><a href="https://www.tiktok.com/@zombiekebab/video/7295935810728119584">https://www.tiktok.com/@zombiekebab/video/7295935810728119584</a></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*-SwsIbltCyh7-BSg0AwIXA.png" /></figure><h3>The Power of Players’ Imagination</h3><p>Players have enthusiastically related “Zombie Kebab VR” to real-life hardcore urban experiences:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/913/1*ft3benRf-6yIsVtkpZtELQ.png" /></figure><p>Cities like Paris, Berlin, Manchester, Ankara, New York, Vancouver and many others were mentioned, reflecting the game’s universal appeal. This connection brings a sense of familiarity and humor to the zombie survival genre, turning the act of serving shoarma (a.k.a. “Döner”, “gyros”, “taco al pastor”) in the midst of a post-apocalyptic chaos into a relatable fantasy.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/903/1*K05-FOcdKIrxBvJu2zewWQ.png" /></figure><p>One of the most heartwarming aspects of this journey has been the comments from our community. Phrases like “Game of the Year” have popped up more often than we could have ever imagined. While we’re flattered by such high praise, we see it as a reflection of the fun and excitement we aim to deliver through “Zombie Kebab VR.” It’s a reminder of the humble promise we make with this game to the gaming world.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*mt50os6cE8fd9sTtR525cg.png" /></figure><p>As a small indie team driven by passion and creativity, we are thrilled by the positive reception of “Zombie Kebab VR.</p><blockquote>This game is more than just an entertainment piece; it’s a vivid demonstration of how a unique idea can resonate with a global audience.</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/999/1*C08SGl-G9Sy53lEWyFBcbA.png" /></figure><h3>Join the Horde: Open Beta Coming Soon!</h3><p>We’re excited to take this journey to the next level and invite you to be a part of it. <strong>The open beta for “Zombie Kebab VR” is just around the corner</strong>, and we encourage you to sign up via our <a href="https://forms.gle/W4D2TSsNgHwBZcr49">Google Form</a> to stay updated. This is your chance to be among the first to experience this one-of-a-kind VR adventure, a game that’s as much about community feedback and engagement as it is about immersive gameplay.</p><h3>Stay Connected</h3><p>Don’t miss out on the latest from “Zombie Kebab VR” — <a href="https://www.tiktok.com/@zombiekebab">follow us on TikTok</a>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*GZ1_j1YNmhZZApOuJQeY3A.png" /></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=c02e9a9a3a10" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AI Basics for Game Designers: Understanding the McCulloch-Pitts Neuron]]></title>
            <link>https://medium.com/@mdzikowski/ai-basics-for-game-designers-understanding-the-mcculloch-pitts-neuron-c98e63bf603e?source=rss-1c34d2fa3864------2</link>
            <guid isPermaLink="false">https://medium.com/p/c98e63bf603e</guid>
            <category><![CDATA[python]]></category>
            <category><![CDATA[ai]]></category>
            <category><![CDATA[neural-networks]]></category>
            <category><![CDATA[game-development]]></category>
            <category><![CDATA[game-design]]></category>
            <dc:creator><![CDATA[Mateusz Dzikowski]]></dc:creator>
            <pubDate>Fri, 21 Apr 2023 02:42:10 GMT</pubDate>
            <atom:updated>2024-01-20T16:41:47.948Z</atom:updated>
            <content:encoded><![CDATA[<p>As a game designer, you might have heard of AI tools like ChatGPT, Midjourney, or Stable Diffusion but might not fully understand how machine learning, neural networks, and other AI concepts work. In this series, we’ll explore various AI concepts that game designers can benefit from, including Decision Trees, State Machines, Behavior Trees, Pathfinding, <a href="https://medium.com/@mdzikowski/from-philosophy-to-markov-chains-a-journey-through-probability-in-game-design-bf95d19a0e12">Markov Chains</a>, Reinforcement Learning, Naive Bayes Classifiers, Procedural Generation, Minmaxing, and Monte Carlo Tree Search.</p><p>To kick off the series, let’s start with the foundation of neural networks:</p><h3>The McCulloch-Pitts Neuron. A Simple Building Block</h3><p>The idea behind the designers of the first computer neural networks was to use an element that takes some basic unit of data, modifies it, and then passes it on. When many such elements are combined, networks are formed that modify the input data in some specific way.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/718/1*gRywrNSwDttKjwzPfDB9dg.png" /><figcaption>Nerve cells and artificial neurons process inputs and produce outputs based on activation thresholds. Natural neurons fire impulses, while artificial neurons compute weighted sums.</figcaption></figure><h4>Demystifying the Mathematical Symbols</h4><p>The mathematical equation for the McCulloch-Pitts neuron might seem a bit overwhelming at first. But fear not! We’ll break down these math symbols into simpler components and make it more approachable.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/528/1*akdOLiJOqVcKUJ-Q9PQjaw.png" /><figcaption>A for-loop is a way to repeat an operation a specific number of times. In this case, the for-loop goes through each input value (x) and its corresponding weight (w), multiplies them, and accumulates the products</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/413/1*3cVotpWoHbZWIccKGXNP3w.png" /></figure><blockquote>s = Σ(xᵢ * wᵢ) for i=1 to n</blockquote><p>Let’s decipher each symbol:</p><ul><li>s: The weighted sum of the inputs. We need the result to use it in the activation function f(s). We&#39;ll compare this value to a threshold to see if the neuron &quot;fires&quot; (outputs y=1) or stays inactive (outputs y=0).</li><li>Σ: Sigma, the uppercase Greek letter. It means that we’ll be <strong>summing up</strong> the products of the input values (xᵢ) and their corresponding weights (wᵢ) for all inputs in the range specified.</li><li>xᵢ : This is the input value at position i.</li><li>wᵢ : The weight associated with the input value at position i.</li><li>i=1 to n: This sets the range of the summation, where i starts at 1 and goes up to n.</li></ul><p>In simpler terms, the equation calculates the weighted sum s by multiplying each input value xᵢ by its corresponding weight wᵢ . The resulting weighted sum s is then used in the activation function f(s) to determine the output of the neuron (y) by comparing it to the threshold.</p><p>Here’s an example of how this equation could be applied to a neuron with 3 inputs (n = 3):</p><blockquote>inputs = [x₁, x₂, x₃]<br>weights = [w₁, w₂, w₃]<br>s = (x₁ * w₁) + (x₂ * w₂) + … (xₙ * wₙ)</blockquote><h4>Neurons in a spreadsheet</h4><p>As game designers, you might spend a lot of time balancing games in tools like Microsoft Excel or Google Sheets. So, let’s make the weighted sum calculation a bit more relatable:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/712/1*2h7xlHt5beMY0KP5-Lv7Ew.png" /><figcaption>We could compute the weighted sum using =SUMPRODUCT(X1:X3, W1:W3). In this example we’re using named ranges : “inputs” , “weights” and “weighted_sum” No hieroglyphs required!</figcaption></figure><p>Now that we have our weighted sum, let’s apply the activation function and threshold in Google Sheets to determine the output of the neuron.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/798/1*fGTUW8Lk8cVJ0d3Js4ff_Q.png" /><figcaption>using the ‘=IF(weighted_sum &gt;= threshold, 1, 0)’ formula, we compare the weighted sum to the threshold and calculate the neuron’s output — it’s that simple!</figcaption></figure><p>For those of you who might be curious about the inner workings of the weighted sum, we can explore it in more detail using some Python code to visualize the concept. Don’t worry if you’re not a coder; this is just to help clarify the idea.</p><h4>Calculating the weighted sum using Python’s list comprehensions</h4><pre>def mcculloch_pitts_neuron(inputs, weights, threshold):<br> <br>    # Compute the weighted sum of the inputs<br>    weighted_sum = sum([input_val * weight for input_val, weight in zip(inputs, weights)])<br>    <br>    # Apply the threshold function<br>    return 1 if weighted_sum &gt;= threshold else 0<br><br># Example usage<br>inputs = [1, 0, 1]<br>weights = [1, -1, 1]<br>threshold = 2<br><br>output = mcculloch_pitts_neuron(inputs, weights, threshold)<br>print(f&quot;The output of the McCulloch-Pitts neuron is: {output}&quot;)</pre><p>This code defines a mcculloch_pitts_neuron function that takes binary input values (0 or 1), weights corresponding to the input values, and a threshold as input arguments. It computes the weighted sum of the inputs and returns the output (0 or 1) based on whether the weighted sum is greater than or equal to the threshold. In the example provided, the neuron&#39;s output will be 1.</p><p>The key part of this implementation is calculating the weighted sum of the inputs. This piece of code does the job:</p><pre>sum([input_val * weight for input_val, weight in zip(inputs, weights)])</pre><p>Here’s how it works:</p><ol><li>zip(inputs, weights) combines the inputs and weights lists element-wise into pairs, creating an iterable of tuples:<br>[(1, 1), (0, -1), (1, 1)]</li><li>The list comprehension [input_val * weight for input_val, weight in zip(inputs, weights)] multiplies each input value with its corresponding weight and creates a new list.<br>[1 * 1, 0 * (-1), 1 * 1] = [1, 0, 1]</li><li>sum() calculates the sum of the elements in the list, which represents the weighted sum of the inputs.<br>1 + 0 + 1 = 2</li><li>finally, the binary threshold function return 1 if weighted_sum &gt;= threshold else 0 returns 1 if the weighted_sum is greater than or equal to the threshold, and returns 0 otherwise.</li></ol><p>⚠️ <strong>REMARK:</strong> This is a simple way to calculate the weighted sum using Python&#39;s list comprehensions and built-in functions. It works well for small to moderately-sized datasets. However, for larger datasets, using a more optimized approach, such as NumPy, would be more efficient and faster in processing large arrays of data. Here&#39;s an example:</p><pre>import numpy as np<br><br>inputs = np.array([...])<br>weights = np.array([...])<br><br>weighted_sum = np.dot(inputs, weights)</pre><p>Both methods will have a linear time complexity O(n), but the NumPy version is likely to be faster in practice due to the optimized implementation of the dot function, which takes advantage of low-level optimizations and the efficiency of the underlying C/C++ code especially when dealing with large datasets.</p><h3>🎮Using a McCulloch-Pitts neuron to model decision-making processes</h3><p>Now that we have a good understanding of the weighted sum, let’s take it a step further and see how we can use it in our game.</p><p>Imagine you’re designing a game character that can perform an action only when certain conditions are met. For example, a character might attack if it has enough energy and is close to a target.</p><p>Consider two binary inputs:</p><ol><li>Energy Status (1 if the character has enough energy, 0 if not)</li><li>Proximity Status (1 if the character is close enough to the target, 0 if not)</li></ol><p>We can model this decision-making process using a McCulloch-Pitts neuron with these inputs, assigning each input a weight of 1. We’ll set the threshold value to 2, which means the neuron will activate only when the sum of the inputs, multiplied by their weights, is equal to or greater than the threshold.</p><p>Here’s the implementation of this decision-making process:</p><pre>def should_attack(energy_status, proximity_status):<br>    inputs = [energy_status, proximity_status]<br>    weights = [1, 1]<br>    threshold = 2<br><br>    return mcculloch_pitts_neuron(inputs, weights, threshold)<br><br># Example usage<br>energy_status = 1  # Character has enough energy<br>proximity_status = 1  # Character is close enough to the target<br><br>if should_attack(energy_status, proximity_status):<br>    print(&quot;The character will attack!&quot;)<br>else:<br>    print(&quot;The character will not attack.&quot;)<br></pre><p>Some of you may notice that in this specific example, the McCulloch-Pitts neuron essentially behaves like an AND gate, where both conditions need to be met for the neuron to activate.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/491/1*csjgk4o5qWwqX5YXmANFpg.png" /></figure><p>However, by adjusting the weights and threshold, you can create more complex decision-making processes that incorporate different levels of importance for each condition.</p><p>For instance, consider a scenario where a character should be more likely to attack if they have enough energy, but proximity to the target is a less important factor. In this case, you could assign a higher weight to the energy status input and a lower weight to the proximity status input.</p><p>To achieve this, we need to assign weights to each input that reflect their importance in the decision-making process. There are several ways to find the best weights: trial-and-error, experimenting with different values, or using machine learning techniques, but while a single McCulloch-Pitts neuron can only represent simple binary decisions, a <strong>neural network</strong> can learn complex patterns and relationships by connecting multiple neurons together.</p><h4>Creating a neural network</h4><p>Creating a neural network from neurons like the McCulloch-Pitts model involves connecting multiple neurons together in layers, where the output of one neuron serves as input to another neuron. Neural networks can learn to make decisions and adapt their behavior based on experience by adjusting the weights of the connections between neurons.</p><p>However, the McCulloch-Pitts neuron model is quite simplistic, with binary inputs and outputs, and no built-in learning mechanism. Modern neural networks typically use more advanced neuron models, like the perceptron or the artificial neuron with a continuous activation function (e.g., sigmoid or ReLU).</p><p>To create and train a neural network in a game context, you would typically follow these steps:</p><ol><li><strong>Define the network architecture</strong>: Design the structure of the neural network, including the number of layers and the number of neurons in each layer. The input layer should have as many neurons as there are input features (e.g., character health, distance to target), while the output layer should have as many neurons as there are possible actions or decisions to make (e.g., attack, defend, retreat).</li><li><strong>Initialize the weights</strong>: Assign random initial values to the weights of the connections between neurons. These values will be adjusted during the training process.</li><li><strong>Define the learning algorithm</strong>: Choose a learning algorithm to update the weights of the connections based on the error between the network’s output and the desired output. Common learning algorithms include gradient descent, backpropagation, and various optimization techniques like stochastic gradient descent, Adam, and RMSprop.</li><li><strong>Collect training data</strong>: Gather a dataset of game states and the corresponding correct actions or decisions. This data can be collected from expert gameplay, human demonstrations, or generated through reinforcement learning techniques.</li><li><strong>Train the network</strong>: Feed the training data into the network, calculate the error between the network’s output and the desired output, and update the weights using the chosen learning algorithm. Repeat this process for multiple iterations (epochs) until the network converges to a satisfactory performance level.</li><li><strong>Evaluate and fine-tune</strong>: Test the network’s performance on new, unseen game states to ensure it generalizes well. If necessary, fine-tune the network by adjusting its architecture, learning algorithm, or training data.</li><li><strong>Integrate the trained network into the game</strong>: Once the network is trained and performs well, integrate it into your game as part of the character’s AI, where it can make decisions based on the game state.</li></ol><h3>Conclusion</h3><p>In this article, we’ve explored the foundational concept of the McCulloch-Pitts neuron, which forms the basis of neural networks. We’ve learned how these simple binary threshold models can be used to represent decision-making processes in game characters. We’ve also delved into the mathematics behind weighted sums and activation functions, and demonstrated how to implement these concepts using Python and Google Sheets.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=c98e63bf603e" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>