Nicholas Bergquist Nicholas Bergquist

Game 1 - Day 5 _ Godoting

Learning

I still plan on finishing the blueprints tutorial for Unreal, but that’s not it. On top of that I am starting in on some Godot tutorials, and plenty of ready and watching explanation on Godot concepts. I may be using a different editor but it only varies slightly from the base Godot setup - learning what the engine offers is still incredibly important.

The Clicker

Today was all about continuing with the shop, the first speed-bump I ran into, how to have a global variable that every scene can access?

The biggest need for this for me was the total points amount. I wanted a contained object (child scene, the shop) to be able to see what the total points were and then reduce the total by the cost of the upgrade.

After a bit of research and troubleshooting I decided to use Singletons, in much the same way I used a Game Instance in Unreal. It felt good to have a concept that I had learned in another engine carry over to this one - it felt like real progress.

So I created a global file to house the variables that I want different scenes to be able to access - this list is ever changing (growing and shrinking)

My biggest focus today was in Scalability. Trying to make sure that I could build out code that reused as many functions as possible for when I continue to add upgrades

Each of the blue nodes are functions which receive inputs - the idea being I can use them across every purchase - hopefully reducing the total amount of nodes, and adding some legibility.

Some of the functions:

Ultimately I’ve now created a first version of a click upgrade - tomorrow I’ll go about making sure the power can scale, and create a toggle for purchase amount.

Read More
Nicholas Bergquist Nicholas Bergquist

Game 1 - Day 4 The Great Reset.

The Interim

In the past few days I worked on creating a different kind of game. I joined a game jam - Lame Jam 55 on Itch.io. The theme was dreams and I managed to create a game with custom assets and animation where you run from nightmares and try to sleep as long as you can before they all run into you.

I learned a lot while trying to create the game in Unreal - managing to figure out some systems myself to great enjoyment. But then I ran into a major issue when trying to export / package the project.

I first re-realized that Unreal 5 doesn’t have any built in way to export HTML, something that is helpful for itch.io uploads of small games. It was a setback but not the end of the world.

So I shifted to a package build - I’d build a mac version and a windows version.

After some research I realized that even to build a direct mac package I’d need to be a part of the apple developer program. Something I wasn’t at 4am the final night I could upload.

So I shifted to a windows build.

I luckily have a PC with windows so after downloading Unreal, and uploading and downloading my project files I went about trying to build it there.

After fixing some issues from the transfer process I tried the build the game. But every time I tried I had a crash - after a few days of research it turns out to be some core issue with rights of the program to my machine, something I couldn’t figure out in time for the jam. But here’s a video of the game.

 

Clicker Update

After the nightmare of building the game in unreal - I realized I really should stick to a lightweight editor that I know for the smaller games I plan to build.

I stumbled across a video on the Orchestrator plugin for Godot - which basically creates a blueprint like coding experience for Godot.

I tried to follow a few video tips from years ago to update text using the plugin, but after hours of trying I couldn’t figure it out. I was just about to give out when I reached out on the plugin discord asking for help. The creator (and another admin) told me how to do it (thank you so much) and suddenly the whole world of the plugin opened up to me.

So today was about starting the project from scratch, in Godot using Orchestrator.

To mark the change I even changed my project management tool from Notion to Trello to keep track of my progress and needs to the project.

I started by creating a base scene that updates a label based on floats. Through some trial and error I found that I had to do some funky conversions to get the string to show a rounded integer of the float value.

I made the basic update text into a function so that I can call it whenever I need to update the point value shown.

After some research and complex attempts I learned that Godot has a built in Timer node. I set the node to 1second, added a signal on timer time, and called that in the orchestrator to update the text.

This way every second the text will update (and add the points per second value).

Then I created a process for adding points to the total based on a click amount of a button

So far it works! I even created a custom theme for the button for now.

I’ve started a store so tomorrow I’ll work more on it!

Godot here we Go…Though!

Read More
Nicholas Bergquist Nicholas Bergquist

Game 1 - Day 3

Clicker Update - no tutorial

Today was the start of working on my clicker without any specific tutorial. My first goal I hoped would be simple - create an upgrade for passive generation. Something that can be purchased that increases the resources by 1 every second.

But first it was time for some cleanup. I sectioned off blueprints that I had created using the tutorial and added comments around sections that have different functions. I figured this would be great for me in the long run - since I still don’t fully understand how it all works, the reminders will help drill it into me.

In the above photos you might also notice more variables. I created a few more variables to help the game with expansion while I keep going. I created a variable for the cost of the first upgrade, the idea being I can increase the cost of each upgrade as they are purchased - a scaling system.

The big addition was creating a points per second generator.

So after commenting and understanding how the first upgrade works (which makes clicks stronger by 1, something which I also changed into a variable for power scaling later) I used my knowledge to make a functioning second upgrade.

I then created a flow where every Delta tick the resources go up by the PointsPerSecond variable.

It was now that I remembered that Delta ticks are based frames and not seconds.

Whoops.

After a bit of research I created a custom even to check if the points per second is about 0 every second, and if it it add the points per second to the total points. Maybe the if statement is too much and I’ll remove it in the future.

But for now it works!

Now to address something that I love in clicker games, purchasing more than 1 of a given upgrade at a time.

I started by sketching out the general idea for the flow of the blueprint. I think it makes sense to have a 4 way if statement. One for if it’s 1 purchase, another for it’s 10 purchases, another for 100, and one for when it’s MAX

But before I created that blueprints I realized - I want the shop to be scrollable, at least for now. So I spent a while figuring out a ScrollBox and now - I still have resizing issues to figure out, but when the shop has overflow a scroll appears!

And after a lot of fiddling, it works!….mostly…for now.

Okay back to that blueprints idea.

First I created a visual row of buttons that I want to turn into toggles.

Then I created a basic blueprints series to change the purchase amount and cost. I noticed that I needed a new variable - the price of a single purchase of each upgrade I created that and used it throughout.

I also went back and renamed a variable I had used earlier to Purchase Amount, and had that be a variable set by the toggle.

Next I needed to created the Max toggle using the formula I had written down earlier.

Total Resources ÷ Cost of Resource = Max Amount.

After changing Purchase amount & amount owned variables to be integers (since I only want to have whole amounts of items) I had some strange errors. After a lot of trying different things I found that if I typed the same number again and then recompiled the error went away. We’ll see if this comes back to bite me.

It was while staring at this part of my blueprints I realized I had a solution - go back to purchase amount variables for each upgrade. It was that or do some tick methods I couldn’t quite work out I think. So I went back and changed blueprints yet again.

After some back and forth (and a few infinite loops) I realized I could use a similar system to the points per second to constantly updated the amount that can be purchased. I set the frequency to 0.1 seconds which might be too resource heavy or maybe too slow (for fast clickers). Either way it works for now.

As an added bonus I changed the price text to reference that the max is being purchased.

Tomorrows goal: make the toggle buttons work like a toggle.

Read More
Nicholas Bergquist Nicholas Bergquist

Game 1 - Day 2

A few days of learning

  • Blueprints communicating with each other

This is the first Blueprint topic that hasn’t clicked right away. I’ll need to stay aware of these tools to make sure that I know what I don’t know. It would be easy for me to create complicated systems to circumvent different casting and listening methods - but I need to be aware of things that I don’t know, to make sure that I keep trying to learn it.

The game

Today marks the last day of using the youtube tutorial for a 2D clicker game in Unreal.

Is it because I realized I can do it myself? Or because I wanted to push past my self imposed limits?

Nope.

It’s because the creator never finished the tutorial.

So what do I have?

I have a clicker game which;

  • Has a shop UI that allows the player to buy an upgrade to their click power

  • Has a stats section to show clicks per second, total resources, and amount of resources per click

What I DON’T have;

  • Any way to passively generate resources

  • A way for the cost of the upgrade to scale with the amount purchased

  • Any screen except for the click screen

So it’s time to get started building, because I’m making this game.

Read More
Nicholas Bergquist Nicholas Bergquist

Game 1 - Day 1

I’ve accepted the fact that I was so focused on only learning partially as a method of self preservation. I was keeping the days below 1 to show that I hadn’t really started yet and protect myself from the real start of the project.

Today that ends.

Today is day 1 of creating this clicker.

What did I accomplish today?

  • Lots of learning

  • A some clicker tutorial tweaking

 

Todays learning

My initial time (yesterday and today) was spent learning more in depth about Actors and Classes, and how those function in the Unreal Engine. Once again I’ve been doodling while learning as a means to keep focus and understanding.

However I think I’m going to use the doodles to then create the visuals for my clicker. A sketched world slowly coming to life.

 

It’s starting to click

The base code here is using an online tutorial I found on how to create a clicker game in Unreal. I am currently going through the tutorial itself, primarily following their suggestions on how to lay out the “code”.

For some reason the design they are doing is focused heavily on a desktop - but I have always wanted my clicker to be a mobile first game.

Why mobile first?

I think it stems from what I view as the ideal clicker. It feels strange to be making a game for myself, after years of learning and reiterating that “I am not my user”, for this first project - I am my user. I am my target audience. And I know that a clicker is a perfect mobile game - especially an idle clicker.

Why is an idle clicker an ideal mobile game?

  • It’s built for infrequent interaction - whenever you have a spare moment

  • It doesn’t require precise input and therefore can be played in the background or casually as to not distract from daily life too much

  • My versions limited interactions make it ideal for a tap only medium

The current main game scene

So here’s where I’m at so for:

  • The game renders in a phone shape, using a built in iPhone X screen size

  • When a the game object (the button) is clicked a saved unit [clickerPointsPerClick] the default value being one, goes up by that variables amount

  • The variable is then displayed above the button

  • I’ve made a separate shop UI that is rendered above the game UI

The Blueprints code for increasing clicker points on click

Currently I’m having issues when changing the screen size - which I’ll have to work out in the future, but I want the shop to eventually be a separate screen entirely so maybe that’s a problem for another day. For now I’ll continue to work through this tutorial and understand the basics of how to make an idle clicker.

Read More
Nicholas Bergquist Nicholas Bergquist

Game 1 - Day 0.75

Day 0.75

I have spent the past couple of days learning. Slower than I would have liked but it takes a lot of energy to learn and understand a new code base or logic for me - another reason why I veered away from using something with JS, C#, or even Godot’s custom script.

The course material covers everything from what a blueprint is, to how to set up and use custom enumerators (which after years of hearing about them, I only now have begun to understand just how useful they can be). But I found myself having an issue. Concentration. There is something about creating and learning entirely on your own, with no one looking over your shoulder that takes an added level of dedication and perseverance. I knew this going in, it’s not my first time having taken an online class alone by any means, but something about this time has made it just that more difficult.

I think perhaps one thing that has been slowing me down is the knowledge in the back of my mind that I’m waiting for an email. I’m waiting to hear back for request for interviews. Something which back when I started applying for jobs earlier this year was happening every few days. But now, since just before the summer that has slowed down dramatically. I think the further I get from my previous employment the further I fall back on the list of interest, it’s a self perpetuating cycle with no clear end.

But that’s why I’m here! I’m here to make games. I’m here to take my career in my own hands and see if I - by myself - can bring people joy and excitement.

And to do that I have to learn this engine.

So I found a trick:

Doodling!

The Doodles

I have a digital notepad that I’ve been doodling art and shapes on during lessons. This is something I learned about in college in a psych adjacent art class - people learn better when doodling. Preferably something related and not just day dreaming (I’ll try to keep that in mind).

But I have to say these little doodles are working. They’re helping me focus.

Read More
Nicholas Bergquist Nicholas Bergquist

Game 1 - The Clicker Day 0 & 0.5

Day 0

Initially I thought of building a game using Godot. I had a few reasons for this; it’s commonly used for indie projects, it uses a scripting language that isn’t too complicated, it is open source so if ever make money from a game it wouldn’t be complicated to figure out (looking at Unity’s canceled changes to their policies).

However, after doing a few tutorials, and looking for boilerplate code to get started I realized that Godot is easier for people who are good at coding - something which I certainly am not. I can learn coding (more than HTML, CSS, and the most basic JS) but I wanted to find some alternative to have a more visual experience.

That’s when I remembered that Unreal Engine has a visual scripting tool.

The best part of the Unreal Engine visual scripting tool, called BluePrints, is that the general layout works like a zoomed out picture of how code works - which is exactly how I think of coding in the first place. So at the start of this journey it seems like a pretty good option.

That’s when I decided to scrap my idea of using Godot and try to make this 2D clicker game in Unreal.

Day 0.5

I managed to find a few 2D tools for Unreal (which is largely a 3D focused game engine) but more importantly I found a clicker tutorial that I can follow to start to learn the engine.

The tutorial made me realize I should back up and learn some about the engine as well - so I started in on a Coursera course “Unreal Engine 5 - Blueprints Game Developer Masterclass” - I pay for the service so I might as well use it.

Read More
Nicholas Bergquist Nicholas Bergquist

The Dev Log

About The Dev Log

I’ve always wanted to make games. Growing up I didn’t really think of it as an option so I didn’t look into it much. But in college I found my way into a few game design classes that tied into my Web Development Minor. I found myself absolutely focused in these classes more so than any other. I created so many extra features and details in the quick games we were supposed to build because I loved adding to them. Later when I was working on my masters degree I had a prototyping class where we looked into VR / AR prototypes. After a few all nighters telling my team that I would figure out the problems we were having I managed to fix the movement system in our VR game - as long as you only wanted to move to the left. But when it came time for all the groups to present we learned that we were the only ones who managed to get any controls to work - and I still wanted to do better.

But why now?

The UX / Product Design market in Sweden is tough right now. After leaving my previous employment I took time off to focus on some family issues, then I decided to come back to the job market and start applying around. When I’ve met with companies and potential employers they tell me that every job posting right now is getting 400+ applicants, many of whom are far more senior than the role asks for - out qualifying me.

So I figured in the mean time I’ll make two games and see how that goes. Follow my dreams while I’m looking for realistic work.

Game 1:

  • A basic clicker game (I have an obsession with the genre) mobile focused and simple

Game 2:

  • An idea I’ve had in the furnace for a while and always wanted to try to make

So lets get started with

About The Dev Log

I’ve always wanted to make games. Growing up I didn’t really think of it as an option so I didn’t look into it much. But in college I found my way into a few game design classes that tied into my Web Development Minor. I found myself absolutely focused in these classes more so than any other. I created so many extra features and details in the quick games we were supposed to build because I loved adding to them. Later when I was working on my masters degree I had a prototyping class where we looked into VR / AR prototypes. After a few all nighters telling my team that I would figure out the problems we were having I managed to fix the movement system in our VR game - as long as you only wanted to move to the left. But when it came time for all the groups to present we learned that we were the only ones who managed to get any controls to work - and I still wanted to do better.

But why now?

The UX / Product Design market in Sweden is tough right now. After leaving my previous employment I took time off to focus on some family issues, then I decided to come back to the job market and start applying around. When I’ve met with companies and potential employers they tell me that every job posting right now is getting 400+ applicants, many of whom are far more senior than the role asks for - out qualifying me.

So I figured in the mean time I’ll make two games and see how that goes. Follow my dreams while I’m looking for realistic work.

Game 1:

  • A basic clicker game (I have an obsession with the genre) mobile focused and simple

Game 2:

  • An idea I’ve had in the furnace for a while and always wanted to try to make

So lets get started.

Read More