[10:51] Join: Altair joined #corewars [10:53] hi [11:10] Join: impomatic joined #corewars [11:10] Hi :-) [11:10] http://kotaku.com/5237039/a-tribute-to-corewar [11:11] http://techtinkering.com/articles/?id=24 [11:34] Join: Fizmo joined #corewars [11:34] Hi Fizmo [11:35] hi John [11:35] bad news on r.g.c. :-( [11:36] Yes, but its good of TUC to give us 1 months notice [11:36] yes, it is [11:36] I'm also on the irc.freenode.net #corewars channel [11:42] I suppose all good things come to an end. KOTH.org has been around for about 15 years and it's a shame to see it go. [11:42] Do you think the KOTH.org hills could be hosted at SAL? [11:42] We need to ask Joonas [12:04] MSG: Quit: ChatZilla 0.9.84 [Firefox 3.0.10/2009042316] [12:07] Join: Fizmo joined #corewars [12:29] Fizmo, thx for your help yesterday [12:30] optimax works now fine [12:30] good :-) [12:30] did you get out something reasonable so far? [13:02] Join: fiveop joined #corewars [13:10] mm......well. I try to write a bomber...which..mm....just a standart stone which scores not that bad. but sadly my stones just score very low [13:11] i think its because you use two stepsizes in the stone [13:11] really difficult. scanner seems to be way more easy [13:11] well, in this version I used just 1^^ [13:12] cause optimax need its time too :D [13:17] but just 96 against 94nop hill ~.~ [13:23] i'd say thats a good score, 94nop is extremely competitive [13:23] 96 isn't that bad [13:23] bad enough ;P my scanner made it on the nop hill for one battle back then :D [13:24] cool :-) [13:25] just one battle, then LG2008 kicked me off [13:35] I lack off creativity concering bombers...... [13:41] yeah, they aren't that easy [13:43] Is anyone logging the freenode channel? [13:43] no [13:43] :-( [13:44] i got backlog [13:44] although i dont know if i can give different networks different logging-settings [14:11] MSG: Ping timeout: 240 seconds [14:11] Join: M0wLaue joined #corewars [14:12] Unfortunately koth.org and freenode are logging to the same file here, because the channel is the same name :-( [14:20] Join: newton joined #corewars [14:21] hey all [14:21] hi [14:21] wow that's a shocker about koth! but not that unexpected... [14:22] hopefully someone can mirror the content, pmars, wilkies, etc [14:23] Hi Terry :-) [14:23] John is working on that [14:23] hi Fiz [14:23] Cool [14:24] that's timing [14:24] I was on the way to write you an email ;-) [14:24] checked the logs... [14:24] do you want me to try to test anything? [14:25] :-P [14:25] Hi Terry :-) [14:25] hey imp [14:26] yeah, I would like to let you you test and comment my evolver [14:26] I've got an updated pmars page at http://corewar.co.uk/pmars [14:27] very good, old and new versions should be available [14:28] Maybe you add the rules or a link for the Special Purpose pmars? [14:29] Fizmo: which one? [14:29] just to get some more details about this version [14:29] yea what's that? [14:29] the Football pMars [14:29] It should be there [14:30] it was a very funny tournament round [14:31] ohh, ok [14:31] I've archived Ryan Coleman's page ready for Geocities closing laer this year [14:32] I haven't been able to contact Chip Wendell about Corewin yet though :-( [14:32] Do Chip also know that? [14:32] ohhh [14:32] I'll grab everything, but won't put it online until Chip gives permission [14:33] yes, sure [14:35] cool [14:35] I can evolve now warriorswhich can beat tiny BiShot [14:35] I think mirroring is normally fine though, it's not like I'm changing anything, claiming credit or profiting. The only thing I change is the links. [14:36] However I still prefer to have permission [14:36] Nice work Fizmo [14:36] but not in the "pure evolution mode" :-( [14:37] I added a special evolution mode to force evolving replicating species [14:37] hmm I always had to tinker with parms to get replicators [14:38] how do you define "pure"? [14:38] the paper look sometimes quite strange but scores nicely [14:38] pure means to randomly generate the code [14:39] as opposed to seeding with hand-coded warriors [14:40] while force to evolve paper randomly adds also code fragments beside randome code generation [14:41] which is somewhere between both extrema [14:42] whatever it takes [14:43] as an experiment I tried to see if OptiMax could find better parms for [14:44] my "fluttering evolbits" warrior - uh.. nope. Fluttering got about 183 Franz score [14:45] but best optimax came up with was about 165. [14:46] So... considering using evolving to optimize hand-coded warriors... [14:47] My evolver scores about 120 on the nano hill at the moment [14:47] Still tweaking it [14:48] newton: did a /msg come through? [14:48] 165 on optimax??? [14:48] wow [14:48] Oh that's what those are... let me check [14:48] for the tiny hill? [14:49] 165 Franz score - about 113 against the built in tiny bench [14:49] that'S also pretty impressive [14:50] but nowhere near as strong as the evolved warrior I started with [14:51] got the messages. [14:51] :-) [14:52] I'm still learning how to use optimax... for phase 2 I specified a scanner which [14:52] the form was weak against but that might have hurt the score [14:53] plus there were 14 variables... probably too many [14:53] Had better luck converting a 4-line paper from 800 to 8000 coresize [14:53] well, it just increases the time to get out a set of good constants [14:54] wasn't interested enough to give more than overnight :-) [14:55] well, that should be enough to get about 90-95% of what's possible [14:56] need to get back to the futility of evolving for size 8000 - I'm a sucker for near impossible [14:56] I'm pretty sure by specifying a scanner for phase 2 I knocked down the score [14:57] will try again using a paper to see if different... some time... trying to make [14:57] hmm, it depends on the strategy of the warrior you want optimize [14:57] something strong enough to do ok on the sal tiny hill - it's tough! [14:58] yeah, the tiny SAL is exptremely tough [14:58] strategy is paper but with all the scanners doesn't do so well [14:58] I am wondering about the two warriors from inversed which leading the hill easily [14:59] they're neither scanner nore paper [14:59] only by using optimax I kind of knock myself out of playing my own evolved hills :-) [15:00] :-) [15:00] but that's OK, RedMixer does OK except against Dave and bvowk [15:01] I'm still far from that level, but I'm just at the beginning of coding my evolver [15:02] took 10 years of playing with Redmaker then REBS to get the parms right [15:03] my early examples were quite weak, back in those days just working was exciting [15:05] I still haven't had much luck :-( Recently I was playing with mutating more when the scores are bad and mutating less when they're good. [15:05] that's a good idea [15:06] I also abandon benchmarking a candidate if the score is below a certain threshold [15:07] my evolvers were always manually driven so I have to play with the parms myself [15:07] I abandon the whole soup if not good :( [15:08] hmm, my soup just randomly generated, no mutation so far [15:08] gotta have mutation! [15:09] and mutation rate variables to tweak [15:09] that's the over next which will come [15:09] I first try to make another evolving mode [15:09] although with the right instruction weights sometimes fairly strong warriors get [15:10] "force to evolve scanning warriors" [15:10] I'm wondering about crossover next. [15:10] created strong - even wilkies 60+, franz score 110+ [15:10] crossover - highly overrated... [15:11] How to implement it? 2 parents, more than 2? Maybe restricting crossover to closely related warriors by keeping a family tree. [15:11] yes - code MUST be very similar or doesn't work at all [15:12] what I do is count instruction changes, if over a certain percentage then [15:12] I change a "species" string to prevent crossover [15:12] easy way to do it. [15:13] also crossing with a weak warrior defeats the purpose so I keep track of [15:14] how many wins and the score so when crossing can choose a warrior [15:14] that looks like a good mate. Tricky stuff. I get almost as good of results [15:15] with REBS which has no crossover at all - at least for nano warriors. [15:20] 173.3 Franz [15:21] Not bad - not good enough for the sal hill but not bad [15:21] but there's something strange [15:22] I sometimes get exactly the same warrior evolved twice [15:22] I have no clue why [15:22] on different runs? or in the same soup? [15:23] could be RNG seed [15:24] in the same soup [15:24] that's normal [15:24] sometimes 1,5 hrs later I get the doublette [15:25] maybe it just likes those settings - evolving optimizes and can find the [15:25] same numbers again [15:26] but could maybe indicate a bug in the number selection, hard to say [15:26] Guests arrived now, busy until tomorrow :-( [15:26] but with that many random variables I though I would see them very seldom [15:26] * Fizmo waves [15:27] have a nice evening John [15:27] bye John [15:29] I added the Randomize Timer [15:29] maybe it happens if I rerun the evolver frequently [15:30] I have to go... phoe call, work, will be back... [15:30] ok [15:30] cu Terry [15:30] later [15:30] MSG: Quit: Ex-Chat [16:34] which imp spirals are supposed to work well in bombers? [16:34] a- and b-spirals [16:34] there are others^^? [16:35] silkimps, gatecrushers [16:36] mm...k [16:52] MSG: Quit: Lost terminal [16:55] yeah, a- and b-spirals are best [16:56] either 3-pts or 7-pts [17:16] pts? [17:16] the number of imp-arms [17:17] I guessed that, but what does pts stand for? [17:17] point, eg three-point [17:17] ah [17:17] k [17:17] thx [17:18] i think its better to recommend using the word arm [18:22] Join: McHearty joined #corewars [18:24] hi [18:25] hi [18:32] Join: MewLaue joined #corewars [18:34] quite a lot of information to absorb to be able to compete =/ [18:34] MSG: Ping timeout: 240 seconds [18:34] yes, we've developed quite an amount of strategy-variants over time [18:38] a large portion of which are obsolete? [18:39] not that big, a number of old strategies have simply moved to be viable to other settings [18:41] "old-style" replicators are useless in the most common setting, but they are powerful in low-process settings [18:49] pMARS is windows only? [18:49] it can be compiled to linux with little or no changes, OSX will need some tinkering [18:50] It's better than what is currently available via repository in ubuntu? [18:50] whats in the repository? the "corewar" -simulator? [18:51] corewars - The classic corewars game with gtk-look. [18:52] that has been discontinued by the author, and by default it uses simplified version of the language [18:52] i figured as much as most of the programs looked much simpler [18:52] i think it supported '94 too so it should be ok, but i dont remember exactly [18:53] is there a guide to compiling pmars in linux? [18:53] make makefile? [18:55] got it :) [19:00] is there a mirror for the source, source forge sends me into a redirect loop [19:01] works just fine to me.. [19:01] http://users.metropolia.fi/~mikaos/pmars-0.9.2.tar.gz [19:03] thank you [19:22] /usr/bin/ld: cannot find -lX11 [19:22] hrmm [19:23] someone had the same problem before, although i dont recall immediately [19:23] i think it had to do with x11 -libraries being in different place on the distro that expected [19:23] but its been a while [19:25] MSG: Remote host closed the connection [19:25] MSG: Quit: ChatZilla 0.9.84 [Firefox 3.0.10/2009042316] [19:27] http://groups.google.com/group/rec.games.corewar/browse_thread/thread/1e5e8320caea76fa/bf5e1309b62184a7?lnk=gst&q=x11#bf5e1309b62184a7 [19:29] xorg-dev was way outdated [19:29] updated it and install went great [19:33] well it compiled but doesn't run :P [19:34] whats the complaint? [19:35] bash is complaining that command isn't found [19:48] Making pmars with compiler flags -O -DEXT94 -DXWINGRAPHX -DPERMUTATE [19:48] Linking pmars [19:48] done [19:49] it compiled but it doesn't run? [19:50] ./pmars (yeah, im going for the reaaaaally basic stuff, since i dont know anything advanced which might be the problem) [19:51] haha wow [19:51] it was so basic [19:51] I didnt' think of it [19:51] but it worked [19:51] haha [19:53] moving the binary to /usr/bin should remove the need to specify the directory at every run [20:01] linux. things I will never understand. [20:02] I moved it to /usr/local and created a link to it in /usr/bin [20:13] Can decoys move, or are they typically stationary? [20:14] in the way that i define decoy, always stationary [20:14] if a decoy moves, it is no longer a decoy, but an active part of the warrior [20:15] Wouldn't pack movement be better then waiting to be hit? [20:15] so far it hasnt really been proven to be [20:16] replicators making new copies of themselves could be seen as something similiar, but they can be defeated too [20:17] then there is a specialized case of CLP, but thats non-significant right now [20:17] perhaps I just don't fully understand all the terminology [20:18] remember that the way that warriors are positioned in the core is random [20:18] and therefor the result of a _single_ match is determined less by the warrior and more by the location [20:19] it is hard to predict when you will be hit and when not, so copying yourself to another position will not actually lessen the chance to be hit [20:19] but increase the chance of survival [20:19] so you spend the time of copying for almost no gain [20:19] because the moving decoys are just ghosts of yourself [20:20] unless a decoy is limited in functionality [20:20] which I'm unsure of as none of these guides are too informative [20:20] the processing-time remains the same regardless of copies, so a moving decoy will reduce the speed of you active component [20:21] so the instructions run will be run at decoy, main, decoy, main, decoy, main (extreme example) [20:21] a non-moving decoy will serve its purpose, but not slow down the main component [20:22] Would it be possible to have a regenerating decoy.. ie: One decoy falls, another in the group splits itself to continue in the fallen's place [20:22] there is a deep tactical significance why you shouldnt do that [20:22] because not all warriors will care about decoys [20:23] ^^ [20:23] stones, papers, scissors, only the scissors will in practice care about decoys [20:23] so elaborate decoys will strenghten you against one opponent, but weaken against the other two [20:23] So the others will just kill the decoy and move on? [20:24] no, they will ignore them [20:24] So if the decoy lives, my program isn't killed? [20:24] they are "blind", eg. they do not check where they attack [20:24] decoy doesnt have to live to be effective [20:26] also, all processes in the warrior have to be killed, so if you have one in the decoy, and another in the main warrior, the death of the decoy is meaningless [20:26] but what if it's the other way around [20:26] main warrior dies [20:26] but the decoy lives [20:26] then you still survive, but you just have to pray that the opponent will not kill the decoy too [20:26] (hint: they will) [20:27] But couldn't your decoy just spawn another ghost of itself and maintain it's strength? [20:27] it is completely possible, but it has been deemed unviable in practise [20:28] I guess cause it consumes lot of time? [20:28] yes, and you still have to keep a backup of the main warrior, and there is no guarantee that it will remain unharmed [20:31] hmm [20:32] self-repair has been tried many a time, but so far there are only two cases when it has worked properly [20:33] 1) 8 musketeers, where there are eight copies of the warrior spread out in the core, and they watch out of each other. It was tough when it was made (an eternity ago), but it cannot holds its own against modern warriors [20:34] 2) Airbag, which doesnt actually repair anything, but is instead an emergency-measure which has a chance to escaping when the main component gets damaged. Airbags can be successful, but they can be hard to wrap your mind around on. [20:36] How fast are commands executed, I assume fairly fast? [20:36] one instruction per cycle [20:36] and cycles last how long? [20:36] battles have a maximum number of cycles defined [20:37] a couple nanoseconds, but that is not meaningful, because both warriors run at the same speed (one instruction per cycle) [20:38] is there a way for a warrior to avoid it's own bombs [20:38] there's a couple, but they tend to be a little bit slow [20:38] or calculate it's relative position within the core [20:38] based on max size and movement [20:39] the addressing is relative so you cannot get your absolute position [20:39] you can analyze the size of the core, but that's it [20:40] Have your warrior assume that it's spawning position is say x, and then be able to tell how far away from x it is? [20:40] it takes some code, but yes [20:41] think it this way; to go somewhere you have to know the distance you have to travel [20:41] so you simply multiply the distance with -1 to get the distance to origin [20:41] if you keep moving more away, you just keep adding (negatives) to the number to origin [20:42] There is no cache in corewar? [20:42] no [20:43] no cache, no registers, no interruptions, all datawords are the size of the core [20:45] p space? [20:45] That's what I was thinking but I'm reading on what it entails [20:46] i would compare p-space to external memory, although you cannot store whole instructions in it [20:46] can you store relative locations in it? [20:46] or is the read/write too long to be worthwhile [20:46] you can store numbers in it, therefor you can store locations [20:47] Combatra is actually only warrior so far to do so [20:47] I read that vampires set traps, but don't really understand how that works [20:48] is it the same as bombing? [20:48] in bombing, the bombs thrown are usually damaging instructions [20:48] vampires bomb with jmp -instructions, causing the opponent's processes to run at somewhere else [20:48] somewhere else usually being something harmful the the vampire has made [20:50] Couldn't that be used just to throw anything off your trail? [20:50] "off your trail"? [20:51] Keep your warrior a step ahead of the opponent [20:51] so you don't get caught/killed [20:51] ever bomb thrown is a decoy on its own [20:52] can each decoy have its own movement loop, or must they all have the same one? [20:52] both could be used, its just that nobody really uses moving decoys [20:53] let us consider an example: [20:53] you warrior has 10 processes. 8 in the main body, 1 in decoy A, 1 in decoy B [20:53] what happens when the decoy A gets overwritten with a jmp 0 ? [20:54] Can the stack be changed with priorty commands? [20:55] no [20:55] Stack continues until main checks for integrity of decoys and spawns a new decoy a [20:56] before that, actually: [20:56] decoy A starts running the jmp 0 -instruction, causing 1/10th of the processes to run useless code [20:57] now, 1/10th is not a big slowdown by itself, but what if it gets hit with a spl 0 ? [20:57] is there a way for the decoy to kill itself when corrupted? [20:57] there is no way to be sure that it kills itself [20:57] or for the main or b to check it's integrity on the fly, and kill if necessary [20:58] it is possible, although actual warriors are more interested in knowing if the other components in a multi-component warrior are still working [20:59] and the checking takes time - which you never have enough [20:59] How many processes are necessary [20:59] you need a mov [20:59] A split up to x amount of decoys [21:00] Join: myndzi joined #corewars [21:00] processes are necessary - for what? [21:01] For the warrior to function in comparison to the amount of processes that causes the warrior to be sluggish [21:01] that one is a balancing-issue [21:02] Is there an accepted number that is too many? [21:02] it doesnt have a straight answer [21:03] there are warriors (scissors/scanners) which fight just fine with one process, there are some (papers/replicators) which will create a zillion processes and fight well [21:04] so if you have a warrior that has an attacking main component and two moving decoys, then the question is how fast you want the decoys to move [21:04] in tandem with the main body [21:04] too fast and the main component will not have enough time to be aggressive (a bit vague, i know) [21:04] too slow and they are useless [21:05] i think you shouldnt put any more than 1/3rd of the time into the decoys [21:06] Well the decoys need to be able to move and trap, and check for integrity of the collective [21:08] balancing the different components can be very delicate thing, so i cannot give hard rules about that [21:13] what's the difference between a stone and a vampire [21:14] vampire bombs with jmps that send enemy processes into executable code that helps the vampire [21:14] stones usually throw dat's or spl's [21:14] the difference between stone and bomber.. eh.. [21:14] and dwarf! [21:14] ;) [21:15] old rule used to be that bomber's throw specialized bombs, while stones are less discriminating about what they throw [21:15] couldn't the vampire just use jmps to throw the enemy process into a dat or spl? [21:15] why would you do that instead of throwing dat or spl directly? [21:15] McHearty: thats exactly what it does [21:15] the idea is you can drain processes from your opponent (making their actual code, if any is left, slower) [21:15] and increase your own speed since you are using them to do work for you [21:15] a core clear for example [21:16] how does it make them work for me [21:16] that's what I don't understand [21:16] well [21:16] if your enemy is running a self destructive core clear [21:16] that skips your own code [21:16] it will kill itself and clear the core, and it doesn't cost you a single instruction yeah? [21:16] you win! [21:16] why would it skip my code? [21:16] because you wrote it to? [21:16] say it clears backwards with dats [21:17] and starts before your main code [21:17] eventually it'll overwrite itself and stop [21:17] leaving you safe [21:17] dont go explaining too complicated things, he already has a headache, i presume [21:17] wouldn't it meet me further down the loop? [21:17] haha no headache at all [21:17] i guess so miz, i thought this one was kinda simple though [21:17] Just trying to understand better [21:17] McHearty: i'm no vampire expert, but in my example, say the "pit" (where the enemy code is sent to) is after your warrior [21:17] isn't there the possibility that it skips over itself and gets to you [21:17] on the other side [21:17] it is possible to make the clear skip certain part of the core (in this case, you) [21:17] [21:18] ^^ start here [21:18] move backwards [21:18] <-- [21:18] eventually you kill the pit and leave [21:18] it's not really a core clear if it skips instructions, so no, there isn't typically any chance for it to skip itself and get your warrior [21:19] myndzi: then explain multipass-coreclear? [21:19] hey, you were the one that didn't want to give him a headache :) [21:19] my example doesn't use such trickery [21:19] hehe [21:19] isn't that assuming the enemy warrior goes linearly 1-2-3-4..etc [21:19] what if it skips? [21:19] ? [21:19] 1-4-8-12..etc [21:19] movement [21:19] the pit isn't the enemy warrior, it's your own code [21:20] and the only way enemy processes get there is if you put them there [21:20] yes but if it doesn't hit itself [21:20] on the way backwards [21:20] that's not a possibility [21:20] couldn't it hit you if it makes it all the way around the core [21:20] unless you make it one [21:20] he's running YOUR code, not his [21:20] think like we're playing checkers [21:21] but i'm telling you where to move [21:21] am i likely to make you win? :P [21:21] so all if it's code is overwritten with my code? [21:21] i see where you are confused [21:21] all code is in the same place [21:21] processes are not code [21:21] none of the code actually "belongs" to anyone [21:21] processes run whatever code they are on top of [21:21] but you start out in control of what you are running [21:22] hmm, i can't think of a good analogy atm [21:22] So I can write a macro to a block [21:22] and when the enemy hits it it executes my macro? [21:23] something like that [21:23] this is why we need the f*in updated tutorial [21:23] if by macro you mean instruction [21:23] and by block you mean core location(?) [21:23] well I understand that you can write 1 instruction to each block [21:23] yeah [21:23] but 1 instruction is just a mov or something like that [21:23] but in people code I see variables [21:23] well, you can only write one instruction at a time anyway [21:23] so I can write a variable to a core position? [21:23] do you mean "EQU"? [21:24] like [21:24] that is a constant... it is not part of the language, it's just a convenience of what you are writing the code in [21:24] and then a few more lines of and [21:24] and then they use the name later in the code [21:24] when the program gets written to the core, all equ's are substituted and that's that [21:24] like a macro [21:25] i wonder, have you programmed much before? :P [21:25] like jump jmp -1, 1 [21:25] and then they're using jump later in the code [21:25] understand this difference: [21:25] the text file we type when we make a redcode program [21:25] is not "exactly" the code that ends up running [21:26] things like labels and EQU are not part of redcode [21:26] but they make our life easier [21:26] so there's a step where your source code gets compiled to byte code [21:27] and at that step, all the labels and constants get converted into what they "should be" [21:27] after that is done, then the result is what is put in the core and executed [21:28] i'm the wrong one to explain this from a purely technical perspective, but that hopefully suffices :P [21:28] I understand what you're saying [21:28] so no, there are no "macros" in core, nor are there variables in the sense you mean [21:29] if you want a variable, you have to use the field of an instruction somewhere [21:29] I just understood labels and equ to be used to create macros [21:29] as this guide I was reading said [21:29] but it didn't make it super clear [21:29] i think you're reading ahead of yourself [21:29] macros are a more complicated convenience [21:29] just like a plain old EQU is a convenience [21:29] if you have a number you are going to use a lot or want to change easily [21:29] macros aren't that complicated [21:30] they're more complicated than constants [21:30] anyway, the same thing happens. macros get evaluated and substituted before any code ever hits the core [21:30] and the result of the macros is the code [21:30] there are no macros "in" the core [21:30] so then how am I giving instructions to enemy warriors [21:30] with just one command [21:30] well [21:30] when the game starts [21:31] if I tell it to split doesn't it just keep doing what it was doing before just more so? [21:31] you have a certain amount of instructions you can specify to be loaded into the core, yes? [21:31] yeah [21:31] say, 100 [21:31] you don't have to actually run all of those instructions, they are simply there [21:31] now, it is possible to write a bomber that bombs with JMP instructions [21:32] and you adjust the JMP instructions that you bomb with so that they point to some code that YOU will never run [21:32] but you want your opponent to run [21:32] what you want is for the JMP to fall in the middle of some code your opponent is executing [21:32] so when an enemy process executes that JMP, it sends them to the code that you have waiting for them [21:32] and then they start executing that code [21:33] if they have other processes, those processes will keep on doing what they were before [21:33] unless you bomb them too [21:33] so it just slides my code into the enemy's process stack? [21:33] sorta [21:33] you don't have code in the process stack [21:33] i would headslap if i had less patience [21:33] you're not "putting your code into them" [21:33] well my processes into the enemys processes [21:33] you're "pointing them to your code" [21:34] like adding a mov in between whatever the enemy is doing [21:34] the process stack is just a list of what location to execute next [21:34] if you have five instructions, A B C D E [21:34] and one process [21:34] and that process is executing at A [21:34] when it's done it goes to B [21:34] then C, then D, then E [21:34] by default [21:35] some instructions, such as JMP, will change where that process is "pointing to" [21:35] so if C is a jmp to .. Z [21:35] instead of going A -> B -> C -> D -> E [21:35] that process will go [21:35] A -> B -> Z [21:35] err [21:35] A -> B -> C -> Z [21:35] :P [21:35] no code has changed [21:35] only "where" the process is [21:36] Yeah I get it :P [21:36] so in a vampire, you are dropping a JMP on C, for example [21:36] and Z is code that you have set up [21:36] each process behaves like this, so if the enemy has 3 processes, they each take turns executing [21:37] which means your code at Z executes every 3 turns [21:37] and two unknown enemy processes keep doing their thing [21:37] all that make sense? [21:37] yeah [21:37] now with what you were saying about splits, you could make it so that the code at Z starts with something like [21:37] spl 0 spl 0 [21:38] all of a sudden, your enemy starts creating a bunch of processes [21:38] and in a few turns, it's now your enemy that only gets to do what they want every 10 turns [21:38] because all the processes take turns and now there are a bunch in your code and only 2 "out there" [21:38] Would you be able to protect against this by checking what your next command is? [21:38] no [21:39] all commands are commands, you know? [21:39] but there are no commands to determine where instruction pointers are pointing to [21:39] possible ways to protect against getting stunned include creating a bunch of processes of your own [21:40] what abotu seq and sne [21:40] it takes a lot longer to "slow you down" if you are starting with 1000 processes and the stun code has to build up enough to overwhelm that, while only getting a chance to do so once every 1000 turns [21:41] the information about processes, how many there are, and where they are executing is unavailable to all redcode instructions [21:41] consider it part of the "rules" of the game [21:41] ok [21:41] there ARE ways to detect unwanted changes in the number of procs you have, but that's probably not worth talking about right now :P [21:42] in some cases, the best defense is a good offense etc etc [21:42] truly your best way to protect yourself is to kill them first ;) [21:42] unless you're a paper, i guess [21:42] papers aren't that good at killing things first [21:43] I think I've got it for now [21:43] glad to hear it [21:44] (psst now ask mizcu how to write a q4) [21:44] its only 1am, i still have energy [21:44] Join: fiveop joined #corewars [21:44] lol [21:44] but do you have patience? [21:45] lol [21:45] isn't that a quickscanner? [21:45] yeah [21:45] one of the most complicated ones [21:45] yes, but i dont think Hearty needs to try to digest such a megalump of stuff [21:45] it was in fact a joke :) [21:45] theres an article in cw about them [21:46] yep, there probably is [21:46] pretty sure if I needed to I could go off that for what I need [21:46] my sense of humor keeps getting more and more dull with the approaching "engineer's swedish" [21:46] McHearty: not the same as understanding it [21:46] hell, i understand it but i still haven't written one :P [21:47] anyway, i was just poking fun at him for threatening to facepalm [21:47] by suggesting you ask him to explain one of the most complicated things i could think of at the moment [21:47] It usually takes me a while to get a grasp on things but from there I accell [21:47] * myndzi grins [21:47] accel [21:47] McHearty: spend some time on spelling [21:47] * myndzi whistles innocently [21:47] (excel) [21:47] -_- [21:48] I'm too busy thinking to spell [21:50] mov log_guy, McHearty [21:51] osnap! [22:15] MSG: [22:38] MSG: Quit: humhum [22:42] Hmmm... [22:44] watcha thinking? [22:51] hmm [23:04] I was thinking about koth :-/