#Timer template for maps to speedrun

1 messages ยท Page 1 of 1 (latest)

terse crystal
#

Hey! I am making good progress on a timer template for any map maker to use in upcoming maps ๐Ÿ™‚
My goal is to create a timer that supports up to 20 levels, have various display mode (hidden/header/levels/levels VS PB/levels VS WR) and a color code when getting ahead/behind at the end of a level.
I take the opportunity of having a font issue to share this ๐Ÿ˜„
Hopefully it will be easy enough to use with a few copy paste in kismet!

If you have questions or advice don't hesitate to tell me ๐Ÿ˜„

summer ivy
#

Awesome! I'd love to collaborate and make this useful to everyone

terse crystal
#

Yay!
Would you be my guinea pig when it comes to test the copy pasting stuff? ๐Ÿฅน
I am almost done for the features I think, maybe there are still a few bugs too ๐Ÿ˜

summer ivy
#

Absolutely, haha

terse crystal
#

Flash ๐Ÿ™‚

rapid galleon
#

Ahh I was going to say in animate I was struggling to get fonts that I didnโ€™t download directly from adobe to embed and be visible in udk

pallid saffron
#

thats sick i might have to use that when its ready

terse crystal
#

Calibri didn't want to work, but Montserrat looks pretty good in my opinion ๐Ÿ˜„

#

I just need to center the text ๐Ÿ˜

summer ivy
#

Monospace fonts are generally better for timers

terse crystal
#

I have never heard of that! Do you mean that each characters have the same width?

#

Oh yeah it's much better thank you, I didn't know that kind of font existed

summer ivy
#

Yep! That way the numbers won't jump around

terse crystal
#

Much better

summer ivy
#

Looks awesome ๐Ÿ˜Ž

#

Another comment - it might be a good idea to pick a different color gradient for the split +/- times or make that easily configurable. Red/green is the most common type of color blindness (even I have a moderate case of it)

#

I actually see '45' in the top left and top right, then nothing in the middle two in the top row

terse crystal
#

You're totally right, I didn't even pick matching colours so far, it's pretty random ๐Ÿ˜ I'll dig into that

terse crystal
#

The 4 colors on the left should be okay

#

I found this website that is really convenient
Maybe I'll play a bit more with it, but I'd like to keep the same colors for everyone (I doubt anyone would bother to switch color mode or add that option in a map ๐Ÿค” )

terse crystal
#

Next step: getting rid of the Invoke Action Scripts that have arguments ๐Ÿ™
They are super annoying as they crash the game if there are more arguments on the node than in its properties... and copy pasting the node wipes out all its arguments in the properties. Definitely not cool for a template ๐Ÿ˜„
I have a lot of them, instead I'll need to do a combination of GFxSetVariable and invokeActionScript with no argument I guess

rapid galleon
#

I doubt it but can you expose the argument and make it a variable?

terse crystal
#

I could set the variable in kismet with a SetVariable, then start the invokeActionScript that will use that variable, but the function needs to use no argument, otherwise it won't work. Smells like bad coding but that's the way I'm going with, I see no better choice to make it user friendly ๐Ÿ˜…

rapid galleon
terse crystal
#

It was AS_Undefined ๐Ÿ‘€ Now I understand

#

oh damn, I just finished my changes lol

#

So if I set the argument type, then I can copy paste that node safely... I'll have to redo what I destroyed haha

summer ivy
#

Yeah, I think we want to support a lot of arguments so this thing is customizable enough for anyone to use

rapid galleon
#

I stumbled upon that messing about today.

#

I think i could be a better/faster coder if i didnt press compile constantly ๐Ÿ˜ต

south rock
#

Don't know if it's something useful for this template, but maybe a few translations such that the player can see the timer in their (popular) language?

rapid galleon
#

French only Mate.

#

jk jk english of course

terse crystal
terse crystal
terse crystal
#

Looking good now!

#

Only details to work on now ๐Ÿ˜ Thanks a lot everyone!

rapid galleon
#

that is so beautiful... Did you write some sort of script to organize?

terse crystal
#

It's handcrafted ๐Ÿ’Ž

#

I could have edited the y location in a notepad to align the variables, but I chose to use the border of the screen instead ๐Ÿ˜ I used the notepad for my copy pasting though (changing "Easy" into "Medium" etc)

rapid galleon
#

Iโ€™ve been guilty of python scripts for my kismet. And also alignment lol.

terse crystal
#

I wouldn't be surprise if you propose a "tidiest kismet" prize for the next mapmaking contest... and win of course ๐Ÿ˜

terse crystal
#

The test map is in progress ๐Ÿ˜„
20 levels to display looks quite heavy but I don't plan to reduce the UI for now (by making level groups for example)
Already one small bug spotted ๐Ÿ˜
I'm thinking of proposing a simple setup: only 1 level so it would be a timer to restart and to stop
And a complex setup: 20 levels, 3 difficulty modes + section mode (to speedrun each level separately)

summer ivy
#

ooh ooh, another feature request

#

@sage pilot made an awesome timer where the rumble button collapses it to the minimum information

terse crystal
#

I have 5 modes ๐Ÿ˜
-all hidden
-only total time displayed (no level)
-all levels displayed (no comparison)
-all levels displayed + comparison to WR
-all levels displayed + comparison to PB

summer ivy
#

very nice

terse crystal
#

Here's a first peek at how the timer behave ๐Ÿ™‚
That 1st video shows the most simple setup: you have no level for your map, just a start and an end.
There's already ChatPreset 1 used to switch between the display modes, and ChatPreset 4 to reset the timer.

terse crystal
#

Among the features I'll leave in the corner of kismet
Functions to edit all texts
-SetLowerInfoBox / SetHigherInfoBox: Set the text above the timer(lower info box and higher info box)
-showLowerMessage / showUpperMessage: Set the text displayed in the middle of the screen (lower and higher text as well, it's currently used as the congratulation texts at the end of the timer)
-WRtext / PBtext (set gFX Variable): Set the text for "World Record" and "Personal Best", like if your want to put "WR" or do some translation, you can. Not setting anything will use the default text.
-setLevelName: Set the name of the levels (up to 20 lvl). A level with no name will not be displayed. As you can see in that first video, all levels are set as empty strings. The name has to be pretty short.

Functions to manipulate the timer
-startTimer: starts a timer for specific level (int) without resetting the main timer. To be used when entering a new level.
-endTimer: stops the timer but keep all the info.
-resetTimer: stops the timer and resets times to 0.
-restartTimer: resets the timer, then starts the timer for specific level (int). To be used when starting a new run.

Functions to manipulate the display
-HideTimer: hides the whole timer (default state when opening the GFx)
-DisplayHeaderOnly: displays only total time + info boxes
-compareRunToNothing: displays the header + all the levels. (in the setup with 0 levels, it won't display anything different than DisplayHeader)
-compareRunToWR: displays the header + all the levels + World Record time + Delta time for each level
-compareRunToPB: displays the header + all the levels + Personal Best time + Delta time for each level

Functions to get data from the timer to kismet
-getTimeString: You can request the time of a specific level as a string in kismet (lvl 0 is total time)
-getTimeInt: You can request the time of a specific level as an int in kismet. The int is in ms, meaning 60000 = 1 min.

#

Here is an example of a "complex" setup with 20 levels, 3 difficulty modes and the possibility to speedrun each level separately.
-On the right of the scene: 3 difficulty triggers (restartTimer[0]) then 19 startTimer triggers from startTimer[2] to [20]
-On the left of the scene: 20 level speedrun triggers (restartTimer[1] to [20])
1st video > Setting up a personal time for the first time in "medium difficulty" and improving it
2nd video > Going through the level speedrun triggers

#

Last but not least, an example of what it looks like when having fewer levels byt settings the name of the 10 first levels only