Guild icon
DDraceNetwork
Development / developer
Development discussion. Logged to https://ddnet.tw/irclogs/ Connected with DDNet's IRC channel, Matrix room and GitHub repositories — IRC: #ddnet on Quakenet | Matrix: #ddnet-developer:matrix.org GitHub: https://github.com/ddnet
Between 2021-10-29 00:00:00Z and 2021-10-30 00:00:00Z
Avatar
Jupstar ✪: @Learath2 @Ryozuki my take in rust: use std::mem; use std::sync::Mutex; use std::sync::atomic::AtomicI32; use std::sync::atomic::Ordering; fn main() { let protect_me = AtomicI32::new(0); let m = Mutex::new(()); crossbeam::scope(|s| { let t = s.spawn(|_| { let mut break_loop = false; while !break_loop { let guard = m.lock().unwrap(); println!("test {}", protect_me.load(Ordering::Relaxed)); if protect_me.load(Ordering::Relaxed) >= 1000 { break_loop = true; } mem::drop(guard); // optional } }); while protect_me.load(Ordering::Relaxed) < 1000 { let guard = m.lock().unwrap(); protect_me.store(protect_me.load(Ordering::Relaxed) + 1, Ordering::Relaxed); mem::drop(guard); // optional } t.join().unwrap(); // optional }).unwrap(); }
02:50
needs crossbeam = "0.8.1" in Cargo.toml
02:51
note that relaxed atomics use exactly the same instructions for loading/storing as normal variables on all platforms that I know of: https://www.cl.cam.ac.uk/~pes20/cpp/cpp0xmappings.html
Avatar
Don't know if known already, but for some reason when enabling super on LAN, the server closes / crashes
Avatar
doesn't look known
02:53
care to submit a bug report?
Avatar
I don't use github, I should probably learn to
Avatar
I can walk you through creating an account, but that's probably not very hard if you've ever created an account somewhere
02:55
DDraceNetwork, a cooperative racing mod of Teeworlds - Issues · ddnet/ddnet
02:55
(usually you'd use the search bar there to check whether your issue has already been reported, but in this case I already did it for you)
02:56
then you click "New issue" and enter a title and a description, then click "Submit new issue"
Avatar
Hopefully that's fine
Avatar
perfect
Avatar
Thanks for the walkthrough happy
Avatar
@Skeith I couldn't reproduce the issue, can you tell me what version of the DDNet server you use and on which operating system the server runs?
Avatar
Windows 10
03:10
I could update my ddnet client and see if that fixes the issue
03:11
Probably should've done that from the start, forgot to check if I was updated
Avatar
the ddnet server shouldn't crash no matter which ddnet client version connects
03:14
ah, but the server is updated with the client (because it's from steam?)
Avatar
Yea, I have it via steam nightly
03:15
@heinrich5991 Should I update and see if it fixes itself?
Avatar
if there's no inconvenience, yes
03:15
if that's not inconvenient for you, yes
Avatar
Yep, doesn't crash me anymore
03:18
My bad, I'll remember to update first before reporting. 😅
Avatar
nice, you can comment that it doesn't crash anymore on latest nightly and close the issue 🙂
03:18
and you already have an account for the next time you find a bug ^^
happy 1
Avatar
good night
Avatar
Good night happy
Avatar
Avatar
heinrich5991
Jupstar ✪: @Learath2 @Ryozuki my take in rust: use std::mem; use std::sync::Mutex; use std::sync::atomic::AtomicI32; use std::sync::atomic::Ordering; fn main() { let protect_me = AtomicI32::new(0); let m = Mutex::new(()); crossbeam::scope(|s| { let t = s.spawn(|_| { let mut break_loop = false; while !break_loop { let guard = m.lock().unwrap(); println!("test {}", protect_me.load(Ordering::Relaxed)); if protect_me.load(Ordering::Relaxed) >= 1000 { break_loop = true; } mem::drop(guard); // optional } }); while protect_me.load(Ordering::Relaxed) < 1000 { let guard = m.lock().unwrap(); protect_me.store(protect_me.load(Ordering::Relaxed) + 1, Ordering::Relaxed); mem::drop(guard); // optional } t.join().unwrap(); // optional }).unwrap(); }
I was wondering if you could avoid the atomic since that was one of jupeyy's requirements
05:16
@heinrich5991 if you have a couple minutes can you take a look at this weird crash where we seem to be ticking on a zero'd out ccharacter instance (maybe zero'd due to static initialization)
Avatar
have you ever heard of that bug, on one map with the latest ddnet some quads doesn't seem to work properly (iF|City, vanilla based mod). The left light quad on the other room seems to work properly, but not the room on the right
ReiTroll 3
06:26
Someone told me to disable mordern opengl as a fix
06:28
they're just different looking, if you go check how it looks like with another client (edited)
Avatar
chillerdragon BOT 2021-10-29 07:04:47Z
Is the quad animated ?
Avatar
c7f0ceb Update spanish.txt - n0Ketchp ead9343 Update spanish.txt - n0Ketchp 739f6da Update spanish.txt - n0Ketchp 0713fd7 Merge #4260 - bors[bot]
07:54
github making its own bors feature
Avatar
Yaaay
08:12
Bors keeps ignoring fokkonauts prs
Avatar
Avatar
ReiTW
have you ever heard of that bug, on one map with the latest ddnet some quads doesn't seem to work properly (iF|City, vanilla based mod). The left light quad on the other room seems to work properly, but not the room on the right
cuz if city sux😳
Avatar
Avatar
chillerdragon
Is the quad animated ?
Yea
Avatar
@deen I have an idea depending on how often we get this crash
Avatar
Often enough?
Avatar
I mean can I hope to get one in a day?
08:55
I want to try what jupeyy suggested. I'll just allocate the character objects dynamically so we just get an asan use-after-free
08:55
If you deploy it on all servers and run it for a day you'll get ~10 crashes
Avatar
Avatar
ReiTW
have you ever heard of that bug, on one map with the latest ddnet some quads doesn't seem to work properly (iF|City, vanilla based mod). The left light quad on the other room seems to work properly, but not the room on the right
I once had a bug where a quad looked normal ingame, but in the editor it was a black square. Probably not divisible by 4
Avatar
Avatar
Learath2
Bors keeps ignoring fokkonauts prs
maybe because my branch doesnt exist anymore
Avatar
@Learath2 in this case, the same code is generated for atomics and normal variables (see the link, relaxed atomics are the same). for more complex data structures, I agree, it'd no longer be possible to use atomics. then you'd probably create a safe abstraction out of your weird mutex usage:
10:39
use std::cell::UnsafeCell; use std::mem; use std::ops; use std::sync; pub struct WeirdMutex<T> { mutex: sync::Mutex<()>, data: UnsafeCell<T>, } pub struct WeirdMutexGuard<'a, T> { _guard: sync::MutexGuard<'a, ()>, data: &'a mut T, } pub struct WeirdMutexRo<'a, T> { inner: &'a WeirdMutex<T>, } pub struct WeirdMutexRoGuard<'a, T> { _guard: sync::MutexGuard<'a, ()>, data: &'a T, } unsafe impl<'a, T> Send for WeirdMutexRo<'a, T> {} unsafe impl<'a, T> Sync for WeirdMutexRo<'a, T> {} impl<T> ops::Deref for WeirdMutex<T> { type Target = T; fn deref(&self) -> &T { unsafe { &*self.data.get() } } } impl<T> WeirdMutex<T> { pub fn new(data: T) -> WeirdMutex<T> { WeirdMutex { mutex: sync::Mutex::new(()), data: UnsafeCell::new(data), } } pub fn lock<'a>(&'a self) -> WeirdMutexGuard<'a, T> { WeirdMutexGuard { _guard: self.mutex.lock().unwrap_or_else(|p| p.into_inner()), data: unsafe { &mut *self.data.get() }, } } pub fn ro<'a>(&'a self) -> WeirdMutexRo<'a, T> { WeirdMutexRo { inner: self, } } } impl<'a, T> ops::Deref for WeirdMutexGuard<'a, T> { type Target = T; fn deref(&self) -> &T { self.data } } impl<'a, T> ops::DerefMut for WeirdMutexGuard<'a, T> { fn deref_mut(&mut self) -> &mut T { self.data } } impl<'a, T> WeirdMutexRo<'a, T> { pub fn lock(&self) -> WeirdMutexRoGuard<'a, T> { WeirdMutexRoGuard { _guard: self.inner.mutex.lock().unwrap_or_else(|p| p.into_inner()), data: unsafe { &*self.inner.data.get() }, } } } impl<'a, T> ops::Deref for WeirdMutexRoGuard<'a, T> { type Target = T; fn deref(&self) -> &T { self.data } }
10:39
fn main() { let protect_me = WeirdMutex::new(0); crossbeam::scope(|s| { let ro = protect_me.ro(); let t = s.spawn(move |_| { let mut break_loop = false; while !break_loop { let guard = ro.lock(); println!("test {}", *guard); if *guard >= 1000 { break_loop = true; } mem::drop(guard); // optional } }); while *protect_me < 1000 { let mut guard = protect_me.lock(); *guard += 1; mem::drop(guard); // optional } t.join().unwrap(); // optional }).unwrap(); }
10:41
also Jupstar ✪: @Ryozuki this allows you to contain your unsafe code to a module unrelated to the application logic, this means that you don't introduce race conditions when you change application logic (this does use unsafe, but that's nothing bad per se, using unsafe to create safe abstractions, this is also how mutex etc. are implemented)
Avatar
⭐♥ST-Chara♥⭐ 2021-10-29 11:11:45Z
How to make sixup?
Avatar
Maps have to be converted with map_convert_07 and put into maps7 directory
Avatar
Jupstar ✪ BOT 2021-10-29 11:38:48Z
@heinrich5991: mhh, my point really wasnt so much about performance, more about what is possible. Also i'd have thought the difference between relaxed atomics and non atomics is simply, that non atomics don't need to exist on the memory frame readable by other threads. So basically it could hold the value in a register all the time and only push the changes, but never read them back
11:39
@ReiTW: can you send the map, so i dont need to enter the if city mod
Avatar
sure wait
Avatar
@deen I'm making my twmap library stricter to only allow external images that are actually valid (shipped with the vanilla client). there are 8 maps in ddnet that have faulty external images. only one of those maps actually used that image (mazepack). could you upload the fixes when you have the time? (edited)
12:17
hm couldve maybe zipped them, my bad
12:18
the maps are types/ddmax/maps/Deadline 1.map types/ddmax/maps/Get The Gifts.map types/ddmax/maps/NUT_hardcore_race2.map types/ddmax/maps/NUT Hardcore UNITED.map types/ddmax/maps/NUT_race7.map types/oldschool/maps/Crimson.map types/oldschool/maps/Hardstyle 2.map types/solo/maps/mazepack.map
12:19
2.03 MB
Avatar
(deleted the single map files to clutter the chat less, sry irc)
Avatar
Jupstar ✪ BOT 2021-10-29 12:25:47Z
@ReiTW: i see, the mapper used an alpha value of >10 (normally colors are clamped between 0 - 1) in the envelop :D
12:25
thanks for sharing
12:26
@Patiga: can your map tool fix that already? :D
12:27
else i have it as feature request :P
Avatar
hm how would you go about fixing that? if you clamp it to 0-1, you would interpolate differently
Avatar
Jupstar ✪ BOT 2021-10-29 12:28:24Z
well the non gl 3.3 version litterally converts it to unsigned char, so not much better
12:28
just disallow and clamp is my guess
12:29
is that used so commonly or what?
Avatar
huh in blender values > 1 were also easy to do for colors
Avatar
Jupstar ✪ BOT 2021-10-29 12:29:37Z
bcs blender supports high dynamic color ranges
Avatar
well values >1, but very close to 1 will be very very common I think
Avatar
Jupstar ✪ BOT 2021-10-29 12:29:49Z
i doubt blender uses RGBA color spaces :D
Avatar
above 2 I'm not sure, lemme check
Avatar
Jupstar ✪ BOT 2021-10-29 12:32:40Z
ok nvm, old backend defs clamps it before clampf(r, 0.f, 1.f); clampf(g, 0.f, 1.f); clampf(b, 0.f, 1.f); clampf(a, 0.f, 1.f); m_aColor[pArray[i].m_Index].r = (unsigned char)(r * 255.f); m_aColor[pArray[i].m_Index].g = (unsigned char)(g * 255.f); m_aColor[pArray[i].m_Index].b = (unsigned char)(b * 255.f); m_aColor[pArray[i].m_Index].a = (unsigned char)(a * 255.f);
12:33
so values not in range of 0-1 are "invalid" in some way
Avatar
does it clamp before or after it gets multiplied with the original color value?
12:33
looks like before?
Avatar
Jupstar ✪ BOT 2021-10-29 12:34:22Z
yeah
12:35
but i dont want to clamp inside the GPU
12:35
i guess this just is a flaw in the teeworlds universe
12:36
mhh but it works on the other backend
Avatar
wait the function this is in is SetColorVertex, then it should already have calculated the influence of the envelope, no?
Avatar
Jupstar ✪ BOT 2021-10-29 12:36:42Z
strange, let me debug quick
12:36
it did, i am bit confused right now, gimme a second
Avatar
ah yea I remember testing that. if you have a color where the for example green value is 0.5, you can use a envelope value of 2 to get it to 1.0 green, intensifying it
Avatar
Jupstar ✪ BOT 2021-10-29 12:39:04Z
ah right, doesnt matter where its clammped
12:39
the other quad corners are 0
12:39
and 0*10 = 0
12:39
with half transparent it would also break with older backend
Avatar
sounds about right ^^
Avatar
Jupstar ✪ BOT 2021-10-29 12:41:39Z
mhh that annoys me now, bcs it would only be "fixable" on the GPU side
12:41
can your tool find out what maps also do it?
12:41
i want to know if any ddnet map abuses it
Avatar
yeah I'm on it
Avatar
Jupstar ✪ BOT 2021-10-29 12:42:06Z
oh nice
12:45
out of the ~2000 maps, 695 maps have used envelope that contains an envelope point with a value > 10.0
12:46
*have a
Avatar
Jupstar ✪ BOT 2021-10-29 12:46:03Z
for colors?
12:46
or generally
Avatar
generally, lemme check for colors
12:46
ah right, for the others its irrelevant
12:50
for color envelopes: 17 maps with values > 10, 43 with values > 2, 376 with values > 1
Avatar
Jupstar ✪ BOT 2021-10-29 12:50:28Z
ok but i guess >1 can also be margin of error
Avatar
just so we are on the same page: the map stores the env color value as a i32. value 1 is 1024
Avatar
Jupstar ✪ BOT 2021-10-29 12:51:20Z
ok it only matters for alpha values, can you also check that? XD
Avatar
yeah >1 probably is mostly maps that wanted the value 1
12:51
sure
12:53
maps with color envelopes with a point with an alpha value > 2: 27
Avatar
Jupstar ✪ BOT 2021-10-29 12:53:34Z
ok
Avatar
if you want the list of maps for any of those I can paste it
Avatar
Jupstar ✪ BOT 2021-10-29 12:54:14Z
obviously that doesnt mean it braeks smth, if the quad doesnt use the alpha channel for example but yeah you can show me a few
Avatar
first 10 of the 27: "types/brutal/maps/Agony.map" "types/brutal/maps/Aim 11.0.map" "types/brutal/maps/Aim 8.0.map" "types/brutal/maps/Childs Play 1.map" "types/brutal/maps/Nightly Tandem.map" "types/brutal/maps/Space & Time 2.map" "types/brutal/maps/Space & Time.map" "types/ddmax/maps/Blue Sky.map" "types/ddmax/maps/Cigarette.map" "types/ddmax/maps/DeadEnd.map"
Avatar
Jupstar ✪ BOT 2021-10-29 12:56:05Z
ah
12:56
and they can be unused, like in Aim 8.0
12:56
atleast the editor shows it "red"
12:56
i guess that means unused?
Avatar
I should have already filtered the unused ones
12:56
I think it was the unintuitive color
Avatar
Jupstar ✪ BOT 2021-10-29 12:56:35Z
ok then i dunno what the editor wants :D
Avatar
yea red is used
12:56
green unused
Avatar
Jupstar ✪ BOT 2021-10-29 12:58:09Z
thats some weird color choice xD
Avatar
agreed ^^
Avatar
Jupstar ✪ BOT 2021-10-29 12:59:13Z
mh i see, bcs all enveloppes use the same value it doesnt matter again
Avatar
Avatar
Jupstar ✪
thats some weird color choice xD
I must have had a stroke while coding that
Avatar
Jupstar ✪ BOT 2021-10-29 13:02:03Z
i cant even tell what makes more sense tbh, multiply it in the interpolation or pre multiply itother than that it annoys me, bcs i bet 99.99% of the maps just use it without thinking about itIn @ReiTW example its not needed at all, the quad only uses corners with alpha 1 and alpha 0, which makes no difference with the env 10
Avatar
Jupstar ✪: relaxed atomics similarly have no guarantees on when the changes are visible from other threads
13:50
the compiler can also keep them in a register until a synchronization point
Avatar
Avatar
heinrich5991
Jupstar ✪: relaxed atomics similarly have no guarantees on when the changes are visible from other threads
There is a very loose guarantee that the changes will be possible in finite time :P
13:51
s/possible/visible
Avatar
is there?
13:52
it's there de-facto because cpus flush memory after some very short time
13:52
but is it guaranteed anywhere?
Avatar
The C++11 standard does guarantee it iirc
Avatar
29.3.13 Implementations should make atomic stores visible to atomic loads within a reasonable amount of time.
13:56
huh, TIL
Avatar
Yep \○/
14:06
@heinrich5991 wouldn't it be way too difficult to use relaxed atomics for anything without that guarantee?
Avatar
tell me a use case for relaxed atomics that doesn't use another form of synchronization @Learath2
Avatar
Hm, any use case where you just dont want a trap representation/an incomplete update
14:18
Or where you dont care about the order w.r.t surrounding code. Getting unique ids using fetch_add or updating stats were common examples I found when researching atomics
Avatar
ah yea, I can see fetch_add being useful
14:18
updating stats as well, I guess
Avatar
Though I'm not sure if any relevant platforms even tear writes anymore
Avatar
the CPUs themselves not (see the atomics mapping posted above, it's all normal stores)
14:22
but the compiler doesn't give any guarantees that it's going to lower your int assignment to the CPU instruction
Avatar
Avatar
Learath2
Though I'm not sure if any relevant platforms even tear writes anymore
what is a tear write
14:45
can you explain
14:45
this is hard to find with google xd
Avatar
e.g. writing a u32 as one byte at a time
14:46
another thread might see a partial update
14:46
thanks
Avatar
Avatar
heinrich5991
ah yea, I can see fetch_add being useful
Now that I think about it fetch_add is useful true but only on platforms where the operation doesnt require a full fence
14:47
I think on x86 a RMW operation always requires a lock, no?
Avatar
RMW = read modify write right?
14:49
xd
14:50
i should rly deep dive in atomics sometime
14:50
i just havent had the need to do so xd
Avatar
Avatar
Ryozuki
RMW = read modify write right?
Yep
Avatar
On x86, atomic RMW instructions like lock add dword [rdi], 1 are implemented using cache locking on modern CPUs. So a cache line is locked for duration of the instruction. This is done by getting the
Avatar
Atomics are fairly simple. Memory order is where all the insanity is
14:53
SeqCst atomics work as humans expect
14:54
the answer to this question is long af
Avatar
Hi, would be cool to add custom colorization for some entities instead of having to edit the asset.
Avatar
applying a tint to the whole entity is probs easy but u probs dont want that
14:58
i dont think its worth
15:13
f02f628 Add Tarzan as Vanilla Mod - murpii 60119ef Merge pull request #154 from murpii/patch-2 - def-
Avatar
`` /usr/bin/ld: CMakeFiles/DDNet.dir/src/engine/client/client.cpp.o: in function CClient::MapDownloadTotalsize() const': client.cpp:(.text._ZNK7CClient20MapDownloadTotalsizeEv[_ZNK7CClient20MapDownloadTotalsizeEv]+0x30): undefined reference to __atomic_load_8' /usr/bin/ld: CMakeFiles/DDNet.dir/src/engine/client/client.cpp.o: in function CClient::MapDownloadAmount() const': client.cpp:(.text._ZNK7CClient17MapDownloadAmountEv[_ZNK7CClient17MapDownloadAmountEv]+0x30): undefined reference...
Avatar
Jupstar ✪: you know if there is a way to render a label (or text) on a rect but that is not centered vertically
16:16
e.g it starts from the top
Avatar
Jupstar ✪ BOT 2021-10-29 16:18:31Z
it is possible, but e.g. a g would go bellow it
16:19
or from the top | might be above it
16:19
im trying to do this
16:19
a tooltip
16:19
on hover
16:19
Avatar
Jupstar ✪ BOT 2021-10-29 16:19:43Z
oh
16:20
do label also has vertical alignment
Avatar
idk why it doesnt start on top
16:20
xd
Avatar
Jupstar ✪ BOT 2021-10-29 16:20:12Z
let me see in code wait
16:22
guess bcs of the margin?
16:23
i guess it just wasnt made for multi lines, is it multi line?
Avatar
i added maxwidth so it becomes multiline
16:23
i guess
16:23
xd
16:23
the text itself doesnt have \n
Avatar
Avatar
Jupstar ✪
guess bcs of the margin?
the margin is 1
16:24
on all sides
Avatar
Jupstar ✪ BOT 2021-10-29 16:24:14Z
ok
Avatar
if i make the rect height
16:24
small enough it kinda starts
16:25
but the text overflows
Avatar
Jupstar ✪ BOT 2021-10-29 16:25:04Z
i'd say addelse if(AlignVertically == 1) { AlignmentVert = pRect->y; }to DoLabel
16:25
it just isnt implemented yet
16:25
ok ill put it there
16:25
btw
16:25
Align
16:25
to align on left
16:25
is -1?
16:25
i hecking love magic numbers
Avatar
Jupstar ✪ BOT 2021-10-29 16:25:39Z
ah sry
16:25
-1
16:26
yeah -1 is left i think
16:26
i added this
16:26
i wonder if it works
Avatar
Jupstar ✪ BOT 2021-10-29 16:26:31Z
also pls add it to DoTextLabel, same code just without pRect->
16:26
lamo so much code duplicates always
Avatar
Jupstar ✪ BOT 2021-10-29 16:27:14Z
yeah try it :D
16:27
but also add it to DoLabel
16:27
there are 2 versions xD
16:27
jhust search AlignVertically in the file
16:27
done
16:27
:w
16:27
ups
16:27
my vim lmao
16:27
leaking
Avatar
Jupstar ✪ BOT 2021-10-29 16:27:40Z
the other uses pRect
16:28
it works nice
Avatar
Jupstar ✪ BOT 2021-10-29 16:28:39Z
epic gamer moment
Avatar
do u know
16:28
if i can calculate the perfect font height
Avatar
Jupstar ✪ BOT 2021-10-29 16:28:58Z
but nice that you implement tooltips
Avatar
for a given width and height rect
16:29
?
16:29
xd
Avatar
Jupstar ✪ BOT 2021-10-29 16:29:38Z
nope you cant
Avatar
Jupstar ✪ BOT 2021-10-29 16:30:01Z
freetype might round up and down depending on the requiresments
16:30
so you'd have to test all fontsizes
16:30
but you can do an estimate theoretically and just subtract it by 1 or smth
Avatar
hmm maybe tooltips want to use more stuff than a simple text
16:31
i guess i can leave dotooltip as a smart rect generator
Avatar
Jupstar ✪ BOT 2021-10-29 16:32:55Z
what is the current issue?
Avatar
Just thought of some practical uses for hover tooltips: Hovering a friend in the Friends tab would display the highlighted server info normally seen in the server list (as some compact string) Hove...
Avatar
Jupstar ✪ BOT 2021-10-29 16:33:08Z
text is bigger than fontsize bcs of the outline for example
16:33
i dont have any issue right now
Avatar
Jupstar ✪ BOT 2021-10-29 16:33:23Z
oh ok
Avatar
i just thought a tooltip should be able to display buttons and anything
16:33
so i wont render text on the dotooltip function
16:33
it will just place a rect smartly
Avatar
Jupstar ✪ BOT 2021-10-29 16:33:53Z
i see
16:35
oh i should also allow color
16:35
do u think it should have some outline?
Avatar
Jupstar ✪ BOT 2021-10-29 16:35:50Z
mhh, a small shadow always looks cool xd
Avatar
Jupstar ✪ BOT 2021-10-29 16:36:03Z
but our outline is boring anyway xD
16:36
a shadow that fades out would be nice xD
Avatar
Jupstar ✪ BOT 2021-10-29 16:45:09Z
Hello World pro edition
16:45
i guess its ok
Avatar
Jupstar ✪ BOT 2021-10-29 16:45:26Z
ah
16:45
wait
Avatar
what now
Avatar
Jupstar ✪ BOT 2021-10-29 16:46:02Z
pSelCursor
Avatar
this is just a test so
16:46
the code image demonstrates the usage of DoTooltip
16:46
DoTooltip itself has no label
Avatar
Jupstar ✪ BOT 2021-10-29 16:46:34Z
it has an entry text max widht or smth
Avatar
idk what dat
16:46
but dolabel already has max width
Avatar
Jupstar ✪ BOT 2021-10-29 16:47:00Z
i mean then you could make the tooltip not too big
16:47
but max height?
16:47
it can also give you the line count
Avatar
it doesnt have max height
16:47
yeah but thats fine
16:47
u can do that already
16:47
oh
16:47
idk
16:48
ill make a pr
16:48
so u can see code
Avatar
Jupstar ✪ BOT 2021-10-29 16:48:16Z
ok
Avatar
Related to #4212 Example rendering a label: !image !image

Checklist

  • [x] Tested the change ingame
  • [ ] Provided screenshots if it is a visual change
  • [ ] Tested in combination with possibly related configuration options
  • [ ] Written a unit test if it works sta...
Avatar
Jupstar ✪ BOT 2021-10-29 16:51:53Z
i guess it wouldnt hurt to be able to make the tooltip be aware of the text and also renders it
16:52
xd, deen roasted you
Avatar
"What do you want to look them for?"
16:54
i dont understand this
Avatar
but ye i guessed it doesnt look nice yet
Avatar
that looks bad
Avatar
reminder that i have jao blocked
16:55
no wonder why
Avatar
Jupstar ✪ BOT 2021-10-29 16:55:52Z
just chill xD, he never said its final
Avatar
ryozoozer getting flamed for not making final visuals
Avatar
im bad at picking colors
Avatar
just make it black+rounded+transparent
Avatar
more black?
Avatar
pure black with like 0.3 opacity or whatever the default for this ui stuff is
Avatar
thats racist
Avatar
Avatar
Ravie
pure black with like 0.3 opacity or whatever the default for this ui stuff is
17:06
this is 0.7 opacity
17:07
well in ddnet code
17:07
idk what it means in real life
17:08
17:08
damn
17:08
xd
Avatar
try whatever scoreboard has in game
17:09
basically that style for the whole thing
Avatar
Jupstar ✪ do u know the alpha of scoreboard
17:12
?
17:13
ah its 0.5
17:14
Avatar
Jupstar ✪ BOT 2021-10-29 17:14:34Z
imo way too transparent
17:14
i'd probs use as less as possible
17:14
text over other text looks weird
Avatar
looks readable enough with the rectangle tinting whatever is behind
Avatar
Jupstar ✪ BOT 2021-10-29 17:15:34Z
we really need a nice blur texture, so the transparency looks more like a milky transparent
17:15
than a glassy
Avatar
blur in tw xd
Avatar
well well
17:16
i go outside
17:16
ill look into this tomorrow
17:17
if u figure anything out put it in the pr
Avatar
Jupstar ✪ BOT 2021-10-29 17:17:36Z
yeah maybe i push smth, but actually not huge motivation to work on ui xd
17:17
where is robyte xd
Avatar
Okay, please one of you VS apologists, explain to me why visual studio is running at startup using 90% of my CPU and why it's actually for my own good
Avatar
@Learath2 when you have the time, could you update the twmap binaries for the ddnet bot?
Avatar
I can probably do that too
Avatar
ah that would be nice :)
Avatar
git pull && cargo build --release?
Avatar
ah, probably cargo install --path=.
Avatar
I think I told learath last time to build it from source
18:20
maybe you can look into the sym-linked binaries in the bot directory data/tools/
18:21
ah no wrong
18:21
in data/
18:21
heh, wrong again, data/map-testing ^^
Avatar
Looks good: check_ddnet -> /home/teeworlds/.cargo/bin/check_ddnet
Avatar
👍 updated via cargo install then?
Avatar
cargo install --path=. is correct iirc
Avatar
ah, just read the help output, that sounds good
Avatar

Checklist

  • [ ] Tested the change ingame
  • [ ] Provided screenshots if it is a visual change
  • [ ] Tested in combination with possibly related configuration options
  • [ ] Written a unit test if it works standalone, system.c especially
  • [ ] Considered possible null pointers and out of bounds array indexing
  • [ ] Changed no physics that affect existing maps
  • [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--u...
Avatar
justabutterflier 2021-10-29 20:16:19Z
hi! tried to start ddnet-teeworlds client on macbook 15 intel core i7 4 core 16 gb ram and nvidia gt 650m 1 gb, so it make window a bit transparent and it's very laggy, does someone know how to make teeworlds on mac playable?
Avatar
Jupstar ✪ BOT 2021-10-29 20:20:03Z
you can try to disable HiDPI
20:20
or install different OS
Avatar
justabutterflier 2021-10-29 20:20:19Z
it's Big Sur
20:20
rn
20:21
do u know how to disable it?
Avatar
Jupstar ✪ BOT 2021-10-29 20:21:17Z
in graphic settings, but maybe only on ddnet
Avatar
justabutterflier 2021-10-29 20:22:00Z
hm
20:22
i'll try, ty
20:25
found
20:25
it really gives more fps, thank you 🙂
Avatar
You will sadly get worse gfx, especially noticeable on the dozens of rounded corners we have
Exported 374 message(s)