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 2018-10-08 00:00:00Z and 2018-10-09 00:00:00Z
Avatar
@n000b the error message should be improved. I think most players' "you're on the dnsbl list" actually means "the server hasn't received a dnsbl answer yet" (edited)
Avatar
See for example https://forum.ddnet.tw/viewtopic.php?t=6646 Some players will have bad luck just because someone used to send spam mails from their assigned dynamic ip address years ago. Not sure what the best solution is here.
Avatar
Is it possible to prevent fake low ping on our servers?
Avatar
im going to guess never based on how ping works but would be cool if there was an actual patch for this
Avatar
Well, we could change how ping works
Avatar
wouldnt it require people to use a new client
Avatar
Cellegen | HU 2018-10-08 09:49:56Z
@deen i fucking needed to change the whole configuration of my router to have like max 80ms in GER
Avatar
@Cellegen | HU ok, so?
Avatar
Cellegen | HU 2018-10-08 10:14:49Z
hmmm
10:14
but you see
Avatar
am i wrong that changing how ping is reportd would also require the client to be changed
Avatar
Cellegen | HU 2018-10-08 10:15:14Z
i cant manage to bring myself less than 80ms ;-;
Avatar
@noby I'd be interested if there is a way to do it without client changes
Avatar
well the way i do pingfake is by changing the ackgametick thats sent along with inputs
Avatar
doesn't that have adverse side effects?
10:16
like potential packet loss
Avatar
im not sure how a server would be able to tell whether a player actually takes a long time to acknowledge the inputs or is faking
10:16
mm
10:16
it might make it a little laggier but not really i think
10:18
it isnt precise afaik u can only get precision of ±1 tick so ~20ms?
10:19
if ur ping goes "below 0" it causes problems
Avatar
yeah, feels so
10:19
everyone has 8, 24-28, 40-48 ping etc
Avatar
yeah so given this im not sure if theres any way to detect fakeping without making everyone use an updated client unlss im missing something
Avatar
Bojidar Marinov 2018-10-08 10:42:23Z
if ackgametick is based on the real game tick it would be probably impossible to fix without changing the client, but if it is based on the last packet received by the server, it might be possible to do something about it
Avatar
why is the spoof protection on password protected servers turned off?
Avatar
[quakenet] <deen> doesn't work I think
Avatar
ok just tried it, your right ^^
Avatar
maybe somebody else could have a look at this and state his opinion https://github.com/ddnet/ddnet/pull/1320
This adds a new network message sent from the server to the client when a client connects. It tells the client that the server is a DDNet server and it is used in addition to the gametype to determ...
Avatar
Yeah need a tiebreaker on that one πŸ˜ƒ
Avatar
@Dev im on ddnet++ (based on 9.0.2) linux server. my score (finishtime) is only getting displayed after i renamed, how can i fix it so its like on ddnet or kog where the time is there on client connect? i already had a look into the code but didnt find why it shouldnt be working.
Avatar
I have no idea. it could be a billion things. What is a ddnet++ and why do you need it?
Avatar
Based on DDraceNetwork by deen & contributors (www.ddnet.tw) which is based on the great game teeworlds (www.teeworlds.com). - ChillerDragon/DDNetPP
Avatar
Oh, hadn't seen this yet. I'd suggest upgrading the ddnet version but I doubt that's an option after this many patches. Soooo just debug it? πŸ˜›
14:59
I'd start from looking at how the client decides when to display a time.
Avatar
good point
15:02
@Learath2 could you help me a bit?
Avatar
tomorrow maybe, kinda busy today
Avatar
Address #1331 and also fix the scrollbar enabling when there isn't enough elements.
Avatar
@heinrich5991 are you the one with AppVeyor access? If so when you have a moment can you rebuild my PR and/or set-up access so all members can rebuild
16:22
?
Avatar
I think for some reason, both deen and I have an appveyor build
16:22
let's see if it's mine that's failing
16:23
wait, it's travis that's failing
Avatar
appveyor was also failing but it suddenly succeeded
Avatar
well, then it's the race condition between deen's and my appveyor
16:24
whoever finishes last sets the status, I think
16:24
which is nice, because a failing build probably finishes first πŸ˜„
Avatar
@Learath2 maybe you remember the drop weapon code from me (press f3 to drop the current weapon). Is it possible to remove that weapon if its falling into a shield?
16:33
I mean I cant get it to work :D
Avatar
I don't remember your code, does it spawn a CPickup?
Avatar
it spawns a CWeapon, made by me
16:34
Based on DDraceNetwork by deen & contributors (www.ddnet.tw) which is based on the great game teeworlds (www.teeworlds.com). - ChillerDragon/DDNetPP
16:36
should be possible huh?
Avatar
It is possible but I must say that looks very, uuhhm dirty
Avatar
ik :D
Avatar
You just need to check that like IsCharacterNear()
16:39
but how xd
16:39
i couldnt do it for shields :(
Avatar
You look for nearby ENTTYPE_PICKUPS and check that their type is POWERUP_ARMOR
Avatar
how do i check the type of it?
16:40
ah
16:40
nvm xD
16:41
what do i have to use for the MAX size?
Avatar
Who/what is a max size?
16:41
MAX_CLIENTS?
Avatar
I mean does it even matter? Think about it
Avatar
You just need one armor to make it disappear
Avatar
So i'd just look for 1 πŸ˜›
Avatar
I'd add a new function to CPickup int Type(); that returns m_Type rather then making m_Type public btw
16:45
you mean like for example GetActiveWeapon from Character?
Avatar
Yes, but you need to stop thinking this way
16:46
It's a very simple thing I said, just trust your instincts instead of trying to make it "like" something
Avatar
Okay :)
Avatar
what's the masterserver of ddnet?
Avatar
bool CWeapon::IsShieldNear() { CPickup *apEnts[2]; int Num = GameWorld()->FindEntities(m_Pos, 20.0f, (CEntity**)apEnts, 2, CGameWorld::ENTTYPE_PICKUP); for (int i = 0; i < Num; i++) { CPickup *pShield = apEnts[i]; if (pShield->GetType() == POWERUP_ARMOR) { return true; } } return false; } @Learath2 this works, is it right?
Avatar
@fokkonaut I'd do CPickup *pEnt; and pass (CEntity **)&pEnt instead
Avatar
how to pass it?
Avatar
and replace that 2 with a 1 obv
17:45
I told you how to pass it in that sentence
Avatar
but it didnt work then
17:46
tryed that already
Avatar
Are you sure?
Avatar
let me see
Avatar
Oh actually in this case you don't even need a pointer to the entity
17:49
Oh actually you do nvm
17:49
anyways πŸ˜„
17:49
That should still work
Avatar
cannot convert 'CPickup' to 'CPickup*' in initialization CPickup *pShield = pEnt[i];
Avatar
Well DUH
17:49
sory
17:49
xDD
17:50
im blind
Avatar
Actually I'm stupid
17:50
You need more then 2 though
17:51
You need 9 to be sure
Avatar
With 2 if the weapon is falling between 2 hearts and has an armor below it, it is possible that the 2 hearts get found and the armor doesn't get found
Avatar
So to be safe look for 9 pickups, one you could be on and 8 could be around you
Avatar
ok^^
17:53
thanks! πŸ˜ƒ
Avatar
Uhm @heinrich5991 I think I broke something as I pushed right after you bors r+'d
Avatar
oh, awesome, you also did that thing πŸ™‚
Avatar
Can you eye over it to make sure I didn't introduce any bugs
Avatar
mhk
18:13
@Learath2 you changed behavior in https://github.com/ddnet/ddnet/pull/1337/files#diff-f60b98c9084662cc2855d8c1a78e458bR390, previously the port wasn't recorded. probably won't break anything. wanna change it to the old behavior or do you think it's ok?
DNSBL is to prevent annoyances. There is no one to annoy on an empty server.
18:13
also, that function used to modify the pointer that looks read-only…
18:14
good job, function
Avatar
Yeah those functions look horrible
18:14
it takes a pResult it never uses aswell
18:14
VoteMute and Mute I mean
18:15
I'll restore the old behaviour just in case
Avatar
maybe don't modify the pointer that's passed in
18:16
that sounds outright horrible
Avatar
Would you prefer it like it is or if I reverted to the old behaviour?
18:18
I don't think it makes any difference though, as _noport is also used to check the ban itself
18:21
eh, I'll just clean up those functions and make sure
Avatar
awesome
18:22
inb4 #1337 expands to refactor the whole ddnet code base
18:23
do stop though (with refactoring these functions) if it becomes too much work
Avatar
@heinrich5991 not that bad apparently, cleaned it up and made sure the behaviour doesn't change
18:31
Also is bors k? πŸ˜„
Avatar
@Learath2 fixed the score on client enter thing myslef πŸ˜ƒ
18:33
What was it?
Avatar
just added this line m_apPlayers[ClientID]->m_Score = (Score()->PlayerData(ClientID)->m_BestTime) ? Score()->PlayerData(ClientID)->m_BestTime : -9999; from changeinfo to OnClientEnter()
Avatar
Bojidar Marinov 2018-10-08 18:55:04Z
Things not to do: stop gdb session while saving a .map file
Avatar
ChillerDragon 2018-10-08 19:00:52Z
wew..
Avatar
1073b72 Ignore DNSBL on "empty" servers. - Learath2 f1867e0 Grammar fix "then->than" - Learath2 2e137e6 net_addr_comp_ip -> net_addr_comp_noport - Learath2 254ff3d Oversight - Learath2 5b95edd DRY with net_addr_comp_noport - Learath2 571b069 Small cleanup of *Mute functions - Learath2 1f4585c Merge #1337 - bors[bot]
Avatar
@jxsl13 we use the regular TW master servers but ddnet.tw is one of them
πŸ‘Œ 1
Avatar
ChillerDragon 2018-10-08 19:13:16Z
1337!
Avatar
and @heinrich5991 still hasn't done http masters 😦
salt 2
Avatar
Bojidar Marinov 2018-10-08 19:27:09Z
@heinrich5991 extended map items work great πŸ˜ƒ
Avatar
Nice job (iguess)feelsgoodman
Avatar
@heinrich5991 I can't really follow the map items thing, here to give me a hand? πŸ˜›
Avatar
yes, I guess
Avatar
So, what is an external item type and what is an internal item type?
Avatar
ok, so we have item kinds and extended item kinds (edited)
19:57
non-extended item kinds are referred to by a small integer, both in code and in the actual datafile
19:58
code is "external" (because it's the API the datafile exposes) and the actual file is "internal" (because only the datafile class has to concern itself with how it saves stuff in there) (edited)
19:59
UUIDs also happen to be referred to by integers, although bigger ones, I think starting from 2**16
20:00
so when the datafile class gets a item kind > 2**16, it sees that it's an extended item kind that is associated with a UUID
20:01
it has to store that some way in the datafile, which only supports item kinds < 2**16, and certainly no UUIDs
20:02
so I reserve the item kind (2**16 - 1) to provide a mapping from internal item kind IDs (in the datafile) to external ones (referred to by UUIDs, to be translated to the corresponding integers by the datafile reader)
20:02
so when you read a item kind that's likely to be extended (>=2**15 I think)
Avatar
so you use 2**16 - 1 like we used NETMSG_NULL for the protocol extension?
Avatar
then you check whether we have an item with type ID 2**16-1, and the type ID you're looking for as item ID
20:03
yes
20:03
because 0 was already taken
20:04
well
20:04
no
20:04
type ID 2**16-1 only provides the mapping of internal (in the datafile) type IDs to UUIDs
20:05
i.e. if I add one item with extended type, it'll get type ID 2**16-2
20:05
next one will get 2**16-3
20:05
but to know what it's actually dealing with 2**16-2 doesn't map to a type, the reading code has to check the type map
Avatar
sooo 2**16 - 1 actually is a type-map?
Avatar
yes
20:08
I probably should have written all that into the commit message…
20:11
@Learath2 questions?
Avatar
I'm trying to give it a re-read with my newly acquired knowledge πŸ™‚
Avatar
[quakenet] <Learath2> heinrich5991: do asserts still kill the client/server in release builds?
20:16
[quakenet] <heinrich5991> I fear they do not
20:16
[quakenet] <heinrich5991> yup, they don't :(
20:17
[quakenet] <Learath2> Well assert in CDataFileWriter::GetExtendedItemTypeIndex could allow an attqcker to craft a map that crashes the client.
20:17
[quakenet] <heinrich5991> lol
20:17
[quakenet] <Learath2> Not a particularly useful crash but still
20:18
[quakenet] <heinrich5991> have you read the datafile code? :P
20:18
[quakenet] <heinrich5991> it's full of crashes
20:18
[quakenet] <heinrich5991> but you're right, I shouldn't make it worse
20:18
[quakenet] <heinrich5991> Learath2: no, that's a datafile writer
20:18
[quakenet] <Learath2> Oh yep mb
20:24
[quakenet] <Learath2> I can't seem to read this at all :/
20:30
[quakenet] <Learath2> heinrich5991: did you have a document on datafiles and their structure?
20:30
[quakenet] <heinrich5991> yes, but only little
20:30
Some Teeworlds stuff in Rust. Contribute to heinrich5991/libtw2 development by creating an account on GitHub.
20:30
[quakenet] <Learath2> Well an overview would be enough
20:31
[quakenet] <heinrich5991> might very well be that this doesn't help
Avatar
Bojidar Marinov 2018-10-08 20:42:24Z
hm, blockers/stoppers don't work when flipped. Known bug?
Avatar
hum. no, not known I think
20:48
they should stop in the direction you can see in the editor
Avatar
[quakenet] <heinrich5991> Learath2: updated the PR
21:08
[quakenet] <Learath2> heinrich5991: how do datafiles handle endianness issues? do we save them all little endian and swap based on architecture?
21:09
[quakenet] <heinrich5991> yes, something like that
21:09
[quakenet] <heinrich5991> in the real world, the implementation for big endian is broken, and no one seems to have noticed in years
21:09
[quakenet] <Learath2> :D
21:09
[quakenet] <Learath2> Well not many big endian machines around
21:09
[quakenet] <heinrich5991> but for the PR you just have to know that integers get saved correctly
21:10
[quakenet] <heinrich5991> (because they work in other map items=
21:10
[quakenet] <heinrich5991> and I serialize the UUIDs into integers, in a native-independent way
21:10
[quakenet] <heinrich5991> *endian-independent
21:10
[quakenet] <heinrich5991> so it doesn't matter how we save them, as long as integers work
21:11
[quakenet] <Learath2> Great, I'm merging then
21:11
[quakenet] <Learath2> than*
21:12
[quakenet] <Learath2> heinrich5991: doesn't sizeof(CUuid) / 4 assume sizeof (int) == 4?
21:12
[quakenet] <Learath2> Is that a fair assumption to make?
21:13
[quakenet] <Learath2> I guess it is given sizeof (int) is guaranteed to be >= 4
21:14
[quakenet] <heinrich5991> if it's not 4, the whole serialization code breaks
21:14
[quakenet] <heinrich5991> like
21:14
[quakenet] <heinrich5991> the datafile code
21:15
[quakenet] <heinrich5991> hm
21:15
[quakenet] <heinrich5991> if one were to refactor the datafile code, one would replace all ints with int32_ts
21:16
[quakenet] <heinrich5991> (obvious spot for rust promotion) you know that in rust, you usually know the integer sizes you work with? :P
21:16
[quakenet] <heinrich5991> hm
21:17
[quakenet] <Learath2> One last thing before I r+, should you maybe test for the uuid being saved correctly aswell in your testcase?
21:20
[quakenet] <heinrich5991> hm. I considered that private to the datafile classes
21:21
[quakenet] <heinrich5991> should I add a test regardless? I don't really have the structures for that around, because they're in the .cpp file
21:22
[quakenet] <Learath2> I guess it's not really mandatory under the assumptions that storing ints work and that sizeof(int) >= 4
21:23
[quakenet] <Learath2> first one is true because, well things work :D and the second one is guaranteed by the standard so I guess we are golden :)
21:25
[quakenet] <heinrich5991> do you feel that I'm being more strict with you on PRs than you are with me?
21:25
[quakenet] <heinrich5991> because I currently have that feeling
Avatar
Well with this one it's not really my area so I can't really be sure if the things I worry about are superficial or not
21:34
Also you've always been more strict then me anyways :D
Avatar
good night
Avatar
hm does anyone know if something got changed in the protocol or sth on 7th. october?
23:53
since I can't seem to retrieve the stats from most servers suddenly
23:56
just started debugging but it ran completely fine for multiple months and now test and local environment showed this behaviour so thought I'd ask if there was something recently
Avatar
master servers ddosed
Exported 234 message(s)