How to make an accurate timer 🟥

Ahoy there! This is a simple guide on making a timer!

…

…

Wait, that guide already exists? Multiple times as well?

Well, let’s see how I can make this a unique guide…

Oh! I have an idea!

How about making a timer 100 times more accurate than the most accurate one as of right now? Would that work? Yes? Great!


To start, I’m going to show a simplified version of the build, to better understand how this works. There are a few moving parts, and I don’t want anyone getting lost in the guide!
The diagram:

See? Not that hard! Only three parts!
In ClicClac fashion, I’ll start with Triggerloop A.


Building Triggerloop A

1. Place down two triggers. Label one of them A. Have them trigger each other in traditional triggerloop fashion.[1] Make trigger A receive on the start of your event and have player scope. What’s the delay? Oh, just a large and easy tenth of a second.[2] Put the delay in the unnamed trigger.
Your build should look like this: image
Trigger A’s settings:
Screenshot 2024-05-30 5.27.56 PM
Screenshot 2024-05-30 5.27.45 PM

2. Place down a third trigger, and name it trigger B.[3] Wire A to B so that A triggers B. Have it wait another tenth of a second and broadcast on a channel. I use AddSecondToTimeRaced since this is GK8, but this timer can be put in any game, so use whatever! Set the scope to player as well.
Your build should look like this: Screenshot 2024-05-30 5.43.58 PM
Trigger B’s settings:
Screenshot 2024-05-30 5.41.25 PM
Screenshot 2024-05-30 5.41.14 PM
Screenshot 2024-05-30 5.41.06 PM

3. Place down a fourth trigger, and leave it unnamed. Place it above trigger A. Have it receive on the same channel trigger A receives on. It has a bit of block code, but nothing much. All it does is set a property to the amount of time that has passed in game, by using the “Seconds Into Game” block!
image
For the second part of this step, place down a property, and name it “TimeSinceGameStart”. It just needs to be a generic player-scoped number property.
image
Your build should look like this now: image

4. Place down a fifth trigger. You don’t have to name it.[4] The only thing that this trigger is used for is block code, so it doesn’t have any settings besides the default.
The block code:
image
That’s it! Easy, right?

Wait, I forgot that block code is an advanced subject and requires an explanation. I’ll put it in a triple dot.[5]

That’s the entire Triggerloop A! Onto the second one!
image


Building Triggerloop B

1. Place down two triggers. Have them trigger each other in traditional triggerloop fashion. Have one trigger receive when your timer starts, but not be directly connected to trigger A. Put a minute[6] delay into the other’s trigger delay box. That’s it for Step 1!
Your build should look like this: image

2. Place down a counter.[7] Wire the trigger on the right (the one with the delay) to the counter, so when the trigger is triggered, the counter increments by one. The counter should also be connected to the property “MinutesSinceGameStart”, which is just a default global number property.
Your build should look like this: image
The counter’s settings:
image

And that’s it! You’re two thirds done with this simple and easy guide! One more section to go!


Building The Game Overlay

Ok, let’s get the easy stuff out of the way first.
Step 1. Place down a property, and name it TimeRacedSeconds. All you need to do is change it to a number and make it player scoped. Final step time.

Here we go.

Step 2. Place down a game overlay. Have it show text, but don’t put any text in the box for text. Then, head into blocks. Have the block code run when receiving on the channel AddSecondToTimeRaced. This is what you need to put in the block menu:
image
Massive credit to @JoeTheChicken for making the basic block code.

Like the fist time I just had a huge block that I told you to copy down, you can either just copy it down, or open up this triple dot for why it works.[8]

Okay, with that out of the way, you’re done! This took about an hour, so don’t be afraid to call out issues with my grammar/spelling. With that, happy Gimkitting, and have a great summer!


  1. I’m not showing wires if it’s trivial. ↩︎

  2. 1/10 second, or 0.1 for the copy-paste people. ↩︎

  3. Blame March Clic for this horrible naming system. ↩︎

  4. March Clic didn’t. ↩︎

  5. So. What this does is simple. When the timer ticks up, it sets a variable (the purple block) to the amount of time since the game started minus the TimeSinceGameStart property. What this accomplishes is that it gives us an accurate measurement of the amount of time that has passed after the timer started. Well wait a minute, getrithekd a keen eyed reader will say, that’s what the top does. What does the bottom do? Well, the bottom isn’t very important now, but later, it will be one of the things that gets this timer to work properly. It checks if the timer has been running for a minute, (with some rounding so it doesn’t glitch), and if it has, it sets TimeSinceGameStart to 0. Hope that you understand it, becuase I’m moving on! Ask me questions if you need them! ↩︎

  6. 60 seconds. ↩︎

  7. FYI, it has global scope. ↩︎

  8. Okay, this one’s a bit of a doozy. First, the game sets KingDDD (a variable) to the time since the timer started. The game then divides this by 60, then takes the mod of it, creating a number between 0 and 60. Then, it sets the property TimeRacedSeconds to KingDDD in the third purple block at the start. This is only for scoring in GK8, and you could remove it if your want. The next section looks familiar if you are acquainted with JoeTheChicken’s colon separated timer guide. The part that’s different from that really good guide is the last block in the “Create Text With” block. That uses the text “Modddular” that was defined earlier in the block to find only the digits from the start of the string (the 1) to two after the period in the text (the +2). This has to be done, because this setup has a nasty tendency to create floating point errors, that are really annoying. That should explain everything, but if not, let me know! ↩︎

21 Likes

Am I correct in assuming that this is the system used in GK8?

EDIT: It appears that it is.

4 Likes

Very useful!
Now I know how you did it…
heh…
time to make a duplicate GK8- /j /j /j

@whoami I know why you’re here

2 Likes

i thought timers were accurate? but nice still
(@VoidFluffy can’t you teleport out of the box or is that just what undeads can do)

2 Likes

They are accurate, but this timer is at least 100 times more accurate than any other timer that I know of.

2 Likes

i didn’t even know “seconds into game” was a block lol.
Great Guide!

2 Likes

wait, did you actually calculate that? if so, then i’m gonna stop bragging about how i was doing functions in 1st grade

3 Likes

It’s a really simple calculation.

I have two more digits than every other timer.

My timer is accurate and doesn’t lose time due to lag.

Therefore, my timer is at least 100 times more accurate.

3 Likes

ok then

(i’ll keep bragging then, but that thing got dry quick :/)

2 Likes

i was exposed to too much frozen milk (whoami’s fault)
so i can’t shapeshift anymore T-T

1 Like

oh ok

(perks of being an undead ig)

1 Like

Can you two please stay on topic or chat literally anywhere else?

2 Likes

ok, got it

2 Likes

Oops, sorry.

Getting back on topic:

The footnote is really helpful
I wouldn’t have understood this guide without it

2 Likes

Which one? There’s like 10.

2 Likes

The one about block code.

1 Like

crazzy guide :+1: :heart_eyes: :heart_eyes: :cow2: :cow2: :cow2: :cow2:

i love all of your guides, they have their own “style” to them

also one of my favorite features in gkc is the fact that “seconds into game” in gkc is hyper–accurate for some reason

7 Likes

There are still two…

2 Likes

Thank you! It’s nice to know that the effort I put into these shows! Yeah seconds into game is bogus but in a good way.

2 Likes

augh

the one below this

2 Likes