00:00:00  * ircretaryquit (Remote host closed the connection)
00:00:08  * ircretaryjoined
00:00:21  <defunctzombie>Raynos: imho the stack overflow example is easier to understand
00:01:28  <defunctzombie>I get what you are trying to do and mostly follow it, but because there are all these sideeffects of what is happening behind the scenes
00:01:35  <defunctzombie>it makes it more of a mental challenge
00:03:48  <mikolalysenko>mbalho: that obj parser looks alright
00:04:14  <mikolalysenko>or at least a good start
00:05:38  <Raynos>defunctzombie: no u!
00:05:47  <Raynos>there aren't any side effects
00:06:44  * AvianFlujoined
00:16:06  <mbalho>mikolalysenko: also found this https://github.com/cubehero/stl.js but it never got published to NPM
00:18:40  * exit2quit (Remote host closed the connection)
00:20:05  <mbalho>mikolalysenko: though it just uses normal arrays https://github.com/cubehero/stl.js/blob/master/lib/stl_parser.js
00:22:29  <Raynos>defunctzombie: the code is pretty simple. the only difference is it returns reducible stream of events
00:22:58  <Raynos>The rest is implementation detail. you dont care
00:23:17  <mikolalysenko>mbalho: Normal arrays are good
00:23:33  <mikolalysenko>mbalho: today they are actually faster than typed arrays
00:23:38  <mbalho>mikolalysenko: oh
00:23:43  <mikolalysenko>mbalho: Though that may eventually change in the future
00:24:03  <mbalho>mikolalysenko: i need to do my research on that!
00:24:44  <mikolalysenko>here is some stuff rom a few months ago:
00:24:45  <mikolalysenko>https://groups.google.com/forum/?fromgroups=#!topic/numericjs/TQ9zQmcyozQ
00:25:07  <mikolalysenko>I trust Sebastian's opinion on this since he has done the most experiments on it
00:25:17  <mikolalysenko>(that I know of anyway)
00:26:42  <mbalho>this guy has some cool modules https://npmjs.org/~imbcmdth
00:27:33  <Raynos>I've got a european friend who I want to help get a JS job in the bay.
00:27:41  <Raynos>anyone know of any visa tricks / companies?
00:30:06  <mbalho>https://github.com/yeuchi/STLDecoder/blob/master/STL.js woot
00:30:41  <mbalho>mikolalysenko: so far everything that I have wanted to do has already been done by someone they just arent documented well or published. finding things on github is like finding things on google 10 years ago haha
00:36:10  <mikolalysenko>mbalho: Well, if the license allows it why not fork it, clean it up and put it npm?
00:37:11  <mikolalysenko>Also that guy has a ton of decoders written up:
00:37:12  <mikolalysenko>https://github.com/yeuchi
00:38:36  <rolnaaba>mbalho: you here?
00:38:39  <mbalho>mikolalysenko: yea its MIT
00:38:40  <mbalho>rolnaaba: yep
00:38:46  <mbalho>mikolalysenko: oh wow
00:38:46  <rolnaaba>mbalho: https://github.com/englercj/voxel-storage
00:38:53  <rolnaaba>mbalho: first stab at something there
00:38:53  <mbalho>WHoaaaaa
00:39:51  <mbalho>rolnaaba: wow this is awesome, i will test it out tonight
00:40:06  <rolnaaba>mbalho: I haven't ran it at all so probably some syntax errors and shit
00:40:20  <mbalho>rolnaaba: hah
00:40:25  <rolnaaba>mbalho: but everything is stubbed out and I tried to put up a wiki for what the api will look like
00:41:06  * cianomaidinquit (Quit: cianomaidin)
00:41:49  <rolnaaba>mbalho: I also tried to use batches to save multiple things (like if you use saveChunks instead of saveChunk)
00:41:56  * cianomaidinjoined
00:42:10  <mbalho>rolnaaba: yea thats a good idea. i will write a little test demo with this
00:42:17  <rolnaaba>mbalho: And loading multiple chunks (like loadChunks()) will be async and emit each chunk in an event as it comes
00:42:30  <rolnaaba>mbalho: Then callback with all of them when it is done
00:43:16  <mbalho>rolnaaba: mikolalysenko was saying how we could do run length encoding on chunks in memory before saving/loading to reduce size
00:43:56  <mbalho>rolnaaba: but we can worry about that later
00:44:12  <rolnaaba>mbalho: Fo sho, right now im just storing EVERYTHING, but compaction and other optimizations are things to think about
00:48:14  <mikolalysenko>mbalho: Yeah, though if you are planning on moving to run length encoded volumes you may be better off doing that sooner than later
00:48:29  <mikolalysenko>since it will affect all the code that deals with voxels in your project
00:48:58  <rolnaaba>mbalho: Right but it should only effect my _store/_load functions
00:49:35  <mikolalysenko>rolaaba: Well, I was thinking of something more radical, like actually run length encoding *everything*
00:49:41  <mbalho>mikolalysenko: i may just use it as an over the wire optimization for the short term to reduce overall complexity (rendering speed and memory is good enough for me right now)
00:50:00  <rolnaaba>mikolalysenko: oooohhhh
00:50:04  <mikolalysenko>makes sense
00:51:10  <mikolalysenko>mbalho: to be honest, that is probably good enough since it works for minecraft anyway
00:51:46  <mikolalysenko>but it is possible to do better
00:52:12  <mikolalysenko>and the main advantage is that you can do bigger/higher resolution volumes
00:53:07  <mikolalysenko>in the end it is really a question of how much needs to be done to hit some performance target
00:54:19  <mbalho>mikolalysenko: ahh i see
00:54:40  <mbalho>shama: it would be cool to get the voxel-texture module to replace all of the texture and material stuff we are doign in voxel-engine and voxel-mesh
00:55:57  <rolnaaba>mbalho: finding voxel made me update and start running my minecraft server again :P
01:01:31  <mbalho>rolnaaba: hah nice. my server implementation is nearly playable :P http://voxel.jit.su
01:02:29  <mbalho>I just updated http://voxeljs.com/ with 5 new modules!
01:03:09  <substack>woot!
01:03:13  <substack>bicycle fixed
01:03:27  <mbalho>substack: im gonna go down to sudoroom in a few minutes and hack
01:05:08  <substack>mbalho: did those collision patches help?
01:05:42  <mbalho>substack: sort of
01:05:51  <mbalho>substack: i still get stuck in voxels and can jump into voxels
01:05:52  <shama>mbalho: I just started looking into applying it voxel meshes... I got nowhere on it so far but will keep at it :)
01:06:10  <mbalho>shama: cool i will take a stab at it when i get a moment
01:06:34  <mbalho>shama: i also think a module that only has png textures from a MIT/BSD licensed minecraft texture pack would be cool
01:06:50  <mbalho>shama: so you could do like require('jolicraft') and it would give you a buncha filenames
01:07:06  <mbalho>version all the things!
01:07:47  <shama>That is a good idea. Ive already been duplicating the textures with each module for an example folder.
01:07:53  <mbalho>shama: ye ame too
01:08:55  <rolnaaba>mbalho: sweet! I kept falling throught he floor tho :P
01:09:34  <shama>I also want to get baudio setup for web audio... its too quiet in there
01:10:53  <rolnaaba>mbalho: gots to haz da musik, wrote a wrapper for this it in my grapefruit engine: https://github.com/englercj/grapefruit/blob/master/src/audio/audio.js
01:11:03  * thatguydanjoined
01:17:28  * mikealquit (Quit: Leaving.)
01:29:38  <mbalho>rolnaaba: that looks sweet
01:34:52  * gwenbellquit (Ping timeout: 246 seconds)
01:35:20  * gwenbell_quit (Ping timeout: 256 seconds)
01:39:17  * defunctzombiechanged nick to defunctzombie_zz
01:47:45  * mikealjoined
01:47:47  <rolnaaba>mbalho: thanks bro
01:50:08  * cianomaidinquit (Quit: cianomaidin)
01:50:24  * defunctzombie_zzchanged nick to defunctzombie
01:51:54  * cianomaidin_joined
01:55:22  * kevino80joined
01:56:28  * kevino80quit (Remote host closed the connection)
01:56:38  * cianomaidin_quit (Ping timeout: 256 seconds)
01:58:12  * mikealquit (Ping timeout: 244 seconds)
01:58:54  <mbalho>mikolalysenko: https://github.com/codys/minecraft.print/blob/master/minecraft_print.py
02:09:10  * gwenbelljoined
02:09:11  * gwenbell_joined
02:23:54  * mikealjoined
02:28:44  <defunctzombie>Raynos: https://gist.github.com/4552907
02:28:49  <defunctzombie>that mouseenter is much clearer
02:28:56  <defunctzombie>and will ship way less code to the client
02:29:14  <defunctzombie>and will run faster too ;)
02:29:41  <Raynos>depends on your definition of cleaner
02:29:41  <defunctzombie>it could be made event shorter if that was the goal
02:29:46  <Raynos>my definition is simple
02:29:46  <Raynos>stream of events
02:29:49  <Raynos>filter by two conditions
02:29:50  <Raynos>return
02:29:58  <Raynos>conceptually that's as simple as you can get
02:30:11  <defunctzombie>except I have no idea how to call your function
02:30:22  <Raynos>oh thats because I gave no example :D
02:30:31  <defunctzombie>no, that is because the code itself gives no example
02:30:44  <defunctzombie>when I see function() I know how to call something ;)
02:31:03  <defunctzombie>what does your thing return?
02:31:21  <defunctzombie>why does it involve several outside libraries with what appears to be many function calls
02:31:32  <defunctzombie>when all this code is is just 2 if statements
02:32:03  <defunctzombie>sure, I get the "functional programming" purity of your approach and all, but seems a tad overkill :p
02:32:30  <Raynos>defunctzombie: https://gist.github.com/4552149#mouseenter--leave
02:32:34  <defunctzombie>now I have 4 new dependencies to learn and track for 5 lines of code :/
02:32:57  <defunctzombie>this is retarded
02:33:05  <defunctzombie>honestly, just let me hookup a simple function
02:33:06  <Raynos>defunctzombie: there are trade-offs here. I am already using reducers and dom-reduce so it didnt matter for me
02:33:12  <defunctzombie>:p
02:33:15  <Raynos>the usage of synthesize is probably overkill
02:33:20  <Raynos>I can probably refactor that out
02:33:22  <Raynos>I should actually
02:33:24  <Raynos>sec.
02:33:29  <defunctzombie>I don't want some streams and crap man
02:33:39  <defunctzombie>I just want some function to run on this event
02:33:51  <defunctzombie>if I want to make some fancy interface out of it, I can do that on top
02:33:58  <defunctzombie>don't impose it on me when I don't need it
02:34:33  <defunctzombie>if you buy into streams for everything that is cool, but at the lowest level this is just a function callback and I don't see the harm in exposing it as such
02:34:54  <defunctzombie>write the stream on top of that concept if ya want :)
02:35:49  <Raynos>defunctzombie: https://gist.github.com/4552149#file-mouseenter-js-L1
02:36:12  <Raynos>defunctzombie: wrong approach
02:36:17  <Raynos>DOM events are inputs
02:36:41  <Raynos>I must use dom-reduce
02:36:57  <defunctzombie>if you must use dom-reduce then you have a higher level lib
02:36:58  <Raynos>defunctzombie: https://github.com/Gozala/dom-reduce/blob/master/event.js#L27
02:37:05  <defunctzombie>and not the basics of a mouseenter event
02:37:18  <Raynos>well this is the mouseenter thing
02:37:24  <Raynos>but it uses reducers for the dom events
02:37:27  <mbalho>substack: im down at sudoroom hacking on voxels with jaekwon
02:37:40  <defunctzombie>the most basic mouseenter should look very much like addEventListener or whatnot
02:37:41  <defunctzombie>from the dom
02:37:53  <Raynos>defunctzombie: I agree with you that it should do event listeners but thats not what I needed in my code
02:38:02  <Raynos>in my code I needed reducers because that's what everything else is.
02:38:11  <defunctzombie>Raynos: now that is a statement I can understand :)
02:39:22  <Raynos>The problem with event listeners is that you have to frigging remove them
02:39:39  <Raynos>so the api would have to return a function or something to remove them
02:39:40  <Raynos>and that sucks
02:39:50  <Raynos>or you need a second function
02:39:57  <Raynos>called removeMouseEnter(...)
02:40:03  <Raynos>and then you have to maintain a hash of fucking state somewhere
02:40:29  * tphummelquit (Quit: tphummel)
02:40:38  <Raynos>https://gist.github.com/4552907#file-mouseenter-js-L37 that is frustrating
02:51:00  <defunctzombie>Raynos: you don't need to have removeMouseEnter
02:51:06  <defunctzombie>the api I have there returns the delegate
02:51:09  <defunctzombie>just remove that
02:51:19  <Raynos>ugh
02:51:24  <Raynos>yeah I guess that works
02:51:34  <defunctzombie>Raynos: if you have to remove it (in many cases you might not)
02:51:50  <defunctzombie>I mean, that is the reality of a synthesized even if you want to remove it
02:52:09  <defunctzombie>if you want to get really crazy, just monkey patch addEventListener
02:52:13  <defunctzombie>to handle mouseenter and leave
02:52:22  <defunctzombie>transparently haha
02:59:14  <Raynos>~_~
02:59:16  <Raynos>thats stupid
02:59:20  <Raynos>I went down that route before
02:59:21  <Raynos>disaster
02:59:23  <brianloveswords>Raynos, I have a question about buffer-stream
02:59:32  <Raynos>the answer is dont use that module
02:59:35  <Raynos>and use pause-stream
02:59:49  <brianloveswords>haha, okay!
03:00:57  <Raynos>oh wait!
03:01:02  <Raynos>buffer-stream is my module :D
03:01:07  <brianloveswords>You bet it is.
03:01:09  <defunctzombie>rofl
03:01:17  <brianloveswords>Which is why I was asking you about it :)
03:01:25  <defunctzombie>which words do you love?
03:01:33  <Raynos>buffer stream is a duplex pause-stream
03:01:37  <brianloveswords>Mostly sword words, like bayonet and rapier.
03:01:38  <Raynos>ideally you never want to use it
03:02:01  * ralphtheninjaquit (Ping timeout: 246 seconds)
03:02:05  <Raynos>if you have a need for buffer both ends of the duplex your probably doign something silly
03:02:18  <brianloveswords>Yeah, I just need pause stream.
03:04:07  <Raynos>you can also just use streams2
03:04:13  <Raynos>which buffers correctly by default
03:04:46  * AvianFluquit (Remote host closed the connection)
03:05:29  * dguttmanquit (Quit: dguttman)
03:11:26  * jibayquit (Quit: Leaving)
03:17:11  <defunctzombie>brianloveswords: rapier ... that is a great word
03:22:48  <substack>words swords sworlds worlds
03:41:25  <rowbit>/!\ ATTENTION: (default-local) [email protected] successfully signed up for developer browserling plan ($20). Cash money! /!\
03:41:25  <rowbit>/!\ ATTENTION: (default-local) paid account successfully upgraded /!\
03:48:04  * dominictarrjoined
03:49:31  <defunctzombie>\o/
03:55:08  * dominictarrquit (Quit: dominictarr)
04:01:44  * fotoveritejoined
04:31:37  * wiwilliaquit (Ping timeout: 246 seconds)
04:49:19  * wiwilliajoined
04:54:37  * dominictarrjoined
04:55:18  <mbalho>shama: hey can you push the new example to gh-pages?
04:55:44  <shama>mbalho: already did... turbo refresh :)
04:55:56  <mbalho>ahha
04:56:54  <mbalho>HOLY SHIT
04:56:59  <mbalho>shama: this is so awesome hahaa
04:57:23  <shama>hehe
05:01:58  <shama>ok time to work on something else for awhile... gonna learn about voxel meshes
05:07:46  * thatguydan_joined
05:11:14  * thatguydanquit (Ping timeout: 256 seconds)
05:12:08  * thatguydan_quit (Ping timeout: 252 seconds)
05:12:30  <substack>shama: holy crap your demo is amazing!
05:12:37  <substack>voxel-camera too
05:12:43  <shama>substack: thanks! :D
05:15:15  * dguttmanjoined
05:16:59  * dguttmanquit (Client Quit)
05:19:47  <dominictarr>Raynos: substack I want a way to upload a large file into scuttlebutt/leveldb and replicate it… I am thinking of a scuttlebutt2 where history() returns a stream
05:22:58  * dominictarr_joined
05:24:09  <substack>dominictarr_: for big files the bittorrent approach seems pretty good
05:24:40  <dominictarr_>maybe 'big' is not what I mean
05:24:49  <dominictarr_>user uploading images or tarballs
05:25:17  <dominictarr_>that are a few megabytes, but serve no purpose being kept in memory
05:25:42  * st_lukejoined
05:25:42  * dominictarrquit (Ping timeout: 276 seconds)
05:25:43  * dominictarr_changed nick to dominictarr
05:25:44  <dominictarr>… but can still be replicated commutatively
05:42:13  <dominictarr>substack: pkrumins love the allusion to the "fourth amazing product"
05:42:21  <dominictarr>I WONDER WHAT IT COULD BE
05:48:51  * dominictarr_joined
05:48:59  * wiwilliaquit (Ping timeout: 252 seconds)
05:50:27  * dominictarrquit (Ping timeout: 248 seconds)
05:50:28  * dominictarr_changed nick to dominictarr
05:56:14  <dominictarr>hey substack do you have all the flights booked for campjs?
05:57:01  * st_lukequit (Remote host closed the connection)
06:02:20  * st_lukejoined
06:02:54  <substack>dominictarr: oh I got the impression that tim was going to handle that
06:03:17  <dominictarr>yeah… that is what I thought
06:03:28  <substack>haven't gotten any flight numbers yet though
06:03:36  <dominictarr>but I figured he would have told you about that
06:04:04  <dominictarr>did you hear from jhs? he wanted to fly you to thaijs
06:04:27  <dominictarr>I suggested that he and tim work together on that
06:19:13  <dominictarr>substack: defunctzombie want a npm ls like tree view of the modules that will go into browserify
06:19:21  <dominictarr>browserify ls
06:19:48  <dominictarr>and it will bundle from the browser: property in the package.json
06:19:53  <dominictarr>and show be everythnig
06:21:57  <defunctzombie>dominictarr: can you clarify that?
06:22:28  <defunctzombie>you want a command that just shows you want would be bundled if you bundled from a given file location?
06:22:40  <dominictarr>npm ls gives you a dependency tree
06:22:45  <dominictarr>but it's all the modules
06:23:02  <dominictarr>I want to see which modules will be in the browserify bundle
06:23:50  <defunctzombie>ah, I could make `required` print a nice tree
06:23:57  <dominictarr>… and their file sizes, for improving file size
06:24:07  <defunctzombie>but yea, if you have shims from browser: field then you would want to see that
06:24:10  <dominictarr>hmm, I think the npm-tree might even be a reusable module
06:24:39  <defunctzombie>dominictarr: at least with how I bundle, there is the idea of "external" bundles
06:24:42  <dominictarr>I think if you run browserify with no args it should read the browser prop
06:24:50  <defunctzombie>so without those it would not be immediately clear what actually goes into a bundle
06:24:55  <dominictarr>external bundles?
06:25:18  <defunctzombie>dominictarr: https://github.com/shtylman/node-enchilada#with-ingredients
06:25:21  <defunctzombie>that is the best example I have
06:25:35  <defunctzombie>the engine.io stuff in that code sample
06:26:01  <defunctzombie>allows for separate js file to provide that resource while still letting you require it :/
06:26:09  <defunctzombie>but yea, just a basic tree view could be cool
06:26:17  <defunctzombie>def good for visualizing deps
06:26:19  <defunctzombie>and duplicates
06:26:37  <dominictarr>yeah, and maybe flame graph style aggregations
06:27:07  <dominictarr>so it could show the code size of X plus it's deps
06:27:18  <dominictarr>so you know what the large parts are
06:28:17  <dominictarr>defunctzombie: oh I see, enchilada looks good
06:28:40  <defunctzombie>dominictarr: enchilada is how I package my js for my web apps these days
06:29:24  <defunctzombie>there are some rough edges but that in conjunction with taters is so far the easiest solution that I have that met my various "web app" criteria
06:29:57  <defunctzombie>browserify watch mode is really handy when doing development, but I like to avoid committing the built files
06:30:03  <defunctzombie>or pushing them around manually
06:30:20  <dominictarr>agree
06:31:08  <dominictarr>although, I'm planning on using browserify to generate server side bundles that run untrusted code in newContext soon
06:31:19  <dominictarr>for the upcoming nearform scuttlebutt service
06:31:59  <dominictarr>but that will be an enhancement… maybe in march, or april
06:32:53  <defunctzombie>sounds fancy
06:33:13  <defunctzombie>also, I don't think browserify supports the "browser" field yet
06:33:31  <substack>correct
06:36:03  <dominictarr>it will
06:36:21  <dominictarr>once this bubbles up my todo list
06:36:43  <defunctzombie>haha
06:38:49  * mikealquit (Read error: Connection reset by peer)
06:40:38  <dominictarr>another use-case I will want is generating bundles for webworkers
06:41:32  <jjjjohnnny>shama: i am getting an error trying to browserify your drone example index.js, please advise
06:41:53  <mbalho>jjjjohnnny: did you npm install first
06:42:00  <jjjjohnnny>which
06:42:01  <shama>jjjjohnnny: what error?
06:42:20  <jjjjohnnny>Error: No wrapper for core module: "child_process" from directory "/home/nhq/development/voxel-drone/node_modules/ar-drone-browserified/lib/video" while processing file /home/nhq/development/voxel-drone/node_modules/ar-drone-browserified/lib/video/PngEncoder.js
06:43:09  <shama>oh yeah heh... it doesnt do that yet.
06:43:24  <jjjjohnnny>yes i npm installed
06:43:34  <shama>I have an issue for that... not sure if it's possible though: https://github.com/shama/voxel-drone/issues/6
06:44:03  <jjjjohnnny>can I run the example some other how?
06:44:23  <jjjjohnnny>i did $ browserify -e index.js -o bundle.js
06:44:41  <mbalho>substack: demo with your new collisions is live http://maxogden.github.com/voxel-engine/
06:45:06  <mbalho>substack: also i updated voxel and voxel-mesh to 0.1.0 each, which includes some breaking API changes (just minor stuff)
06:45:29  <jjjjohnnny>(just minor stuff)
06:45:38  <chrisdickinson>mbalho: how big is a voxel in world units?
06:46:09  <shama>jjjjohnnny: Can you gist the index.js?
06:46:10  * chrisdickinsonis working on another player physics thing
06:46:21  <mbalho>chrisdickinson: configurable but default is 25 i think
06:46:29  <chrisdickinson>cool
06:47:07  <chrisdickinson>and the voxel array is structured such that voxel(x, y, z) == x + y * y_axis + (z * y_axis * z_axis)?
06:47:19  <chrisdickinson>or rather * x_axis at the end
06:47:28  <mbalho>chrisdickinson: yep
06:47:33  <mbalho>chrisdickinson: wait
06:47:42  <mbalho>chrisdickinson: its x + y*size + z*size*size
06:47:55  <chrisdickinson>sweet
06:48:03  <mbalho>chrisdickinson: and theres a separate array for each chunk, and each chunk is 32x32x32 voxels
06:48:06  <jjjjohnnny>shama: https://gist.github.com/4554208
06:48:37  <shama>jjjjohnnny: thanks
06:49:01  <substack>mbalho: there seems to be a regression that is causing my old examples to freeze up
06:49:12  <mbalho>chrisdickinson: all these functions are what i use for that stuff https://github.com/maxogden/voxel/blob/master/chunker.js#L51-L93
06:49:22  <mbalho>substack: could be a breaking api change, which demo is broken?
06:49:36  <substack>voxel-debris
06:49:37  <chrisdickinson>cool
06:49:45  <substack>your example works though
06:49:51  <substack>so it's probably the api changes
06:50:30  <mbalho>substack: make sure to upgrade voxel-engine to 0.2.6 also
06:50:46  <chrisdickinson>so i'm writing a 3d version of my tilemap api: collisions(function, tilesize [dimensions]) -> function(aabb, vector, oncollision)
06:52:04  <shama>jjjjohnnny: Im not getting the same error... let me neuter out the video stuff in the ar-drone-browserified lib though... Im guessing you have a script that is requiring that stuff where it shouldnt.
06:54:50  <defunctzombie>dominictarr: what are you making scuttlebutt for? any particular project/job/usecase? or just playing around with stuff?
06:59:03  * mikealjoined
06:59:30  <dominictarr>defunctzombie: well, a bunch of stuff it's pretty flexible
06:59:44  * mikealquit (Client Quit)
07:00:09  <dominictarr>it's relatively generic real-time collaboritive stuff
07:00:48  <dominictarr>but nearform is feeding be now, so I'm doing it for them… but it's still all open source
07:02:17  <mbalho>dominictarr: i started using mux-demux and scuttlebutt yesterday for a multiplayer game -- can you tell me if it looks logical? https://github.com/maxogden/voxel-server/blob/master/server.js#L76-L84 and https://github.com/maxogden/voxel-server/blob/master/client.js#L14-L44
07:02:39  <shama>jjjjohnnny: ok try, npm cache clean and npm install again
07:04:48  <chrisdickinson>mbalho: what actually advances the player's position in voxel-engine?
07:05:12  <defunctzombie>dominictarr: nearform sounds pretty cool, basically a consulting type firm?
07:05:46  <dominictarr>consulting, as bootstrapping for products
07:05:48  <shama>The physics seem much better... now the trees dont grab me and slowly force me to the top
07:05:50  <dominictarr>that is the plan
07:05:56  * thatguydanjoined
07:06:10  <substack>mbalho: it seems like the generator broke in the latest voxel-engine
07:06:20  * mikealjoined
07:06:24  <defunctzombie>dominictarr: nice
07:06:46  <mbalho>substack: looking into it
07:06:47  <defunctzombie>I like that phase of products, where there is a lot of variation and you have input into how the base product is made
07:07:14  <substack>mbalho: I don't really see the point of the generateVoxelChunk code path in the first place when a function(x,y,z) will suffice
07:07:22  <dominictarr>mbalho: looks good
07:07:23  <substack>it's just weird and hard to use
07:07:43  <mbalho>substack: yea we should factor that out
07:08:01  <mbalho>chrisdickinson: theres a physics loop that applies velocity based on time deltas
07:08:24  <chrisdickinson>mbalho: inside player-physics?
07:08:40  <mbalho>chrisdickinson: half in there and half in game.js in voxel-engine. substack has been hacking on that stuff a lot the last couple of days
07:08:45  * chrisdickinsonnods
07:08:53  <chrisdickinson>i just want to see if this module will work
07:08:54  <jjjjohnnny>wierd I didnt get an output from npm install after cache clean
07:09:00  <chrisdickinson>i think it might, it seems to work fairly well in the 2d case
07:09:11  <substack>I just want to play with voxel-camera but everything broke :(
07:10:13  * dominictarr_joined
07:11:11  <substack>mbalho: oh it seems to be an issue with coordinates
07:11:56  <mbalho>substack: which ones?
07:12:03  * dominictarrquit (Ping timeout: 248 seconds)
07:12:04  * dominictarr_changed nick to dominictarr
07:13:21  * defunctzombiechanged nick to defunctzombie_zz
07:16:28  * dominictarr_joined
07:17:13  <dominictarr_>mbalho: the only thing i'd recommend is to use reconnect so that you can reconnect after the wifi drops
07:17:15  <mbalho>substack: oh i might have messed up the camera now that i think about it
07:17:18  <mbalho>dominictarr_: oh goo dcall
07:17:31  <dominictarr_>otherwise you'll need to reload the page.
07:18:22  <substack>mbalho: I can't get anything to work anymore except for your demo :(
07:18:23  <chrisdickinson>substack: mbalho: how would one get the player's "desired vector" for a tick (pre-collision, i mean.)
07:18:27  <substack>reverting to an old version
07:18:27  * dominictarrquit (Ping timeout: 248 seconds)
07:18:28  * dominictarr_changed nick to dominictarr
07:18:33  <substack>using 0.1.9 for now
07:18:38  <substack>this new stuff is too buggy
07:18:46  <dominictarr>relocating brb
07:19:11  * dominictarrquit (Client Quit)
07:19:30  <mbalho>chrisdickinson: you would call tick on the physics and it would move your character to a new vector
07:19:34  <mbalho>chrisdickinson: then you see if you collided
07:19:49  <chrisdickinson>hmm
07:19:54  * shamaquit (Quit: shama)
07:21:01  <chrisdickinson>oic. this.velocity.
07:21:21  <mbalho>substack: AHH
07:21:25  <mbalho>substack: i figured it out
07:21:29  <mbalho>substack: so i found this crazy bug with three.js
07:21:31  <substack>oh sweet!
07:21:40  <substack>oh yikes one of those >_<
07:21:43  <mbalho>substack: wherein requireing it twice
07:21:46  <mbalho>substack: or more than once
07:21:49  <mbalho>substack: causes weird ass errors
07:21:54  <mbalho>substack: i have no idea why
07:22:03  <mbalho>substack: i need to put together a test case and open an issue
07:22:16  <mbalho>substack: on the bright side i got them to publish stable versions to npm
07:22:31  <substack>yep!
07:22:59  <mbalho>substack: lemme publish some new versions of crap and ill make sure it all works again
07:23:23  <substack>0.2.5 works, 0.2.6 doesn't
07:23:25  <substack>ok
07:27:11  <mbalho>substack: ok use engine 0.2.7
07:27:18  <mbalho>substack: sorry about that, three.js is kinda crazy
07:27:57  <substack>agreed
07:28:37  <substack>yeah I had that problem before which I why I added the this.THREE = THREE thing to voxel-engine
07:29:03  <mbalho>substack: yep
07:29:04  <substack>really weird how it affects the references
07:29:23  <substack>confirmed, works!
07:29:28  <substack>thanks for that
07:34:49  <mbalho>substack: you could totally use that camera technique that shama is using to do voxel-portals
07:35:00  <mbalho>...maybe
07:37:28  <substack>ssssh
07:37:39  <mbalho>lol
07:38:37  <mbalho>im speaking at 5mof at noisebridge tomorrow about voxel stuff yaeayyyy
07:39:04  <substack>nice
07:51:51  <mbalho>substack: im gonna edit getCollisions cause i need to be able to pass in a custom control instance (for rotation values) and not assume the games control object
07:53:30  <chrisdickinson>mbalho: are chunk positions in worldspace?
07:54:41  <mbalho>chrisdickinson: well the meshes that get rendered from chunk data are positioned in the world
07:55:10  <mbalho>chrisdickinson: type "game.voxels.chunks" into the console on this page http://maxogden.github.com/voxel-engine/
07:55:11  <chrisdickinson> and the position is the center of the chunk? or lower left?
07:55:17  <mbalho>chrisdickinson: lower left
07:55:49  <mbalho>chrisdickinson: there is also game.voxels.meshes
07:55:55  <mbalho>chrisdickinson: each chunk and mesh has a position
07:55:58  <mbalho>chrisdickinson: .position
07:56:17  <mbalho>chrisdickinson: well for meshes its .geometry.position
07:56:19  * chrisdickinsonnods
07:56:24  <chrisdickinson>yeah, so you can do multiple chunks
07:56:49  <chrisdickinson>just curious, since voxel-engine starts out the player at 0,0,0, it appears
07:57:13  <mbalho>chrisdickinson: its configurable but yea thats the default
07:57:23  <chrisdickinson>but the chunk's position is 0,0,0 as well
07:57:30  <chrisdickinson>but i'm in the middle of that domed valley.
07:57:48  <chrisdickinson>ahhh. i see.
07:59:36  <mbalho>chrisdickinson: game.voxels.meshes['1|1|1'].surfaceMesh.position
07:59:39  <mbalho>(e.g.)
08:00:31  <mbalho>chrisdickinson: 800 = 32 (voxels per chunk dimension) * 25 (default voxel width in world coordinates)
08:01:51  <chrisdickinson>aahhhh
08:01:52  <chrisdickinson>okay
08:02:00  <chrisdickinson>so chunk.position is in chunkspace.
08:02:07  <mbalho>yea
08:02:09  <mbalho>haha chunkspace
08:02:30  <chrisdickinson>that makes 1000% more sense :)
08:03:05  <chrisdickinson>(i kept going oob on my tile-based collision module, but i was subtracting the chunk.position from the player position so it should've been caught earlier on)
08:05:11  <chrisdickinson>okay, now i'm just having issues around the seams, which is much nicer
08:06:20  * mikolalysenkoquit (Ping timeout: 255 seconds)
08:11:53  * st_lukequit (Remote host closed the connection)
08:14:01  * thatguydanquit (Quit: thatguydan)
08:16:24  * dominictarrjoined
08:26:18  <chrisdickinson>mbalho: does the voxel.chunks[cid].voxels array get updated on edits?
08:27:26  <chrisdickinson>(sidenote: first pass at tile-based physics is hilarious)
08:29:54  <dominictarr>what about an RTS voxel game where you have to command your minions to gather voxels, stockpile them, or move them to new areas to build things
08:30:07  <dominictarr>like mine stone and use it to build a castel
08:30:21  <dominictarr>castle
08:32:30  * mikolalysenkojoined
08:39:07  <mbalho>dominictarr: YES
08:39:32  <mbalho>chrisdickinson: yes it does and voxels.meshes[cid] gets regenerated on each edit
08:39:51  <mbalho>dominictarr: my goal is to create a medieval siege MMO with this
08:40:41  <dominictarr>OH YES
08:40:59  * mikolalysenkoquit (Ping timeout: 255 seconds)
08:41:01  <mbalho>dominictarr: this was my favorite game in like '04 http://www.youtube.com/watch?v=QM5dVXFPHnc
08:41:28  <dominictarr>kinda like angry birds but unspeakably more awesome
08:41:51  <mbalho>haha
08:42:49  <chrisdickinson>hahaha
08:43:10  <chrisdickinson>so problems thus far: tile based apparently assumes i should go one tile deeper than i really should
08:43:14  <chrisdickinson>(weird)
08:43:22  <chrisdickinson>you can fall through seams
08:43:23  * thatguydanjoined
08:43:24  <mbalho>haha
08:43:38  <chrisdickinson>and .. every so often it applies a *massive* impulse in the vertical direction
08:43:44  <chrisdickinson>sort of like a surprise trampoline
08:43:56  <chrisdickinson>and every so often it chains so you end up hulk-jumping around
08:44:30  <mbalho>new demo! http://voxel.jit.su/ though i am only broadcasting commands while keys are down, not on mouse move
08:44:41  <mbalho>dominictarr: this demo is the one using scuttlebutt
08:44:54  <mbalho>dominictarr: i havent looked into it but it seems to only sync a certain amount of stuff
08:45:27  <mbalho>hahaha
08:46:56  <ehd>zomg this is it
08:48:05  <substack>bwahaha I have a camera in my voxel world
08:49:30  <dominictarr>mbalho: want to save my bandwidth for this voip call… then i'll check it out
08:49:38  <dominictarr>hmmm… hold music
08:49:50  <mbalho>NOOOOO
08:50:05  <dominictarr>lofi classical guitar
08:50:06  <mbalho>man we made a house and went caving
08:50:19  <chrisdickinson>ahaha
08:50:22  <chrisdickinson>that was you?
08:50:40  <mbalho>chrisdickinson: yea
08:50:46  <chrisdickinson>nice house
08:51:12  <mbalho>dominictarr: does scuttlebutt ensure any sort of order?
08:51:30  <mbalho>dominictarr: oh wait that doesnt matter for me since im overriding keys
08:51:57  <mbalho>hmm so im trying to figure out why on refresh it doesnt sync all the edits
08:51:59  <dominictarr>mbalho: updates from a single node will be recieved in the same order
08:52:23  <dominictarr>did it send them all
08:52:24  <dominictarr>?
08:52:49  <mbalho>dominictarr: i havent looked far enough into it yet to answer that :P
08:56:01  <dominictarr>also on want to do list is make voxel tetris
08:56:08  <mbalho>awww yeaaa
09:06:32  <dominictarr>hey, what size voxel worlds are you guys createing?
09:06:47  <dominictarr>x*y*z ?
09:18:22  <mbalho>dominictarr: 3200x3200 at the moment
09:18:45  <mbalho>dominictarr: or wait sorry thats in pixels
09:18:55  <mbalho>dominictarr: 128x128x128
09:19:37  <mbalho>dominictarr: it can go larger, probably to like 256
09:19:40  <mbalho>dominictarr: before it starts to lag
09:20:33  <dominictarr>right, and shallower and wider I bet
09:21:11  <dominictarr>I'm just wondering what classic games can be remade with voxels instead of pixels
09:23:33  <dominictarr>you are creating open maps… so do you get better perfomance with dungens with fewer voxels on screen?
09:24:36  <mbalho>dominictarr: im not sure to be honest, i dont really understand the low level rendering
09:24:50  <mbalho>dominictarr: there are techniques like frustum culling and ambient occlusion culling that do that
09:24:59  <mbalho>dominictarr: but i dont know if those happen automatically with three.js
09:25:16  <dominictarr>is three.js just a wrapper on webgl?
09:25:30  * thatguydanquit (Quit: thatguydan)
09:25:33  <mbalho>dominictarr: its a bit more complex than that
09:26:40  * cianomaidinjoined
09:27:20  <chrisdickinson>completely tangentially: http://en.wikipedia.org/wiki/Sparse_voxel_octree
09:28:09  <chrisdickinson>(it's basically http://s09.idav.ucdavis.edu/talks/05-JP_id_Tech_5_Challenges.pdf but for geometry)
09:29:16  <mbalho>chrisdickinson: http://www.reddit.com/r/Minecraft/comments/hsqpt/few_technical_ideas_for_minecraft_from_a/c1y2f6z
09:29:52  <chrisdickinson>oh yeah, it's not for rendering 3d worlds
09:30:40  <chrisdickinson>re: rendering the world -- is voxel-engine doing any sort of vision culling?
09:30:51  <mbalho>chrisdickinson: nope but three.js might?
09:30:56  <chrisdickinson>hmm
09:30:59  <chrisdickinson>i don't think so, offhand
09:31:04  <mbalho>well then no it doesnt
09:31:05  <mbalho>hehe
09:32:19  <guybrush_>threejs only does frustum culling
09:32:52  <dominictarr>who was the guy on http://voxel.jit.su/ that i just burried?
09:32:59  <mbalho>dominictarr: lol not me
09:33:25  <mbalho>p.s. source code is at https://github.com/maxogden/voxel-server in case anyone wants to add stuff
09:34:02  <dominictarr>oh there is another guy… and I dug out the voxels he's standing on but he's still there
09:34:08  <dominictarr>THAT'S A BUG
09:34:16  <mbalho>dominictarr: yea there are lotsa bugs
09:34:32  <mbalho>restarting server!
09:37:16  <mbalho>dominictarr: so every time someone edits i store the coordinates of the edit and if they removed or added a voxel in a scuttlebutt model key
09:37:31  * mikolalysenkojoined
09:37:37  <mbalho>dominictarr: then i pipe the model read/write to each client when they join
09:37:44  <mbalho>dominictarr: so all clients should get all edits right?
09:37:58  <dominictarr>yes, absolutely
09:38:01  <mbalho>cool
09:38:42  <dominictarr>I'm guessing the key is x:y:z of the voxel position?
09:39:11  <mbalho>dominictarr: yep
09:40:51  * gwenbell_quit (Read error: No route to host)
09:41:20  * gwenbellquit (Read error: Connection reset by peer)
09:42:10  * mikolalysenkoquit (Ping timeout: 244 seconds)
10:01:19  * devaholicquit (Ping timeout: 246 seconds)
10:04:39  * mirkokjoined
10:11:26  * cianomaidinquit (Quit: cianomaidin)
10:16:06  <ehd>anyone working on displaying usernames?
10:25:43  * thatguydanjoined
10:28:38  * ins0mniajoined
10:37:48  * mikolalysenkojoined
10:38:09  * thatguydanquit (Remote host closed the connection)
10:38:20  * thatguydanjoined
10:42:12  * mikolalysenkoquit (Ping timeout: 252 seconds)
10:47:21  * jibayjoined
11:06:01  * ralphtheninjajoined
11:08:54  * cianomaidinjoined
11:21:28  * ins0mniaquit (Ping timeout: 246 seconds)
11:25:34  * ins0mniajoined
11:34:58  * yorickjoined
11:34:59  * yorickquit (Changing host)
11:34:59  * yorickjoined
11:38:08  * mikolalysenkojoined
11:42:27  * mikolalysenkoquit (Ping timeout: 248 seconds)
11:42:36  * thatguydanquit (Quit: thatguydan)
11:47:46  * mirkokquit (Quit: mirkok)
12:15:17  <ehd>i thought about looking up skins from the minecraft s3 bucket but that won't work for people who didn't buy the game. NEED GRAVATAR FOR VOXEL SKINS
12:15:30  <ehd>LOUDBOT?
12:16:40  * antix_joined
12:24:04  * antix_quit (Ping timeout: 248 seconds)
12:24:54  * antix_joined
12:24:54  * antix_quit (Changing host)
12:24:54  * antix_joined
12:26:27  <dominictarr>ehd: great idea
12:27:01  <rolnaaba>ehd: voxatar?
12:33:47  * antix_quit (Ping timeout: 252 seconds)
12:34:42  * antix_joined
12:36:43  <dominictarr>VOXATAR
12:38:33  * mikolalysenkojoined
12:43:24  * mikolalysenkoquit (Ping timeout: 264 seconds)
12:43:48  * antix_quit (Ping timeout: 248 seconds)
12:44:45  * antix_joined
12:44:45  * antix_quit (Changing host)
12:44:46  * antix_joined
12:54:12  * antix_quit (Ping timeout: 264 seconds)
12:54:44  * antix_joined
12:54:44  * antix_quit (Changing host)
12:54:44  * antix_joined
12:57:18  <ehd>simple app storing to s3 with cloudflare in front so it's cheap? or does jitsu provide any kind of fitting storage?
13:03:36  * antix_quit (Ping timeout: 248 seconds)
13:04:26  * antix_joined
13:07:56  <ehd>well, already too complicated if you add authentication
13:09:11  * dominictarrquit (Quit: dominictarr)
13:12:58  * antix_quit (Ping timeout: 244 seconds)
13:13:23  * dominictarrjoined
13:14:13  * antix_joined
13:14:13  * antix_quit (Changing host)
13:14:13  * antix_joined
13:16:15  <dominictarr>Raynos: I just had a crazy idea
13:16:56  <dominictarr>special map reduce for scuttlebutt where remembers the last event that it handled,
13:17:22  <dominictarr>and then gives you a scuttlebutt, you can add listeners, etc, and then it applys all the new changes
13:18:25  <dominictarr>so you can have a map that is actually based on the changes - and it works exactly the same as it would if you had had them in memory the whole time...
13:23:26  * antix_quit (Ping timeout: 256 seconds)
13:24:01  * antix_joined
13:32:52  * antix_quit (Ping timeout: 248 seconds)
13:34:06  * antix_joined
13:38:51  * mikolalysenkojoined
13:42:56  * antix_quit (Ping timeout: 255 seconds)
13:43:32  * mikolalysenkoquit (Ping timeout: 240 seconds)
13:43:52  * antix_joined
13:52:45  * antix_quit (Ping timeout: 244 seconds)
13:53:42  * exit2joined
13:53:48  * antix_joined
13:53:49  * antix_quit (Changing host)
13:53:49  * antix_joined
13:54:48  * No9quit (Ping timeout: 264 seconds)
13:55:56  * No9joined
14:02:28  * antix_quit (Ping timeout: 246 seconds)
14:03:40  * antix_joined
14:03:41  * antix_quit (Changing host)
14:03:41  * antix_joined
14:22:59  * fotoveritequit (Quit: fotoverite)
14:27:53  * fotoveritejoined
14:39:15  * mikolalysenkojoined
14:44:08  * mikolalysenkoquit (Ping timeout: 256 seconds)
14:45:15  * defunctzombie_zzchanged nick to defunctzombie
14:48:21  <dominictarr>interesting stuff here http://channel9.msdn.com/Shows/Going+Deep/Hewitt-Meijer-and-Szyperski-The-Actor-Model-everything-you-wanted-to-know-but-were-afraid-to-ask
14:57:39  * dominictarrquit (Quit: dominictarr)
14:58:24  * cianomaidin__joined
15:02:37  * mirkokjoined
15:03:25  * xyxnejoined
15:07:47  * cianomaidinquit (*.net *.split)
15:07:48  * Nexxyquit (*.net *.split)
15:07:48  * ryanseddonquit (*.net *.split)
15:07:49  * tanepiperquit (*.net *.split)
15:07:50  * cianomaidin__changed nick to cianomaidin
15:10:54  * tanepiperjoined
15:11:25  * tanepiperquit (*.net *.split)
15:12:29  * tanepiperjoined
15:39:33  * mikolalysenkojoined
15:41:22  * st_lukejoined
15:44:33  <mirkok>anyone who knows a JSON.stringify implementation that returns a canonical format?
15:45:28  <mirkok>stringifying the same object should always result in the same string...
15:57:07  <mikolalysenko>mirkok: JSON.stringify should do that
15:57:26  <mikolalysenko>mirkok: JSON must preserve the order of members
15:58:31  <mikolalysenko>So for example: JSON.stringify({"a":1, "b":2}) would give a different output than JSON.stringify({"b":2, "a":1})
15:59:20  <mikolalysenko>unfortunately if you want those two JSON strings to be equal, then you may have a problem
15:59:54  * dominictarrjoined
16:04:01  <mirkok>mikolalysenko: if you insert keys into an object the order of these keys is not guaranteed
16:04:19  <mikolalysenko>mirkok: Actually it is. This blew my mind when I learned it
16:04:56  <mirkok>hm then I must check again - I read on mozilla's docs that it isnt
16:05:24  <mikolalysenko>mirkok: If it isn't that would probably be better
16:05:24  <mirkok>but anyway I don't want to re-create all objects with the keys sorted just to get a canonical JSON output
16:05:38  <mikolalysenko>and I may be remembering wrong since it was a long time ago I read this
16:06:04  <mikolalysenko>fair enough, and so to answer that question I don't know of anything off hand
16:07:15  <mikolalysenko>mirkok: You are right, I remembered the wrong thing
16:07:41  <mirkok>just checked the mozilla docs: "Properties of non-array objects are not guaranteed to be stringified in any particular order. Do not rely on ordering of properties within the same object within the stringification."
16:07:55  <mikolalysenko>mirkok: Ok, that is a relief
16:08:14  <mikolalysenko>for a long time I was carrying around a latent fear of using objects as dictionaries
16:09:18  <mirkok>yes it would be quite inefficient if they return you the keys sorted all the time...
16:09:39  <mikolalysenko>mirkok: Sorted would be ok, just use a balanced binary search tree
16:09:55  <mikolalysenko>not as good as hash, but still acceptable
16:10:13  <mikolalysenko>on the other hand, ordered by time of insertion suggests that the internal implementation would be an array..
16:10:18  <mikolalysenko>which is terrible
16:10:32  <mikolalysenko>(or even worse a linked list)
16:10:53  <mirkok>no js objects use a very efficient hash implementation
16:11:06  <mikolalysenko>yeah, that is what I had hoped
16:11:41  <mirkok>hm so maybe I have to tweak crockford's JSON stringify implementation to output the keys sorted...
16:13:58  <mirkok>this looks like a good definition of a canonical JSON format: http://wiki.laptop.org/go/Canonical_JSON
16:14:03  <mirkok>but no implementation :(
16:46:30  <guybrush_>sometime ago i read that ordering of keys in js-objects _has not_ to be the same, so some vms dont implement it
16:47:29  <guybrush_>but im not sure how v8 handles that, at least im pretty sure since theres no standard for this one can not depend on it
16:50:57  <mirkok>yes the problem is that JSON.stringify simply outputs the order of keys as they currently are internally
16:51:24  <mirkok>thats fine in most cases but I need them sorted
16:58:13  * ryanseddonjoined
17:14:41  * fotoveritequit (Quit: fotoverite)
17:33:00  * mariusursachequit (Quit: mariusursache)
17:34:50  <dominictarr>mirkok: they probably just also keep an array of the keys as they are added
17:35:15  <dominictarr>v8 outputs the keys in the order they where inserted
17:36:16  <mirkok>dominictarr: yes but that doesnt help if want {a: 1, b: 2} and {b: 2, a: 1} to be stringified to the same string
17:39:36  <dominictarr>no, you'll need to resort them.
17:40:34  <mirkok>yes I could either create a new object inserting the keys in sorted order and then call JSON.stringify on it
17:40:56  <mirkok>but I dont think thats a good idea as the order is really not guaranteed by any standard
17:41:03  <mirkok>so its probably better to do it while serializing
17:41:20  <dominictarr>you should just test this on the browsert
17:41:35  <dominictarr>and see what they actually do, instead of guessing at possible implementations
17:41:55  <dominictarr>you don't need to support all possible js engines, just the ones in use.
17:41:56  <mirkok>well the second alternative is guaranteed to always work :)
17:42:56  <dominictarr>turns out these crazy guys substack and pkrumins made this thing you can use to test js in all the browsers, so you can test it with that
17:43:27  <mirkok>hehe yes right
17:44:01  <mirkok>to me it just feels wrong to re-create a whole hash structure just to then do a serialization of it...
17:44:45  <dominictarr>you should benchmark it to see whether it makes a difference
17:45:59  <dominictarr>js engines do all sorts of clever stuff to be fast, so it's not necessarily a good idea to trust your intuitions
17:47:57  <mirkok>yes performance testing is always better than guessing :) I'm first gonna test wether it makes any performance difference to the native JSON.stringify if I use crockford's js implementation
17:48:24  <mirkok>if they are similar in speed I just need to change 2 lines in his code...
17:48:26  <dominictarr>good idea, and publish your results!
17:48:53  <mirkok>will do
17:50:24  * ryan__joined
17:50:36  <ryan__>mbalho: ping
17:50:49  * ryan__changed nick to rclosner
17:59:03  * ITproquit (Ping timeout: 276 seconds)
17:59:30  * ITprojoined
18:00:24  * mikealquit (Quit: Leaving.)
18:07:51  * cianomaidinquit (Quit: cianomaidin)
18:08:14  * fotoveritejoined
18:08:19  * wiwilliajoined
18:09:05  * AvianFlujoined
18:14:26  * st_lukequit (Remote host closed the connection)
18:16:30  <hij1nx>dominictarr: again. seat #666
18:16:47  <dominictarr>sweet
18:16:51  <defunctzombie>you need jesus
18:17:14  <dominictarr>everyone but hij1nx is too afraid to sit there
18:20:25  <dominictarr>time for bed…
18:20:31  <dominictarr>night all
18:20:41  * dominictarrquit (Quit: dominictarr)
18:23:49  * mikealjoined
18:31:51  * mikolalysenkoquit (Ping timeout: 276 seconds)
18:34:15  * defunctzombiechanged nick to defunctzombie_zz
18:44:25  * mikolalysenkojoined
18:45:05  * mirkokquit (Quit: mirkok)
18:51:03  * rolnaaba_joined
18:51:04  * mirkokjoined
18:52:10  * mirkokquit (Client Quit)
18:54:51  * simcop2387quit (Excess Flood)
18:55:44  * simcop2387joined
19:00:27  * st_lukejoined
19:03:40  * mikealquit (Quit: Leaving.)
19:06:47  * devaholicjoined
19:09:28  * tphummeljoined
19:16:53  * st_lukequit (Remote host closed the connection)
19:25:59  * mbalho_joined
19:26:25  * rook2pawnquit (Ping timeout: 255 seconds)
19:26:40  * rook2pawnjoined
19:28:11  * mbalhoquit (Ping timeout: 245 seconds)
19:28:29  * wiwilliaquit
19:42:14  <Raynos>o/
19:44:41  <exit2>\o/
19:51:43  * mikealjoined
19:51:48  * nk109quit (Quit: Computer has gone to sleep.)
19:55:24  <Raynos>dominictarr: I have some crdt documents where the data is time related
19:55:42  <Raynos>On the server I have some dummy crdt documents in memory just to do the replication. Only the clients mutate state
19:56:02  <Raynos>How can the server "archive" the crdt documents into a database once they are "expired"
19:56:18  <Raynos>Basically the documents represent data for a period of an hour and then is no longer relevant
19:58:02  <Raynos>related: https://github.com/dominictarr/crdt/issues/17
20:00:47  * defunctzombie_zzchanged nick to defunctzombie
20:01:50  * mikealquit (Quit: Leaving.)
20:03:08  * mikolalysenkoquit (Ping timeout: 252 seconds)
20:12:39  * cianomaidin_joined
20:17:50  <mbalho_>rclosner: https://github.com/maxogden/voxel-engine#api
20:17:53  <mbalho_>rclosner: new docs
20:17:56  * mbalho_changed nick to mbahlo
20:18:13  * mbahlochanged nick to mbalho
20:19:51  * mikealjoined
20:25:05  * cianomaidin_quit (Quit: cianomaidin_)
20:35:06  * thatguydanjoined
20:35:31  <mbalho>substack: !! https://twitter.com/maxogden/status/292005392114913280
20:39:05  * pkruminschanged nick to gsg
20:42:04  * gsgchanged nick to pkrumins
20:55:40  * AvianFluquit (Remote host closed the connection)
21:00:20  * ins0mniaquit (Ping timeout: 252 seconds)
21:10:31  <rclosner>mbalho: awesome.
21:21:22  * defunctzombiechanged nick to defunctzombie_zz
21:22:39  * mikolalysenkojoined
21:32:55  * exit2part
21:35:06  * nk109joined
21:36:08  <mbalho>https://twitter.com/voxeljs/status/292022196413558784
21:47:50  * thatguydanquit (Quit: thatguydan)
21:57:41  * AvianFlujoined
22:01:28  * exit2joined
22:18:03  * exit2quit (Remote host closed the connection)
22:34:02  <guybrush_>mbalho: did you wrap your head arround prediction/interpolation already? i have really hard time even understanding the whole concept
22:34:28  <guybrush_>right now im interpolating all server-entities and predicting all client-entities
22:35:08  <guybrush_>so far so good, now when i have collision between client and server-entities it gets really hard to even understand whats going on
22:35:47  <guybrush_>some stuff i read on the internet says you should predict server-entities too (as result of collision-response)
22:36:31  <guybrush_>im really eager to hear some thoughts from anyone trying to solve that problem
22:36:59  * fotoveritequit (Quit: fotoverite)
22:37:49  * thatguydanjoined
22:40:06  <guybrush_>also i have hard time to understand how to do prediction-correction regarding broadphase-collision. how am i supposed to step controls beginning from failure-state without knowing the state of other entities at that time lol :D
22:40:30  <guybrush_>i think i have to buy some book explaining all that
22:42:16  * mikealquit (Quit: Leaving.)
22:44:35  * mikealjoined
22:47:22  <guybrush_>fiedler for example writes that client-prediction falls apart when there are objects without ownership http://gafferongames.com/game-physics/networked-physics/
22:50:09  * tilgovijoined
22:50:49  * fotoveritejoined
22:51:39  <mikolalysenko>my take on the whole networked movement thing is that the right way to think about it is a control theory perspective
22:52:00  <mikolalysenko>you got a bunch of sensors with laggy inputs, and you want to come up with some best estimate for the state of the system at some time given the observed data
22:52:37  <mikolalysenko>to do that, you can either apply a physical principle or use some prior model, or else just hack it
22:52:45  <mikolalysenko>which is what interpolation basically amounts to
22:53:05  <mikolalysenko>it is the same as assuming the prior that your system is piecewise constant/linear/quadratic/whatever
22:54:47  <guybrush_>i think i get what you mean
22:55:09  <Raynos>guybrush_: O_O
22:55:57  <guybrush_>as long as the updates from the server come in frequently i can interpolate to that anyway, so i dont have to be all that correct with everything
22:56:57  <Raynos>guybrush, mikolalysenko: once you know the answer make it a module!
22:58:09  <guybrush_>mikolalysenko has already so much usefull modules on npm, im sure you can use all those to get there :D once you understand what and how you actually want to do things
22:58:28  <mikolalysenko>maybe
22:58:54  <mikolalysenko>though any sort of latency compensation thing is probably going to be model specific, so I'd hesitate to try writing a general purpose solution
22:59:10  <mikolalysenko>perhaps it could be handy to create something like a kalman filter package...
22:59:27  <mikolalysenko>or try to do something for simpler models like linear systems
23:25:17  * dguttmanjoined
23:37:14  <ryanseddon>with the files property in the package.json for integrating with testling-ci can i specify a html page as I have QUnit test suite that outputs the results in TAP format to the console
23:39:31  * nk109quit (Ping timeout: 240 seconds)
23:48:19  <ryanseddon>do i have to do something like this? https://github.com/substack/JavaScriptButtons/blob/master/test/browser.js
23:59:02  <rowbit>/!\ ATTENTION: (default-local) [email protected] successfully signed up for developer browserling plan ($20). Cash money! /!\
23:59:02  <rowbit>/!\ ATTENTION: (default-local) paid account successfully upgraded /!\