17:38 < pbunny> ... 17:38 < Grum> (needed for growing) 17:38 < pbunny> whats difficult in those? 17:38 < pbunny> just lock the chunk and write to it 17:38 < Grum> nothing, but each chunk gets 40 of them per gametick 17:38 < pbunny> why 40? 17:38 < Grum> so if you have 20000 chunks in memory .... 17:38 < Grum> because 40 17:38 < Grum> you will do 800000 'random' polls to blocks 17:38 < pbunny> Grum: and a block update will use 1 mutex lock operation, 1 assignment operation, and 1 mutex unlock operation 17:39 < Grum> 20 times per second :p 17:39 < pbunny> my CPUs can handle billions of such block changes 17:39 < pbunny> its not freaking java 17:39 < Grum> but there is more than that, they have to be communicated to the client as well :p 17:39 < Grum> so DOING the changes is one thing, you have to keep track of them as well 17:40 < pbunny> Grum: unless there will be million clients with million-block view distance and billions of block updates per seconds, i see no problems 17:40 < Grum> hehe 17:40 < Grum> well, go implement the full game on it 17:40 < Grum> we'll see if you run into issues :) 17:40 < pbunny> sure 17:40 < Grum> a single block that changes can influence ~4100 other blocks' lightvalue 17:41 < Grum> there is a good reason why we unload chunks, because its silly to keep them loaded 17:42 < pbunny> .... 17:42 < pbunny> right, it is silly to have cool stuff like mob wars possible 17:43 < pbunny> realtime sucks 17:43 < pbunny> lets go singleplayer! 17:43 < pbunny> 40 players online! 17:43 < pbunny> or 60 if server has 100Gb of RAM 17:43 < pbunny> but we use java because its pretty 17:44 < pbunny> and our univercity told us java is the best language (and C#) 18:09 < toqueteos> has any of you here tried to propose changes to the protocol to mojang? 18:10 <+ammar2> hahaha 18:10 <+ammar2> yeah, I'm fairly sure quite a bit of people have tried 18:10 < toqueteos> just what i was expecting :( 18:16 -!- Amaranth [~travis@ubuntu/member/Amaranth] has quit [Read error: Connection reset by peer] 18:17 -!- Amaranth [~travis@ubuntu/member/Amaranth] has joined #mcdevs 18:17 -!- mode/#mcdevs [+v Amaranth] by ChanServ 18:20 -!- dexter0 [~dexter0@c-24-23-138-192.hsd1.ca.comcast.net] has joined #mcdevs 18:22 -!- Amaranth [~travis@ubuntu/member/Amaranth] has quit [Read error: Connection reset by peer] 18:22 < TkTech> Grum, Heh, silly language wars. 18:22 -!- Amaranth [~travis@ubuntu/member/Amaranth] has joined #mcdevs 18:22 -!- mode/#mcdevs [+v Amaranth] by ChanServ 18:22 < TkTech> Grum, Keep in mind "all in memory" doesn't necessarily mean physical memory. (Yay mmap, PAE, etc…) 18:24 < TkTech> toqueteos, What exactly is your proposed change? 18:24 < TkTech> toqueteos, And what's your justification for thinking it's better? 18:25 < toqueteos> TkTech, none, just curious about it, something feels broken 18:25 < toqueteos> TkTech, maybe dealing with inventory, when you clear inventory in creative you send a load of inventory packets, that could be zlib'd and sent together 18:26 < toqueteos> TkTech, i'm just starting to toy with it, it's been like.. 3 maybe 4 weeks using it 18:27 < toqueteos> yesterday i started with chunk loading and i managed to create something awful and i don't know how: http://imgur.com/BIhfKol that was supposed to be a 8x8 chunks square, 64 tall of stone 18:29 < pbunny> TkTech: i am going to use physical memory though :) 18:30 < pbunny> 256Gb is enough for 10000x10000x256 world, which is enough for any sane person 18:32 < pbunny> world will loop if player goes farther 18:32 * dx walks in 18:32 * dx laughs and facepalms 18:32 * dx leaves 18:34 < pbunny> ? 18:58 < cathode> 256GB is not really that hard to put in one server these days 18:58 < cathode> not cheap, sure. but not difficult either. 18:59 < cathode> almost all dual-socket ASUS or Supermicro boards support 16 to 32 DIMM slots allowing you up to 1TB of RAM using 32GB DIMMs 19:00 < cathode> er, to rephrase... dual-socket boards with 32 DIMM slots are easy to find. and you can load them up with gobs of RAM 19:01 < TkTech> cathode, The money is still in more efficient servers. Disk costs a whole lot less (especially for mass hosters) than RAM. 19:03 < TkTech> No reason to keep the entire map in memory. It makes a few things simpler like redstone and lighting (which needs its neighbours), but the "complex" solutions work fine. 19:21 < Grum> wait; just 10000x10000? :p 19:23 < Grum> one chunk in your system is ~680kb? 19:42 < Guest97501> why can't you use chunks on server? 19:47 < toqueteos> can anyone suggest me a nice way of generating 32b entity ids? 19:47 -!- feepbot [~feepbot@p579E4EA8.dip0.t-ipconnect.de] has quit [Ping timeout: 256 seconds] 19:48 < toqueteos> maybe hashing or better a global atomic counter? 19:49 -!- feepbot [~feepbot@p579E5902.dip0.t-ipconnect.de] has joined #mcdevs 19:55 <+clonejo> toqueteos: you could also have several counters starting at different positions 19:57 <+clonejo> you might run into collisions if you do hashing or random number generators 19:58 < TkTech> toqueteos, Counter and a capped stack. 19:58 < TkTech> toqueteos, Counter is the max current entity ID, stack holds recently released IDs that can be reclaimed. 19:59 < toqueteos> TkTech awesome! 20:02 -!- Calinou [~Calinou@unaffiliated/calinou] has quit [Remote host closed the connection] 20:13 -!- BizarreCake [~BizarreCa@46.121.251.157] has quit [Quit: Leaving] 20:32 -!- DigiDuncan [~DigiDunca@ool-ad0266a5.dyn.optonline.net] has joined #mcdevs 20:32 < DigiDuncan> Hello! 20:33 < DigiDuncan> Could anyone help me out with a mod issue? 20:33 < DigiDuncan> Everyone knows about the Gulliver Mod: http://www.minecraftforum.net/topic/1112856-151mlforge-gulliver-the-resizing-mod-v0133-beta-april-7-changing-your-perspective-of-minecraft-over-90000-downloads/ 20:34 < DigiDuncan> Well, it has abatrary height caps of 1/8 scale and 8 scale, for reasons of, according to the mod creator, 'i don't wanna'. 20:34 < DigiDuncan> Could anyone remove these height caps for me? 20:34 < DigiDuncan> I would NOT redistribute the mod. 20:34 < DigiDuncan> Just use it for a video. 20:40 <+clonejo> DigiDuncan: Please not that this channel is not about bukkit plugins, but about fully custom standalone software. Also I doubt the height caps are easy to remove, since then the author would already have done that. 20:41 < DigiDuncan> Height caps can be removed, stated by author, he just doesn't want to do it for his mod. 20:41 < DigiDuncan> Also, it's not a Bukkit plugin, it's a mod mod. 20:42 < DigiDuncan> Like, if anyone could just decompile the mod, remove the height cap, and recompile it, I would be ever grateful. 20:53 -!- mappum [~mappum@138.sub-70-199-128.myvzw.com] has joined #mcdevs 21:06 -!- Cay [~OlofLarss@s83-177-171-150.cust.tele2.se] has quit [Read error: Connection reset by peer] 21:07 < DigiDuncan> brb, mega hunger. 21:09 < dav1d> dot com 21:13 -!- bitcraft [~bitcraft@66.254.199.58] has quit [Ping timeout: 252 seconds] 21:32 < Grum> DigiDuncan: but why not teach yourself that skill? 21:32 < dav1d> Grum: because! 21:32 < DigiDuncan> Grum?! OMG. 21:32 < Grum> WHERE! /me prowls 21:32 < DigiDuncan> lol. 21:33 < DigiDuncan> I tried learning Java, my brain leaked out my ears. 21:33 < Grum> 20:46:30 < DigiDuncan> I'll do some derping about in the code, get back to you guys <-- you got back to us quickly! just 45mins :p 21:34 < DigiDuncan> Yeah, MCP daid it wouldnt DC it if it had foreign mods in it. 21:34 < DigiDuncan> *said 21:35 < Grum> yeah, because its mcp, which is purely for minecraft 21:37 < Grum> you can in theory learn how to use fernflower (which is what mcp itself uses) to decompile 21:37 < Krenair> IIRC MCP does sometimes manage to decompile modded jars 21:37 < Krenair> but it's not supported 21:39 < DigiDuncan> My 6yo brother says: What's up, guy who makes minecraft?" 21:39 < DigiDuncan> I suppose he's refering to Grum. 21:39 < Grum> DigiDuncan: hi! :D 21:40 -!- _dd_ [5d26a05e@gateway/web/freenode/ip.93.38.160.94] has quit [Ping timeout: 245 seconds] 21:58 < DigiDuncan> if i could figure out what .class the size cap is stored in, I could easily modify it.... 21:58 < DigiDuncan> brb, reinstalling eclpise and MCP. 21:59 < DigiDuncan> and Forge and Gulliver into a jar... 21:59 < DigiDuncan> god I wish this was easier. 21:59 < DigiDuncan> :P 22:00 < DigiDuncan> drat, time for my diabeetus shot. 22:01 < DigiDuncan> brb. 22:02 -!- DigiDuncan is now known as Digi|Diabeetus 22:02 < dav1d> dex2jar, jd-gui ftw 22:02 < dav1d> haxx all the apks 22:03 -!- Eric___ [~Eric@bas3-guelph22-1176206193.dsl.bell.ca] has joined #mcdevs 22:04 -!- Eric___ [~Eric@bas3-guelph22-1176206193.dsl.bell.ca] has quit [Max SendQ exceeded] 22:04 -!- Eric___ [~Eric@bas3-guelph22-1176206193.dsl.bell.ca] has joined #mcdevs 22:04 -!- Eric___ [~Eric@bas3-guelph22-1176206193.dsl.bell.ca] has quit [Max SendQ exceeded] 22:05 -!- Eric1212 [~Eric1212@bas3-guelph22-1176206193.dsl.bell.ca] has joined #mcdevs 22:05 -!- Digi|Diabeetus is now known as DigiDuncan 22:05 < DigiDuncan> back 22:06 -!- Eric1212 is now known as Eric12 22:20 -!- Xaardas [~tach@p5B251FF3.dip0.t-ipconnect.de] has quit [Quit: Tschuess und bis Bald] 22:25 -!- umby24 [~umby24@cpe-66-69-92-104.satx.res.rr.com] has quit [Ping timeout: 256 seconds] 22:25 -!- bitcraft [~bitcraft@66.254.199.58] has joined #mcdevs 22:28 -!- umby24|offline [~umby24@cpe-66-69-92-104.satx.res.rr.com] has joined #mcdevs 22:28 -!- umby24|offline is now known as umby24 22:30 -!- DigiDuncan [~DigiDunca@ool-ad0266a5.dyn.optonline.net] has quit [Ping timeout: 240 seconds] 22:34 -!- bitcraft [~bitcraft@66.254.199.58] has quit [Quit: Textual IRC Client: http://www.textualapp.com/] 22:35 -!- mappum [~mappum@138.sub-70-199-128.myvzw.com] has quit [Remote host closed the connection] 22:35 -!- bitcraft [~bitcraft@66.254.199.58] has joined #mcdevs 22:36 -!- mappum [~mappum@c-67-170-21-29.hsd1.wa.comcast.net] has joined #mcdevs 22:41 -!- edlothiol [~edlothiol@2a02:810b:80c0:27:f2de:f1ff:fe78:51cf] has quit [Ping timeout: 256 seconds] 22:42 < Thinkofdeath> Is the wiki bot broken? 22:54 < dav1d> well it is still here 22:55 < Thinkofdeath> I made an edit a while ago 22:56 -!- yorick [~yorick@oftn/member/yorick] has quit [Remote host closed the connection] 23:04 -!- xy-cloud is now known as sda1 23:12 -!- sda1 is now known as kcore 23:14 -!- eddyb [~eddy@unaffiliated/eddyb] has quit [Quit: Konversation terminated!] 23:32 < TkTech> Not-001 doesn't really break but wikibot that feeds it does. 23:33 < TkTech> Thinkofdeath, https://github.com/TkTech/WikiBot it's moronically simple. 23:33 < Thinkofdeath> ah 23:35 < TkTech> Kickin' it in the butt. It'll start working again in a few. 23:36 < Thinkofdeath> On a side note: There seems to be a lot of new accounts created over the past few days, they're all unused 23:37 -!- Extreme7 [~extreme@ool-4579abf1.dyn.optonline.net] has joined #mcdevs 23:40 < TkTech> Don't worry about, they're just spam accounts. 23:40 < Thinkofdeath> Guessed so 23:42 < TkTech> Bah, can't keep my connection open long enough to slap the bot. 23:42 < TkTech> Damn rural wifi. 23:44 -!- Caius [~Caius@about/apple/macbookpro/Caius] has quit [Ping timeout: 252 seconds] 23:47 -!- Caius [~Caius@about/apple/macbookpro/Caius] has joined #mcdevs 23:47 < TkTech> Wait what, someone forked wikibot and actually made commits? 23:50 < TkTech> Thinkofdeath, Alright, should be up and running again. 23:51 < Thinkofdeath> Cool, thanks 23:53 -!- Caius [~Caius@about/apple/macbookpro/Caius] has quit [Ping timeout: 252 seconds] 23:56 -!- Caius [~Caius@about/apple/macbookpro/Caius] has joined #mcdevs --- Day changed mer. avril 24 2013 01:00 -!- feepbot [~feepbot@p579E5902.dip0.t-ipconnect.de] has quit [Remote host closed the connection] 01:00 -!- feepbot [~feepbot@p579E48CA.dip0.t-ipconnect.de] has joined #mcdevs 01:13 -!- toqueteos [~toqueteos@219.Red-83-59-169.dynamicIP.rima-tde.net] has quit [Quit: Nettalk6 - www.ntalk.de] 01:27 -!- superjoe [~andy@static-72-89-161-75.nycmny.fios.verizon.net] has quit [Quit: Leaving] 01:27 < TkTech> Grum, Fernflower still breaks a lot of things. 01:28 < TkTech> Grum, And can generate some really, really weird statements. 01:28 < TkTech> JD-GUI's at least smart enough to clean up a TABLESWITCH 01:32 < SinZ> JD-GUI is the only one I really use 01:33 < SinZ> helped quite abit to see what the new launcher actually does 01:55 -!- jspiros [jspiros@hylia.us] has quit [Read error: Connection reset by peer] 01:58 -!- dexter0 [~dexter0@c-24-23-138-192.hsd1.ca.comcast.net] has quit [Quit: exit(0);] 02:02 -!- conehead [~conehead@unaffiliated/conehead] has quit [Quit: Textual IRC Client: www.textualapp.com] 02:15 -!- TomyLobo [~foo@91-64-168-142-dynip.superkabel.de] has quit [Quit: Standby mode...] 02:15 -!- zutto [~sami@a91-152-187-162.elisa-laajakaista.fi] has quit [Ping timeout: 256 seconds] 02:18 -!- jspiros [jspiros@hylia.us] has joined #mcdevs 02:20 -!- zutto [~sami@a91-152-187-162.elisa-laajakaista.fi] has joined #mcdevs 02:32 -!- bitcraft [~bitcraft@66.254.199.58] has quit [Quit: Computer has gone to sleep.] 02:45 -!- dexter0 [~dexter0@c-24-23-138-192.hsd1.ca.comcast.net] has joined #mcdevs 02:54 -!- kcj [~casey@unaffiliated/kcj] has joined #mcdevs 03:00 -!- Extreme7 [~extreme@ool-4579abf1.dyn.optonline.net] has quit [Read error: Connection reset by peer] 03:41 -!- mappum [~mappum@c-67-170-21-29.hsd1.wa.comcast.net] has quit [Ping timeout: 268 seconds] 04:04 -!- conehead [~conehead@unaffiliated/conehead] has joined #mcdevs 04:26 -!- superjoe [~superjoe@cpe-24-193-23-236.nyc.res.rr.com] has joined #mcdevs 04:49 -!- Eric12 [~Eric1212@bas3-guelph22-1176206193.dsl.bell.ca] has quit [Quit: Textual IRC Client: www.textualapp.com] 04:51 -!- GameMakerGm [~gamemaker@cpe-173-175-165-69.elp.res.rr.com] has joined #mcdevs 04:51 -!- GameMakerGm [~gamemaker@cpe-173-175-165-69.elp.res.rr.com] has quit [Changing host] 04:51 -!- GameMakerGm [~gamemaker@wikia/Gamemakergm] has joined #mcdevs 05:03 -!- mappum [~mappum@c-67-170-21-29.hsd1.wa.comcast.net] has joined #mcdevs 05:18 -!- eddyb [~eddy@unaffiliated/eddyb] has joined #mcdevs 05:21 -!- Ghoul_ [uid6924@gateway/web/irccloud.com/x-gncpsfffqelieilm] has quit [Ping timeout: 264 seconds] 05:28 -!- superjoe [~superjoe@cpe-24-193-23-236.nyc.res.rr.com] has quit [Read error: Operation timed out] 05:41 -!- superjoe [~superjoe@cpe-24-193-23-236.nyc.res.rr.com] has joined #mcdevs 05:51 -!- mappum [~mappum@c-67-170-21-29.hsd1.wa.comcast.net] has quit [Ping timeout: 264 seconds] 06:05 -!- EdGruberman [~EdGruberm@unaffiliated/edgruberman] has quit [Quit: Reboot, network failure, or data center explosion] 06:10 -!- GameMakerGm [~gamemaker@wikia/Gamemakergm] has quit [] 06:11 -!- EdGruberman [~EdGruberm@184.171.171.26] has joined #mcdevs 06:11 -!- EdGruberman [~EdGruberm@184.171.171.26] has quit [Changing host] 06:11 -!- EdGruberman [~EdGruberm@unaffiliated/edgruberman] has joined #mcdevs 06:44 -!- Ghoul_ [uid6924@gateway/web/irccloud.com/x-zzyvgwnfwlqewbux] has joined #mcdevs 07:41 -!- Cay [~OlofLarss@s83-177-171-150.cust.tele2.se] has joined #mcdevs 07:49 -!- Zachoz|Away is now known as Zachoz 07:52 -!- mappum [~mappum@c-67-170-21-29.hsd1.wa.comcast.net] has joined #mcdevs 07:53 -!- SpaceManiac [~SpaceMani@r74-192-152-131.gtwncmta01.grtntx.tl.dh.suddenlink.net] has quit [Ping timeout: 252 seconds] 07:58 -!- toqueteos [~toqueteos@96.Red-81-34-156.dynamicIP.rima-tde.net] has joined #mcdevs 07:58 -!- toqueteos [~toqueteos@96.Red-81-34-156.dynamicIP.rima-tde.net] has quit [Client Quit] 08:34 -!- AgentHH [~ec2-user@ec2-54-244-117-95.us-west-2.compute.amazonaws.com] has quit [Quit: Reconnecting] 08:34 -!- AgentHH [~ec2-user@ec2-54-244-117-95.us-west-2.compute.amazonaws.com] has joined #mcdevs 08:45 < Grum> TkTech: i tried jdgui on some of those classes, it failed horridly 09:00 -!- Amaranth [~travis@ubuntu/member/Amaranth] has quit [Read error: Connection reset by peer] 09:00 -!- Xaardas [~tach@p5B2525EE.dip0.t-ipconnect.de] has joined #mcdevs 09:01 -!- Amaranth [~travis@ubuntu/member/Amaranth] has joined #mcdevs 09:01 -!- mode/#mcdevs [+v Amaranth] by ChanServ 09:07 -!- conehead [~conehead@unaffiliated/conehead] has quit [Quit: Computer has gone to sleep.] 09:30 -!- superjoe [~superjoe@cpe-24-193-23-236.nyc.res.rr.com] has quit [Quit: Leaving] 10:24 -!- mappum [~mappum@c-67-170-21-29.hsd1.wa.comcast.net] has quit [Ping timeout: 255 seconds] 10:44 -!- toqueteos [~toqueteos@96.Red-81-34-156.dynamicIP.rima-tde.net] has joined #mcdevs 10:53 -!- Prf_Jakob [~jakob@c-3b27e155.1214-1-64736c20.cust.bredbandsbolaget.se] has quit [Ping timeout: 248 seconds] 10:55 -!- Prf_Jakob [~jakob@c-3b27e155.1214-1-64736c20.cust.bredbandsbolaget.se] has joined #mcdevs 10:55 -!- mode/#mcdevs [+v Prf_Jakob] by ChanServ 11:23 -!- Jckf [~jckf@2001:470:27:155::2] has quit [Remote host closed the connection] 11:23 -!- Jckf [~jckf@2001:470:27:155::2] has joined #mcdevs 11:54 < pbunny> **:58:41 TkTech | No reason to keep the entire map in memory. 11:54 < pbunny> why? 11:54 < pbunny> there is no other way to have realtime world 11:55 < pbunny> **:18:29 Grum | one chunk in your system is ~680kb? 11:55 < pbunny> yes, i decided to stored them uncompressed for performance reasons 11:55 < pbunny> 10000x10000x256 world is enough for everybody 11:56 < pbunny> well unless there's thousands of players, but that's PvP server anyway 11:58 < pbunny> and if somebody will go to 15000x27000, he will actually be on 5000x7000 as world is looped 12:02 < jast> chances are a looped world will look spectacularly ugly 12:02 < jast> why not just put a wall of bedrock at the border 12:05 < pbunny> ugly? why? 12:05 < pbunny> if it was 100x100 world, i would have agreed 12:06 < pbunny> jast: nothing can be uglier than wall of bedrock 12:07 < SinZ> looping would just be confusing for the client 12:07 < pbunny> SinZ: rare people ever go beside 10000 blocks 12:08 < SinZ> I do 12:08 < pbunny> and even more rare remember the landscape as it was 10000 blocks ago :) 12:08 < pbunny> SinZ: Earth is round too 12:08 < pbunny> does it confuse you? 12:08 < SinZ> minecraft isn't round 12:08 < pbunny> my is 12:09 < Grum> last server i played on my house was at 27000, 15000 orso :/ 12:09 < pbunny> SinZ: btw, this will effectively prevent world oversize by somebody going to 1000000 blocks or stuff 12:09 < pbunny> he will just go in loops without noticing 12:09 < Grum> not really, as you just said you requred 256gb to have this in memory 12:09 < Grum> that qualifies as 'way to fucking big' ;) 12:09 < pbunny> Grum: yeah, but world won't exceed that 12:10 < pbunny> entities number is still a concern though 12:10 < Grum> also 680kb/chunk is ~11bytes of info per block 12:10 < Grum> seems quite too much 12:10 < pbunny> but they aren't as memory hogging 12:10 < Grum> everything is cpu-nogginh 12:10 < pbunny> Grum: that's what mc protocol map format uses 12:10 < Grum> *hogging even la 12:10 < Grum> pbunny: no its not? :/ 12:10 < pbunny> Grum: i will have 2 16-core cpus running at 3Ghz 12:10 < pbunny> Grum: omg 12:11 < pbunny> Grum: http://wiki.vg/SMP_Map_Format 12:11 < pbunny> btw, i approximated 10000x10000 12:11 < pbunny> because i assume entities will also take some RAM 12:11 < pbunny> a block is 614Kb iirc 12:11 < pbunny> a chunk * 12:11 < pbunny> 16x16x256 12:12 < Grum> not sure where you are getting all this extra space from :/ 12:12 < pbunny> entities, metaentities 12:12 < edk> he's getting it by being an idiot 12:12 < pbunny> ... 12:12 < Grum> a block has: 1 byte of type, 1 nible of meta, 1 nibble of extra meta, 1 nibble of blockllight, 1 nibble of skylight and then a heightmap and a biomemap (both 256bytes) 12:13 < pbunny> block doesn't have a biomemap. 12:13 < Grum> so that is 3 bytes per block + 512bytes 12:13 < SinZ> actually... 12:13 < SinZ> every block does, but usually ignores it iirc 12:13 < Grum> which means 197120 bytes of info 12:13 < pbunny> Grum: http://dump.bitcheese.net/texts/ofejyfi/C 12:13 < Grum> no, every column does 12:13 < pbunny> that's the structure client uses 12:14 < pbunny> 1 to 1 12:14 < pbunny> i compress this and send to it in 0x33 and 0x38 12:14 < Grum> its just 197120 bytes of uncompressed data excluding entities 12:14 < pbunny> no. 12:14 < pbunny> please see the link i poster 12:14 < pbunny> posted 12:15 < pbunny> and get a sizeof() or something 12:15 < Grum> ..... 12:15 * SinZ doesnt think pbunny knows who Grum is 12:15 < pbunny> its about 614Kb 12:15 < pbunny> SinZ: who is he> 12:15 < Grum> then you are doing it wrong 12:15 < Grum> fact 12:15 < pbunny> Grum: well clients accept such struct 12:15 < Grum> i'm one of the guys who actually makes minecraft >.> 12:15 < pbunny> in 0x33 and 0x38 12:15 < SinZ> ^ 12:15 < pbunny> ... 12:15 < edk> pbunny: are you aware of the requirements for the packing of a struct in C? 12:15 < pbunny> edk: packing? 12:15 < Grum> you seem to fail packing 12:15 < edk> pbunny: there aren't any 12:15 < Grum> i am not sure why you have '8' in there either 12:16 < pbunny> i just deflate it and sent to client 12:16 < pbunny> and it reads it correctly 12:16 < pbunny> so structure is compatible with client 12:16 < pbunny> light works too etc 12:16 < Grum> that means little 12:16 < pbunny> Grum: 8 is because these are 4-bit arrays 12:16 < pbunny> every byte stores 2 values 12:16 < edk> i thought you didn't own a copy of minecraft, pbunny :P 12:16 < Grum> 1) blocktype is not 16bits 12:16 < Grum> 2) metadata is not 8 bits 12:16 < pbunny> Grum: blocktype is 8 bits 12:16 < Grum> 3) light is not 8 bits 12:16 < Grum> skylight is not 8 bits 12:17 < pbunny> Grum: do you understand the difference between bit and byte? 12:17 < pbunny> do you know syntax of C? 12:17 < Grum> do you? O.o 12:17 * edk chortles 12:17 < pbunny> yes. 12:17 < Grum> nope 12:17 < pbunny> do you? 12:17 < pbunny> go code some java then 12:17 < pbunny> we code serious stuff here 12:17 < edk> pbunny: you talk about C, yet you think using #define to write every function is a good idea 12:17 < SinZ> he does, for mojang 12:17 < Grum> anyhow, you are doing it highly flawed if you are using ~680kb for a chunk 12:17 < pbunny> SinZ: ok, but he obviously has no clue about C 12:17 < Grum> the data is only ~180kb big 12:17 < pbunny> i don't see why he keeps arguing with me, failing to even read struct format properly 12:18 < Grum> erm 192kb 12:18 < Grum> pbunny: i dont care what you write down for a struct 12:18 < pbunny> Grum: why client accept 614Kb then? 12:18 < Grum> because its not correct :) 12:18 < Grum> why not? 12:18 < edk> just for pedantic reasons, are we talking in K or Ki here? 12:18 < Grum> its kinda friendly 12:18 < pbunny> Grum: it reads it correctly. 12:18 < Grum> it reads a lot correctly 12:18 < pbunny> every byte of it 12:18 < Grum> doesnt mean you are sending it the right amount of stuff :p 12:18 < pbunny> client reads data correctly -> doesn't mean i send it correctly? 12:19 < Grum> no 12:19 < Grum> means you send something it reads 12:19 < pbunny> i tested every part of strycture - blocktype, metadata, light, skylight, biome 12:19 < pbunny> everything is working in client correctly 12:19 < pbunny> he reads what i send 12:19 < pbunny> and it takes 614Kb uncompressed space 12:20 < pbunny> obviously you calculated something wrong 12:20 < Grum> pasted from our codebase: 12:20 < Grum> // This is the biggest a chunk can be 12:20 < Grum> public static final int MAX_CHUNK_DATA_LENGTH = 196864; 12:21 < pbunny> aaah 12:21 < Grum> obviously this normally says: (16 * 16 * 8) * (6 * LevelChunk.NUM_SECTIONS) + 16 * 16; 12:21 < pbunny> in minecraft, a chunk is 16x16x16 12:21 < Grum> but that is hard to read 12:21 < pbunny> my chunk is 16x16x256 12:21 < Grum> no ? 12:21 < pbunny> i call a chunkcolumn a chunk 12:21 < Grum> so do we 12:21 < pbunny> because i store data by chunkcolumns 12:21 < Grum> so do we, just internally we slice it up into sections 12:21 < Grum> we communicate in the full thing 12:22 -!- Jckf [~jckf@2001:470:27:155::2] has quit [Quit: No Ping reply in 180 seconds.] 12:22 < pbunny> Grum: are you an agent of mojang to promote wrong information here to stop others from developing something better than vanilla mc server? 12:22 -!- Jckf [~jckf@2001:470:27:155::2] has joined #mcdevs 12:22 < Grum> i'm an employee of mojang browsing through the codebase 12:23 < pbunny> ok. i prefer the wiki and practical experience to some employees of mojang advises (which doesn't correlate with results of my tests) 12:23 < SinZ> ... 12:23 < Grum> you can do whatever, it is just ..... not right :P 12:23 < pbunny> only java is right? 12:23 < Grum> ok. how much space does a single block-id take with you? 12:23 < Grum> how many bits of data per block? 12:23 < pbunny> 8 bits 12:24 < Grum> how is that reflected in that struct? 12:24 < Grum> unsigned char blocktype[16][16][16][16]; 12:24 < Grum> where is the '8' ? 12:24 < pbunny> unsigned char is 8 bits in C 12:24 < pbunny> =[ 12:24 < Grum> ok 12:24 < edk> wrong 12:24 < Grum> char in java is 16bit 12:24 < pbunny> ok, java sucks 12:24 < Grum> unsigned (whaaat!) 12:24 < edk> unsigned char is an implementation-defined length which is the minimum size of data addressable by the system 12:24 < Grum> not really 12:24 < edk> go learn C 12:24 < pbunny> edk: yeah, sure 12:24 < pbunny> must most commonly its 8bit 12:25 < Grum> dont people use uint8 to define this without any doubt? 12:25 < edk> Grum: C doesn't define whether "char" by itself is signed or not, for some reason 12:25 < pbunny> on my system (which code is working on) its 8bit too 12:25 < edk> C99 added exact-width types for pretty much this reason (uint8_t and friends) but pbunny obviously hasn't heard of them 12:25 < pbunny> i know about them 12:25 < Grum> ok so explain the numbers in the array construct 12:25 < pbunny> i'm doing other things now, i will refactor when i will have nothing to do anymore :p 12:25 < pbunny> Grum: so... 12:25 < Grum> i assume: the max of x,y,z and amount of 16^3 sections? 12:25 < pbunny> unsigned char blocktype[16][16][16][16]; 12:26 < pbunny> that means - it has 16 16x16x16 chunk parts 12:26 < pbunny> placed vertically 12:26 < Grum> and 16 of them 12:26 < Grum> ok, so now: unsigned char metadata[16][16][16][8]; 12:26 < pbunny> every 16x16x16 chunk has 16 16x16 parts 12:26 < Grum> did you just 'halve' that last 16 so you get nibbles? ;) 12:27 < pbunny> yes 12:27 < pbunny> http://dump.bitcheese.net/texts/enacese/C 12:27 < pbunny> that's how i set them 12:28 < pbunny> first is for 8bit data, second - for 4bit 12:28 < pbunny> should be obvious :) 12:28 < Grum> so in fact the total size in bits is: 8*16*16*16*16+8*16*16*16*8+8*16*16*16*8+8*16*16*16*8+16*16 12:28 < Grum> which conveniently is 163872 bytes ... 12:28 < Grum> again, nowhere near your 'sizeof' being 680kb 12:29 < Grum> also you are forgetting the possible 'extra' nibble for blockids > 256 12:29 < Grum> and the heightmap (which might not be send to the client) -- but anyhow, this again supports my numbers 12:29 < Grum> or sorry, THE numbers ;) 12:29 < Grum> as i'm not just shaking them from my ass 12:29 < pbunny> Grum: um, you calculated it all wrong... 12:30 < pbunny> 8*16*16*16*16+8*16*16*16*8+8*16*16*16*8+8*16*16*16*8+16*16 is 1310976 =[ 12:30 < Grum> BITS 12:30 < pbunny> and even expression is totally wrong 12:30 < pbunny> Grum: its actually 16*16*16*16 + 16*16*16*8*3 + 16*16 12:30 < pbunny> =[ 12:30 < Grum> same difference? 12:30 < pbunny> you skipped math at school or something? 12:30 < pbunny> Grum: 16*16*16*16 + 16*16*16*8*3 + 16*16 is 164096 bytes. 12:30 < pbunny> try it =[ 12:31 < pbunny> sorry, we have a troll here 12:31 < Grum> 8*16*16*16*16 + (8*16*16*16*8) + (8*16*16*16*8) +(8*16*16*16*8) +16*16 12:31 < Grum> learn to fucking read; that is what it says but just written out flat 12:31 < pbunny> Grum: you forgot to add *8 to last 16*16 12:31 < pbunny> =[ 12:31 < Grum> true! 12:32 < pbunny> Grum: and if you divide that by 8 then, you will get 164Kb =[[ 12:32 < Grum> but still, you forgot to add another 8*16*16*16 for the 'extra id-data' 12:32 < Grum> which is how much away from your '680kb sizeof' ? 12:32 < pbunny> wait. 12:32 < pbunny> i meant 164Kb then 12:32 < Grum> oh, now for fun; add another 32kb for the missing data you have 12:32 < Grum> lets say that ends up at 196kb 12:33 < Grum> 12:19:42 < pbunny> and it takes 614Kb uncompressed space 12:33 < Grum> 12:20:23 < pbunny> obviously you calculated something wrong 12:33 < pbunny> Grum: a typo. 12:33 < pbunny> 164, not 614 12:33 < Grum> sure >.> 12:33 < pbunny> :) 12:34 < edk> ~$ gcc -std=c99 pbunny_is_an_idiot.c 12:34 < edk> ~$ ./a.out 12:34 < edk> 164096 12:34 < pbunny> edk: if you scroll the logs back enough, you will see i always mentioned 164Kb 12:34 < edk> (sizeof on your struct) 12:34 < Grum> i just did copy/paste the only time you mentioned any size >.> 12:34 < pbunny> 614 was a misremember 12:35 < Grum> which was what this whole pointless discussion was based on 12:35 < pbunny> :) 12:35 < Grum> anyhow, you are forgetting data 12:35 < l4mRh4X0r> I haven't seen any 164 from you, pbunny 12:35 < Grum> might be optional, still forgetting 12:35 < pbunny> l4mRh4X0r: probably not old enough 12:35 < l4mRh4X0r> maybe. 12:36 < Grum> aaanyhow, you will eventually end up with having too little cpu to handle all updates to the world 12:36 < Grum> however small they might be 12:36 < pbunny> why? 12:36 < l4mRh4X0r> because exponential increase 12:36 < pbunny> any exponential increase == too little cpu? 12:36 < l4mRh4X0r> I love exponentials curves, but they suck for computer algorithms. 12:37 < edk> but he's got two 16-core CPUs! everything will be fine! 12:37 < Grum> pbunny: you are just having a fun project. nothing that will actually be usable by anyone 12:37 < edk> also his functions are written as #defines for extra speed 12:37 < Grum> yeah 12:37 < l4mRh4X0r> "extra speed" 12:37 < pbunny> Grum: it is already usable by vanilla mc client 12:37 < edk> l4mRh4X0r: yeah 12:37 < Grum> pbunny: yeah, and how many people have a 256gb 32cores server lying around? 12:38 < pbunny> Grum: the code isn't for public usage 12:38 < l4mRh4X0r> Grum, you'd be amazed. 12:38 < pbunny> its closed source 12:38 < Grum> 256gb ram l4mRh4X0r ;) 12:38 < Grum> pbunny: for now >:P 12:38 < l4mRh4X0r> I know 12:38 < edk> someone needs to read http://www.iso-9899.info/wiki/Why_not_macros 12:38 < pbunny> Grum: everybody will have 256Gb and 32 cores in 10 years 12:38 < pbunny> probably even iphone 12:38 < Grum> well, in that case, do release it :P 12:39 < Grum> also i'd still be interested in 'fast' and 'flawless' lighting algorithm 12:39 < Grum> you'll have to implement it eventually 12:39 < pbunny> edk: in case you aren't aware, i am making second version of server from scratch and i use functions there 12:39 < pbunny> Grum: lighting isn't most important part in PvP server 12:39 < Grum> the one time you showed code the only thing i could see was red flags 12:39 < Grum> pbunny: lighting is super important in minecraft 12:39 < pbunny> why? 12:39 < Grum> it is *the* game-mechanic that controls mobspawn 12:39 < Grum> and plantgrowth 12:40 < Grum> if you don't have it you do not have minecraft 12:40 < SinZ> even classic had a lighting system 12:40 < SinZ> kinda 12:41 < pbunny> Grum: mobs will behave different on my server 12:41 < pbunny> it won't spawn or despawn 12:41 < pbunny> it will spawn initially and then populate and evolve 12:41 < pbunny> build stuff etc 12:41 < edk> good luck writing the ai 12:42 < Grum> god 31 of your 32 cpu's will be grinding AI and pathing then :p 12:42 < Grum> good luck! 12:42 < pbunny> plantgrowth can be simplified until i will have time to make it properly 12:42 < pbunny> i.e. grow anywhere 12:42 < pbunny> on right surface 12:42 < pbunny> Grum: ai won't be that intensive 12:42 < edk> heh 12:42 < Grum> hehe 12:42 < pbunny> except for bosses 12:42 < pbunny> which will use neural networks to control lesses mobs in war with each other 12:42 < Grum> you will have millions of mobs to control 12:43 < edk> vanilla's ai is pretty intensive with lots of mobs, and all it does is fairly simple pathfinding 12:43 < l4mRh4X0r> All I can say is: Good luck, and link me when you're finished :P 12:43 < edk> inb4 "that's because it's java" 12:43 < pbunny> Grum: not right from the start 12:43 < Grum> i ever find your server online, i will explore every single chunk of it 12:43 < pbunny> edk: thats because of java 12:43 < Grum> and watch it crumble 12:43 < pbunny> :) 12:43 < pbunny> you're welcome 12:43 < Grum> will be hilarious :) 12:44 < l4mRh4X0r> Grum, and don't forget authentication exploits :D 12:44 < pbunny> ? 12:44 < edk> Grum's a mojang employee, presumably he an log himself in as anyone if he wants to 12:44 < edk> s/an/can/ 12:45 < l4mRh4X0r> Yeah, but where's the fun in that? 12:45 < pbunny> edk: he can't 12:45 < pbunny> my server uses itas own auth 12:45 < SinZ> ... 12:45 < pbunny> (ingame auth via /login ) 12:45 < l4mRh4X0r> Oh, even better 12:45 < l4mRh4X0r> DoS, here I come :P 12:45 < pbunny> so mojang employers won't cheat there :) 12:45 < jast> pbunny: Earth may be spherical, but then again its terrain is periodic. if you don't want to figure out a parametric periodic terrain generator, you'll end up with something that has harsh breaks at each loop boundary. 12:46 < SinZ> so, let me get this straight 12:46 < pbunny> jast: don't see problems in smoothing the edges 12:46 < SinZ> your minecraft server doesn't run off the normal login servers, so you don't need to pay for mc 12:46 < SinZ> and you haven't brought minecraft 12:46 < pbunny> ? 12:46 < pbunny> i don't use mc client 12:46 < l4mRh4X0r> bought* 12:46 < pbunny> testers do 12:46 -!- Calinou [~Calinou@unaffiliated/calinou] has joined #mcdevs 12:46 < edk> earth had the advantage of being made out of stuff, the "algorithm" that generated it had one shot to do the whole thing 12:47 < edk> not progressively generate more of it as you explore 12:47 < l4mRh4X0r> edk, he's gonna have everything loaded anyway 12:47 < l4mRh4X0r> So why not generate everything at once :P 12:47 < pbunny> i will not pregenerate world i think 12:48 < Grum> < edk> Grum's a mojang employee, presumably he an log himself in as anyone if he wants to <-- actually i cant 12:48 < SinZ> Really, no backdoors in login.minecraft.net 12:48 < SinZ> shame 12:48 < l4mRh4X0r> ^ 12:49 < Grum> i cant even lookup any details of anyone :P 12:49 < Grum> nor do i want to be able to do that 12:49 < jast> good thing, too 12:49 < edk> fair enough 12:49 < Grum> yeah its not needed for anyone except the webteam 12:49 < Grum> so .... ./care! :D 12:49 < SinZ> Could, say... Marc_IRL do it? 12:49 < Grum> (also i get to bitch at people when it breaks :D) 12:49 < Grum> SinZ: login as someone else? no, no-one can unless you have access to the auth-servers caches 12:49 < l4mRh4X0r> You like that, don't you? :P 12:50 < Grum> and insert a session manually 12:50 < edk> *bitch* 12:50 < edk> why does alsamixer work in db, but the thing at the bottom of the sliders is in % 12:50 < Grum> so webtaem again 12:50 * SinZ doesn't piss off mollstam 12:50 < Grum> obviously passwords are stored nowhere 12:50 < Grum> so there is no way to actually login as someone and we didnt make some magical bypass 12:51 < pbunny> Grum: you can make it anytime though 12:51 < Grum> not really 12:51 < pbunny> but you will not get to my server that way :p 12:51 < pbunny> its more secure 12:51 < Grum> its not 12:51 < l4mRh4X0r> edk, because people wanna know both? 12:51 < Grum> our system is not insecure in any way, so whatever you have cannot be 'more secure' :P 12:51 < l4mRh4X0r> Or some people want to know %, others want to know dB 12:52 < edk> l4mRh4X0r: but pressing up and down goes in 1dB increments 12:52 < pbunny> Grum: my server doesn't trust login.minecraft.net, so the latter can't exploit it 12:52 < l4mRh4X0r> I really only look at the dB anyway 12:52 < edk> l4mRh4X0r: even though the display on each slider is in % 12:52 < l4mRh4X0r> Oh, mine goes less regularly 12:52 < Grum> pbunny: your system would never ever look at login.minecraft.net 12:52 < Grum> if you are, you are doing it wrong :P 12:52 < pbunny> Grum: i mean mc auth system 12:52 < edk> after some point it changes to 2dB 12:53 < Grum> pbunny: this means people can login with whatever name on your server 12:53 < l4mRh4X0r> Mines does 0.75, then 1.25, then 1.75 12:53 < Grum> and you do some sort of local auth 12:53 < l4mRh4X0r> Or something similar. 12:53 < pbunny> Grum: yes 12:53 < Grum> easily ddosable 12:53 < pbunny> how? 12:53 < l4mRh4X0r> pbunny, so you mean session.minecraft.net 12:53 < Grum> you have to send data to the client 12:54 < Grum> you only have finite bandwidth 12:54 < l4mRh4X0r> pbunny, make 1000000 connections per second 12:54 < Grum> i have infinite clients :P 12:54 < l4mRh4X0r> Easy 12:54 < l4mRh4X0r> I can just discard unneeded data. 12:54 < l4mRh4X0r> You can't. 12:54 < Grum> or slow read it ;) 12:54 < l4mRh4X0r> Well, you can, but you don't *have* unneeded data 12:54 < zutto> or my favorite, just ignore all data 12:54 < Grum> slowreading is more effective 12:55 < edk> i prefer to discard only needed data 12:55 < l4mRh4X0r> what about noreading 12:55 < edk> and process the unneeded 12:55 < jast> servers that ignore all data or slow-read all data are the best 12:55 < Grum> l4mRh4X0r: then your connection will idle ;P 12:55 < l4mRh4X0r> Setting your window to 0 12:55 < Grum> -1! 12:55 < l4mRh4X0r> I heard the OS caches data when you send packets with window 0 12:55 < Grum> haha 12:55 < pbunny> Grum: i didn't get it 12:55 < l4mRh4X0r> Might be mistaken though 12:55 < Grum> pbunny: didn't get what? 12:55 < pbunny> how is local auth more vulnerable to connection ddos than mc auth? 12:56 < edk> jast: my favourite are servers that synflood you if you try to connect to them 12:56 < Grum> because in order to keep the client in the world you have to send it data 12:56 < pbunny> the latter is actually more vulnerable 12:56 < Calinou> hello security talk 12:56 < l4mRh4X0r> With MC auth you can quickly filter out bad logins 12:56 < Grum> pbunny: not really 12:56 < pbunny> Grum: this is true for any server 12:56 < Calinou> suddenly: xauth 12:56 < Grum> pbunny: you send far more data when you connect than the current servers 12:56 < l4mRh4X0r> i.e. you have to actually have accounts to DDOS 12:56 < pbunny> Grum: why? 12:56 < Grum> the people have to get 'in the game' 12:56 < pbunny> yes, so? 12:57 < pbunny> true for any server 12:57 < l4mRh4X0r> And don't tell me that you'll let them spasm until they login 12:57 < l4mRh4X0r> No 12:57 < Grum> no, mc auth is done before you get in the game 12:57 < l4mRh4X0r> pbunny, I can log onto your server with accounts that don't exist 12:57 < l4mRh4X0r> I can't on servers that use MC auth 12:57 < pbunny> Grum: you can ddos any server without bothering with mc auth.... 12:57 < pbunny> using custom bots 12:57 < l4mRh4X0r> pbunny, they'd need to have valid accounts 12:57 < pbunny> and if server uses mc auth, it will even have to make its own connects 12:57 < Grum> yes but your system that much easier 12:57 < pbunny> for every client 12:57 < pbunny> Grum: why? 12:57 < l4mRh4X0r> checking with session.mc is way cheaper than sending data 12:58 < Grum> because: scroll up 15 lines and read again 12:58 < l4mRh4X0r> sending chunk data, that is 12:58 < pbunny> l4mRh4X0r: i can filter by ip 12:58 < zutto> guys siriusly 12:58 < l4mRh4X0r> And making gravity calculations etc. 12:58 < edk> mc login is going to change anyway, iirc 12:58 < edk> to use crypto 12:58 < zutto> stop nitpicking on such small thing 12:58 < pbunny> if its 100000 pc botnet, nothing will save me anyway 12:58 < Grum> edk: mmm no 12:58 < l4mRh4X0r> zutto, but pbunny is kind of an idiot. 12:58 < l4mRh4X0r> So that's why we do 12:59 < edk> it's not? someone told me that 12:59 < Grum> use macros to make it faster! 12:59 < SinZ> Grum: what about the fancy launcher 12:59 < edk> that's a good idea! 12:59 < edk> there are totally no problems with that 12:59 < Grum> SinZ: what about it? 12:59 < SinZ> with the tokens and stuff 12:59 < Grum> that will just provide you a login token 12:59 < l4mRh4X0r> Suddenly: ipsec connection to the login servers. 12:59 < pbunny> l4mRh4X0r: nothing will save a server against DDOS from large botnet 12:59 < Grum> will let you auth with our servers, not play the game 12:59 < l4mRh4X0r> pbunny, true 12:59 < Grum> you'll still get a session token like normal 12:59 < Grum> you just dont have a password anymore :P 12:59 < l4mRh4X0r> Except with your server, you don't even need a large botnet 13:00 < Grum> pbunny: actually, not having an internet connection does ! 13:00 < l4mRh4X0r> oh, good one. 13:00 < zutto> null routing is always way to go 13:00 < edk> you don't really need a large botnet to ddos someone anyway. you just need a few servers with a lot of bandwidth and nothing to stop them source spoofing 13:00 < Grum> you cannot nullroute a proper ddos while still letting norma clients in 13:00 < pbunny> edk: um, ISPs block source spoofing for like 15 years iirc 13:00 < zutto> Grum: indeed you cant 13:00 < edk> that's incorrect pbunny 13:00 < Grum> yeah, not some weird iranian ones ;P 13:00 < edk> plenty of servers can do it 13:01 < Grum> there are quite some AS's that still announce bogons 13:01 < l4mRh4X0r> pbunny, then why are there still DNS reflection attacks :P 13:01 < edk> and TCP sequence prediction 13:01 < Grum> because of bad administrators that do not filter their outbound traffic for 'sources that are only from within their network' 13:01 < edk> Grum: quite 13:01 < pbunny> ok, anyway, i would rather accept a risk of being DDOSed by botnet of 1000 machines than to trust session.minecraft.net 13:01 < Grum> which is hilarious obviously :P 13:02 < Grum> pbunny: why? session is quite to be trusted :) 13:02 < l4mRh4X0r> 1000 machines? 13:02 < l4mRh4X0r> Not needed. 13:02 < pbunny> Grum: trust noone. 13:02 < l4mRh4X0r> 10 machines, easily. 13:02 < edk> except pbunny! 13:02 < pbunny> l4mRh4X0r: my server can handle 10 logins. 13:02 < Grum> pbunny: o.O 13:02 < edk> one machine per login? 13:02 < pbunny> if they logout/login, they will be banned by ip or something 13:02 < Grum> what if they have a timeout? :( 13:02 < Grum> so mean to ban them 13:02 < Grum> but also that is a ddos :p 13:02 < l4mRh4X0r> Oh, I'm playing on a crappy connection. 13:02 < Grum> you do not have the infinite memory to ban 'all teh people' :p 13:02 < l4mRh4X0r> Crap, I got banned for having a crappy connection. 13:03 < pbunny> Grum: timeouts arte easily differentiated from DDOS 13:03 < pbunny> are * 13:03 < edk> Grum: honestly I think the best way to DoS would be to just let people play on his server 13:03 < Grum> are they? 13:03 < l4mRh4X0r> pbunny, not when done right. 13:03 < Grum> edk: explore the world :p 13:03 < Grum> drop water everwhere 13:03 < pbunny> wait, bans are not needed. just limit connects/second per ip 13:03 < Grum> then put items in said water and make loops ;) 13:03 < edk> pbunny: so now you need a table containing every ip 13:03 < pbunny> Grum: that problem exists for every server out there 13:03 < Grum> pbunny: more for yours 13:04 < pbunny> only optimization can help 13:04 < pbunny> Grum: no. 13:04 < pbunny> my physics is pretty light-weight 13:04 < Grum> yes because you do not unload areas :) 13:04 < edk> Grum: don't worry, he'l have a thread per physics entity 13:04 < pbunny> edk: no. 13:04 < Grum> hunderedmillionbillionthreads 13:04 < edk> pbunny: i'm glad you gave up on that idea 13:04 < edk> what are you doing instead? 13:04 < zutto> pbunny: you wont mitigate ddos by limiting connections/ip, lol 13:05 < ShaRose> I wonder if anyone's wrote a level 7 dos attack for minecraft 13:06 < edk> there used to be lots 13:06 < zutto> ShaRose: i have written stress testing tool for minecraft while ago 13:06 < pbunny> Grum: players can drop stuff/redstone/etc on any server 13:06 < pbunny> chunk unloading won't save it 13:06 < pbunny> because players will be there 13:06 < pbunny> server won't unload chunk when there's players 13:06 < edk> but players aren't everywhere at once, typically 13:06 < ShaRose> zutto level 7 specifically, not level 3-4 13:07 < zutto> yeah, not level 7 specifically :| 13:07 < zutto> http://www.youtube.com/watch?v=w2aDiD5F97Y 13:07 < ShaRose> level 7 is like slowloris 13:07 < zutto> bored nights equal to fancy testing tools to filter all bukkits silly plugins 13:07 < pbunny> edk: even though the situation of chunk unable to keep-up with world ticks can happen, the worst that it will result in is chunk slowdown 13:08 < pbunny> i.e. if too much redstone stuff, it will just run more slowly 13:08 -!- Guest97501 [~exe@85.28.181.103] has quit [Ping timeout: 240 seconds] 13:08 < ShaRose> siiiiick 13:08 < pbunny> soon enough the slow chunk will be placed in separate thread and be nicely isolated 13:08 < ShaRose> took longer than expected but drive bender responded with a patch 13:09 < pbunny> and admins be notified :p 13:09 < edk> sounds like a solid plan 13:09 < edk> i always think placing things in separate threads is a good way to stop them hammering the cpu 13:09 < l4mRh4X0r> Because admins all know how your server works, technically. 13:10 < pbunny> they will hammer, but other chunks will iterate independently 13:10 < jast> it will still hammer I/O but whatever 13:10 < jast> I/O is free, right guys 13:10 < l4mRh4X0r> Nah, he doens't do IO 13:10 < pbunny> I/O is rarely the bottleneck 13:10 < l4mRh4X0r> Everything is loaded into memory. 13:10 < pbunny> i mean RAM I/O 13:10 < edk> free love, free money, free I/O 13:10 < jast> yeah, and if the server crashes things just start over 13:10 < jast> backup the world? screw that 13:10 < pbunny> jast: ever heard of term "periodical world saves"? 13:10 < pbunny> asynchronous 13:10 < l4mRh4X0r> No, his server doesn't crash 13:11 < l4mRh4X0r> That's ridiculous. 13:11 < jast> oh, I see 13:11 < pbunny> i.e. save 1 chunk, save second, etc 13:11 < jast> and periodic saves of a few 100 gigs are obviously free, too 13:11 < l4mRh4X0r> Yeah 13:11 -!- mulka_ [~quassel@quassel.woboq.de] has joined #mcdevs 13:11 < pbunny> jast: i can just continuously save it by chunk 13:11 < pbunny> the more chunks - the more rare world save becomes 13:11 < pbunny> still in acceptable range 13:11 < edk> pbunny: making threads will save you as long as you have physical threads available 13:12 < jast> so... the more chunks, the less guarantee that the world will still be up-to-date after a crash 13:12 < l4mRh4X0r> Sounds like a solid plan 13:12 < edk> once you get past that point spinning things out into threads doesn't help you 13:12 < edk> except by adding to the concurrency problem 13:12 < pbunny> jast: btw, i will use RAID of RAM-based SSDs 13:12 < pbunny> I/O quite fast there 13:12 < jast> edk: his server has 512 cores, don't you know 13:12 -!- mulka [~quassel@quassel.woboq.de] has quit [Ping timeout: 252 seconds] 13:12 < pbunny> and non-volatile 13:12 < jast> no wait, it's actually one core per chunk 13:12 < pbunny> don't be ridiculous 13:13 < jast> just level-matching 13:13 < pbunny> with yourself? 13:13 < pbunny> please try to be serious. 13:14 < edk> says the guy writing a minecraft server that can only work on a server with 256GB of ram 13:14 < pbunny> no, it can work on any server 13:14 < pbunny> world size isn't fixed 13:14 < l4mRh4X0r> Oh of course 13:14 < pbunny> just limit it to something like 2500x2500 and 4Gb is enough 13:14 < l4mRh4X0r> But what if I want a world of 24000x24000? 13:14 < pbunny> l4mRh4X0r: then you should get some medical attention 13:14 < l4mRh4X0r> Works fine on 4 GiB with vanilla 13:15 < pbunny> l4mRh4X0r: vanilla doesn't work. 13:15 < pbunny> only several chunks work there 13:15 < pbunny> everything else is frozen 13:15 < edk> thousands of servers running vanilla say otherwise 13:15 < l4mRh4X0r> Of course 13:15 < edk> yeah, duuuh 13:15 < l4mRh4X0r> Who needs updates where there's nothing to update? 13:15 <+md_5> why are we arguing with pbunny again 13:15 < pbunny> edk: thousands of servers are ran by schoolboys that want to look cool 13:15 < pbunny> are you one of them? 13:15 <+md_5> we have already established he is insane 13:15 < edk> oh yeah, forgot 13:15 < l4mRh4X0r> md_5, because it's fun to see what he comes up with. 13:15 < l4mRh4X0r> IMO 13:15 < pbunny> l4mRh4X0r: there is always something to update 13:16 < l4mRh4X0r> Nope. 13:16 < edk> pbunny: yes, i'm 14 and i run a server because i want to look cool 13:16 <+md_5> keeping the entire map in ram, with full ticking and AI logic, and using epoll() based networking with 2 threads per connection, and thread per chunk, and writing in header files to beat gcc are all good things to do 13:16 < pbunny> l4mRh4X0r: it is ridiculous that furnaces stop burning after all players leave 13:16 < pbunny> isn't it? 13:16 < edk> minecraft servers are pretty much the next smoking 13:16 < ShaRose> amazon why would you ask if I want to buy something I have had preordered for weeks 13:16 < edk> amirite? 13:16 < pbunny> md_5: i use 1 thread for connections now 13:16 < ShaRose> but yeah pbunny would your server easily support http://www.planetminecraft.com/project/the-recreation-of-the-earth-11500-scale/ 13:16 < l4mRh4X0r> pbunny, that's one of the few things that you wouldn't expect, no 13:16 < edk> it's seriously not like i could be arguing with you without being a schoolboy trying to look cool 13:17 < edk> everyone else arguing with you is one as well, btw 13:17 < pbunny> :) 13:17 < edk> you're the only person who is right, because everyone who disagrees with you is a schoolboy 13:17 < pbunny> edk: just don't tell me about these "thousands of servers" 13:17 < pbunny> they suck,. 13:17 -!- TomyLobo [~foo@91-64-168-142-dynip.superkabel.de] has joined #mcdevs 13:17 < edk> they're good enough for everyone who plays minecraft 13:17 < edk> apart from you 13:17 < pbunny> ShaRose: if i ever will have the need to - sure 13:18 -!- kcj [~casey@unaffiliated/kcj] has quit [Ping timeout: 255 seconds] 13:18 < pbunny> edk: thats because there's nothing better yet 13:18 < pbunny> at some point of time, msdos was fine for everybody 13:18 < edk> indeed. btw 13:18 <+md_5> all this big talk coming from a guy with a few months experience with C and claims to know all about the language 13:18 < edk> you do realise how close you are to the physical limit of how much ram you can have in one server? 13:18 < pbunny> md_5: i know enough 13:19 < l4mRh4X0r> pbunny, need I link the paste from ##c again? 13:19 < pbunny> edk: 10000x10000 is pretty close to reasonable limit a sane person would ever need 13:19 < ShaRose> pbunny the map I linked is a fair bit larger 13:19 < l4mRh4X0r> pbunny, I've played on plenty servers with a map bigger than that. 13:19 <+md_5> edk: 10000x10000 is pretty close to reasonable limit a sane person would ever need 13:19 < zutto> pbunny: why are you even planning to limit anyways? 13:19 <+md_5> never run a large server 13:20 < pbunny> l4mRh4X0r: no, the real map consisted only of several chunks 13:20 < pbunny> everything else was frozen 13:20 <+md_5> its more like 20-30k ^ 2 13:20 < pbunny> so the map wasn't big 13:20 < l4mRh4X0r> pbunny, Oh really? 13:20 < pbunny> it was a disguise 13:20 < pbunny> yeah 13:20 < l4mRh4X0r> Though it still stays the same when I leave and come back 13:20 < l4mRh4X0r> Can hardly call that imaginary 13:20 < pbunny> l4mRh4X0r: that resembles single player 13:21 < pbunny> doesn't it? 13:21 < pbunny> why not play single player then\ 13:21 < edk> pbunny: you're an idiot 13:21 < l4mRh4X0r> Isn't multiplayer just single player with multiple layers? 13:21 < l4mRh4X0r> players* 13:21 < ShaRose> the map is like 31k 13:21 < edk> and i have to walk the dog. wait, no, i have to go to school, because i'm a schoolboy :D 13:21 < l4mRh4X0r> Also, do you call 100G of disk space imaginary? 13:21 < edk> well, whichever it is, have fun with this 13:21 < pbunny> l4mRh4X0r: true multiplayer is about having independent world, a part of which players are 13:22 < pbunny> i.e. this is true for any mmorpg 13:22 < pbunny> no sector freezes 13:22 < l4mRh4X0r> that's true for almost no mmorpg at all. 13:22 < zutto> whats this thing about 100GB of diskspace anyways? 13:22 < l4mRh4X0r> Unless you can prove me wrong, of course. 13:24 < pbunny> in any case, the idea of furnaces freezing when player leaves the area seems disgusting to me 13:24 < pbunny> this doesn't happen on my server 13:24 < l4mRh4X0r> And of course the solution is to keep everything loaded 13:24 < pbunny> yes, this is the only solution. 13:24 < l4mRh4X0r> If you insist. 13:24 < pbunny> unless you can magically make data iterate on hdd independently of cpu/ram/etc 13:24 < zutto> l4mRh4X0r: psh, going for performance instead of just blindly loading eveything is stupid! 13:24 < zutto> owait 13:25 < pbunny> zutto: performance shouldn't go at cost of functionality 13:25 < l4mRh4X0r> Anyway, I've had my daily dose of arguing with idiots, have a nice day :) 13:25 < zutto> pbunny: how long have you been programming, and how specialized are you on automation? 13:26 < pbunny> automation of what? 13:26 < zutto> cause theres _VERY_ simple solution that you can do without keeping everything constantly loaded 13:26 < pbunny> zutto: load/iterate/unload? 13:26 < zutto> automation of servers, server hardening updates, etc 13:26 < pbunny> what 13:26 < zutto> oh 13:26 < pbunny> my server is hard enough 13:26 < zutto> you're completly new to servers it seems 13:26 < pbunny> ... 13:26 < pbunny> ok boss 13:27 < zutto> keep learning, you'll eventually figure out what you're doing wrong right now 13:27 < pbunny> thanks sensei! 13:41 < ShaRose> pbunny said sensei! from now on I will make an effort to call him pbunny-chan 13:41 < jast> that makes sense 13:43 < ShaRose> not sure if actually understands the joke or is being sarcastic 13:44 < TkTech> Chan is the japanese suffix for females and children, IIRC? 13:44 < ShaRose> yes 13:44 < ShaRose> generally means it's 'cute' 13:45 * TkTech finds a female yakuza boss to try this out 13:46 < zutto> chan has nothing to do with cute 13:46 < zutto> and its not only females and children 13:46 < Grum> < l4mRh4X0r> And of course the solution is to keep everything loaded <-- i cant wait to see the IO stats of that server btw :p 13:46 < zutto> however, if you TkTech were planning to call yakuza boss with -chan, you'd end up being killed and disposed probably 13:46 < l4mRh4X0r> heh 13:46 < Grum> the amount it will be writing to disk is going to be horrendous 13:46 < pbunny> Grum: RAM IO? 13:47 < zutto> as its very insulting to call someone who has higher status with -chan 13:47 < pbunny> Grum: disk? why? 13:47 < Grum> because your complete world will keep changing 13:47 < pbunny> Grum: its in RAM. 13:47 < TkTech> zutto, I figured that, I found a page listing the honorifics about 3 seconds after ShaRose mentioned it :) 13:47 < Grum> so you NEVER save it to disk? 13:47 * Grum pulls the powersupply ;) 13:47 < pbunny> Grum: i is saved periodically 13:47 < pbunny> gradually (by chunks) 13:48 < Grum> so you save a 'random state' in the world 13:48 < TkTech> Grum, Bad grummy, bad! 13:48 < Grum> that'll be fun when you load it :P 13:48 < pbunny> Grum: hmm 13:48 < ShaRose> zutto yes because it's insulting to call anyone with high status cute 13:48 < pbunny> but the only alternative is to halt entire world during saving 13:48 < TkTech> pbunny, That doesn't work, why that doesn't work at all! 13:48 < zutto> ShaRose: calling them cute isnt always insulting :| 13:48 < Grum> pbunny: or snapshot the complete world halving your capacity ;) 13:49 < pbunny> no, snapshotting is not an option 13:49 < Grum> sure it is :P 13:49 < zutto> and chan still has nothing to do with cute 13:49 < TkTech> Neither is your idea, pbunny. 13:49 < Grum> just get another 256gb of ram ;) 13:49 < pbunny> world saving is auxilliary to main functionality (and performance), not otherwise 13:49 < TkTech> What happens when a redstone mechanism spans multiple chunks. 13:49 < Grum> pbunny: if your solution was truly viable it would have been done already 13:49 < TkTech> And you save one chunk but don't get to the other for a few more ticks? 13:49 < pbunny> TkTech: yeah, i got his point 13:49 < pbunny> i will think about it 13:50 < Grum> the benefit of stopping emulation in non-active chunks means you do not have to do weird saving trickery 13:50 < Grum> or less ;) 13:50 < pbunny> Grum: the disadvantages are inability to run a realtime independent world 13:50 < Grum> as a bonus you get some other funny things to solve though =) 13:50 < pbunny> it heavily outweights any benefits 13:50 < Grum> pbunny: not really :) 13:50 < Grum> but you'll see 13:50 < pbunny> sorry, i prefer weird saving trickery 13:50 < Grum> then i hope your server never crashes 13:50 < pbunny> or just halting the world during save 13:51 < ShaRose> it never will! 13:51 < Grum> would be epicly fun to see a village someone build half saved 13:51 < pbunny> RAM-based SSDs are fast enough 13:51 < l4mRh4X0r> "halting the world during save" 13:51 < pbunny> iirc 500MB/s 13:51 < l4mRh4X0r> saving 100GB of data takse 23 minutes, even on SSDs 13:51 < l4mRh4X0r> takes* 13:51 < Grum> 256gb .. mmm :p 13:51 < pbunny> l4mRh4X0r: i will save it compressed 13:51 < pbunny> it compresses good 13:51 < pbunny> maybe to 5Gb 13:51 < pbunny> or smthn 13:51 < l4mRh4X0r> Because compressing doesn't take CPU cycles. 13:51 < Grum> bai cpu :p 13:51 < pbunny> also i won't take 256Gb immediately 13:51 < pbunny> it will grow up to it 13:51 < pbunny> it * 13:51 < zutto> l4mRh4X0r: it doesnt if you use quantum processors!! 13:52 < Grum> i will login to your server and explore that area ;) 13:52 < Grum> just to piss you fof 13:52 < Grum> *off 13:52 < Grum> and how you how hard it breaks ;P 13:52 < l4mRh4X0r> zutto, oh, right, hadn't thought of that 13:52 < Grum> +s 13:52 < l4mRh4X0r> silly me! 13:52 < pbunny> l4mRh4X0r: lol, compressing is nothing compared to I/O anyway 13:52 < ShaRose> just make it so you try and attempt to load chunks all over the place 13:52 < TkTech> pbunny, You realize it's possible to keep simulating the world without actually loading anything but active neighbours, right? 13:52 < pbunny> TkTech: not quite 13:52 < Grum> which is harder but cooler trickery =) 13:52 < l4mRh4X0r> pbunny, it is. 13:53 < pbunny> at the very least it will have the huge performance impact 13:53 < TkTech> Far, far, far, faaaar less than your idea. 13:53 < Grum> it would emulate less than you plan to emulate 13:53 < Grum> i am not sure how your idea is better then ;) 13:53 < pbunny> TkTech: 'chunks loaded' isn't the actual problem 13:53 < TkTech> A bit when a chunk is loaded to update, and a bit to temporarily load a chunk while it's active (such as a minecart moving through) 13:53 < pbunny> if nothing is happening in chunk - it won't use any CPU 13:53 < pbunny> only RAM 13:54 < Grum> anyhow, the only way to show pbunny is to have him see for himself 13:54 < zutto> ^ 13:54 < TkTech> Seems like it. 13:54 < zutto> he'll figure it out 13:54 < pbunny> TkTech: even 100000x100000 world won't use CPU if there are no entities, no metaentities, no water and no players 13:54 < l4mRh4X0r> little pbunny-chan :P 13:54 < pbunny> except for simple loop 13:54 < Grum> pbunny: it would 13:54 < Grum> growing plants and random ticking of blocks 13:55 < Grum> or rather; random ticking of blocks 13:55 < Grum> just that one 13:55 < pbunny> Grum: plants are metaentities.