<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://frankgoyens.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://frankgoyens.github.io/" rel="alternate" type="text/html" /><updated>2026-08-18T17:28:37+00:00</updated><id>https://frankgoyens.github.io/feed.xml</id><title type="html">Frank Goyens’ personal website</title><subtitle>Launchpad of my personal projects.</subtitle><entry><title type="html">Colorful game: on Danger Zones’ latest update and evolution</title><link href="https://frankgoyens.github.io/2024/07/15/colorful-game-on-danger-zones-latest-update-and-evolution.html" rel="alternate" type="text/html" title="Colorful game: on Danger Zones’ latest update and evolution" /><published>2024-07-15T19:12:00+00:00</published><updated>2024-07-15T19:12:00+00:00</updated><id>https://frankgoyens.github.io/2024/07/15/colorful-game-on-danger-zones-latest-update-and-evolution</id><content type="html" xml:base="https://frankgoyens.github.io/2024/07/15/colorful-game-on-danger-zones-latest-update-and-evolution.html"><![CDATA[<p>This post is hosted on an external website, click <a href="https://dangerzonesgame.com/2024/07/09/colorful-game-on-danger-zones-latest-update-and-evolution/">here</a> to view it!</p>]]></content><author><name></name></author><summary type="html"><![CDATA[This post is hosted on an external website, click here to view it!]]></summary></entry><entry><title type="html">Mobile game like a retro handheld game: a Danger Zones study</title><link href="https://frankgoyens.github.io/2024/06/10/design-direction-danger-zones.html" rel="alternate" type="text/html" title="Mobile game like a retro handheld game: a Danger Zones study" /><published>2024-06-10T19:12:00+00:00</published><updated>2024-06-10T19:12:00+00:00</updated><id>https://frankgoyens.github.io/2024/06/10/design-direction-danger-zones</id><content type="html" xml:base="https://frankgoyens.github.io/2024/06/10/design-direction-danger-zones.html"><![CDATA[<p>This post is hosted on an external website, click <a href="https://dangerzonesgame.com/2024/06/10/design-direction-danger-zones-anomaly-imagined-as-a-handheld-console-game/">here</a> to view it!</p>]]></content><author><name></name></author><summary type="html"><![CDATA[This post is hosted on an external website, click here to view it!]]></summary></entry><entry><title type="html">My experience with game jams</title><link href="https://frankgoyens.github.io/gamedev/2024/05/10/my_experience_with_game_jams.html" rel="alternate" type="text/html" title="My experience with game jams" /><published>2024-05-10T09:30:00+00:00</published><updated>2024-05-10T09:30:00+00:00</updated><id>https://frankgoyens.github.io/gamedev/2024/05/10/my_experience_with_game_jams</id><content type="html" xml:base="https://frankgoyens.github.io/gamedev/2024/05/10/my_experience_with_game_jams.html"><![CDATA[<p>When I was a student working for my bachelor’s degree I participated in
game jam events a few times. It all started when a classmate suggested
checking out presentations by industry veterans at C-Mine in Genk. These
talks were part of the Global Game Jam event, where teams create a game
in just 48 hours.</p>

<h1 id="global-game-jam-2014">Global Game Jam 2014</h1>

<p>I went for the presentations and stayed for the jam, it was decided in
the spur of the moment. The atmosphere was infectious, filled with
camaraderie and creativity, making it an easy choice for me to jump in.</p>

<p>As the event kicked off, a theme is revealed, around which participants
make their game. On our jamsite, teams are divided by first letting
everyone brainstorm game ideas around the theme, then everyone decides
which idea they like the best, at which point participants are grouped
by their preferred idea. Around the theme "We don't see things as they
are, we see them as we are", someone at our jamsite came up with the
idea: “the protagonist is an evil entity that has grown remorseful and
wants to kill themselves, this is not easy however, them being very
powerful”, <em>I wonder what that person was going through at the time</em>.
Many participants liked the idea, so much that two groups were formed
from that idea, one of which I was a member, and there were about 6
groups in total. Each group had about 5-6 members.</p>

<p>And so began the jam, we started coordinating our efforts, took breaks
by playing some games (the jamsite featured a PS2 where you could play
Simpsons: Hit and Run, and a PS4 where you could play Don’t Starve), we
helped ourselves to complimentary soda and water, we were jamming
alright.</p>

<p>When the first day came to an end some people retired to the sleeping
area, but not me, I decided to work through the night along with one or
two other team members. This was a regretful decision, I was almost
completely useless the next day, at least I got most of the work done
during nighttime.</p>

<p>Then came the conclusion of the jam, the time had run out, and now it
was time to present our game to the on-site judges. Our game was OK
considering the team consisted of only beginners, I’m not sure exactly
what place we ended up in, I think we were second to last out of the six
on-site teams. We learned and had fun at least.</p>

<p><img src="/assets/img/my_experience_with_game_jams/image1.jpeg" alt="My team for Global Game Jam 2014" /><em>My team for Global Game Jam 2014</em></p>

<p><a href="https://v3.globalgamejam.org/2014/games/demons-remorse">https://v3.globalgamejam.org/2014/games/demons-remorse</a></p>

<h1 id="ludum-dare-30">Ludum Dare 30</h1>

<p>Global Game Jam 2014 was such a nice experience I decided to also
participate in that year’s Ludum Dare in August 2014 as well. This event
is a little different, participation isn’t on-site but through their web
portal, you could enter in the 72 hour ‘jam’ with a team, or the 48 hour
‘compo’ as a solo developer. I decided to enter the compo as a solo
developer. What wasn’t different is the usage of a theme that is
revealed at the start of the event, the theme for this jam was
“connected worlds”.</p>

<p>When participating solo there is much less coordination involved, you
just start working on your game. It also didn’t take very long to come
up with an idea for a game that would fit the theme. But that doesn’t
make up for the fact that you also have to make the game look decent by
yourself, I was only a programmer at that point so it was a challenge to
say the least. I realised this early on and decided to focus on the
gameplay, my reasoning being that spending time on making the game look
decent would drain too much time and there was no guarantee I would even
succeed.</p>

<p>After toiling on my game for 48 hours, “Danger Zones” had been
manifested. I was proud of the result, the game wasn’t much to look at,
but the gameplay was decent, which is also generally what fellow
participants posted as their feedback. And as you might already know, I
continued working on “Danger Zones” after the event, so LD30 helped me
start on an actual game that I would later release. You can find out
more about the status of “Danger Zones” on its website:
<a href="https://dangerzonesgame.com/">https://dangerzonesgame.com</a>.</p>

<p>A while ago I went to find the entry page for “Danger Zones” because I
wanted to see it again, I managed to find it and also wrote a blogpost
about it on the “Danger Zones” website, go ahead and take a look:
<img src="/assets/img/my_experience_with_game_jams/image2.png" alt="Screenshot of Danger Zones' entry page on the old Ludum Dare website" /><em>Screenshot of Danger Zones’ entry page on the old Ludum Dare website</em></p>

<p><a href="https://dangerzonesgame.com/2024/04/12/danger-zones-entry-page-of-ld30/">https://dangerzonesgame.com/2024/04/12/danger-zones-entry-page-of-ld30/</a></p>

<h1 id="global-game-jam-2015">Global Game Jam 2015</h1>

<p>Round 2 baby! I was excited to participate in another Global Game Jam,
last year’s edition was a good time. So you know the drill, when the
theme is revealed, ideas are brainstormed and groups are formed. This
year the theme was “What do we do now?”, my group was formed around the
idea: “A defunct family’s internet connection goes down, so now they
have to interact with each other somehow”. The working title was quickly
decided upon: “Fucking Telenet” (Telenet is a Belgian telecom provider).</p>

<p>And off we went, the jam was on. Things went more smoothly this time
around, my team members weren’t beginners in the field of game design,
and I was a half decent programmer with some Unity experience, albeit
the only programmer in the team. What soon became apparent is that this
team operated on a higher level than last year’s team, I was stoked.</p>

<p>One problem we had was that our idea was too open ended “they (the
family) have to interact with each other somehow”, it took some time to
figure out what that actually meant. Eventually we decided to let the
player find specific objects to bring to family members around the
family’s house.</p>

<p><img src="/assets/img/my_experience_with_game_jams/image3.png" alt="Concept art of my team's game:&quot;Fucking Telenet&quot;" /><em>Concept art of my team’s game:"Connection lost" AKA "Fucking Telenet"</em></p>

<p>Aside from that things went pretty well,
the site coordinators took notice that we were further along with our
game than other groups and asked if we could record some gameplay for
the local news, we happily obliged. I can still find some articles about
our GGJ 2015 jamsite, but not the news broadcast, I did however find the
video that we submitted (for some reason it stutters a bit).</p>

<video width="320" height="240" controls="">
  <source src="/assets/vid/connection_lost_gameplay.webm" type="video/webm" />
</video>

<p><a href="https://www.hln.be/genk/limburgs-spel-over-internetverslaving-wint-global-game-jam~ac017e96/">Limburgs spel over internetverslaving wint Global Game Jam - Het Laatste Nieuws (dutch)</a></p>

<p><a href="https://www.4gamers.be/nieuws/42615/1/Global-Game-Jam-2015-leverde-meer-dan-5000-games-op">Global Game Jam 2015 leverde meer dan 5000 games op - 4Gamers (dutch)</a></p>

<p>This time I made sure to get a good night’s sleep in order to still be
useful the second day, last year I stayed up all night thinking I would
get more work done, but being sleep deprived while still having to
develop part of a game sucks. Needless to say that getting some sleep
yielded a much better experience.</p>

<p><img src="/assets/img/my_experience_with_game_jams/image4.jpeg" alt="My team working hard during the Global Game Jam 2015 session" /><em>My team working hard during the Global Game Jam 2015 session</em></p>

<p><a href="https://v3.globalgamejam.org/2015/games/connection-lost">https://v3.globalgamejam.org/2015/games/connection-lost</a></p>

<p>The jam ran its course and now it’s judgement time. We were happy with
our result, except the 3D environment modeler, his PC had crashed while
rendering the static lighting for the scene, and now we had to use the
low resolution static lighting texture which looked pixelated (the
render would’ve taken at least half a day). But it didn’t matter, the
judges were enamoured with our combination of 2D characters and 3D
environment and crowned “Connection Lost” the winner of our jamsite!
Winner winner chicken dinner 🏆, there were some challenges but things
worked out, we had a blast.</p>

<h1 id="in-conclusion">In conclusion</h1>

<p>All three jams I participated in were a fun and rewarding experience, I
highly recommend participating if you are passionate about game
development, no matter what aspect. The in-person on-site events are the
best in my opinion, you can rely on team members for the stuff you can’t
do yourself, maybe even contact them later on to work together on
something else. This is what I did, but not much came of it because my
game development journey got sidetracked in favour of my programming
career, but that’s a story for another time.</p>

<h2 id="many-years-later">Many years later…</h2>

<p>Game development will always be something I like doing, in the meantime
I have been learning how to make my own game assets as well, and I have
been applying that skill to work on my debut game “Danger Zones”, it
currently looks much better since its creation during LD30.
Participating in game jams might not always start a dedicated game
developer career, but it will lower the threshold for anything game dev
related you will do later.</p>]]></content><author><name></name></author><category term="gamedev" /><summary type="html"><![CDATA[When I was a student working for my bachelor’s degree I participated in game jam events a few times. It all started when a classmate suggested checking out presentations by industry veterans at C-Mine in Genk. These talks were part of the Global Game Jam event, where teams create a game in just 48 hours.]]></summary></entry><entry><title type="html">Trip down memory lane: Danger Zones’ entry page of LD30</title><link href="https://frankgoyens.github.io/2024/04/12/trip-down-memory-lane.html" rel="alternate" type="text/html" title="Trip down memory lane: Danger Zones’ entry page of LD30" /><published>2024-04-12T19:12:00+00:00</published><updated>2024-04-12T19:12:00+00:00</updated><id>https://frankgoyens.github.io/2024/04/12/trip-down-memory-lane</id><content type="html" xml:base="https://frankgoyens.github.io/2024/04/12/trip-down-memory-lane.html"><![CDATA[<p>This post is hosted on an external website, click <a href="https://dangerzonesgame.com/2024/04/12/danger-zones-entry-page-of-ld30/">here</a> to view it!</p>]]></content><author><name></name></author><summary type="html"><![CDATA[This post is hosted on an external website, click here to view it!]]></summary></entry><entry><title type="html">Flutter is a nice framework</title><link href="https://frankgoyens.github.io/appdev/2023/06/02/flutter_is_a_nice_framework.html" rel="alternate" type="text/html" title="Flutter is a nice framework" /><published>2023-06-02T20:20:00+00:00</published><updated>2023-06-02T20:20:00+00:00</updated><id>https://frankgoyens.github.io/appdev/2023/06/02/flutter_is_a_nice_framework</id><content type="html" xml:base="https://frankgoyens.github.io/appdev/2023/06/02/flutter_is_a_nice_framework.html"><![CDATA[<p style="text-align: center;"><img src="/assets/img/robofish_flutter_like.png" alt="Robofish expressing approval for the Flutter framework" /></p>

<p>Flutter is a framework that can be used to build cross platform apps. I’ve recently learned how to use it to make my app: “Reading Parrot Jacky”.</p>

<p>Flutter can be used for desktop apps and websites as well, but up until now I’ve used it to develop for Android and iOS. These are my experiences.</p>

<h2 id="frameworks-that-i-used-before">Frameworks that I used before</h2>
<p>Before I chose to use Flutter for my next project there were the usual doubts. I am already familiar with Cordova and Xamarin. It has been a while since I made a mobile app. I completely missed the rise of ReactNative. And now there are even more modern options outside of ReactNative.</p>

<p>So would I use a familiar framework? Try something new? Ionic is similar to the familiar Cordova. I heard good things about ReactNative. And also there is something called Flutter now?</p>

<p>I chose Flutter. It seemed a good idea to learn something new, to see what a newer framework has to offer compared to exising ones.</p>

<p>The choice wasn’t easy, it came down to a tie breaker. I eventually opted for Flutter because it “features” a strongly typed programming language. (I put <em>features</em> in quotes because some developers would prefer otherwise.)</p>

<h2 id="flutter-hello-world">Flutter hello world</h2>
<p>The app that I decided to make plays a sound effect based on what you read. You would use the app while reading to your children, You may have heard of it already.</p>

<p>But first I made a “hello world” app with just one button and a text field showing a counter.</p>

<p>When you start a new Flutter project you get one <em>main.dart</em> file, along with some project files like Gradle build scripts. Dart is the programming language used to make Flutter apps. More on that later.</p>

<p>In <em>main.dart</em> there are three elements:</p>

<ul>
  <li>A main function. This is already a good impression on my part. Having a simple main function even though it’s a mobile app. Because why not?</li>
  <li>A “MyApp” class representing a <em>Stateless Widget</em>. Every GUI element is a widget in Flutter, so the top-level app is one as well.</li>
  <li>A Stateful Widget called “ReadingParrot” in my case. A stateful widget is always paired with for instance a <em>_ReadingParrotState</em> class. It is a stateful widget because it changes its look and behavior according to the values in its state.</li>
</ul>

<p>Using Flutter’s <em>getting started</em> documentation, setting up a hello world app was a smooth process.</p>

<h2 id="making-the-reading-parrot-gui">Making the Reading Parrot GUI</h2>
<p>I had already designed the GUI, now I wanted to implement it in Flutter.</p>

<p style="text-align: center;"><img src="/assets/img/reading_parrot_sneakpeak.jpg" alt="An early screenshot of the Reading Parrot app" /></p>

<p>Here’s another great advantage of Flutter in my opinion: the GUI and the back-end logic are both in the same language: Dart. All within the same file even, if you want to.</p>

<p>You declare a GUI in Dart, which is a nested variable declaration. Variables would be of type <code class="language-plaintext highlighter-rouge">Row</code> or <code class="language-plaintext highlighter-rouge">Column</code> for layout-ing, <code class="language-plaintext highlighter-rouge">Button</code>, <code class="language-plaintext highlighter-rouge">Text</code>, <code class="language-plaintext highlighter-rouge">Icon</code>,… And when you instantiate a button object, you register Dart closures to its “on call” property to add behaviour.</p>

<p>Nesting variables to build a GUI gives an impression that it wouldn’t scale well. There is a nice solution for this: put GUI building code in their own separate functions, <em>duh</em>. In all seriousness though, in practice, nesting more and more variables as the GUI becomes more complex could get out of hand. My tip here is to make a separate functions as soon as possible, refactoring later on is rarely done. (This can be applied to any software project if you ask me.)</p>

<p>A small gripe to balance these impressions: setting margins doesn’t seem very intuitive. You would often add margins and padding to containers. The <code class="language-plaintext highlighter-rouge">Container</code> widget has a <code class="language-plaintext highlighter-rouge">margin</code> field, but you don’t simply enter numeric values therein, you have to instantiate an <code class="language-plaintext highlighter-rouge">EdgeInsets</code> object. <code class="language-plaintext highlighter-rouge">EdgeInsets</code>’s name doesn’t really indicate “use this for padding and margins”. There are more examples like that, but nothing couldn’t be solved with a quick Google search.</p>

<h2 id="plugins">Plugins!</h2>
<p>What’s a good framework without plugins? Even Cordova has them.</p>

<p>Plugins allow certain things to be used in a platform independant way, you would prefer to not write any code for a specific platform.</p>

<p>My reading parrot app would need:</p>
<ul>
  <li>Speech recognition. There is a plugin ✅.</li>
  <li>Audio playback: There is a plugin ✅.</li>
  <li>Internet connectivity checks: There is a plugin ✅.</li>
</ul>

<p>Installing a plugin can be done using <code class="language-plaintext highlighter-rouge">flutter pub add &lt;plugin&gt;</code>. Or you can add a statement to <em>pubspec.yaml</em> and then run <code class="language-plaintext highlighter-rouge">flutter pub get</code>.</p>

<p>No further comment needed here, the plugins I need are available and they were easy to install.</p>

<h2 id="gui-performance">GUI performance</h2>
<p>A Flutter developer has good control over when there would be a GUI display update.</p>

<p>Remember the stateful widget concept from earlier, when something changes in the corresponding <em>_state</em> object, you must call <code class="language-plaintext highlighter-rouge">setState()</code> to indicate that a frame update is necessary. You <em>must</em> indeed, because otherwise there wouldn’t be changes to what’s displayed. This gives you complete control in that regard, it’s definitely an advantage the way I see it.</p>

<p>Another interesting concept that I needed to apply for my reading parrot app: selectively updating the GUI, i.e. calling <code class="language-plaintext highlighter-rouge">setState()</code> for a subset of the GUI. I want to display the live microphone volume in the GUI, but I don’t want to rebuild the entire GUI for every volume update, of which there are many. Without going into too much detail, this is supported in Flutter.</p>

<p>Flutter GUI profiling is neatly integrated in Android Studio. I managed to confirm that the selective updates, mentioned in the previous paragraph, worked as intended.</p>

<p>Speaking of Android Studio…</p>

<h2 id="flutter-development-in-android-studio">Flutter development in Android Studio</h2>
<p>The Flutter framework is well integrated in Android Studio. These are some of the features:</p>

<ul>
  <li>GUI profiling integration, as mentioned before.</li>
  <li>Hints about Dart conventions, which can be applied automatically in most cases. This is a tremendous help to cultivate good habits for a beginner.</li>
  <li>A hot-reload/hot-restart button. This is a great feature of Flutter in general, applying changes to dart code takes milliseconds to sync with an actual Android device.</li>
</ul>

<p>It’s almost boring, <em>almost</em>. But I have no further comments on this. Flutter development in Android Studio is going well for me.</p>

<h2 id="the-dart-language">The Dart language</h2>

<p style="text-align: center;"><img src="/assets/img/logo_lockup_dart_horizontal.png" alt="The Dart programming language logo" /></p>

<p>Dart is a single-threaded, asynchronous, strongly-typed language. It being single threaded keeps things simple, while the asynchronous aspect (it has async/await mechanisms) makes it easy to prevent blocking the GUI rendering for longer background tasks.</p>

<p>Here are some technical details about the language:</p>
<ul>
  <li>It is a strongly typed language, which makes development less error prone. There is also type deduction, you can just type <code class="language-plaintext highlighter-rouge">final x = calcX()</code> for instance.</li>
  <li>It supports runtime and static constants, both are checked during compilation.</li>
  <li>Dart handles null safety nicely. You can declare a type nullable and you must do a check before using the object, otherwise you get a compiler error. When you check whether a variable is null it is often automatically “promoted” into a non-nullable type.</li>
</ul>

<p>It doesn’t have any new concepts compared to existing languages as far as I can tell though. Dart is a decent language nonetheless. But I find it strange that a framework would be built upon a lesser known programming language, one that is conceptually the same as other languages at surface level. That surely heightens the learning curve, you must learn both a framework and a language, because the Dart language is almost exclusively used for Flutter. But a programming language is just a tool at the end of the day.</p>

<p>The Flutter FAQ explains <a href="https://docs.flutter.dev/resources/faq#why-did-flutter-choose-to-use-dart">why it chose to use Dart</a>. The criteria listed don’t seem to include whether the language is already used by many, they are more about the technical merit of the language itself.</p>

<p>From my experience: Dart reminds me of Kotlin in many ways. Dart comes off as “Kotlin light” the way I see it. If you have experience with Kotlin, that will likely transfer somewhat to Dart.</p>

<h2 id="in-conclusion">In conclusion</h2>
<p>I would recommend Flutter if someone is looking for a new framework to learn.</p>

<p>Compared to the frameworks that I already knew, it offers simplicity by letting the developer create the GUI and behaviour all in the same language. It also offers modern features like hot-reload/hot-restart.</p>

<p>That being said, learning both a new framework and programming language can be daunting. For me it was worth learning nonetheless. I managed to make a nice app using it, if I do say so myself.</p>

<p>Besides, it could be used for web and desktop as well. Learning this framework offers many possibilities.</p>

<p>Thank you for reading about my thoughts and impressions on the Flutter framework. I hope it proves helpful to you!</p>]]></content><author><name></name></author><category term="appdev" /><summary type="html"><![CDATA[]]></summary></entry><entry><title type="html">Announcing “Reading Parrot” mobile app</title><link href="https://frankgoyens.github.io/appdev/2023/01/08/announcing_reading_parrot.html" rel="alternate" type="text/html" title="Announcing “Reading Parrot” mobile app" /><published>2023-01-08T20:20:00+00:00</published><updated>2023-01-08T20:20:00+00:00</updated><id>https://frankgoyens.github.io/appdev/2023/01/08/announcing_reading_parrot</id><content type="html" xml:base="https://frankgoyens.github.io/appdev/2023/01/08/announcing_reading_parrot.html"><![CDATA[<h1 id="announcing-my-new-reading-parrot-mobile-app">Announcing my new "Reading Parrot" mobile app!</h1>

<p>I’ve been working on a new app that will make reading stories to your kids more fun.</p>

<p>The gist is that the app plays sound effects while you read. Sound effects like a tiger’s roar, or a bicycle bell, or a police siren,…</p>

<p>I believe that there is a lot of potential, I will be using it myself at the very least. I often read stories to my children. And while they enjoy listening to them, having another way to make it more engaging would be great.</p>

<p>The app will be called “reading parrot” or “voorlees papegaai” in Dutch. The highest priority right now is to make a Dutch version so that I can use it myself when reading to my kids. When I release it on the app store I would’ve added support for English as well.</p>

<p>Speaking of releasing on app stores, initially it will be released for Android. It is likely to be released by the end of January, early February perhaps. A release on iOS will follow shortly after the initial growing pains have settled.</p>

<p>Feel free to contact me if you have questions or other feedback: <a href="support@geeapp.com">support@geeapp.com </a></p>

<p>And here is also a sneak peak to how the app looks, (this might change before the actual release)</p>

<p style="text-align: center;"><img src="/assets/img/reading_parrot_sneakpeak.jpg" alt="An early screenshot of the Reading Parrot app" /></p>]]></content><author><name></name></author><category term="appdev" /><summary type="html"><![CDATA[Announcing my new "Reading Parrot" mobile app!]]></summary></entry><entry><title type="html">Becoming a game asset creator</title><link href="https://frankgoyens.github.io/gamedev/2022/01/12/game-development-journey.html" rel="alternate" type="text/html" title="Becoming a game asset creator" /><published>2022-01-12T11:45:00+00:00</published><updated>2022-01-12T11:45:00+00:00</updated><id>https://frankgoyens.github.io/gamedev/2022/01/12/game-development-journey</id><content type="html" xml:base="https://frankgoyens.github.io/gamedev/2022/01/12/game-development-journey.html"><![CDATA[<h1 id="the-complete-journey-of-a-complete-technical-minded-beginner">The complete journey of a complete, technical minded beginner</h1>
<p>Game making is tough when you can’t make your own assets.</p>

<p>Things like characters, effects, buttons even. It’s near impossible to make games without.</p>

<p>I got interested in programming from playing video games. Now, I like making any type of software, but game making is still something I thoroughly enjoy as a hobby.</p>

<p>The academic path I chose is traditional Computer Science oriented. My specialization therein, Visual Computing, is very much inspired by the initial spark that got me into programming. In short, this is either about rendering (like in games, or like ray-tracing, which is also in games these days). Or about image processing (detecting things in images basically).</p>

<p>From all aspects of game making, programming is by far the most easy, and most enjoyable for me. Alas, generally speaking, that’s  not enough to make a full game.</p>

<p>Before I started my college education (2014) I “finished” my first mobile game called “<a href="https://play.google.com/store/apps/details?id=com.geeapp.dangerzones">Danger Zones</a>”. It is by no means a finished game looking back to it, but back then I though “the gameplay is pretty fun, the graphics don’t look good but that balances out”. If you recognize this way of thinking in yourself I might have some bad news for you. That might be true for games like Minecraft. But that doesn’t apply when the game looks like this:</p>

<p><img src="/assets/img/danger_zones_greybox.png" alt="A screenshot of the not-so-finished game Danger Zones" /></p>

<p>I was nothing short of delusional back then. This is not a complete game, this is a grey-box prototype. As in, the prototype where the graphics are yet to be inserted by the person qualified. I realise this now.</p>

<p>But I don’t want to give up this game. What am I supposed to do now?</p>
<ul>
  <li>I’ve had feedback from friends saying “you should hire someone to overhaul the graphics”. It seems a logical step but isn’t that way too expensive? It is a hobby project after all.</li>
  <li>Maybe use pre-made assets? There are many websites offering game assets for free, or for a reasonable price. I tried it, and it felt a lot like finishing a jigsaw puzzle, using pieces from another jigsaw puzzle. If I wanted to effectively make use of pre-made assets, it would’ve helped to have this in mind from the start.</li>
  <li>Make assets myself. But I am not qualified in the slightest. Learning this could take years. This would be a very useful skill nonetheless. One that I’ve always thought was only for the talented creative people.</li>
</ul>

<h1 id="i-hired-someone-to-make-assets-for-me">I “hired” someone to make assets for me</h1>

<p>I’ve kept pondering this problem as life went on. The first thing I tried was making a post in the Unity forums asking for a designer’s help. And I did find someone! It was very exciting, but there were some red flags that I chose to ignore in my excitement.</p>

<p>I made an estimate for the hours, and in turn the price I was willing to pay. About 200-300 euros, I have no idea whether that was reasonable or not. The designer responded “I expected more actually” but still (somehow?) agreed. I wanted this person to sign a document with this price agreement to avoid any fuss later on. That never happened. I emailed them the document and we never spoke about it again. But the designer still went on to create. I didn’t bother asking about the document any more, I just wanted to get on with finishing the game.</p>

<h2 id="the-first-feedback-session">The first feedback session</h2>

<p>My initial description of, what I would call now, the art direction was: “Objects have to be non existent in the real world, this is meant to speak to the users’ imagination.”. VERY ambitious for a mobile game I know. I’ll admit that this is quite vague. A mistake on my part.</p>

<p>We texted over Skype. They asked me to give some feedback because they had made some things.</p>

<p>I was then shown a machine gun dual wielding monkey-head (the monkey-head from Blender, a default asset of that program) as an idea for the first boss battle. My feedback was not positive. I readjusted my expectations going further.</p>

<p>It ended when after a few weeks, I asked for a status update. And the response was that there were problems with their laptop or something. This was not the first time I got that as an explanation. I did not want to go on working with this person any more. So I told them that I shouldn’t keep delaying my project because of technical difficulties on their part. And with that I ended the cooperation.</p>

<h1 id="determining-an-art-direction-beforehand">Determining an art direction beforehand</h1>

<p>What I learned from that experience was: working with people is expensive and required crystal clear communication skills.</p>

<p>If I were to try this again, I would need a clear art direction at least. You can’t expect someone to just “get it”, that’s not how it works.</p>

<p>I realised later that I didn’t really get it either. By this time I was trying some different colours and shapes in my game, to see if I could make it look better myself. It was simply not improving at all, working on the game became frustrating at this point.</p>

<p>I also tried finding some pre-made assets that would help me. Same story here, you don’t know what to look for unless you have some direction/guidance.</p>

<p>The project went on another hiatus for a couple of years. I yielded because of the conclusion that for the prototype I made, it was too hard to pin down an art style/direction.</p>

<h1 id="learning-to-create-game-assets-from-online-courses">Learning to create game assets from online courses</h1>

<p>At this point (2018) I was working full-time as a junior software engineer. My work ethic was improving. I had some money to spend.</p>

<p>The project still haunted me now and then. I figured why not try and learn to make game assets myself. It’s been years now, what’s a couple more.</p>

<p>To my delight I found out that Udemy had many such courses. And it was around new-years so there were incredible sales going on! Courses worth thousands were going for tens! What a steal! I later realised that Udemy regularly has these sales, so never buy full price on that website would be my advice.</p>

<h2 id="colour-theory">Colour theory</h2>

<p>Nevertheless, I bought some courses. I chose courses about 2/3D art and animation, sound design, colour theory, story telling,…</p>

<p>Over the next couple of months I slowly chipped away at the courses. Surprisingly, the colour theory course was by far the most useful to me. My technical brain finally got a means to decide upon which colours to use! These moments of realization really motivate you to keep going.</p>

<p><img src="/assets/img/colour_theory_gist.png" alt="Colors and their meaning" class="medium-centered-image" /></p>

<p>Essentially, colour theory teaches that colours evoke a certain feeling in people. That might be saying much. But suppose you want to make an asset for a basic enemy. What colour will you choose for it? Probably red right? But like <em>red</em>, red, or scarlet rather? Burgundy maybe? For a technical mind, for mine at least, those decisions are very challenging.</p>

<p>To finish that thought about which colour to choose: Burgundy would be a good choice for a sophisticated, serious enemy. Scarlet would be better suited for a fanatical, berserker kind of enemy.</p>

<h2 id="vector-graphics">Vector graphics</h2>

<p>My technical brain is drawn to 2D vector graphics it turns out.</p>

<p><img src="/assets/img/vector_graphics_gist.png" alt="Editing a vector graphics curve" class="medium-centered-image" /></p>

<p>I always dreaded having to sketch out drawings, or make digital drawings. I was sure it is necessary for making game assets. I would need to develop muscle memory by practising for a very long time. And then I would need to buy a decent drawing tablet, because how else would you make digital drawings, with a mouse?</p>

<p>For vector graphics, you don’t necessarily need sketches (working with sketches is definitely valid though, don’t get me wrong). And you can indeed just use the mouse. Because it is not necessarily an activity of “drawing”. But one of combining basic shapes through mathematical set operations, and tweaking curves by dragging points.</p>

<p>Scale invariance is also something I really appreciate from a technical standpoint. It works the same like with fonts, like with the text you are reading right now. A vector drawing looks good on any screen no matter how far you zoom in/out. That’s because shapes are defined by parameters and not by pixels. Parameters are for instance: position, radius, width, height,… They <em>describe</em> shapes. Which is a much different approach than used in plain images (.jpg, .png, .gif,…).</p>

<p>What’s more, vector graphics have a great work/yield ratio. Meaning, the effort and time needed in order to create something decent is relatively low. The look and feel of vector graphics are acceptable for users. Hell, the bar is not set very high, pixel art is acceptable too. Who doesn’t like a nice game with a retro look to it? Therein lies another realisation. Game assets, in terms of a digital art form, have a very low threshold to be considered acceptable or decent.</p>

<h2 id="in-retrospect">In retrospect…</h2>

<p>When you’re like me, and you don’t have formal training for making game assets, I highly recommend looking at online courses. Or maybe even regular courses depending on the time and resources you have. It helps a lot when a professional shows you exactly which tools to use, and what the thought process is at various steps.</p>

<p>I also considered watching tutorials on YouTube, which is free. But I feared that I wouldn’t really commit if I weren’t financially invested. Also I personally believe that a free course isn’t held to the same standard as a paid course. So I am more drawn to a high rated, reasonably priced course, than to a high rated free course.</p>

<h1 id="resurrecting-the-project">Resurrecting the project</h1>

<p>I’ve followed online courses, am I now capable of finally transforming my grey-box prototype into a full game?</p>

<h2 id="so-what-about-the-art-direction">So what about the art direction?</h2>

<p>I have been brooding on some ideas. The few people that played my game know that it’s a 2D game where you switch planes along the depth (Z-axis) in order to advance in the level. (<a href="https://play.google.com/store/apps/details?id=com.geeapp.dangerzones">Maybe you should just give it a try, that will make it clear</a>).</p>

<p>I argued that this mechanic is kind of like switching between parallel universes. So “futurism” is a first component here. When I think about futurism I think about space. This is a common theme in video games. There are many space themed pre-made assets. And when I create assets myself, a lot of reference material is readily available.</p>

<p>In all those years I haven’t had a better idea. And so it was decided. My game’s art direction is: a 2D space-themed game involving inter-dimensional travel. Made in vector graphics (because of the earlier mentioned affinity).</p>

<p>That’s still not enough when you would approach other game designers. But it’s good enough to continue solo. Which is what I’ll be doing.</p>

<h2 id="making-concept-art">Making concept art</h2>

<p>To fully convince myself that I am able to resurrect the project. I decided to make concept art of all possible assets that I would need. I do this by making entire scenes of the game directly in the vector editor. I use Inkscape by the way. When these concepts are done, it means I managed to create all necessary assets myself. What’s more, I could start sharing these works in order to promote the game better. Promoting the game is also something I didn’t do right the first time.</p>

<p>These are some essentials I would need:</p>
<ul>
  <li>A main character</li>
  <li>A goal object</li>
  <li>A basic enemy</li>
  <li>…many more</li>
</ul>

<p>This isn’t a developer log. But I will show these here to at least prove my progress.</p>

<p><img src="/assets/img/main_character_concept.png" alt="Concept for the main character" class="onethird-image" />
<img src="/assets/img/goal_object_concept.png" alt="Concept for the goal object" class="onethird-image" />
<img src="/assets/img/basic_enemy_concept.gif" alt="Concept for the basic enemy" class="onethird-image" /></p>

<h1 id="in-conclusion">In conclusion</h1>

<p>It might take some time to develop the necessary skill. Don’t let that demotivate you. Being able to create the game assets, as well as doing the programming, is a huge advantage. It is way cheaper, there is no creative communications barrier, you will be able to make games independently,…</p>

<p>With enough motivation even a seemingly hopeless technical brain can figure out how to make game assets. It took me quite some time. Most of the time was spent holding myself back, because I pictured things to be harder than they were. I’m not making assets at a high skill level but that’s not stopping me from making a complete game, nor should it stop you. Finishing a game is what the big picture is about.</p>

<p>Thank you for reading my story. I hope it was helpful to you.</p>]]></content><author><name></name></author><category term="gamedev" /><summary type="html"><![CDATA[The complete journey of a complete, technical minded beginner Game making is tough when you can’t make your own assets.]]></summary></entry><entry><title type="html">My first post!</title><link href="https://frankgoyens.github.io/meta/2021/02/25/first-post.html" rel="alternate" type="text/html" title="My first post!" /><published>2021-02-25T19:12:00+00:00</published><updated>2021-02-25T19:12:00+00:00</updated><id>https://frankgoyens.github.io/meta/2021/02/25/first-post</id><content type="html" xml:base="https://frankgoyens.github.io/meta/2021/02/25/first-post.html"><![CDATA[<p>For this first post I will give you a general idea on what content to expect.</p>

<p>So I’ve decided to start maintaining a blog because I got all these ideas and nowhere to put them. What’s the point of keeping them to myself?</p>

<p>Also it would be convenient to report on the challenges I faced. Both for others and myself. I can then look at my own notes later, and others can find them using a search engine.</p>

<p>I plan on making posts about very technical programming insights. And also on the more human side of programming. That’s because software development usually happens in a team. A team working within the same code base makes for some interesting interactions.</p>

<p>I also maintain some open source projects in my <a href="https://github.com/FrankGoyens">GitHub repo</a>. Please check it out if that’s more your thing.</p>

<p>In my website description I mentioned that I work full-time with C++. I invite you to read the site description if you haven’t already. When programmers think of C++ in this day and age, it’s usually in an embedded context. But I actually implement fully fledged desktop applications for the metal construction industry.</p>

<p>Next to a software development role, I also have a software architect role. In that role I am relatively new. But I think people with the same ambitions will find that subject interesting as well. The most interesting aspect of being a software architect for me, is making design choices for the long term.</p>

<p>That is in a nutshell what my content will be about.</p>

<p>Thank you for reading this first post! Please subscribe to the RSS feed to get notified for future posts. I don’t plan to dissapoint!</p>]]></content><author><name></name></author><category term="meta" /><summary type="html"><![CDATA[For this first post I will give you a general idea on what content to expect.]]></summary></entry></feed>