--- Log opened Mon Dec 10 00:00:50 2007 |
00:02 | | Kyrre [~Z@87.72.35.ns-26506] has quit [Connection reset by peer] |
00:03 | | Vornotron [~vorn@64.252.38.ns-11848] has joined #code |
00:04 | | Finerty [~vorn@76.233.4.ns-3619] has quit [Ping Timeout] |
00:06 | | Vornotron is now known as Finerty |
00:07 | | Kyrre [~Z@87.72.35.ns-26506] has joined #Code |
00:39 | | ilf_food is now known as ilovefire |
01:10 | <@ToxicFrog> | Hmm. See, this is where CTMP would come in handy: |
01:11 | <@ToxicFrog> | check(expression) => local r,e = expression; if not r then return nil,e |
01:35 | <@McMartin> | CTMP? |
01:39 | < Finerty> | Compile Time MetaProgramming |
02:05 | | Attilla [~The.Attil@194.72.70.ns-11849] has quit [Ping Timeout] |
02:08 | | Attilla [~The.Attil@194.72.70.ns-11849] has joined #code |
02:13 | | Doctor_Nick [~nick@Nightstar-5153.cs.fsu.edu] has joined #code |
02:13 | < Doctor_Nick> | hey, i have a quick question about scoping, what's the difference between dynamic shallow scoping and dynamic deep scoping |
02:14 | <@gnolam> | ToxicFrog: <entspeak> Looks sane to me then. </entspeak> |
02:14 | < Doctor_Nick> | From wiki, it looks like dynamic shallow has a stack for each identifier, and the value is just the top entry of the stack |
02:14 | <@McMartin> | Doctor_Nick: I've never heard that secondary qualifier at all. |
02:14 | < Doctor_Nick> | ? |
02:14 | < Doctor_Nick> | deep? |
02:14 | <@McMartin> | shallow/deep. |
02:14 | < Doctor_Nick> | oh? |
02:14 | <@McMartin> | lexical/dynamic, yes. |
02:15 | <@McMartin> | Which is "where it's declared" vs. "current call stack". |
02:15 | < Doctor_Nick> | yeah |
02:15 | <@McMartin> | And it's not each identifier that gets it, clasically, it's a chain of environments. The effect, on three seconds of thought, sounds about the same. |
02:15 | <@McMartin> | I've never heard of Dynamic Deep scoping. |
02:16 | < Doctor_Nick> | Dynamic deep scoping traverses the stack, apparently |
02:16 | < Doctor_Nick> | but it doesnt say how |
02:16 | <@McMartin> | That should result in the same effect. |
02:16 | < Doctor_Nick> | that's what I thought |
02:16 | < Doctor_Nick> | but why would it differentiate between them if the effect was the same? |
02:17 | <@McMartin> | lolwiki, imo. Do you have any real sources? |
02:18 | < Doctor_Nick> | im lookin |
02:18 | <@McMartin> | But from your description, this sounds like two ways of implementing the same thing, with shallow scoping being comically wasteful of space. |
02:18 | | gnolam [lenin@85.8.5.ns-20483] has quit [Quit: Z?] |
02:20 | <@McMartin> | It seems like just force-copying the caller's environment into the callee would work better than giving each identifier a stack, and use vastly fewer pointers. |
02:20 | <@ToxicFrog> | Deep dynamic sounds like what postscript does. |
02:20 | <@McMartin> | And LOGO. |
02:20 | <@McMartin> | It's the standard approach to dynamic scoping. |
02:20 | <@ToxicFrog> | Shallow dynamic would be, hrm. Environment stack, but only the top one gets searched? |
02:21 | <@ToxicFrog> | As a kind of sandboxing, perhaps? |
02:21 | < Doctor_Nick> | ToxicFrog: from what i've gathered, with shallow, every identifier gets its own stack |
02:21 | <@McMartin> | If only the top one is searched, you don't have dynamic scoping at all, you have C-style "scope is for Ivory tower pussies" |
02:21 | <@McMartin> | "Why would I need upvalues?" |
02:21 | <@ToxicFrog> | McMartin: well, no, it's a stack |
02:22 | <@ToxicFrog> | So this would imply, eg, that inside a function you only have access to that function's environment, not the global environment |
02:22 | <@McMartin> | OK, point. |
02:22 | <@McMartin> | C has no nesting, though. |
02:22 | <@ToxicFrog> | Unlike ps, where if it doesn't find something in the function environment it keeps going down the stack until it finds it or runs out of environments. |
02:22 | <@McMartin> | So the only real values are "local to some function" and "global". |
02:23 | <@McMartin> | As opposed to the places where lexical scoping is interesting, like Scheme and Lua. |
02:23 | <@ToxicFrog> | C99 has block-local lexical scoping, I thought? |
02:23 | <@ToxicFrog> | Certainly C99 for loops do. |
02:23 | < Doctor_Nick> | interesting in the sense that tornadoes are interesting |
02:23 | <@ToxicFrog> | Well, provided you aren't using MSVC~ |
02:23 | <@McMartin> | Oh, C89 has those too. |
02:23 | <@McMartin> | But they aren't proper upvalues. |
02:23 | <@ToxicFrog> | Aah. I see what you mean. |
02:24 | <@ToxicFrog> | Yes, C doesn't have nesting of anything you can subsequently take out of the nest. |
02:24 | <@McMartin> | If you're maintaining a stack discipline as C does, most of the differences between lexical and dynamic scoping vanish. |
02:24 | <@McMartin> | Lexical basically demands that more arguments be declared. |
02:25 | <@ToxicFrog> | Doctor_Nick: upvalues are more useful than tornados~ |
02:25 | <@McMartin> | Dynamic doesn't require it but makes it riskier to shadow globals. |
02:26 | <@McMartin> | Upvalues are objects 30 years before objects were cool. |
02:26 | <@McMartin> | And they pretty much require both lexical scoping and returnable upvalues to work, which has the side effect of "Your variable space is a tree, not a stack". |
02:26 | | SeabassTKE [~user@128.186.122.ns-3506] has joined #code |
02:27 | <@McMartin> | Which makes people for whom C is the Only Language Evar go ;.;, but my patience for them was short even as a teenager and it's only gotten shorter. |
02:27 | < Doctor_Nick> | what about kernel programmers :P |
02:27 | <@McMartin> | Kernel programmers that forget that people don't actually give a shit about the kernel per se are, in fact, one of my pet peeves. |
02:30 | < Doctor_Nick> | can someone give me voice? |
02:31 | <@ToxicFrog> | Doctor_Nick: I'd hope that kernel programmers have experience in high-level languages even if they aren't actually writing the kernel in one. |
02:31 | | mode/#code [+v Doctor_Nick] by ToxicFrog |
02:31 | <+Doctor_Nick> | you HOPE |
02:31 | <+Doctor_Nick> | http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=15&lngWId=6 |
02:31 | <@ToxicFrog> | And if they don't, well, their loss. |
02:31 | <+Doctor_Nick> | this is what this guy says on deep vs shallow |
02:32 | <@ToxicFrog> | Immediately followed by a comment saying "no, this is wrong" |
02:32 | <+Doctor_Nick> | oh |
02:35 | | mode/#code [+oooooo Attilla EvilDarkLord Finerty ilovefire Kyrre MyCatVerbs] by ReivZzz |
02:35 | | mode/#code [+o Syloqs-AFH] by ReivZzz |
02:37 | <@ToxicFrog> | From a discussion on elisp: |
02:37 | <@ToxicFrog> | Riastradh |
02:37 | <@ToxicFrog> | Of course, there are, as I said earlier, prohibitive costs associated with dynamic scoping. There are two ways of implementing it: shallow binding & deep binding. With shallow binding, every variable has a cell containing the current value. To fetch the variable\u2019s value, you simply look inside the cell. LET saves the value from the cell, stores a new value into the cell, evaluates its body, and then res |
02:37 | <@ToxicFrog> | tores the old value. This is a lot of loads & stores on LET\u2019s entry & exit, first of all, but that\u2019s probably not too big an issue itself. (Elisp wasn\u2019t designed for computational intensity, after all.) |
02:37 | <@ToxicFrog> | With deep binding, the map from variables to their current values is explicit. You have to search through it to find the most recent binding of any variable. LET extends the current dynamic environment, as that map is called, with new bindings on entry, and then removes those new bindings on exit. You can have a different map in every thread, so you\u2019re safe with multithreading. But now you have a search \u2 |
02:37 | <@ToxicFrog> | 013 either O(n) or absurd constant factors \u2013 for every variable reference. This is a prohibitive cost as well. It is clearly the wrong thing for the general mechanism of variables. And this is only pragmatics. The semantics of your program can be hideously altered by a stray variable binding over in a module across the address space that happened to be named the same as one you tried to use. |
02:37 | <+Doctor_Nick> | some of that is getting cut off, can you pastebin it? |
02:38 | <@ToxicFrog> | ...where is it getting cut off? |
02:38 | <+Doctor_Nick> | then res |
02:38 | <@ToxicFrog> | They should end with "then res", "after all.)", "have a search \u2", and "the one you tried to use." |
02:38 | <@ToxicFrog> | ...yeah, keep reading on the next line |
02:38 | <@ToxicFrog> | "then res\nstores the new value" |
02:39 | <@ToxicFrog> | Deep binding actually sounds like a stack of maps a la postscript. Shallow binding appears to be a case of implementing scope by abusing the call stack. |
02:40 | <+Doctor_Nick> | whats the difference between elisp and vanilla lisp |
02:40 | <@McMartin> | elisp exists only inside emacs. |
02:40 | <+Doctor_Nick> | ah |
02:40 | <@ToxicFrog> | elisp uses dynamic scoping and is part of emacs. |
02:42 | <+Doctor_Nick> | i dont see the difference between deep and shallow, though. the most recent binding should be on top of the stack regardless? |
02:43 | <@McMartin> | When the initial post says "there are two ways of implementing this", that's not the part that's wrong. |
02:43 | <@McMartin> | The semantics are, by design, identical. The question is solely how to produce the effect. |
02:43 | <@ToxicFrog> | The difference is in the implementation, not the behaviour. |
02:44 | <@McMartin> | And the claim that deep binding is insanely prohibitive is ridiculous, frankly. |
02:44 | <@McMartin> | Call stacks just don't get that deep, and most variable references are to locals, which is O(1) to look up. |
02:44 | | You're now known as TheWatcher[zZzZ] |
02:45 | <+Doctor_Nick> | even with recursion? |
02:45 | <@McMartin> | especially with recursion. |
02:45 | <@McMartin> | With recursion you're going to be using locals solely. |
02:46 | <+Doctor_Nick> | going to be, or supposed to be? |
02:46 | <@McMartin> | going to be, more or less by definition. |
02:46 | <@McMartin> | Your caller is you, so the sets of variables are the same |
02:46 | <@McMartin> | So all of them are shadowed, and you'll only be using yours unless you try to produce a blowup. |
02:46 | <+Doctor_Nick> | my lab partner was bitching about stack overflow with this recursive descent parser we were writing |
02:47 | <@McMartin> | ... You're Doing It Wrong. |
02:47 | <@McMartin> | Or are doing extremely tight tail-recursion in a language that doesn't make guarantees about it. |
02:47 | <+Doctor_Nick> | even though I pointed out that most stacks are huge for our purposes, he still insisted on doing it iteratively :P |
02:47 | <+Doctor_Nick> | it was prolog |
02:48 | <@McMartin> | For something like "statements -> stmt statements" you probably do want iteration. |
02:48 | <@McMartin> | At least, if you're not writing it in ML or LISP. |
02:48 | <+Doctor_Nick> | we wrote it in ADA |
02:49 | <@McMartin> | I don't recall whether or not ADA automatically transforms tail recursion into iteration. |
02:49 | <@McMartin> | But in C it's easier to implement a statment like the one I gave using a while loop. |
02:49 | | Syloqs-AFH [Syloq@NetAdmin.Nightstar.Net] has quit [Ping Timeout] |
02:52 | <+Doctor_Nick> | i think my professor took his notes on scoping from that perl thing |
02:53 | <@ToxicFrog> | Not to mention that deep binding doesn't necessarily imply a new scope for every function call. |
02:53 | <@ToxicFrog> | Cf, again, postscript, although that's kind of a special case~ |
02:53 | | * Finerty <3 PostScript. |
02:54 | <@ToxicFrog> | Likewise. Although I'd been using it for years before I finally grokked how scoping worked. |
02:58 | <@ToxicFrog> | And its begin and end are actually pretty cool, and occasionally useful in other languages. |
03:00 | <@ToxicFrog> | (although less so in cases where foo.bar.baz() is written as foo.bar.baz() rather than as foo /bar get /baz get exec) |
03:46 | | Forj [~Forj@Nightstar-11255.ue.woosh.co.nz] has joined #code |
03:46 | | mode/#code [+o Forj] by ChanServ |
03:48 | | Forj [~Forj@Nightstar-11255.ue.woosh.co.nz] has quit [Quit: Gone] |
03:57 | | Forj [~Forj@Nightstar-11255.ue.woosh.co.nz] has joined #code |
03:57 | | mode/#code [+o Forj] by ChanServ |
04:19 | | ilovefire [~santros_v@209.82.191.ns-11321] has quit [Quit: Of course, one thing I've got to say. I'll never be as confused as the moment I tried to figure out what was based more on faith--political leaning or religion.] |
04:55 | | Doctor_Nick [~nick@Nightstar-5153.cs.fsu.edu] has quit [Quit: Konversation terminated!] |
04:58 | | Finerty is now known as Vornicus |
05:11 | | SeabassTKE [~user@128.186.122.ns-3506] has quit [Ping Timeout] |
06:03 | | Vornicus is now known as Vornicus-Latens |
06:55 | | AbuDhabi [AnnoDomini@Nightstar-29708.neoplus.adsl.tpnet.pl] has joined #Code |
06:55 | | mode/#code [+o AbuDhabi] by ChanServ |
06:57 | | AnnoDomini [AnnoDomini@Nightstar-29708.neoplus.adsl.tpnet.pl] has quit [Ping Timeout] |
07:43 | | ToxicFrog [~ToxicFrog@Admin.Nightstar.Net] has quit [Operation timed out] |
07:44 | | ToxicFrog [~ToxicFrog@Admin.Nightstar.Net] has joined #code |
07:44 | | mode/#code [+o ToxicFrog] by ChanServ |
08:27 | | Chalcedon [~Chalcedon@Nightstar-11255.ue.woosh.co.nz] has joined #code |
08:27 | | mode/#code [+o Chalcedon] by ChanServ |
08:43 | | Vornicus-Latens [~vorn@ServicesOp.Nightstar.Net] has quit [Ping Timeout] |
08:52 | | ReivZzz is now known as Reiver |
09:44 | | You're now known as TheWatcher |
10:11 | | gnolam [lenin@85.8.5.ns-20483] has joined #Code |
10:11 | | mode/#code [+o gnolam] by ChanServ |
10:40 | | Forj [~Forj@Nightstar-11255.ue.woosh.co.nz] has quit [Quit: Gone] |
12:26 | <@Reiver> | I think I worked out what I'm after in terms of a curve. |
12:26 | <@Reiver> | Are there curves whose derivatives approach 1? |
12:27 | <@Reiver> | Thus, rather than exponentials etc, you have an exponential curve that tops out at a linear progression, if that parses? |
12:32 | <@McMartin> | Add x to a function whose derivative approaches 0? |
12:37 | <@Reiver> | Um, hm. |
12:37 | <@Reiver> | What I want is basically a curve that is sublinear. |
12:38 | <@Reiver> | Rather than an exponential growth proper, which ends up higher than linear, but not a log or sqrt, which tend to 'flatten off'. |
12:39 | | * Reiver ponders. n-log(n) gives a curve of the type of thing he's after, actually >.> |
12:39 | <@Reiver> | (Not quite the right shape, but it's a closer approximation than I'd seen before.) |
12:54 | <@MyCatVerbs> | p(1-p) for [0:1]? |
13:07 | <@MyCatVerbs> | Er, nevermind, that doesn't even *resemble* a correct answer. |
13:07 | <@MyCatVerbs> | x - (1/x) ? |
13:09 | <@MyCatVerbs> | No, not enough. Hrmn. |
13:09 | <@Reiver> | x - (1/x) is not bad, but it needs to be rotated 90 degrees? |
13:09 | <@McMartin> | Can't you just add another constant to it? |
13:10 | <@Reiver> | Playing with constants grants you finetuning of the curve to the values, not the curve itself? |
13:11 | <@McMartin> | Yeah. |
13:11 | <@Reiver> | A sqrt(x^25)+50 is still a sqrt curve, if that makes sense. |
13:11 | <@McMartin> | In particular, adding a constant shifts it up. |
13:12 | <@Reiver> | I mostly mean I'd like that curve rotated 90 degrees, because I want a slow progression to start with, that ends in being mostly-linear. Rather than a steep progression that bottoms off to linear. |
13:12 | <@McMartin> | Aha. |
13:12 | <@McMartin> | ... could you do a piecewise of a sigmoid to a linear? |
13:13 | <@McMartin> | How important is it that the graph be infinitely differentiable? |
13:13 | <@McMartin> | (Or, I suppose, "how many times should you be able to differentiate it before you get singularities") |
13:15 | <@Reiver> | I'm not worried too much about derivatives, but it needs to scale and can only be a single formula. |
13:15 | <@McMartin> | Does "single formula" include the tertiary operator? |
13:16 | <@Reiver> | I have pythons math library to play with, but not nessisary if statements? |
13:16 | <@McMartin> | Mrrr. OK, that's more problematic. |
13:16 | <@McMartin> | Especially since IIRC Python booleans are not integers. |
13:17 | <@Reiver> | (Yes, I know the code in the background must be smoking crack. It's come to my attention the origional developer was not apparently as open minded towards modification as he thought he was.) |
13:18 | <@McMartin> | AHAHAHAHA EVIL GENIUS IS MIEN |
13:18 | <@McMartin> | Do you get Python builtins as well? |
13:18 | <@McMartin> | Check this shit out: |
13:18 | <@McMartin> | >>> int (2 < 3) |
13:18 | <@McMartin> | 1 |
13:18 | <@Reiver> | ...What arcane trickery did you have in mind? |
13:18 | <@McMartin> | >>> int (3 < 2) |
13:18 | <@McMartin> | 0 |
13:18 | <@Reiver> | ...I seee |
13:18 | <@McMartin> | int (x < y) * (f(x)) + int(x >= y) * (g(x)) |
13:18 | <@McMartin> | Piecewise function! |
13:19 | <@Reiver> | You intend to do that to make it piecwise. Ho-kay. |
13:19 | <@Reiver> | That's... rather cunning trickery. |
13:19 | <@McMartin> | y here being some constant |
13:19 | <@Reiver> | Makes finetuning a bastard and a half, but I'll live~ |
13:19 | <@Reiver> | The curve x - (1/x) is, at current, looking very close to downright perfect. Except it's got the X and Y axis the wrong way around. ¬¬ |
13:23 | <@Reiver> | I also cannot for the life of me figure out how to make it fit the darn curve as I desire it to. This seems silly. |
13:24 | <@Reiver> | hrm, of course that doesn't bloody work. |
13:25 | | * Reiver starts to remember basic math again ¬¬ |
14:06 | <@ToxicFrog> | ...why does it have to be a formula? You can't just pass in a function there? |
14:11 | <@McMartin> | Apparently not. |
14:12 | | * McMartin is guessing some kind of eval("lambda x: %s") bullshit, which won't allow defs. |
14:13 | <@ToxicFrog> | Your shipment of fail has arrived! |
14:14 | <@McMartin> | Yum, import |
14:15 | <@ToxicFrog> | And python lambdas have to be a single expression, don't they? |
14:16 | <@McMartin> | Yes. |
14:16 | <@McMartin> | ;_;, etc. |
14:16 | <@McMartin> | Damn, I can't find the shipment of fail in my logs. |
14:21 | <@McMartin> | Aha |
14:21 | <@McMartin> | http://s262.photobucket.com/albums/ii94/TheWalkingDude/?action=view¤t=2.jp g |
14:22 | <@McMartin> | This was linked to me in reference to this. They didn't fix it in time. http://goonfleet.com/imagehosting/20472475842f21d033.png |
14:25 | <@ToxicFrog> | |
14:33 | <@McMartin> | In addition to that, they fucked up play balance so badly that the only form of PvP that has any effect in-game is now a bannable offense. |
14:34 | <@McMartin> | http://wuut.net/gallery/eve/best_eve_promotion_ever |
14:34 | <@Reiver> | ...howwhathuh? |
14:35 | <@McMartin> | Installing the premium graphics pack blows away C:\boot.ini |
14:35 | <@Reiver> | I... wow. |
14:35 | <@Reiver> | Ahahahaa |
14:35 | <@Reiver> | What'd they do to PvP? |
14:36 | <@McMartin> | Apparently, among other things, seige weapons have a 0s cycle time. |
14:36 | <@McMartin> | Instead of the usual tens of seconds, or occasionally minutes. |
14:36 | <@McMartin> | And defenseive technologies in general were simply failing randomly or always |
14:36 | <@McMartin> | I dn't play, so there was a lot of jargon I didn't catch. |
14:36 | | * McMartin was merely in the lawlz blastwave. |
14:37 | <@ToxicFrog> | ...wait, that's the change, or how it was pre-patch? |
14:37 | <@McMartin> | That's the change. |
14:37 | <@McMartin> | This is why PvP -- in what is essentially a pure-PvP game -- is now a bannable offense. |
14:37 | <@McMartin> | Go team. |
14:37 | | * McMartin points, laughs. |
14:38 | <@ToxicFrog> | ...ok, why is it bannable? |
14:38 | <@ToxicFrog> | I'm not following the reasoning here. |
14:38 | <@Reiver> | Lagbombing. |
14:39 | <@Reiver> | It's been an offense in Eve for a while, IIRC |
14:39 | <@ToxicFrog> | Aah. And this turns all siege weapons into lagblasters. |
14:39 | <@Reiver> | 0s reload = lulz spam the ozzer guy with seven million shells which do six thousand damage each |
14:39 | <@McMartin> | Well, it also turns them into ridiculously powerful uberguns. |
14:39 | <@Reiver> | When he reconnects, his ship is vaporous dust. |
14:39 | <@ToxicFrog> | Yes, I gathered that part. |
14:39 | <@McMartin> | DPS of literally How Fast Can You Jam The Function Key |
14:40 | <@ToxicFrog> | But generally the use of ridiculously powerful uberguns is not bannable unless you got them through 'sploitz. |
14:40 | <@McMartin> | So even without lagbombing, you're doing 14 billion damage per second when it's supposed to be more like 400,000. |
14:40 | <@McMartin> | The intended damage was 400,000, not 14 billion. |
14:40 | <@McMartin> | Remember, EVE has a notion of soverignty in a persistent universe. |
14:40 | <@McMartin> | Even if it's "part of the game", gains are permanent. |
14:40 | <@Reiver> | So the seige weapons are broken. They're using lagbombing as an excuse to clamp down on the utilisation of this until it can be patched. |
14:41 | <@McMartin> | And always, always at the expense of some other paying customer. |
14:41 | <@ToxicFrog> | ...permanent until they can be taken back, then. |
14:41 | <@McMartin> | Yes. Except your opponents now own your resource base. |
14:42 | <@McMartin> | If you get kicked back into the n00b "we punish but do not ban PvP" level, you might be able to lick your wounds and come back. Maybe. |
14:42 | <@Reiver> | And just wiped out thirteen million dollars worth of your ships and bases. |
14:43 | <@McMartin> | Since the only two alliances that have ever dominated are (a) LOLGOONS and (b) People who the developers were cheating to empower... |
14:43 | <@Reiver> | Yeah, that was my biggest beef with Eve - to make a world like that, you sorta inherintly design a system where you have winners and losers. Combined with a game where if you didn't make combat attractive, you wouldn't have players - and yet you simultaneously make agression the number one victory strategy. |
14:43 | <@McMartin> | And since LOLGOONS (alliance tag: <OHGOD>) uses the tactic of "overwhelm fire control by throwing ridiculously huge numbers of ships at their targets"... |
14:43 | <@Reiver> | Which, uh, sorta destroys the actual politics involved, and turns it into a gang war. |
14:44 | <@Reiver> | ...pffff, they would |
14:44 | <@McMartin> | The goons and allied corps are reasonably decent, since, I mean, really, since when do goons take orders |
14:44 | | * Reiver quietly suspects they were actually the reason the lagbombing rule got put in place. |
14:44 | <@McMartin> | Also, they have people like Arsclan allied (which is how I hear about this) |
14:44 | <@Reiver> | To whit: Goonfleet attacks. With torpedo boats. |
14:45 | <@McMartin> | Everything I hear about nongoons sounds like feudalism, though. |
14:45 | <@McMartin> | Except without your overlords reliably helping out when the Goons^WHuns show up to burn and pillage |
14:45 | <@Reiver> | (Torpedos being self-guided missile/ship type things that can be deployed ala missile buses, if you do it right) |
14:46 | <@Reiver> | (...Lagbombing was quickly noticed to be a problem in the 'drop a dozen torpedos per ship at the start of combat' scenario~) |
14:47 | <@McMartin> | I don't know, I think that made up for BoB's lock on T2 goodies~ |
14:48 | <@Reiver> | ? |
14:49 | <@McMartin> | So, the way tech advances worked is by lottery |
14:49 | <@McMartin> | You got tickets by completing various missions. |
14:49 | <@McMartin> | The former dominant alliance was getting the dice rigged in their favor, granting them literal monopolies on high and even mid-level equipment. |
14:50 | <@Reiver> | ...tech advances work by lottery? |
14:50 | <@Reiver> | Man, and I thought level grinding was bad. |
14:51 | <@McMartin> | Aristocracy is defined into the system. It's so cute that people pay to be serfs in their free time~ |
14:51 | <@McMartin> | (That said, the skill system is fairly nice, in that you get skill points by not playing.) |
14:52 | | * Reiver does approve of that. |
14:52 | <@McMartin> | And there are learning skills you can set that decrease the amount of study time (read: time not out flying ships) it takes to get the other ships |
14:53 | <@Reiver> | ...I think I like that combination. |
14:53 | <@Reiver> | I've always wanted to construct a MMORPG type game which is sorta like Eve in that it's MMORPG, but more closely related to X, Freelancer, and Freespace. With multi-person ships built in for the fun of it. >.> |
14:53 | <@McMartin> | There's also an officially sanctioned market in Subscription Time <-> Game currency. |
14:53 | <@McMartin> | Which is the best solution to zomggoldfarming I can think of, really. |
14:53 | <@Reiver> | ... wait, whut? |
14:54 | <@McMartin> | Say you want lots of cash but are too lazy to mine. |
14:54 | <@McMartin> | Say you also have a day job. |
14:54 | <@McMartin> | You go, buy 3 months of extra subscription, and auction it off for several million credits. |
14:54 | <@Reiver> | You can pay someone else to goldfarm for you, but it is done in the form of subscription time rather than cash? |
14:55 | <@McMartin> | There's a mechanism in the game for doing this, so people who like mining can often -- by design -- not pay their subscription fees. |
14:55 | <@Reiver> | Thus meaning it's not /profitable/, per se, but still useful. |
14:55 | <@McMartin> | Right. And CCP, the devs, get the money. |
14:55 | <@McMartin> | And there's a cap on how much any individual can usefully sell. |
14:55 | <@Reiver> | ...I actually rather like this. |
14:55 | <@McMartin> | Yeah, as I said, it's the best solution I've seen. |
14:56 | <@Reiver> | Solves a lot of the messyness of making it legal - I think Sony got burned there, IIRC - and trying to stamp it out by, well, decriminalising it. |
14:56 | <@McMartin> | Well, by providing a legal avenue for it. |
14:56 | <@McMartin> | The farmer is paid in services. |
14:56 | <@Reiver> | And subscription time is a double whammy for gold farmers proper. There's only so much you can usefully use, it doesn't turn a profit per se, and because there's a legit system in place folks are more likely to not bother with the dodgy ebay auctions either. |
14:57 | <@McMartin> | That last bit is the key. |
14:57 | <@Reiver> | The former discourages farmers from bothering with bots too, though. |
14:57 | <@Reiver> | ...no, you're right |
14:58 | <@Reiver> | The last bit is the key. The first bit is a way of making a legitimate avenue, without making it profitable. |
14:58 | <@McMartin> | Having it not be profitable is really there to keep the lawyers off everyone's backs, I think. |
14:59 | <@Reiver> | Exactly. |
14:59 | <@Reiver> | Subscription time is one thing, and usually handled on an accounting server. |
15:00 | <@Reiver> | Things-in-game-explicitly-worth-money means said things have an actual value, whereapon a game server crash can literally be considered a destruction of property. |
15:00 | <@Reiver> | Or something like that, anyhow. I just know Sony got sued. ¬¬ |
15:02 | | Reiver is now known as ReivZzz |
16:56 | | gnolam is now known as gnoham |
17:02 | | You're now known as TheWatcher[afk] |
17:32 | | Vornicus-Latens [~vorn@Admin.Nightstar.Net] has joined #code |
17:33 | | Vornicus-Latens is now known as Vornicus |
18:45 | | You're now known as TheWatcher |
20:59 | | Doctor_Nick [~nick@Nightstar-23600.hsd1.fl.comcast.net] has joined #code |
21:41 | | AbuDhabi [AnnoDomini@Nightstar-29708.neoplus.adsl.tpnet.pl] has quit [Ping Timeout] |
21:48 | | AnnoDomini [AnnoDomini@Nightstar-28986.neoplus.adsl.tpnet.pl] has joined #Code |
21:48 | | mode/#code [+o AnnoDomini] by ChanServ |
23:38 | | Chalcedon is now known as ChalcyNap |
23:45 | | ReivZzz is now known as Reiver |
--- Log closed Tue Dec 11 00:00:30 2007 |