#programming

1 messages · Page 241 of 1

rigid snow
#

ye see

amber fractal
#

Dual core (No multithreading) 2.6GHz from spec sheet

rigid snow
#

as long as that isn’t a lie

hexed grove
amber fractal
olive sable
#

ye

#

and it ran like ass

#

at least minecraft bedrock still ran decently

#

on low settings, but it ran

amber fractal
#

The only low power I have is N100, that mini PC is used as network USB port

hexed grove
#

couldnt be me

olive sable
#

couldnt be me

rigid snow
#

you can run it on android too

olive sable
#

but i was 12 at the time so i wasnt a linux user yet

rigid snow
#

don’t have to use windows

hexed grove
#

i use linux

olive sable
#

you sneaky edit

hexed grove
#

you didnt see anything

warped narwhal
#

my old laptop (that my parents now use) has an n2840, 2 core no smt at 2.5ghz

warped narwhal
#

I upgraded them to an ssd, 8gb of ram and a linux install, but holy it is slow.

olive sable
#

all these celerons seem to have pretty similair specs from the sound of it lmao

hexed grove
#

im a chromebook

#

sooo

#

ye

warped narwhal
#

my condolences

hexed grove
#

why the fuck do i keep forgetting to declare my functions

olive sable
#

those celeron laptops are the biggest scam in recent laptop history btw. my N4000 laptop was 400 bucks, thats a full 1/3rd of the price i paid for my 3090 pc.

rigid snow
# olive sable but i was 12 at the time so i wasnt a linux user yet

12 and bedrock on windows being a thing simultaneously is a crazy concept to me
i say that but now i think about it and it came out in 2015 approximately at the same time as w10 came out and i was 11. they gave everyone who owned java a free key to “minecraft windows 10 edition beta”. it was so ass it’s crazy

rigid snow
#

2015 bedrock on windows compared to java vedalCry

olive sable
#

we had this discussione before, lets skip over it

#

for a 12 y/o, minecraft bedrock was close enough

rigid snow
#

this ain’t a point of discussion. 2015 bedrock was absolute ass, especially on the same platform as java, and to have access to bedrock you had to have java already

olive sable
#

did you? i bought bedrock standalone in the ms store

rigid snow
#

windows 10 edition beta

#

yes

#

you had to have java to get in

olive sable
#

also, it was more like 2018 or so. i was 11-12 at the time and im from 07

hexed grove
#

fuck i forgor to free my memory

rigid snow
#

it was way way better in 2018

olive sable
#

i see

#

well, i bought it in 2018 without java

#

and then in 2022 or so i got java for free cuz i owned bedrock

rigid snow
#

they were separate back then, i don’t think there was even a bundle

olive sable
#

i dont think there was

#

there were minecoin bundles tho xdx

obsidian mantle
#

i dont get it, cant i just "sudo apt install some styles"

#

i want superdark only dark style which i will just override

#

and not that windows/fusion which has dark light blue plasma idk

olive sable
#

noxcrew the goats

tender river
#

i bought minecraft in like 2014 maybe?

rigid snow
#

ye same

olive sable
#

i like how minecraft is an almost universal experience

tender river
#

most sold game or something

obsidian mantle
#

ok i installed styles but when i try to run cute chess with it, it says i only have fusion and windows.
qt5ct sees new styles

tender river
obsidian mantle
#

its like, cute chess is run under some other platform

#

which has no styles

rigid snow
tender river
#

i played gta 5 shortly after release but my laptop was only able to run it at 15fps so i deleted it

olive sable
tender river
#

210m sales doesnt sound unreasonable

rigid snow
#

please do

#

good game

obsidian mantle
#

can anything of this conflict

#

why do they change naming in every version

opaque sigil
#

the top ones are the libraries used by the bottom ones

hexed grove
#

i got the bestest gpu

#

i get 4365 fps on rotating cube

#

rotation is tied to frame so its super fast 😭

olive sable
#

checks out, for not intensive workloads having the gpu right next to the cpu helps

olive sable
# hexed grove rotation is tied to frame so its super fast 😭

DeltaTime. This video is all about that mysterious variable that oh so many game developers seem to struggle with. How to use DeltaTime correclty? I got the answers and hope this video will help to deepen your understanding about how to make frame rate independent video games.

0:00 - Intro
0:34 - Creating The Illusion of Motion
1:11 - Simple Li...

▶ Play video
#

you probably already know this but ths is a great video about deltatime

amber fractal
hexed grove
#

ignorance is bliss

olive sable
tender river
#

up there with delta time issues, though not as prevalent

olive sable
#

i just normalize it after gettign the input, which should be close enough

hexed grove
tender river
#

should be good for 8-dir movement neurOkay

olive sable
hexed grove
opaque sigil
hexed grove
#

i do not want delay

obsidian mantle
#

NeuroRage this is bullshit

  1. all qt's i have - have more than 2 packages (i installed additional packages for 5 and 6, all packages are visible in qtXct)
  2. when i run the app, it says only "windows and fusion" are available

its like, it has some other qt that i dont see

so qt5 and qt6 use different namings, can this "hidden" qt be called like some bullshit (for example q_t_4_tomfoolery you cant search me by "qt")

olive sable
#

locking the fps to 10 is probably the worst solution to this

obsidian mantle
hexed grove
#

leaving it as is?

olive sable
#

if your laptop stutters then the game wont even notice cuz its taking the assumption of always doing 10fps perfectly, meaning your 1% lows will be bad

hexed grove
#

lmao

olive sable
hexed grove
#

2 seconds per frame

olive sable
#

it just makes it less noticeable

#

just use deltatime bro

tender river
olive sable
#

guilty ye

#

i watch a lot of videos

hexed grove
#

because it too slow

olive sable
#

so

#

every frame, you ask what time it is

#

then you look at how much time passed betweent he current and the last frame

#

thats deltatime

#

you multiply movement by deltatime

hexed grove
#

okay i guess its easy

amber fractal
olive sable
#

thats the gist of it. you can go into a lot more nuance with this for shit like accelaration

#

but acceleration mean integration and i have decided i will perish

#

those nuances is the reason that video is 20 min long

clear sedge
#

i recommend setting up a "tick"-like system for certain things, a lot of non-visual things you'll probably want to spare the troubles of tying to floating point accuracy

hexed grove
olive sable
#

most of the time in miliseconds i think

#

it really doesnt matter tho

#

as long as you have enough precision in the number

#

this is how my player moves for example

obsidian mantle
#

its not worth it, i guess i'll stick to light theme
2 hours changing colour of app background in 2025 neurOMEGALUL thats crazy

opaque sigil
obsidian mantle
#

i have only 2 qt's, both are dark, when run app with qt, says it has no dark and runs in light neurOMEGALUL

#

im telling you its some q____special_edition_____T_1231

#

unusable shit

#

whatever time to go to bed tutelBedge

opaque sigil
#

Did you check the qt page on the arch wiki

obsidian mantle
#

you mean qt library on archwiki

#

maybe tomorrow

olive sable
obsidian mantle
#

(library like 5000 pages)

olive sable
clear sedge
olive sable
#

yes

clear sedge
#

for any multiplayer or speedrunnable game, i do not approve neuroNope

olive sable
#

that is how you do this

hexed grove
#

10000 fps on celeron :o

olive sable
#

not the actual framerate

clear sedge
olive sable
#

no

#

thats the whole point of using deltatime

#

thats literally the whole reason we're talking about this

#

if the time between frames is smaller, deltatime will be smaller, so the movemenet multiplied by deltatime will be smaller

#

if the time between frames is bigger, deltatime will be bigger, so the movemenet multiplied by deltatime will be bigger

clear sedge
olive sable
#

no

#

you dont

#

deltatime accounts for the lagespikes

clear sedge
#

am i too sleep deprived or am i valid in thinking you shouldn't tie player movement to your draw loop for any speedrunnable or multiplayer game

olive sable
#

99.9999% of games do this

#

idk what to tell you

clear sedge
#

does that make it best practice?

olive sable
#

yes

#

the only way to improve this is the get a time machine inside your computer to see how long the frame took to render from the future,a nd use that

#

but we dont have a time machine

hexed grove
#

my laptop is now making a highpitched running sound for some reason when i open my app exclusively

#

uhmmm

clear sedge
#

i'm a full believer in ticks

olive sable
#

that is ticks

clear sedge
#

physics should be updated separately from graphics

olive sable
#

what i showed you is using ticks

olive sable
olive sable
clear sedge
#

why would you use delta time in a tick update function?

olive sable
#

cause its deltatime of the updateloop

amber fractal
#

Variable tick rate for graphics
-# almost typoed whoops

hexed grove
amber fractal
olive sable
#

you cant rely on everything being constant speed

#

even the physics updateloop will have lagspikes

#

its a reality of life

amber fractal
olive sable
#

true

clear sedge
#

then you just don't need to worry about delta time for a whole lot of things

olive sable
#

use that start time with the current time to calculate how many ticks should be run
you're just doing deltatime with extra steps

clear sedge
#

it's doing incremental updates that account for the in-betweens

#

it's different

olive sable
#

it isnt

clear sedge
#

you do you buddy caught

olive sable
#

simply just moving where you use deltatime

opaque sigil
#

If you catch up by running multiple ticks isn't the end result the same, the ticks need to run faster than usual to catch up

obsidian mantle
#

But you have inbetweens

clear sedge
#

you're not subject to floating point errors and you could run more complex calculations within a tick

#

for a straightforward move character from A to B in a singleplayer non-speedrun context that might not matter, but it matters when you want your game to be consistent

olive sable
#

you really shouldn't be needing to catch up btw, the tickspeed is 99% of the time already less than the monitor fps, and needing to catch up in a single frame just means you remove all the inbetweens

obsidian mantle
#

So is tick=delta or no

olive sable
#

tickspeed is the ideal amount of ticks per second

#

deltatime is the amount of time between irl frames

obsidian mantle
#

Can there be ticks inbetween delta checks

#

It must be some other program then

olive sable
#

ussualy you use 1 of the 2 systems, not both

obsidian mantle
#

I dont get the idea of what you can do except delta actually

#

Your function is called at deltas

#

It doesnt see anything inbetween

#

Setting up external function to run lesser deltas will still have its own deltas

#

But if those deltas are smaller, its actually better just because they are smaller

#

Especially if they are unaffected by internet lags for example

clear sedge
#

whether or not to introduce a separate floating point delta to a tick step from the render step is a different question to which i'll answer no

olive sable
#

gimme a sec ill make a diagram

clear sedge
#

floating point errors neuroNope frame-dependent math neuroNope

obsidian mantle
#

So you just suggest to run these calculations in another program which is unaffected by graphic/internet spikes

clear sedge
#

skipping in-betweens is how you get exploiters teleporting everywhere by changing a number in cheat engine neuroNope

olive sable
#

you can do the same thing with ticks bro

clear sedge
obsidian mantle
#

Yeah but

#

Then you have it running locally

#

Cheatable

amber fractal
#

Man we are just going in circles here

clear sedge
obsidian mantle
#

Impossible for live action games

clear sedge
#

why not have the singleplayer mode act the same way so you can reuse the same physics handling code?

obsidian mantle
#

You have 30-50 ping to the server you just cant rely on server entirely

#

It should run locally but be synced by polling yes

#

Basically both server and your pc play the game

amber fractal
obsidian mantle
#

I guess? Idk

clear sedge
#

i'm a huge advocate for determinisim, updating things each frame feels like it spits in the face of determinism

obsidian mantle
#

Cheating problem can only be fixed by local anti cheats overseeing your local calculations

olive sable
obsidian mantle
olive sable
#

you can see here that they work almost exactly the same way

#

except that one moves everything by fixed intervals evry x amount iof time, and the other moves everything by the time elapsed

#

both are valid

clear sedge
#

you're introducing floating point errors and framerate-dependent behavior, if you acknowledge that fact and are fine with it, do as you wish

#

deltatime on physics updates is a bandaid fix that crumbles down the line

olive sable
#

the floating point errors are quite literaly 0.000000001% of diffrence

#

and the fact you're checking if its time for a tick rn has jsut as much error

tender river
#

the difference is its eventually gonna result in the same calculations with ticks

olive sable
tender river
obsidian mantle
#

It will not be the same you get floating point errors on very high framerate indeed

#

Unless

#

Need to be checked

#

How big is error

clear sedge
obsidian mantle
#

If i have 100 frames per tick

tender river
#

its like using the euler method

#

you need small steps for accuracy

#

using large steps gets you "a" solution but it will be a different solution

clear sedge
#

based chayleaf take wording it better than i did

obsidian mantle
#

??????

tender river
#

in gamedev, using super small steps is overkill but determinism is still important

clear sedge
#

10-30 tps is probably fine for most games

obsidian mantle
#

What is more frequent, framerate or tick?

#

Im confused

clear sedge
#

framerate is generally more frequent

olive sable
#

if you calculate all your phyiscs from a starting position, ticks has a chance of being more acurate, if you calculate everything based on the previous position, then it really doesnt matter i think

#

that is my understanding of it

obsidian mantle
#

You get different results thats for sure

olive sable
#

for fps games where everything happens on split seconds intervals, you really dont want to be dependant on ticks that got calculated a whole 50ms ago like how minecraft has 20tps

clear sedge
#

configurable, of course

olive sable
#

64tps is still bad, imo use vsync

obsidian mantle
#

Depends on pc then neurOMEGALUL

olive sable
#

vsync for the physics updateloop, not the graphics

clear sedge
#

vsync for the physics

obsidian mantle
#

Better pc better tps

#

Bullshit

clear sedge
#

better pc better physics too i guess

olive sable
#

if you're doing multiplayer the tps will be decided by the server anywyas

#

this is a non-issue

clear sedge
#

neuroNope determinism is an issue you need to tackle when making a game

#

if you don't care for it, say as much

obsidian mantle
#

I would prefer less determinism in singleplayer

#

It can be fun

amber fractal
#

I'm betting that the proposed solution is essentially:
Ticks for physics, and just sample between for it for frames.

clear sedge
#

it's fine for small games or non-speedrunnable games, to update per frame, but you will lose determinism and will lose points in the speedrun community

obsidian mantle
clear sedge
#

speedrunning communities are often what keeps games alive

#

super mario 64 is still alive because a fuckton of people speedrun it

amber fractal
tender river
olive sable
#

no im using deltatime for physics enub in a seperate updateloop

#

not the renderloop

obsidian mantle
clear sedge
tender river
#

determinism just means that the conditions the game runs in (like players' hardware or os or background processes) dont affect what outcome the players get

obsidian mantle
#

It makes it less rng. Literally the definition of determinism - no rng (ideally)

clear sedge
#

i hate to break this to you but most rng is deterministic

amber fractal
obsidian mantle
#

You dont get it

#

Im not talking about math.random

#

Im talking about floating point errors that lead to some crazy funny shit

clear sedge
tender river
amber fractal
#

it can be done with deltatime, but honestly a waste

olive sable
#

i mean, does this even count as either?

while (running)
{
    pollEvents();
    inputs();

    //camData.camPos = position;
    //glBindBuffer(GL_UNIFORM_BUFFER, uboCampos);
    //glBufferSubData(GL_UNIFORM_BUFFER, 0, sizeof(camData), &camData);

    for (int i = 0; i < models.size(); i++)
    {
        models[i].transmat = glm::rotate(glm::mat4(1.0f), 0.001f * time * glm::radians(90.0f), glm::vec3(0.0f, 1.0f, 0.0f));
        models[i].transmat[3][2] -= 5;
        models[i].transmat[3][0] += ((i % 5) - 2.0) * 1.3;
        models[i].transmat[3][1] += int(i/5) * 1.3;
    }

    calculateFramerate();
    SDL_Delay(updateloopFrameDelay);
}

updateloopFrameDelay is a constant so it works like a tickspeed, but im still using deltatime for my physics too

obsidian mantle
tender river
#

anyway gotta go vedalEvilWave

swift shoal
#

how to patch kde2 under freebsd

obsidian mantle
#

Framerate updates create more errors. Less determinism. More random. More fun.

clear sedge
olive sable
clear sedge
#

motherfucker

#

welp i got actually'd so i automatically lose

#

gg

#

good argument

obsidian mantle
olive sable
#

it really isnt that bad. the deltatime actually does make a difference because even with SDL_Delay(), the updateloop is not consistent

glad path
#

do I have to return an argument from the function passed into map() in python

#

or can I just call use it arbitrarily like a for loop

clear sedge
#

it'll return None by default it seems

#

well, "return"

#

rather it gets treated like it returns None

glad path
#

aren't map calls more efficient than for loops

#

or am i just being delusional

opaque sigil
#

They're lazy

olive sable
#

i have received an art scammer in my dm's neuroNOWAYING

#

time to mess with them

clear sedge
opaque sigil
#

No

glad path
opaque sigil
#

You just loop over it

clear sedge
rigid snow
clear sedge
olive sable
#

nah this time it will be a real artist, trust 🙏 NeuroClueless

#

member since sept 12

rigid snow
olive sable
#

if i wanted to get art i could probably pay someone here 50 bucks to get it done properly

#

or my college

rigid snow
olive sable
#

Jancy^^ jancy._.star She/herMinamhm real person trust

olive sable
amber fractal
#

This would be benefits of both systems

#

Not that I'm invested in it, I just want it to end

obsidian mantle
#

Yes

#

Stable physics, unlimited framerate

clear sedge
olive sable
#

if deltatime is ever 0 you deserve to crash

clear sedge
olive sable
#

you're breakign the laws of physics cuz askign for the time takes time

obsidian mantle
#

How much fps you need to get 0 delta in scope of 32 float

clear sedge
#

idfk

#

¯_(ツ)_/¯

olive sable
#

wdym? like it has rounding error and goes to full 0?

#

literal trillions

obsidian mantle
#

Ye

#

So never

olive sable
#

ye

obsidian mantle
#

Surely the clock never lies glueless

clear sedge
#

what about when we become 4d beings with enhanced senses and enhanced 4d computers that can run apps at like a quadrillion fps

obsidian mantle
#

Hold up. The clock!

olive sable
#

in a loop that had nothing happen inside of it besides updating fps we had something around 200 billion fps updates per second, and that worked fine

obsidian mantle
#

Its limited by processor speed?

#

How frequent can you update the clock

olive sable
olive sable
obsidian mantle
#

Oh but then you have to update frames faster than your processor updates clock

#

Impossible

#

Unless the clock lies

clear sedge
olive sable
#

bruh

obsidian mantle
clear sedge
#

this is serious scientific discussion

obsidian mantle
#

256 bit float

olive sable
#

this si the kind of argument "what if an asteroid fell down and burned up in the atmospere causing a electron to fly into my computer causing a bitflip and makign my computer explode"

simple pollen
#

I have no idea how you would even measure fps with multiple time dimensions

olive sable
#

you dont

obsidian mantle
#

True. What if you get a bitflip

amber fractal
#

complex time vector

olive sable
#

fs^-2

obsidian mantle
#

Separate and duplicate each variable to consider possible bitflips

#

Raid type memory

simple pollen
olive sable
#

bro this is not even gamedev anymore, this is pure nonesense

clear sedge
#

run two instances of the app and let the user pick the one they want

obsidian mantle
#

Run 3 pick by voting

amber fractal
olive sable
#

in my honest opinion

#

ill continue doing it like this

#

i don't care

amber fractal
obsidian mantle
#

I know a 2007 game that has scripts calculated with int delta in ms

clear sedge
obsidian mantle
#

When you go above 1k fps it gets 0 delta

amber fractal
olive sable
#

the stuff with ticks based physics i can somehat agree on, but it is the literal fucking worst if you have to do more than 1 tick update at the same time

clear sedge
#

i'm gonna revamp your entire physics handling out of spite SMH

amber fractal
#

-# Free commits :xdx:

olive sable
rigid snow
amber fractal
olive sable
#

i do agree somewhat on his phsyics point so ill change that part of the engine actually

#

somewhat

rigid snow
tender river
amber fractal
tender river
#

doing a then b then a then b is not the same as doing a then a then b then b

rigid snow
olive sable
#

thats bad

tender river
#

it can happen for a variety of reasons

#

language gc pause? os scheduling? the kernel thread hanging for a few seconds? there are so many things that can go wrong

#

theres so many more

olive sable
#

i feel like those are 0.00001% occurences

tender river
#

no

amber fractal
rigid snow
#

skip ticks mhm

olive sable
#

absolutel dont skip ticks

amber fractal
#

Only I get to skip ticks if I use an insane window size in the openGL demo

rigid snow
olive sable
#

i thought c++ didnt have gc?

rigid snow
#

and gc pauses can be REALLY bad, like 2s long bad in certain scenarios
try to run minecraft with 512mb alloc

rigid snow
amber fractal
tender river
olive sable
#

idk why yall went quiet

#

there is no but

rigid snow
#

i was washing conditioner off

#

is that a good enough reason

rigid snow
#

WHAT 7%

clear sedge
amber fractal
rigid snow
#

charge yo dam phone neuroDinkDonk

amber fractal
# amber fractal mhm

I didn't bother to use forge as I'd grab my laptop at that point which can handle 512MB easily

glad path
#

TypeError: map() takes no keyword arguments since when were you not allowed to specify kwargs for normal args

#

huh

olive sable
rigid snow
opaque sigil
#

been a thing forever

clear sedge
#

pythonicism SMH

opaque sigil
#

anything over

def fun(*args, **kwargs)
amber fractal
#

I love network over the highways being garbage at times

amber fractal
clear sedge
#

29fps NeuroPoggers

olive sable
#

for that render distance, on a gaming phone, makes sense

amber fractal
#

I rarely use this phone for what it is meant for

amber fractal
#

Time to give it my usual amount of ram

olive sable
#

probably ye

olive sable
amber fractal
tender river
amber fractal
tender river
olive sable
#

hmmm
i guess with collision detection you cant really move 2 ticks at the same time

#

you still need to do them sequentially

amber fractal
#

Insert meme here

olive sable
#

ok i give in

clear sedge
#

do you see the light

olive sable
#

ticks are better for specific usecases

clear sedge
#

yes

#

you see the light

olive sable
#

there iss till the issue of making sure your ticks happen at the correct time

clear sedge
#

correct

olive sable
#

having a loop that constantly checks if its time for a tick is not a great solution, you're wasting cpu resources like that imo

amber fractal
#

I did actually have this set to vsync

tender river
amber fractal
olive sable
tender river
#

and thats not how games do it

#

update -> draw -> sleep

olive sable
#

kinda, i put the updateloop in a seperate thread

tender river
#

same principle evilShrug

olive sable
#

so then you update -> sleep -> update. and sure you can set the sleep to do the tickspeed, but i thought you said os scheduling would make it out of sync

amber fractal
#

There is no correct answer to this question

#

everything is subject to change

clear sedge
#

the correct answer is chug 16 shots of vodka down and go with whatever you wrote drunk

olive sable
#

amen

amber fractal
#

My honest opinion would to be store previous time and current time for dt calculations so that the combining of the systems doesn't have as much of an effect.

olive sable
#

hmm

amber fractal
#

Similar to how I did FPS in the triangle repo

#

except actually safe

clear sedge
#

vulkan users on their way to write shakespearean novels' worth of code to draw a triangle

olive sable
#

me fr fr

clear sedge
#

masochism

#

i respect you for that

amber fractal
#

I give credit to those who went for high FPS triangle

olive sable
amber fractal
#

-# I stripped so much of the mainloop for FPS gains

amber fractal
olive sable
#
double lastStart = now();
while (running)
{
    double start = now();
    updatePhysics();
    double elapsed = now() - laststart;
    lastStart = start;
    sleep(tickRate - elapsed);
}

does this make sense???? i feel like it doesnt

amber fractal
#

programmer mode isn't active yet :SMH:

amber fractal
clear sedge
#

oh that's fucking with my head

olive sable
#

ye

#

same

amber fractal
#

Let me just perish due to introducing more jank ideas and forcing someone else to write it

olive sable
#

well, mostly

amber fractal
clear sedge
#

updating graphics per-tick could make for a cool aesthetic though

amber fractal
#

Also geez we are finally at the campsite yippie!

clear sedge
#

minus the camera

olive sable
#

you might aswell just link your refreshrate to the tickrate

#

ah

#

in that case dont link your refreshrate

clear sedge
amber fractal
#

Let me write out some sudocode for the flowchart

#

Better off me doing it

clear sedge
#

sudocode

#

sudo gcc -o main main.c

olive sable
amber fractal
#

I always forget the spelling (and I forgor it was said earlier somehow)

tender river
#

and its impossible to make it run at a 100% consistent rate

olive sable
#

so it will drift then no?

clear sedge
tender river
#

thats exactly the point of using ticks

#

right i wanted to go to sleep good night

olive sable
#

goodnight

clear sedge
#

i do need to sleep too

#

it's 2 am

#

nighty night

olive sable
#

ye it is indeed 2am

#

but nah

clear sedge
#

sleep

olive sable
#

nah

clear sedge
amber fractal
#
const double TPS = 20 / 1000;
double lastStart = now() + TPS;
double nextTick = now();
while (running)
{
    double start = now();
    if (start >= nextTick)
    {
        updatePhysics();
        nextTick += TPS;
    }
    /* Uhhhh that's an issue, frick */
    updateGraphics(elapsed);
    double elapsed = now() - lastStart;
    lastStart = start;
    /* who needs sleep */
}
opaque sigil
#

2am, perfect time to mess with the core of your system config neuroPogHD

olive sable
#

i think this one does make more sense?

amber fractal
olive sable
#

the problem with that is th elack of sleep

#

im pretty sure that just blocks the entire thread like that

amber fractal
#

I'll have to be back, need to help

#

I'll be spotty with messages

olive sable
amber fractal
olive sable
#

thats cuz you're doing graphics on the same thread i see

rigid snow
#

unrelated but what does beamng’s physics engine run at

#

like 2khz or something

#

you should do the same thing

olive sable
#

2K ye

rigid snow
#

totally worth it, trust

olive sable
#

no

#

im doing my tickspeed at vsync

rigid snow
#

perfect addition to your next 2d platformer

rigid snow
#

that’s a choice

olive sable
#

xD

#

what is that supposed to mean?

#

my idea is that if its at lower than vsync, it will be choppy, and at higher than vsync you calculate stuff you wont see

rigid snow
#

it means that i interpret “tickspeed tied to vsync” as tied to monitor refresh rate

olive sable
#

i meant monitor refreshrate ye

rigid snow
#

so it means if you game on a tv with a shit hdmi cable your tps will be 30, and some oiler will have 540

olive sable
#

yes

rigid snow
#

what’s the point of ticks then

olive sable
#

well

#

uh

rigid snow
#

it’s like you want both the disadvantages from deltatime and ticks

olive sable
#

im so confused rn

#

stop having a point

#

if the tickspeed is lower than the monitor refeshrate, then the physics will look ass

#

but if its too high then low end pc's wont be able to calculate them fast enough

rigid snow
#

then don’t bother with ticks? if you want determinism you need to have fixed tickrate. yes tick based physics engines do slow down on shit systems, it’s just a matter of optimization

amber fractal
olive sable
rigid snow
#

but my personal opinion is you don’t actually need determinism in physics 99% of the time

#

unless you make your game based around physics. sam are you making half-life 3

olive sable
#

yes

rigid snow
#

broke nda or lying

olive sable
#

legally distinct half-alife 3

amber fractal
# amber fractal I can resolve my skill issue yippie
const double TPS = 20 / 1000;
double nextTick = now() + TPS;
double currentTick = now();
while (running)
{
    double start = now();
    if (start >= nextTick)
    {
        updatePhysics();
        nextTick += TPS;
    }
    double percentage = start - currentTick / TPS
    updateGraphics(percentage);
    /* who needs sleep */
}
rigid snow
amber fractal
olive sable
#

it works for a single threaded loop ye

rigid snow
amber fractal
#

Surely one can defer the physics part somehow.

#

What does suck is keeping a lastTick position and a currentTick position.

#

Or I guess probably offset from LastTick

#

-# I thought I was on vacation, why am I using my head to this degree?

#

Ending this here, good luck whoever ends up implementing this

#

btw, I think 120TPS is a good middle ground as this is essentially interloping physics frames.

olive sable
#

im so cooked

amber fractal
rigid snow
olive sable
#

i think thats fine?

midnight sigil
#

Iterative Search neuroPogHD

amber fractal
# olive sable i think thats fine?

only other option is to async physics and just make sure graphics can handle 100%+ updating a pointer to where the current game state is?

olive sable
#
double tick = now();
while (running)
{
    updatePhysics();

    tick += tickRate;
    sleep(tick - now());
}
#

wait

#

???

amber fractal
#

This just works as long as graphics can accept a percentage progress yep

olive sable
#

it would jsut use the old state, until it gets updated

#

interpolating between states makes latency and stuff happen

amber fractal
#

:hmm: you got a point there.

olive sable
amber fractal
#

os scheduling will always break, it's just a fact of life

olive sable
#

Uwu*****************@amd.com?

faint sandal
olive sable
#

why the stars?

midnight sigil
#

redaction

olive sable
#

oohh

faint sandal
#

yes

olive sable
faint sandal
#

no it is not

olive sable
amber fractal
#

I think it is better this way tbh

olive sable
#

🙏

amber fractal
olive sable
#

sadly probably someones name

#

uwu is a lot funnier tho

balmy nacelle
#

for a dev blog i wonder what tool you guys would recommend using for? From what i see i cant just have it in a simple file in my project like how i did my patch notes and ima try to see if i can save myself from having to code a website for it lol

faint sandal
#

jekyll-based solution is easy enough

#

basically all the markdowns will be rendered as static html, automatic if you have GitHub CI set up https://stillu.cc/

Just Still

Infosec. Blog. Photography. Anything.

#

and if you wanna be even lazier you can just... serve straight markdown file to your audience

jagged turtle
#

client-side markdown rendering, surely will not cause problems

faint sandal
#

thonk what

jagged turtle
#

nvm

#

im still goddamn tired after a camp

rigid snow
#

it's almost 7am

#

great

#

schedule fucked

olive sable
#

clang does not like std::atomic<float_t> with +=

#

but its completely fine with doign the smae thing with ints

#

and its even willing to compile the std::atomic<float_t> with +=, it just puts a problem into the vscode problems tab

#

weird

#

maybe a clangd issue?

olive sable
#

fixed it somehow

#

either cuz of updating, or cuz of using bear

#

i had to update to get bear Shruge

amber fractal
#

I thought we didn't want bears around here?

olive sable
#

aight, vulkan has msaa

#

there should be full visual parity between vulkan and opengl now

#

i also implemented the new tick system, and now the fps is a lot lower on vulkan. but i can't tell if its cuz of the msaa or the tick system being broken

#

the answer is both apparently, ill look into it

#

its doing msaa 8x apparently, so that explains why msaa has a noticeable effect. ill max it to 4x

thick imp
#

tutel

olive sable
olive sable
glad path
#

me when linktree

#

that's completely valid

amber fractal
#

Submit it anyways

#

surely you can just delete the JS check

#

One of these days Sam is going to add VR support just to spite VRC and it'll be at over 1000fps.

olive sable
#

ill see if im able to do that

#

it should run faster, but idk by how much

amber fractal
#

I've been trying to research on how to hook it up

olive sable
#

btw, if anyone comes in here again and talks about ticks vs deltatime i will throw a patato at them

amber fractal
#

no luck so far, but at least one part is camera per eye

#

Finally got answers, sadly the answer is custom SDL fork that has major issues still.

olive sable
#

id guess we woudlnt use sdl then

amber fractal
#

For your own research, your targeting OpenXR support

#

That is what SteamVR and the other linux alternatives target.

#

It'd be so damn funny by the end of this to just casually have a VRC replacement. That does sound like too much of zero budget tho.

#

Honestly I'd just be happy to see VR that doesn't tank FPS

olive sable
#

budget isn't exactly 0, i just haven't spent anything yet

#

pfff

#

lets say the budget is maybe 50 bucks

amber fractal
#

I admit that it'd be worth learning c++ for, though I'd also be donating to the fund because I think it would be fun to make.

#

Once this fricking job goes through that is

glad path
thick imp
#

LOL

olive sable
#

🔥

#

idk what they expected but sure

faint sandal
#

i'm more concerned that it's on a bed

#

at least it looks like a bed

hoary lion
#

it seems so

olive sable
#

ok i have made it a tick based system now

#

the repo has been updated, it mostly work

clear sedge
olive sable
#

the code is fugly tho

#

these std::chrono functions feel like a crime everytime i use them

#

const clock::duration UPDATE_DELTA = std::chrono::duration_cast<clock::duration>(std::chrono::duration<double>(TICK_RATE));
this should be illegal

#

i hate how i have to use this

#

maybe i can use uints like before but then convert to a std::chrono time when i need it for std::this_thread::sleep_until(nextTime);???

clear sedge
#

std::chrono is pretty wordy

obsidian mantle
#

why does noone use "using namespace std;" thonk

obsidian mantle
#

huh

thick imp
#

good idea to use that same bed for engineering

olive sable
#

I see

#

Might aswell use that same bed for cooking then

olive sable
faint sandal
#

the latency is not great though ideally i'd use the COM interface instead of the http comms, but the COM comm requires elevation

midnight sigil
nocturne olive
#

Wha?

faint sandal
#

the "how long can i RE a binary without hitting the decompile button" challenge

tender river
#

neurowheeze f5 = shock

thick imp
#

good idea t

midnight sigil
#

shock

stray dragon
#

?

#

what idea

tender river
faint sandal
#

shock

obsidian mantle
#

ok so i figured out how to see my qt installations

#

however this tool doesnt see qt6 so i just removed qt6 just in case

#

then i tried set up qt_choose varibale

#

which is absolutely ignored

#

then if it cant see qt6

#

what if it doesnt see some other qt

#

so stupid

#

so i have no idea who uses qt, which qt is used, are my qts even valid

#

since i dont know who uses qt when i rup my app, i cant configure it to use different qt

#

and i dont even have qt5/bin folder

#

"referred by another package"

#

maybe tell me WHICH package?

#

naah

#

its linux, boy

#

if its possible to make something more complex and ambiguous for no reason - we make it neuroEZ

#

i cant believe they are using english, should have made everything in bytecode for additional coolness

hexed grove
#

that package is broken as well

obsidian mantle
#

broken as well

#

as well as what

#

do i have something else broken

hexed grove
#

why use the older version if not needed

#

so i assume you need it

obsidian mantle
#

because qtchooser doesnt support qt6

#

and i clearly need to do some rituals involving choosing

hexed grove
#

qtchooser is no longer maintained

obsidian mantle
#

how else can i make it choose specific qt version

#

when i just ./chess.appimage

#

it runs it with random qt version that has no way to be configured

#

i asssume its this

#

this file is not readable nor writable

hexed grove
obsidian mantle
#

yes

#

is it impossible

hexed grove
#

you cant choose it

obsidian mantle
#

but why

hexed grove
#

or whatever your app is using

obsidian mantle
#

it probably doesnt use qt5 or qt6

#

i have qt4 installed and "default"

#

i assume it uses "default"

hexed grove
obsidian mantle
#

its nice how someone decided to call his program version just "default"

obsidian mantle
#

i looked up main.cpp of program it has nothing where they choose qt version

obsidian mantle
#

i guess i need this folder

hexed grove
#

one sec

obsidian mantle
#

it has this which is not getting printed at all

#

oh shit

#

i need to run it with -v

#

i dont even have this version????

hexed grove
#

its in the app

obsidian mantle
#

or do they mean it was built with qt6

rough bloom
#

seems like it wants either Qt 5 or 6

obsidian mantle
hexed grove
#

man

obsidian mantle
#

so i must rebuild it to change theme

hexed grove
hexed grove
#

try running QT_QPA_PLATFORMTHEME=gtk3 ./EXAMPLENAME.AppImage

#

gtk3 should provide a dark theme

obsidian mantle
#

why is this so slow

hexed grove
#

yknow what

obsidian mantle
#

it warned my that "operations like gitlone are slow in wsl on windows filesystem", does it appear for building too

midnight sigil
#

why do you want to build your own cutechess enub

obsidian mantle
#

it has no dark theme on linux

midnight sigil
#

that's it?

#

XD

obsidian mantle
#

my eyes sore in the night neuroBwaa

#

because of blazing white

#

fullscreened

midnight sigil
#

doing it the programmer way mhm

obsidian mantle
#

which folder in linux can i work in

midnight sigil
#

just use windows

obsidian mantle
#

usr/ is permission denied

#

usr/local is permission denied

#

i dont want to make sudo before every command

#

will it work if i make folder and chmod it

#

or will it see it as a unrestricted subfolder of restricted folder and deny everything

#

(i think it worked like that in that debian i encountered)

hexed grove
obsidian mantle
#

not obvious at all

#

usr is user, isnt it? why cant user use user folder

#

huh

#

classic

rough bloom
#

mhm make subdirectory somewhere in your user directory
don't need to install globally if you just want to test

rough bloom
#

usr = unix system resources

obsidian mantle
#

WHO ABBREVIATES IT LIKE THAT

hexed grove
obsidian mantle
#

no perms

#

whatever i'll try chmodding it

rough bloom
#

do not

#

just use your user directory

hexed grove
#

THATS YOUR HOME

obsidian mantle
#

ooh i see

hexed grove
#

OR ~/

#

cd ~/

obsidian mantle
#

it works neuroHypers

hexed grove
#

who coulda guessed

#

now please dont destroy your system

#

okay?

obsidian mantle
#

build is x5 times faster

midnight sigil
#

so you're using WSL

#

why don't just use windows cutechess

midnight sigil
obsidian mantle
#

now i doubt it would cause problems... however

midnight sigil
#

NeuroClueless this is the advantage of using Python

obsidian mantle
#

but actually i think more and more about switching to windows entirely to use vscode live debugging

midnight sigil
#

it should be fine as you're just using the std libs

obsidian mantle
#

its much easier with breakpoints and live debugging

#

instead of logging shit

rough bloom
obsidian mantle
#

NOW THE QUESTION
if my build was x5 times slower in windows filesystem, does it make my cutechess slower too?

obsidian mantle
#

the cpu seems to be used much but what if it was wasted on filesystem transfering

hexed grove
#

once its in ram shouldnt matter

obsidian mantle
#

oh ok

hexed grove
#

the difference shouldnt be the filesystem

#

it would be the linux hypovisor in wsl

rough bloom
midnight sigil
#

I/O redirecting shouldn't take much time

midnight sigil
obsidian mantle
#

no way. i just built it in linux and it automatically has dark theme now NeuroPoggers

rough bloom
obsidian mantle
#

i slightly want to learn linux

#

just for the sake of it

hexed grove
obsidian mantle
#

but i dont want to play with dualsystem switching from linux to windows so i stick to wsl

midnight sigil
#

I dual-boot Debian and Windows 11

obsidian mantle
#

i go program chess whenver i need it and just close wsl and continue doing things in windows

rough bloom
obsidian mantle
#

what the hell is this shit

#

cant have file and folder of same name

hexed grove
#

i love btrfs

#
/dev/mmcblk0p1   14G  6.4G  7.0G  48% /```
midnight sigil
obsidian mantle
#

ok now my chess building is fucked up

#

ohhh

#

im in ~

#

stoopid me

#

wait

#

its light theme when i run it from there

#

ok so i entirely migrate to linux filesystem then

rough bloom
#

sadly bcachefs isn't really reliable yet

hexed grove
#

doesn't fit your needs?

obsidian mantle
rough bloom
hexed grove
obsidian mantle
#

what does it want

obsidian mantle
#

its still white theme what

rough bloom
#

WinBtrfs classic

obsidian mantle
#

does it need some ini file with it

hexed grove
#

it has better compression than ntfs

#

windows on 4g partition?

#

ive done it on 6 gigs before

obsidian mantle
#

but at least i have this.. wont be a problem now

#

neuroHypers thanks for big help

#

it all worked out

ember spindle
#

Damn, haven't been popping in here as much as I wanted to when I joined lol. Started remembering that I kind of wanted to try and make a level creator for that Quest Through the Harrison Temple game, it was fun messing around with it and speedrunning it lol.

midnight sigil
#

less nodes is required to search for depth 8 compared to the previous depth 6

obsidian mantle
#

NeuroPoggers what

#

when i try to implement something new it either looks like shit or makes it worse

#

how do you even choose what to make

#

there are 500 different strategies with questionable perfomance

midnight sigil
#

yes tranpositions

#

I have

obsidian mantle
#

oh wait its

#

its 100 seconds

midnight sigil
#

yuh

#

for depth 9

#

it's more like the evaluation function messing the time up

#

it sucks

obsidian mantle
#

i'll measure time per layer too PauseSama
told it to stop when 100 seconds reached

midnight sigil
#

I use playerTimeLeft / 8

#

or uh 12.5% of the clock of the current player

#

that's his max search time

obsidian mantle
#

ok so after layer 5 it started really slowing down

#

depth 5 was 3.6 seconds
depth 6 was 36 seconds

midnight sigil
#

it grows exponentially SMILE

obsidian mantle
#

so i guess these things you did actually work

midnight sigil
#

well there's a lot of pruning methods I used

#

reduction helps a lot too

#

basically ignoring to evaluate some moves

#

down side is heavily depends on move ordering

obsidian mantle
#

but then it gives 0

#

and if you have bad moves everywhere and this is 0

#

it will be chosen but what if its super bad move

midnight sigil
#

it doesn't matter at that point then

obsidian mantle
#

but it will be evaluated back to the depth0

#

oh i mean maxdepth

#

uhh i dont get it

midnight sigil
obsidian mantle
#

it always feels like "man this strategy sucks it will cause random false evaluations"

obsidian mantle
midnight sigil
#

normal search

obsidian mantle
#

do you have iterative search

midnight sigil
#

the reduction is carefully crafted that you won't get depth 0 results neuroPogHD

midnight sigil
#

otherwise you won't be seeing the layer thing

obsidian mantle
#

oh right

uneven pulsar
#

awa

midnight sigil
#

awa

obsidian mantle
#

im also scared to add more things because im still not sure my current things work

#

no idea how to check if its right or not

#

it wins agains my old bot but my old bot is just a dum

#

and then i have 2 versions of this current bot but they can both have same problems i dont see

midnight sigil
#

do more tests neuroPogHD

obsidian mantle
#

how do you end quiescence?

#

idk how to test it neuroCry

midnight sigil
#

just iterate through all captures

obsidian mantle
#

only captures? what about checks

#

i thought if i let it go on checks it will evade mates

midnight sigil
#

it's actually just this in Sebastian's video

obsidian mantle
#

that i saw

midnight sigil
#

Q-search is only used to find quiet positions

obsidian mantle
#

i do it like this