00:02 < eeeee> deen: so what's the problem with skins? client takes too long to load or do people run into issues with gfx ram or number of textures? 00:03 <@heinrich5991> too long to load I'd guess (?) 00:03 <@deen> eeeee: and memory runs out 00:03 <@deen> that's why i stopped adding skins to the client and we have a database on the website instead 00:03 <@deen> and we could load skins on demand from the database? 00:04 <@deen> similarly to how maps are downloaded, but not sure how horrible that is with people switching skins mid-game 00:04 < eeeee> yeah 10/10 trolls would switch skins every second 00:06 < eeeee> also the problem is that you still have to load each skin for the skin selector in the client options 00:06 <@deen> hm, right =/ 00:08 < eeeee> you can't even cheat and cache the rendered tee instead of whole skin, because of custom colors option 00:15 <@heinrich5991> laxa: http://heinrich5991.de/temp/names2.py 00:15 < laxa> wut ? 00:15 <@heinrich5991> that's a script that packs all the maps that are not already in the archive 00:15 <@heinrich5991> execute it in the .teeworlds folder 00:16 <@heinrich5991> or %APPDATA%\Teeworlds 00:16 <@heinrich5991> (that should shrink the upload size a bit) 00:16 < laxa> it's ok 00:16 < laxa> I already have the archive ready 00:18 <@heinrich5991> (that script includes a list of maps I already have, so it means that you'll have to upload less, if you haven't already) 00:22 <@heinrich5991> well, good night everyone :) 00:26 < eeeee> nite 00:48 < Learath2> could add a cooldown to changing skins 00:48 < eeeee> iirc already have cooldown for changing player info 00:49 < eeeee> to get rid of rainbow tees 00:49 < Learath2> im not sure how long it takes to load a single skin file 00:49 < eeeee> i'm gonna try to keep lru cache of loaded skins 00:49 < Learath2> but could have them not loaded at start but loaded on demand 00:49 < eeeee> and load them in background thread 01:10 < eeeee> also skins are stored as a sorted list, and other components reference them via indexes in that list 01:10 < eeeee> impossibru to dynamically add new skins w/o changing that ^^ 11:19 <@heinrich5991> mh. it looks like the compatiblity map loading writes to random places in the datafile 11:21 < laxa> heinrich5991: https://ddracepro.net/files/downloadedmaps.rar 11:22 <@heinrich5991> laxa: thanks! downloading... 11:27 <@heinrich5991> eta 20min 12:38 < eeeee> behold https://github.com/eeeee/ddnet/commit/948643c5cfee6343bfcd15d957bc19b8d8d13253 12:39 < eeeee> it generally works well, except when skin filename is longer than max skin name (24 chars) 12:40 < eeeee> also i couldnt even background loading in a thread, because CGraphics is not threadsafe and it's too annoying to separate loadpng and loadtextureraw across threads 12:42 < eeeee> i'll pullreq it tomorrow but you're welcome to test 12:44 < eeeee> you even get a cl_skins_cache_size variable. if set below number of skins visible on the screen each skin gets reloaded from .png for each rendering frame, great fun! 12:47 < Learath2> eeeee: if you didnt background loading what does this help in ? 12:52 <@heinrich5991> that needs to be tweaked if we get more than 64 players one day :) 13:06 <@heinrich5991> how can I use tune zones? 13:06 <@heinrich5991> i.e. how do I say which tunings are changed? 13:07 <@deen> heinrich5991: http://ddnet.tw/map/tunezones/ 13:07 <@heinrich5991> meh. why is it a different file :( 13:08 <@deen> i didn't want to extend the map format 13:08 <@heinrich5991> ok, thank you 13:08 <@heinrich5991> ah 13:08 <@deen> https://github.com/def-/ddnet-maps/blob/master/solo/UpNDown.cfg 13:08 <@deen> an example 13:09 < ddnet-commits> [ddnet] def- pushed 1 new commit to DDRace64: http://git.io/vtu7k 13:09 < ddnet-commits> ddnet/DDRace64 18846f8 def: Fix Polish translation (by Lady Saavik) 13:10 < ddnet-commits> [ddnet] def- pushed 1 new commit to DDRace64: http://git.io/vtu7G 13:10 < ddnet-commits> ddnet/DDRace64 6e0efe7 def: Version 7.8 13:15 <@heinrich5991> deen: would you mind if I tried integrating the tune zone config files into the map? 13:15 <@deen> heinrich5991: so they would have to be edited in editor? 13:15 <@heinrich5991> so they would be added to the editor like images 13:16 <@deen> makes it a bit harder for me to fix them on the fly 13:16 <@deen> which i had to do a few times 13:16 <@deen> and also, what about all the other settings? 13:16 <@deen> we also have other settings for maps in their cfg files 13:16 <@heinrich5991> (I just don't like it that you can't fire up a ddrace server with a map file and have it work) 13:17 <@heinrich5991> mh. 13:17 <@deen> and i like that i can fix broken configs on the fly^^ 13:18 <@heinrich5991> I guess your desire would be fulfilled by a CLI tool that lets you edit a map's config 13:18 <@heinrich5991> ? 13:18 <@deen> no 13:18 <@heinrich5991> mh ok 13:18 <@deen> also edit it while it's running on the server 13:18 <@deen> and mappers should be able to use that as well 13:18 < Lady> deen should "Check now" button work? 13:19 <@deen> Lady: yes, but it doesn't indicate any change if no update is available 13:19 < Lady> but you just released new version? 13:19 <@deen> no 13:19 <@deen> will take me 1 hour to release it 13:19 < Lady> so why I had to hurry... 13:20 <@deen> because I need everything ready to release it, it's just a bit complicated to release so takes some time 13:20 <@deen> would be nice if i could just release in 5 mi^n^ 13:20 <@deen> min^^ 13:28 < Learath2> deen: maybe we should automate the releases a bit 13:33 <@deen> I think I automated everything easily automatable already 13:34 < NooBxGockeL> Hey i recently watched Sethblings MarI/O where he put machine learning into Super Mario... Im thinking of attempting it with teeworlds and gores maps :D anyone has anything to say about it ? maybe allready tried it ? 13:34 < Learath2> could get a couple of buildbots to do the building, making release zips, uploading 13:35 <@deen> NooBxGockeL: I wanted to do that as well 2-3 years ago, then I made DDNet instead^^ 13:35 <@deen> I only got started with a small foundation for a Haskell command line TW client 13:35 <@deen> Learath2: that I have already in the form of VMs 13:36 <@deen> Learath2: but everything else remains, writing release notes, preparing the auto updates 13:36 <@deen> etc 13:37 < NooBxGockeL> hmmmm. that could be a really fun project... deen, so you basically just rewrote TW in haskel without GUI stuffs ? ^^ sounds like quite a task 13:37 <@deen> only a bit of the networking code 13:39 <@deen> Lady: alright, released now 13:39 < Lady> ok 13:40 <@deen> I found a nice bind recently: 13:40 <@deen> bind t "+show_chat; chat all" 13:41 < Learath2> NooBxGockeL: mari/o is a nice project 13:42 < Learath2> deen: anything that could make preparing auto updates easier ? 13:42 < NooBxGockeL> Learath2, yeah it fascinated me, he really did a great job on explaining and visualiziation. That got me really hooked now xD 13:42 < Learath2> I might try making something similar to it in teeworlds 13:43 < NooBxGockeL> ^^ i had the same idea, but i think DDRace would be too complex 13:43 <@deen> oh, and i wanted it for ddrace, not gores 13:44 < NooBxGockeL> maybe gores, maybe ctf/dm and stuff... Yeah but DDrace has all those zones and power ups and different techniques 13:44 <@deen> 2 clients that learn by watching humans play and then improve upon it 13:50 <@heinrich5991> what is gores? 13:50 <@deen> just hooking through tunnels or something like that 13:51 <@deen> with freeze all around 13:51 <@EastByte> nice for partying with many players 14:10 < NooBxGockeL> Hey, have you guys seen the atom.io editor from github ? It really looks impressive o.O compared to scite and notepad++ at least... 14:13 < laxa> is it compatible cross platform ? 14:13 < NooBxGockeL> yep, all 3 14:14 < NooBxGockeL> written mainly in coffee/javascript it seems, 100% hackable. I think i found my fav editor 14:14 <@deen> but it runs in the web browser? 14:15 < NooBxGockeL> dunno if it could, but i have downloaded and installed it 14:15 <@deen> ah 14:15 < NooBxGockeL> https://atom.io/ and https://github.com/atom/atom 14:15 <@deen> nah, I'll just stay with vim 14:16 <@deen> no idea how I'd use a graphical text editor on servers 14:16 < laxa> :D 14:16 < laxa> deen: I am the only one working in CLI in my prom... 14:16 < NooBxGockeL> deen, wait, you programm in vim ? wow... 14:16 <@deen> sure 14:17 <@deen> are vim and emacs not the most popular editors anymore? 14:17 < NooBxGockeL> deen, how old are you if i may ask ? i only know people using vim that are pretty old :D 14:17 < laxa> I don't think so 14:18 < laxa> everyone is using Sublime at my school 14:18 < NooBxGockeL> deen, most popular got to be eiter visual studio or the eclipse platform 14:18 <@deen> that costs money, right? 14:18 < laxa> sublime is free afaik 14:18 <@deen> "Sublime Text may be downloaded and evaluated for free, however a license must be purchased for continued use." 14:18 <@deen> costs 70 $ 14:19 < laxa> rofl 14:19 < laxa> well, atom is open source so free :p 14:20 < NooBxGockeL> schools probably dont have to pay, they get a lot for free... 14:20 <@deen> I think it would be difficult to stop using vim. I already use all my other programs with vim key bindings 14:20 <@deen> NooBxGockeL: yeah, but that's just a way to get young people hooked on a product 14:25 < Learath2> I consider buying sublime every time i obtain it using not very legal ways but then I see the price... 14:32 < NooBxGockeL> deen, *cough* https://atom.io/packages/vim-mode 14:32 < NooBxGockeL> :D 14:36 <@EastByte> vim also has a vim mode 14:45 < Learath2> tbh none of the vim modes is used feel like vim 14:46 < NooBxGockeL> okay, wow, the editor itself has some issues, hanged a couple of times for 2-3 secs but the package base behind it and the ease of use is incredible... I got to show this my coworkers on monday 15:03 < ddnet-commits> [ddnet] def- pushed 1 new commit to DDRace64: http://git.io/vtzYt 15:03 < ddnet-commits> ddnet/DDRace64 8e8283e def: Highlight game layers in editor 15:44 < ddnet-commits> [ddnet] def- pushed 1 new commit to DDRace64: http://git.io/vtzlf 15:44 < ddnet-commits> ddnet/DDRace64 063be1f def: Make TAB always work in serverbrowser 16:17 < laxa> deen: wtf is that code ? the the code inside if or else is the same xD 16:17 < laxa> (on second commit) 16:17 < ddnet-commits> [ddnet] def- pushed 1 new commit to DDRace64: http://git.io/vtzgj 16:17 < ddnet-commits> ddnet/DDRace64 d846583 def: Make a few value selectors in editor wrap around 16:18 < laxa> oh wait 16:18 < laxa> my mistake, I dunno how to read ^^ 16:29 < Learath2> deen: why is .. only an alias for countup in nim 16:29 <@deen> performance 16:30 <@deen> and it makes many cases easier 16:30 <@deen> stuff like 0 .. -1 means 0 loop iterations 16:30 <@deen> which is often exactly what you want 16:31 < Learath2> 10..1 would look nice :D 16:31 <@deen> no 16:31 <@deen> would lead to many bugs 16:31 < Learath2> huh like what ? 16:31 <@deen> when it's 0..x and x is a variable 16:31 <@deen> and you don't expect the loop to be run in reverse when x is -1 16:32 < Learath2> oh forgot about that case 19:36 <@heinrich5991> the "white" house: http://static01.nyt.com/images/2015/06/26/us/20150627_SCOTUS-SS-slide-6K9G/20150627_SCOTUS-SS-slide-6K9G-superJumbo.jpg 19:40 < Learath2> I made a calculator in nim \o/ 19:40 <@heinrich5991> =) 19:41 < Learath2> https://gist.github.com/f1cc87187de85273205f here is my masterpiece 19:54 <@heinrich5991> that doesn't look very error-checky :P 19:56 <@EastByte> teamspeak, teeworlds, livestreamer, irc 19:56 <@EastByte> on one screen 19:56 <@EastByte> easy lifting :) 20:18 < eeeee> Learath2: it helps because it doesn't try to load all skins when you start the client and instead loads them when client first tries to render 20:19 < eeeee> it also unloads skins that aren't used for rendering anymore, keeping max. 64 skins (configurable) in memory at all times 20:19 < eeeee> so that people low on gfx ram don't run into issues 20:21 <@deen> Tournament and livestream on http://ddnet.tw btw 20:21 <@deen> ^^ 20:21 < Savander> tournament 20:21 < Savander> o.O 20:21 < Savander> ah! 20:21 <@EastByte> Savander: need team 20:22 <@EastByte> hm or I rather watch 20:33 <@deen> 123 viewers in livestream =) 20:33 <@deen> and > 200 people on servers 20:34 < Savander> n1 20:34 < Savander> ^:D 21:34 < Nimda> Everdeen by Themix just released on Brutal at 2015-06-28 19:55 21:41 <@deen> so, tournament over 21:42 <@deen> let's look at fun nim code by Learath2 now 21:45 < Savander> :> 21:55 < Learath2> back 21:55 < Learath2> deen: you like my creation ? :D 21:55 <@deen> Sure: simple, readable code 21:55 <@deen> but I'm making it easier :P 21:56 < Learath2> feel free to give me pointers as I just made this by skimming over the manual I might not be doing things nim-ish enough 21:56 <@deen> https://gist.github.com/def-/70ef4afa22552b3ce20d 21:56 <@deen> that's how I'd write it 21:56 <@deen> without changing anything semantically 21:56 <@deen> pretty much just style changes 21:57 < Learath2> oh its all in one let 21:59 <@deen> I like pushing code into one let^^ 22:00 <@deen> oh, arg1 div arg2 might be fine for division as well 22:00 < Learath2> div is integer division ? 22:00 <@deen> right 22:00 <@deen> and you had a ; somewhere^^ 22:00 < Learath2> yeah found it :D 22:01 < Learath2> its nice that the compiler ignores it 22:01 <@deen> sure, you can write multiple statements in a line, delimitted with it 22:01 <@heinrich5991> deen: if it's not too hard to write, how would you write it with error checking? 22:01 <@deen> heinrich5991: what kind of error checking? 22:01 <@deen> overflows? 22:01 <@deen> invalid inputs? 22:03 <@heinrich5991> input not of the correct form, invalid operator, operands not integers, division by zero (and maybe what I didn't think of, overflow) 22:04 <@deen> I'll give it a try 22:04 <@heinrich5991> (in my experience error-checking is what is most of the code) 22:06 <@EastByte> not if you are using exceptions? 22:07 <@deen> sure, you could just put it into a proc and catch the exception 22:07 <@deen> exceptions* 22:09 <@heinrich5991> EastByte: you don't get user output from exceptions, you still have to generate it 22:09 <@EastByte> well in console actually you get :P 22:09 <@EastByte> though it cannot be called as user ouotput 22:11 <@deen> Livestream now on YT: https://youtu.be/GzQYIBZQJFM 22:12 <@EastByte> '#39 BrĂ¼tal Teeworlds DDNET Tournament' 22:13 <@heinrich5991> EastByte: a stacktrace isn't user output though :/ 22:13 <@EastByte> probably^^ 22:13 <@deen> heinrich5991: like this? https://gist.github.com/def-/70ef4afa22552b3ce20d 22:13 <@EastByte> I gotta go sleep, n8 22:13 <@deen> good night, EastByte 22:14 <@deen> heinrich5991: bei 1&2 zB: An error occured: No known operand found 22:14 <@heinrich5991> EastByte: good night 22:14 <@deen> oder bei 1++: An error occured: invalid integer: + 22:14 <@deen> oder 1/0: An error occured: division by zero 22:14 <@deen> ehm, wrong language 22:14 <@deen> difficult to speak with multiple people at the same time, oops^^ 22:14 <@heinrich5991> =) 22:14 <@heinrich5991> looks good, thanks 22:15 <@deen> exceptions are quite convenient for error handling, but introduce unexpected control flow of course 22:17 <@deen> oh, and -d:release disables many checks in Nim, so no more zero division checks then. would have to enable them or do an explicit 0 check 22:20 <@heinrich5991> mh..