--- Log opened Sun Jan 20 00:00:23 2013 |
00:44 | | Derakon is now known as Derakon[AFK] |
00:53 | | You're now known as TheWatcher[T-2] |
01:02 | | You're now known as TheWatcher[zZzZ] |
01:28 | | * ToxicFrog determines why his code isn't working after upgrading the engine version: it's waiting 33 seconds between frames rather than 33 milliseconds. |
01:33 | <@gnolam> | ... |
01:33 | | himi [fow035@Nightstar-5d05bada.internode.on.net] has quit [Ping timeout: 121 seconds] |
01:33 | | d4de [olorin@687AAB.418D22.5458BC.FC550A] has quit [Ping timeout: 121 seconds] |
01:33 | | d4de [olorin@687AAB.418D22.5458BC.FC550A] has joined #code |
01:34 | <@RobinStamer> | 0.0303 frames/second is best FPS |
01:34 | <&ToxicFrog> | gnolam: sleep() was update to take (double seconds) rather than (int milliseconds) for consistency with the rest of the timekeeping APIs. |
01:35 | <@RobinStamer> | You shouldn't be using sleep() to set FPS anyways |
01:37 | <&ToxicFrog> | RobinStamer: what should I be using? |
01:38 | <@gnolam> | One shouldn't use sleep() to set FPS (because, like windmills, it doesn't work that way), but sleeping between frames in general is A Good Thing. Though only the minimum time. |
01:38 | <@RobinStamer> | You should be time-tracking. |
01:39 | <@RobinStamer> | Basically something like for (;;) { if (timePassedForFrameRedraw()) { redrawFrame(); } if (tickHasPassed()) { doTickStuff() } sleep(10); /* let scheduler know it can do other things for a bit */ } |
01:39 | <@gnolam> | (Unless of course it's the general timekeeping thread that's sleeping, in which case sleep on) |
01:39 | <&ToxicFrog> | You're going to have to explain how "time-tracking" is different from "sleeping for the interframe time - frame processing time" |
01:40 | <@RobinStamer> | Reason being if redrawFrame() or doTickStuff() take more than a negligible portion of time any thing time-based gets screwed to hell. |
01:42 | <@Azash> | RobinStamer: What about doing actFrame(timeSinceLastFrame) {} |
01:42 | <&ToxicFrog> | RobinStamer: how so? In that case it calls sleep(0), which returns instantly, and immediately starts work on the next frame. |
01:42 | <@Azash> | ? |
01:42 | | d4de [olorin@687AAB.418D22.5458BC.FC550A] has quit [Ping timeout: 121 seconds] |
01:42 | <&ToxicFrog> | And yeah, the API here passes dt to update(). There's no assumption of a fixed timeslice, but you know how long it's been since the last update. |
01:43 | | d4de [olorin@687AAB.418D22.5458BC.FC550A] has joined #code |
01:43 | <@RobinStamer> | Eh, if you code with that assumption I don't see an issue |
01:43 | <@RobinStamer> | It is kind of fugly to have loops all over the place for that though. |
01:43 | <&ToxicFrog> | What loops? |
01:43 | | Derakon[AFK] is now known as Derakon |
01:43 | <@RobinStamer> | To catch up on missed events. |
01:43 | <&ToxicFrog> | You seem to be making a lot of assumptions that don't hold in the engine I'm using. |
01:44 | <@gnolam> | Azash: because delta time should be fixed. Because determinism is a good thing. |
01:44 | <&ToxicFrog> | (also, for this specific program, the frame limit is necessary to keep it from running at 6000fps and freaking out the video card fans) |
01:44 | <@Azash> | I honestly can't tell if you're sarcastic or not, gnolam |
01:44 | <&ToxicFrog> | (it is not graphically demanding) |
01:44 | <@RobinStamer> | That's fair. I'm assuming general game-programming here. |
01:45 | <@gnolam> | Azash: not. With the prototype you provided, one expects it to be a variable dt. |
01:45 | <@gnolam> | And that's a bad, /bad/ idea. |
01:45 | <@Azash> | How come? |
01:45 | <&ToxicFrog> | gnolam: so, it's better to assume fixed dt and then get fucked when something takes longer than expected? |
01:45 | <@gnolam> | Because suddenly, your game runs differently on different computers. |
01:46 | <@Azash> | Oh |
01:46 | <&ToxicFrog> | Er |
01:46 | <@Azash> | Well I would suggest things be done relative to the dt |
01:46 | <&ToxicFrog> | In one sense, no, it doesn't |
01:46 | <&ToxicFrog> | In another sense, that has been true in PC gaming since "PC" encompassed more than one hardware platform |
01:46 | <@Azash> | The smaller games I've done so far have worked well with it, but I don't know anything about larger projects |
01:46 | <&ToxicFrog> | So you're going to have to break down what you mean by "the game runs differently on different computers" |
01:47 | <@Azash> | ToxicFrog: I think he thought I meant the same actions would happen regardless of how long it takes between frames while I intended things to be expressin a $UNIT per second system |
01:47 | <@Azash> | s/sin/sed in/ |
01:47 | <@gnolam> | Not to mention that any and all physics engines will /freak the fuck out/ if dt goes high enough. |
01:48 | <&ToxicFrog> | Azash: I kind of assumed that went without saying because the alternative is fucking crazy and leads to problems like what happens when you run Wing Commander on a modern computer. |
01:48 | <@RobinStamer> | With the algo I posted, it'll basically queue events when it gets behind, still running each one. With a sleep based one it'll end up skipping some entirely if one event takes longer than expected. |
01:48 | <&ToxicFrog> | (i.e. it goes from "start mission" to "game over" in about three seconds) |
01:48 | <&ToxicFrog> | (because it assumes constant dt but is running on a system a thousand times faster than it was written for) |
01:49 | <@gnolam> | ToxicFrog: assume a fixed dt, and stick by this. Have a frame skip if necessary. Frame skipping will technically make it run at slower speeds on slower computers, but at least you still have determinism. |
01:49 | <@RobinStamer> | With Azash's he has to loop in each part that gets timeSinceLastFrame to catch up. |
01:49 | <@Azash> | What? |
01:49 | <&ToxicFrog> | What? |
01:50 | <@RobinStamer> | Jesus fuck Windows let me C/P |
01:50 | <@RobinStamer> | <Azash> RobinStamer: What about doing actFrame(timeSinceLastFrame) {} <-- that |
01:50 | <@Azash> | Yeah but why would I need to do extra loops? |
01:50 | <@RobinStamer> | It becomes the function's responsibility to calculate and handle how many events to fire. |
01:51 | <@RobinStamer> | Which means loops or self-recursion. |
01:52 | <&ToxicFrog> | Ok, yeah, there's a lot of assumptions here that are completely irrelevant to an HTPC frontend. |
01:53 | <@RobinStamer> | Because normally when one wants to measure FPS it's because of a game |
01:53 | <&ToxicFrog> | I am in fact using a game engine to implement it. |
01:53 | <@RobinStamer> | But yeah, skipping on video would be fine, since you want it to be up-to-date anyways. |
01:54 | <&ToxicFrog> | And I don't want to measure FPS, I want to limit it. |
01:54 | <@RobinStamer> | What game engine? |
01:54 | <&ToxicFrog> | Because early versions did not limit, and since the frame drawing time is <1ms... |
01:54 | <&ToxicFrog> | love2d. |
01:59 | | himi [fow035@Nightstar-5d05bada.internode.on.net] has joined #code |
01:59 | | mode/#code [+o himi] by ChanServ |
02:23 | <~Vornicus> | One of the things that happens differently if you assume a varible-but-true dt in your physics engine is that anything that isn't analytic and of the same order as your simulation goes wrong. |
02:24 | <~Vornicus> | er, simulates differently on different computers. |
02:25 | <~Vornicus> | Since input isn't an analytic function, this means that the game is very different depending on the computer you're on. |
02:26 | <&ToxicFrog> | "analytic and of the same order as your simulation"? |
02:26 | <~Vornicus> | An analytic function is infinitely differentiable everywhere |
02:28 | <~Vornicus> | This is not true of input, which tends to be either steppy or piecewise. |
02:28 | <~Vornicus> | This is also not true of collision physics, which has non-analytic breaks when collisions happen |
02:29 | <~Vornicus> | and when I say "order" I mean the order of the polynomial (or fourier transform or what have you) that your simulation uses. |
02:31 | <~Vornicus> | if your program uses a constant acceleration as part of the simulation, but you have an object whose acceleration changes over time, even if the acceleration changes analytically, the program won't simulate that correctly with variable dt |
02:32 | <&ToxicFrog> | My math is too rusty to follow this :( |
02:33 | <~Vornicus> | Long story short on analytic functions is that no matter how deep you go, the position, velocity, acceleration, jerk, etc etc etc, they're all smooth. |
02:34 | <&ToxicFrog> | Ok. |
02:34 | <&ToxicFrog> | What I'm having trouble with is "if your program uses a constant acceleration as part of the simulation, but you have an object whose acceleration changes over time, even if the acceleration changes analytically, the program won't simulate that correctly with variable dt' |
02:35 | <@Azash> | Vornicus: Pardon me if I'm wrong, but isn't it possible to get the total distance by deriving? |
02:36 | <~Vornicus> | Azash: integrating, but... |
02:36 | <@Azash> | Well, that |
02:36 | | * Azash has not mathed for years |
02:37 | <~Vornicus> | Okay so here's the deal |
02:38 | <~Vornicus> | Back in the day I worked on a helmet mounted display system for a military helicopter. One of the things we had to do to get this right is figure out the location and orientation of the helmet within the cockpit, so we could decide where to put things that were considered "outside" or "part of" the cockpit. |
02:39 | <~Vornicus> | (things that stayed in the same place relative to the helmet didn't need this, obviously) |
02:39 | <~Vornicus> | So, without any external instruments or reference points, the only thing an object can measure is its acceleration. |
02:40 | <~Vornicus> | and since this is a digital system, we'd only get to sample the acceleration at some rate. |
02:42 | <~Vornicus> | Turns out this isn't really good enough, very often: if your accelerations do certain very common things, the position determination system won't get it right, and will start having its simulated position drift away from the actual position of the helmet, sometimes fast enough that the simulated position leaves the cockpit in under five seconds. |
02:42 | <&ToxicFrog> | Ok, but I don't see how that isn't also a problem with fixed timestep. |
02:43 | <~Vornicus> | It is, but one that can be easily accounted for. With a variable timestep this is not true. |
02:43 | <&ToxicFrog> | How can it be easily accounted for? |
02:45 | <~Vornicus> | Depends on the situation; you can adjust the accelerations accordingly, and can use certain numerical methods for solving diffeqs, for starters. |
02:46 | <~Vornicus> | It's still somewhat of a problem, of course, but it's less so because at least it's consistent. |
02:49 | <@gnolam> | Even if the the underlying math is perfectly analytical, you'll still be screwed by e.g. floating point math. |
02:50 | <@gnolam> | In a deterministic system, you have "if input x happens at frame n, we will have state y". This ceases to be true with variable dt. |
02:51 | <&ToxicFrog> | Vornicus: AFAIK you just said "and then a miracle occurs". It seems like in either case you have to assume acceleration between samples can be accurately determined and that there wasn't, for example, a sudden spike between sample points. |
02:57 | <~Vornicus> | The thing that you can get for a fixed-timestep simulation is "the collision is assumed to occur at the end of the timestep", among other things. |
02:58 | | Kindamoody[zZz] is now known as Kindamoody |
03:02 | | thalass [thalass@Nightstar-724ec5eb.bigpond.net.au] has joined #code |
03:13 | <~Vornicus> | It's harder with variable timestep; you can't do simple collision cheats like "all things are big enough and move slowly enough that they won't clip through the environment |
03:28 | | * ToxicFrog pokes gamepad handling with a stick |
03:28 | <&ToxicFrog> | Pad1 doesn't work at all. |
03:28 | <&ToxicFrog> | Pad2 works, but only the buttons, not any of the axes or the hat. |
03:29 | <&ToxicFrog> | oh wait fencepost error |
04:07 | | thalass is now known as Thalass|madscientist |
04:10 | | Attilla [Obsolete@Nightstar-9e7fa2b2.range86-162.btcentralplus.com] has quit [Ping timeout: 121 seconds] |
04:14 | | d4de [olorin@687AAB.418D22.5458BC.FC550A] has quit [Operation timed out] |
04:27 | | VirusJTG [VirusJTG@Nightstar-09c31e7a.sta.comporium.net] has quit [[NS] Quit: Program Shutting down] |
04:33 | | ReivDriod [Reiver@3CF3A5.E1CD01.5A78C0.03128C] has joined #code |
04:54 | | mac [mac@Nightstar-fe8a1f12.il.comcast.net] has joined #code |
05:39 | | * Vornicus gets to work on disentangling some js code. |
05:48 | | * Syk gets to work attempting to work @v@ |
05:54 | | Thalass|madscientist is now known as Thalass|omgafk |
05:54 | < Syk> | 'omgwtfafk'? |
06:02 | | Typherix [Typherix@Nightstar-7dc8031d.mi.comcast.net] has quit [Connection reset by peer] |
06:30 | | ReivDriod [Reiver@3CF3A5.E1CD01.5A78C0.03128C] has quit [Ping timeout: 121 seconds] |
06:46 | | Derakon is now known as Derakon[AFK] |
06:47 | | mac [mac@Nightstar-fe8a1f12.il.comcast.net] has quit [[NS] Quit: This computer has gone to sleep] |
06:48 | | Orthia [orthianz@3CF3A5.E1CD01.5A78C0.03128C] has quit [Ping timeout: 121 seconds] |
06:49 | | Orthia [orthianz@3CF3A5.E1CD01.5A78C0.03128C] has joined #code |
06:49 | | mode/#code [+o Orthia] by ChanServ |
06:52 | | Vash [Vash@Nightstar-221158c7.sd.cox.net] has joined #code |
06:52 | | mode/#code [+o Vash] by ChanServ |
06:56 | | Vash [Vash@Nightstar-221158c7.sd.cox.net] has quit [[NS] Quit: I <lovecraft3 Vorn!] |
06:56 | | Vash [Vash@Nightstar-221158c7.sd.cox.net] has joined #code |
06:56 | | mode/#code [+o Vash] by ChanServ |
06:57 | | Vash [Vash@Nightstar-221158c7.sd.cox.net] has quit [[NS] Quit: I <lovecraft3 Vorn!] |
06:57 | | Vash [Vash@Nightstar-221158c7.sd.cox.net] has joined #code |
06:57 | | mode/#code [+o Vash] by ChanServ |
07:05 | | Kindamoody is now known as Kindamoody|out |
07:10 | | * Vornicus reorganizes his in-program data, it's now easier to access and takes up 43% fewer lines. |
07:13 | <~Vornicus> | now I have to update the code so it knows what the hell I did to all the data |
07:17 | | cpux [cpux@Nightstar-98762b0f.dyn.optonline.net] has quit [[NS] Quit: Well, most things get better when I kick them!] |
07:28 | <@froztbyte> | \o/ |
07:41 | | Typherix [Typherix@Nightstar-7dc8031d.mi.comcast.net] has joined #code |
08:04 | | Omega [omegaboot@Nightstar-56dbba0f.in.comcast.net] has joined #code |
08:04 | | Alek [omegaboot@Nightstar-56dbba0f.in.comcast.net] has quit [NickServ (GHOST command used by Omega)] |
08:04 | | Omega is now known as Alek |
08:04 | | mode/#code [+o Alek] by ChanServ |
08:17 | | Thalass|omgafk is now known as Thalass |
08:20 | <&McMartin> | ...man. |
08:20 | <&McMartin> | In all my years of BASIC Programming as a misspent youth, never once did I 10 DIM SUM(10) |
08:23 | <@froztbyte> | haha |
08:26 | | Vash [Vash@Nightstar-221158c7.sd.cox.net] has quit [Client closed the connection] |
08:26 | | Vash [Vash@Nightstar-221158c7.sd.cox.net] has joined #code |
08:26 | | mode/#code [+o Vash] by ChanServ |
08:32 | <~Vornicus> | I don't think you could do that in c64 basic at least |
08:40 | | Vash [Vash@Nightstar-221158c7.sd.cox.net] has quit [Client closed the connection] |
08:41 | | Vash [Vash@Nightstar-221158c7.sd.cox.net] has joined #code |
08:41 | | mode/#code [+o Vash] by ChanServ |
08:48 | <&McMartin> | You can but it's equivalent to SU. |
08:51 | | Vash [Vash@Nightstar-221158c7.sd.cox.net] has quit [Client closed the connection] |
08:54 | | Vash [Vash@Nightstar-221158c7.sd.cox.net] has joined #code |
08:54 | | mode/#code [+o Vash] by ChanServ |
08:55 | | Vash1 [Vash@Nightstar-221158c7.sd.cox.net] has joined #code |
08:55 | | Vash [Vash@Nightstar-221158c7.sd.cox.net] has quit [Connection reset by peer] |
08:57 | | Vash [Vash@Nightstar-221158c7.sd.cox.net] has joined #code |
08:57 | | Vash1 [Vash@Nightstar-221158c7.sd.cox.net] has quit [Connection reset by peer] |
08:57 | | mode/#code [+o Vash] by ChanServ |
08:59 | | Vash1 [Vash@Nightstar-221158c7.sd.cox.net] has joined #code |
08:59 | | Vash [Vash@Nightstar-221158c7.sd.cox.net] has quit [Connection reset by peer] |
09:01 | | Vash1 [Vash@Nightstar-221158c7.sd.cox.net] has quit [Connection reset by peer] |
09:01 | | Vash [Vash@Nightstar-221158c7.sd.cox.net] has joined #code |
09:01 | | mode/#code [+o Vash] by ChanServ |
09:02 | | Vash [Vash@Nightstar-221158c7.sd.cox.net] has quit [Connection reset by peer] |
09:04 | | Vash [Vash@Nightstar-221158c7.sd.cox.net] has joined #code |
09:04 | | mode/#code [+o Vash] by ChanServ |
09:06 | | Vash1 [Vash@Nightstar-221158c7.sd.cox.net] has joined #code |
09:06 | | Vash [Vash@Nightstar-221158c7.sd.cox.net] has quit [Client closed the connection] |
09:36 | | himi [fow035@Nightstar-5d05bada.internode.on.net] has quit [Ping timeout: 121 seconds] |
09:49 | | himi [fow035@Nightstar-5d05bada.internode.on.net] has joined #code |
09:49 | | mode/#code [+o himi] by ChanServ |
09:58 | | Alek [omegaboot@Nightstar-56dbba0f.in.comcast.net] has quit [Ping timeout: 121 seconds] |
10:00 | | Alek [omegaboot@Nightstar-56dbba0f.in.comcast.net] has joined #code |
10:00 | | mode/#code [+o Alek] by ChanServ |
10:01 | | You're now known as TheWatcher |
10:16 | | Alek [omegaboot@Nightstar-56dbba0f.in.comcast.net] has quit [Ping timeout: 121 seconds] |
10:17 | | Omega [omegaboot@Nightstar-56dbba0f.in.comcast.net] has joined #code |
11:01 | | Vash1 is now known as Vash |
11:17 | | Thalass is now known as Thalass|afk |
11:17 | | Vash [Vash@Nightstar-221158c7.sd.cox.net] has quit [[NS] Quit: I <lovecraft3 Vorn!] |
11:25 | | Vornicus [vorn@ServerAdministrator.Nightstar.Net] has quit [[NS] Quit: Leaving] |
11:44 | | Courage [Moltare@583787.FF2A18.190FE2.4D81A1] has quit [Ping timeout: 121 seconds] |
11:45 | | Courage [Moltare@583787.FF2A18.190FE2.4D81A1] has joined #code |
11:45 | | mode/#code [+o Courage] by ChanServ |
12:28 | | You're now known as TheWatcher[afk] |
12:34 | | Attilla [Obsolete@Nightstar-9e7fa2b2.range86-162.btcentralplus.com] has joined #code |
13:35 | | VirusJTG [VirusJTG@Nightstar-09c31e7a.sta.comporium.net] has joined #code |
13:56 | < Shellninja> | What's equivalent to the Soviet Union? |
13:56 | <@froztbyte> | <McMartin> ...man. |
13:56 | <@froztbyte> | <McMartin> In all my years of BASIC Programming as a misspent youth, never once did I 10 DIM SUM(10) |
13:56 | <@froztbyte> | <Vornicus> I don't think you could do that in c64 basic at least |
13:56 | <@froztbyte> | <McMartin> You can but it's equivalent to SU. |
13:57 | < Shellninja> | I seep. |
13:58 | <@froztbyte> | might want to look into some watertight containers, then |
13:59 | | Syk is now known as syksleep |
14:08 | | thalass [thalass@Nightstar-724ec5eb.bigpond.net.au] has joined #code |
14:40 | | Attilla [Obsolete@Nightstar-9e7fa2b2.range86-162.btcentralplus.com] has quit [Ping timeout: 121 seconds] |
14:58 | | Kindamoody|out is now known as Kindamoody |
15:01 | | Attilla [Obsolete@Nightstar-9e7fa2b2.range86-162.btcentralplus.com] has joined #code |
15:03 | | You're now known as TheWatcher |
15:10 | | Alek [omegaboot@Nightstar-56dbba0f.in.comcast.net] has joined #code |
15:10 | | mode/#code [+o Alek] by ChanServ |
15:12 | | Omega [omegaboot@Nightstar-56dbba0f.in.comcast.net] has quit [Ping timeout: 121 seconds] |
15:38 | | mac [mac@Nightstar-8f454d37.emhril.sbcglobal.net] has joined #code |
15:42 | | mac [mac@Nightstar-8f454d37.emhril.sbcglobal.net] has quit [[NS] Quit: Leaving] |
16:05 | | thalass [thalass@Nightstar-724ec5eb.bigpond.net.au] has quit [[NS] Quit: *fzzzt*] |
16:28 | | Thalass|afk [thalass@Nightstar-724ec5eb.bigpond.net.au] has quit [Client closed the connection] |
16:31 | <@iospace> | http://cafe.elharo.com/programming/java-programming/why-functional-programming-i n-java-is-dangerous/ <--- what |
16:33 | <@Azash> | So uh is the proof that you can't program functionally in Java because he doesn't understand how the JVM works or? |
16:34 | < ErikMesoy> | I think there's something about infinite lists. |
16:35 | <@iospace> | Azash: or someone's a total fucking idiot |
16:36 | <@Azash> | This is entirely possible |
16:37 | <@TheWatcher> | I'm going with iospace on this one. |
16:39 | <@TheWatcher> | That boils down to "Java is shit because I can't use it in a way it was never designed to work, in a programming paradigm it doesn't natively support, *whiiiine*" |
16:39 | <@TheWatcher> | That answer to which is to bitchslap the twazzock. |
16:40 | | * iospace high fives TheWatcher while giggling madly |
17:34 | | Derakon[AFK] is now known as Derakon |
17:48 | | ErikMesoy1 [Erik@Nightstar-be32adc8.80-203-17.nextgentel.com] has joined #code |
17:48 | | ErikMesoy [Erik@A08927.B4421D.FE7332.A86588] has quit [Ping timeout: 121 seconds] |
17:50 | | ErikMesoy [Erik@Nightstar-be32adc8.80-203-17.nextgentel.com] has joined #code |
17:52 | | ErikMesoy1 [Erik@Nightstar-be32adc8.80-203-17.nextgentel.com] has quit [Ping timeout: 121 seconds] |
17:59 | | ErikMesoy is now known as Dainna |
18:27 | | Dainna is now known as ErikMesoy |
18:28 | | RobinStamer is now known as Vasi |
18:33 | < Shellninja> | Strange. I'm trying to import audio (or just open) an mp4 file with Audacity. In response to this attempts, it segfaults. |
18:34 | < Shellninja> | -s |
18:36 | < ErikMesoy> | Do you have the special sauce that Audacity has to tell you to get from a third party? |
18:36 | < Shellninja> | You mean ffmpeg? |
18:37 | < ErikMesoy> | I mean Lame |
18:37 | < Shellninja> | Why would I need lame? |
18:37 | < Shellninja> | It doesn't tell me I need lame. It told me it needs ffmped. |
18:37 | < ErikMesoy> | *shrug* I know Audacity needs it for some things. |
18:37 | < Shellninja> | *ffmpeg |
18:37 | < ErikMesoy> | And the details are lega. |
18:37 | < ErikMesoy> | *legal |
18:50 | | Derakon is now known as Derakon[AFK] |
19:07 | | VirusJTG [VirusJTG@Nightstar-09c31e7a.sta.comporium.net] has quit [Client closed the connection] |
19:08 | | VirusJTG [VirusJTG@Nightstar-09c31e7a.sta.comporium.net] has joined #code |
19:10 | | Kindamoody is now known as Kindamoody[zZz] |
19:43 | | mac [mac@Nightstar-fe8a1f12.il.comcast.net] has joined #code |
19:48 | <@Tarinaky> | Has anyone here played Crusader Kings 2? |
19:52 | < ErikMesoy> | I played the tutorial. >_> |
19:52 | <@Tarinaky> | Not a fan? |
19:54 | < ErikMesoy> | No. |
19:54 | < ErikMesoy> | Maybe I should watch an LP. |
19:54 | <@Tarinaky> | It is awesome. |
19:55 | <@Tarinaky> | But I was going to say something about The Republic DLC has made me think about it In Spaaaaace. |
20:11 | < mac> | can some one give me a second opinion on this thing? I'm thinking about getting a dev kit. http://www.kickstarter.com/projects/1523379957/oculus-rift-step-into-the-game |
20:13 | <@Tarinaky> | It's probably the first workable 3D goggle-headset thing that'll hit the market... |
20:13 | <@Tarinaky> | I'm waiting for the second generation. |
20:14 | <@Tarinaky> | If you have something in mind, this is probably the only VR headset worth looking at. |
20:14 | | mac is now known as Mac|Listening |
20:15 | <@Tarinaky> | At best, it's an unproven product (in fact there's a trail of failed products in that market already, but I'd be prepared to ignore them) |
20:16 | <@Tarinaky> | Which makes it a massive risk. |
20:16 | <@Tarinaky> | Depending on what you're looking to do with it, of course. |
20:16 | < Mac|Listening> | well I'm just looking at it for learning to program a stereoscopic view of some very very very basic things |
20:17 | <@Tarinaky> | Have you got any of those cardboard glasses you get for 3D films? |
20:17 | < Mac|Listening> | i've messed with 3d objects in c#, but I'm sure this would be a tad more intricate. |
20:17 | <@Tarinaky> | Start with that, to learn the principle. |
20:18 | < Mac|Listening> | 3d as in polarized glasses or the stupid red blue type? |
20:18 | | Mac|Listening is now known as mac |
20:18 | <@Tarinaky> | Whatever you have to hand. |
20:18 | <@Tarinaky> | It's only for learning. |
20:19 | < mac> | yeah i guess that makes more economical sense, though I'm not really stressed for money. |
20:20 | <@Tarinaky> | If you have enough money to be throwing it at toys I'm a poor student who wouldn't mind a UT dev license :p |
20:20 | <@Tarinaky> | Err *Unreal dev license |
20:20 | < mac> | tarinaky what do you work with (languages)? |
20:21 | <@Tarinaky> | Python and C++ mostly. |
20:21 | <@Tarinaky> | Although I've not done anything in C++ in a while. |
20:21 | < mac> | how far did you go in c++? (in school) last thing you learned |
20:22 | <@Tarinaky> | I'm self taught in C++. I'm currently at Uni, we mostly just use Java there. |
20:23 | <@Tarinaky> | Last thing I learned... I've been going over my notes for Mathematical Physics exam all day today - so that's pretty much the only thing I can think about atm. |
20:23 | < mac> | cool, Java is good. I've heard some things about java 7 having some security issues recently. |
20:24 | <@Tarinaky> | I am unsure whether it's one zero day or two zero day exploits. |
20:24 | < mac> | what is a zero day exploit? |
20:24 | < mac> | >.> |
20:24 | <@Tarinaky> | An exploit on (or before) the day of release. |
20:24 | <@Tarinaky> | Programmers start counting at zero. |
20:26 | < mac> | wasn't java 7 put out a while back? |
20:27 | <@Tarinaky> | Yeah, but a new version goes out at regular intervals. |
20:27 | <@Tarinaky> | New version, new bugs. |
20:28 | <@Tarinaky> | Also, looking at the FAQ on the oculus website, there's nothing that'll come in the dev kit that the consumer product won't have. |
20:28 | < mac> | from what i understand java is a pretty solid language, not as fast as a compiled language but very portable? That said why isn't it used for games on things like xbox ps3 and pc? (pc like major titles not including minecraft) |
20:29 | <@Tarinaky> | Java has some issues with Garbage Collection. |
20:30 | <@Tarinaky> | And if you care enough about your game engine to write your own (vs just buying one) you care enough about timing that you don't want your program stopping at an indeterminate point in the future to do reference counting. |
20:31 | < ErikMesoy> | "not as fast as" is a significant obstacle, and also I'd point to the existences of major engines in non-Java creating a whole lot of inertia. |
20:31 | <@Tarinaky> | That too. |
20:31 | < mac> | well how fast is "not as fast as" |
20:32 | <@Tarinaky> | How long is a piece of string. |
20:32 | <@Tarinaky> | I've seen numbers from 2x to 10x quoted depending on which compiler was given apples and which oranges. |
20:32 | < mac> | 2x is still a huge gap. |
20:32 | <@Tarinaky> | Well, maybe not 2x... 3x. |
20:32 | < mac> | 10x is like why even bother with java |
20:33 | < mac> | (game programming that is) |
20:33 | < ErikMesoy> | http://www.wolframalpha.com/input/?i=How+long+is+a+string%3F Wolfram Alpha suggests that a string is 3963 base pairs. |
20:33 | <@Tarinaky> | Depends on the game. |
20:33 | <@Tarinaky> | Minecraft was successful. |
20:34 | < mac> | yeah but the hardware scaling isn't that good for minecraft. |
20:34 | <@Tarinaky> | TIL: a fruit-fly has 3963 base pairs. |
20:34 | < mac> | it has one thread for the base game i believe. |
20:34 | < mac> | same for the server. its one thread. |
20:34 | <@Tarinaky> | It's 'good enough'. |
20:34 | < mac> | true. |
20:35 | <@Tarinaky> | And hey, Java has one advantage over ever other language. |
20:35 | <@Tarinaky> | Every year, at the same regular interval, the job market gets flooded with junior programmers with 3 years of Java. |
20:36 | < mac> | don't know how i feel about that. |
20:36 | <@Tarinaky> | It's better than not being able to hire anyone to maintain your code. |
20:36 | < ErikMesoy> | Tarinaky: My university is holding Python courses now! :p |
20:37 | < mac> | its not exactly a warm fuzzy. I was told compiled languages are the end all when it comes to performance, and I'm pretty odd about top of the line. |
20:37 | <@Tarinaky> | ErikMesoy: Instead or or in addition to? |
20:37 | | Derakon[AFK] is now known as Derakon |
20:37 | <@Tarinaky> | The Physics dept here still teaches Fortran. |
20:37 | < ErikMesoy> | In addition to. |
20:37 | < mac> | odd not odd* |
20:37 | < mac> | ?. OCD* |
20:37 | < ErikMesoy> | Physics here teaches Mathematica. |
20:37 | < mac> | fortran is really good for math. |
20:37 | < ErikMesoy> | Programming still has Java. |
20:37 | <@Tarinaky> | mac: Hand-written assembler is the end all when it comes to performance... |
20:37 | | * ErikMesoy ads 1 to Cobol, giving Cobol. |
20:37 | <@Tarinaky> | Except when you're writing a game, when you want to push everything onto the GPU. |
20:38 | <@Tarinaky> | And Shader Languages are compiled Just-In-Time (because every Graphics card has its own compiler) |
20:39 | < mac> | i know i looked into x86 assembly, It was very confusing and i gave up, because i had only used c++ at that point |
20:39 | < mac> | i want to take another look at that after a few more years of school |
20:39 | <@Tarinaky> | As far as I can tell... Nobody should be writing x86 assembler any more. |
20:39 | <&ToxicFrog> | Unless you're a compiler/JIT developer, anyways. |
20:40 | < ErikMesoy> | If you want to take a look into something interesting, try Lisp. :p http://xkcd.com/297/ |
20:40 | < mac> | ok well i was using z80 but still |
20:40 | <@Tarinaky> | If you're using some kind of Reduced Instruction Set computer for some kind of integrated or mobile device then Assembly is still handy. |
20:40 | < mac> | (for the ti 83 calculator). |
20:41 | <@Tarinaky> | And I guess if you're writing device drivers you're going to want to embed some assembly in your high level code somewhere. |
20:41 | <@Alek> | yes, the dev kit is the consumer product's prototype. but! you get it ahead of time, and you also get the doom 3 BFG edition, for use with the product. |
20:41 | <@Tarinaky> | Not sure about kernels. |
20:41 | <@Alek> | so basically, you get to play with it way ahead of everyone else. XD |
20:42 | <@Alek> | you and the 10 thousand others who sprung for a kit. XD |
20:42 | <@Tarinaky> | The only sensible advice, if that's your only reason for buying it, is 'wait'. |
20:42 | | * Alek nods. |
20:42 | <@Tarinaky> | You don't have to be sensible of course. |
20:42 | <@Alek> | I'm not a hipster. >_> |
20:43 | <@Alek> | not to mention, it IS a prototype, not the polished final product. |
20:43 | <@Tarinaky> | So you'll end up buying another anyway. |
20:44 | <@Tarinaky> | Oculus Rift could be ground breaking and market changing... if it costs no more than ?200 at launch. |
20:44 | <@Alek> | and oh yeah, the kickstarter ended months ago. |
20:44 | <@Tarinaky> | Less than that once the factories are 'geared up'. |
20:44 | <@Alek> | yeah, from what I heard, $200 or $300 was the estimated entry price. |
20:45 | <@Tarinaky> | I suspect it'll be closer to the top end of any estimate. |
20:45 | <@Alek> | but considering they went over their kickstarter goal by an order of magnitude, that may help subsidize some of the price. XD |
20:45 | <@Alek> | may. |
20:45 | <@Tarinaky> | There's a law about it, but I forgot the name. |
20:45 | <@Tarinaky> | That projects will be overbudget even if you expect them to be. |
20:46 | < ErikMesoy> | Hofstadter's law? "It always takes longer than you expect, even when you take into account Hofstadter's Law." |
20:46 | <@Tarinaky> | That's the one. |
20:46 | <@Tarinaky> | There's a time-money equivalence so close enough. |
20:47 | < ErikMesoy> | See also the Planning Fallacy. People consistently, reliably, repeatedly, underestimate the time and cost something will take. |
20:47 | < ErikMesoy> | For a decent estimate of what it will actually take, your best bet is to find a similar project or two, and look at what they took. |
20:48 | <@Tarinaky> | This doesn't tend to work for software development though - since if someone has done your project before you'd be buying it off them :p |
20:48 | < ErikMesoy> | If you ever find yourself thinking "but they had stupid problems/ridiculously unlikely accidents" or "but I have a special advantage", ignore this, because these thoughts will lead to you underestimating. :p |
20:49 | < ErikMesoy> | Tarinaky: Well not your exact project. But find some other project with, say, the same level of graphics detail and the same number of playable characters. Or something. |
20:50 | <@Tarinaky> | ErikMesoy: Unlike a building though all software projects begin with the phrase "But ours will do X" |
20:50 | < ErikMesoy> | "But EA had their top developer leave halfway through the project!" |
20:50 | <@Tarinaky> | I mean more "But ours will be red." |
20:51 | < ErikMesoy> | Aha. |
20:51 | <@Tarinaky> | 12 months later it turns out that X graphics card is optimised for non-red pigments. |
20:51 | <@Tarinaky> | :p |
20:51 | <@Tarinaky> | The engineers say they can give you a very very very dark orange, but it'll take another 3 months :p |
20:52 | < ErikMesoy> | Also, you mentioned there's a time-money equivalence. |
20:52 | < ErikMesoy> | This is not always the case. |
20:52 | < ErikMesoy> | Canonically, you can't get a baby in one month by hiring nine women. :p |
20:52 | <@Tarinaky> | It's not a linear equivalence. |
20:52 | <@Tarinaky> | Although I guess that's what equivalence means. |
20:53 | <@Tarinaky> | Ho-hum. You're right. There's a money-time proportionality? |
20:53 | | cpux [cpux@Nightstar-98762b0f.dyn.optonline.net] has joined #code |
20:53 | | mode/#code [+o cpux] by ChanServ |
20:53 | <@Tarinaky> | Association? |
20:53 | <@Tarinaky> | Meh. It is possible to buy a programmer's time for money. |
20:54 | < ErikMesoy> | Yes. |
20:54 | <@Tarinaky> | And it is possible, in many countries, to switch to flexible hours and exchange money for time. |
20:54 | < ErikMesoy> | My impression is that you can improve project speed by hiring up to twice as many programmers as the initial estimate. After that, the diminishing returns really start to hurt. |
20:54 | <@Tarinaky> | Time doesn't equal progress? |
20:55 | < ErikMesoy> | e.g. If you stick 5 guys working on a game, sure, they can use another 3 bugtesters and a dialogue writer and a graphics rendering guy. |
20:56 | <@Tarinaky> | Yeah, I'm familiar with the equations. |
20:56 | <@Tarinaky> | Well, actually I'm not come to think of it. |
20:56 | <@Tarinaky> | But I'm familiar with the principle. |
20:56 | <@Tarinaky> | Also: I should be revising. |
20:57 | <@Tarinaky> | I suggest though that the time-money equivalence should be allowed to hold and progress/time be decoupled. |
20:57 | <@Tarinaky> | Since that's the real issue, that more man-hours doesn't mean more progress. |
20:57 | < ErikMesoy> | Right. |
20:58 | <@Tarinaky> | Perhaps some kind of equilibrium with d Progress = Man-Hours - 'Friction' ? |
20:59 | <@Tarinaky> | Or is progress already a rate of change? |
20:59 | < ErikMesoy> | This sounds hard to formalize. How about something informal like "Incentivizing programmers to work faster is only slightly more effective than incentivizing computers to work faster." |
21:00 | <@Tarinaky> | "The rate of progress in a project is equal to the number of man-hours less the number of man-hours lost to context switching" |
21:01 | <@Tarinaky> | With a formal definition of context switching. |
21:02 | <@Tarinaky> | If you defined context switching right and solved it as a differential equation you might be able to coerce it into the existing equations for man-hours. |
21:02 | <@Tarinaky> | IIRC it's dependant itself on the number of people in the project because of 'communication time'. |
21:04 | <@Tarinaky> | So Communication time = k e^(man-hours) |
21:04 | <@Tarinaky> | Or just k man-hours. |
21:05 | <@Tarinaky> | I dunno. At this point I'm ranting. |
21:05 | <@Tarinaky> | What were we talking about again? |
21:05 | < ErikMesoy> | Hofstadter's law. |
21:06 | <@Tarinaky> | Anyway. The more hours you spend on a task the less 'quality' work gets done. |
21:07 | <@Tarinaky> | There's an exponential curve for how many marks you'll get in the exam against the time spent revising. |
21:07 | | Vornicus [vorn@ServerAdministrator.Nightstar.Net] has joined #code |
21:07 | | mode/#code [+qo Vornicus Vornicus] by ChanServ |
21:08 | <@Tarinaky> | Mark Percentage = 1 - e^-at |
21:10 | <@Tarinaky> | Assuming you aren't silly about it and burn yourself out. |
21:12 | <&ToxicFrog> | Tarinaky: re asm: you're much more likely to need it in a kernel than a device driver. In the latter case most platforms are polite enough to offer memory-mapped IO, so you just need a few struct casts and bitwise shenanigans. |
21:12 | <@Tarinaky> | I'd read somewhere that Microsoft had a research project to write an OS entirely in C#. |
21:17 | <@Tarinaky> | I really need help with my revision :/ |
21:17 | <@Tarinaky> | My exam's tuesday and I still can't do any of the section B Qs. |
21:24 | <@Tarinaky> | I swear... I didnt't even miss any lectures and I have no idea when he went over Hydro :/ |
21:37 | | mac [mac@Nightstar-fe8a1f12.il.comcast.net] has quit [[NS] Quit: This computer has gone to sleep] |
21:44 | | Vasi is now known as RobinSTamer |
21:44 | | RobinSTamer is now known as RobinStamer |
22:59 | | ErikMesoy is now known as ErikMesoy|sleep |
23:28 | | syksleep is now known as Syk |
23:53 | | Vornicus [vorn@ServerAdministrator.Nightstar.Net] has quit [[NS] Quit: Leaving] |
--- Log closed Mon Jan 21 00:00:38 2013 |