Allegro.cc - Online Community

Allegro.cc Forums » Game Design & Concepts » Mutating Programs

This thread is locked; no one can reply to it. rss feed Print
Mutating Programs
Carrus85
Member #2,633
August 2002
avatar

Now what would be cool is if everyone submitted there own programism and we ran it on someones machine and see how the interact. The only problem is that we REALLY BADLY need some form of 'master' program to monitor everything... That way we can trace what exactly is being changed on some of the runtimes, and if it gets to hectic on the processor, we could trigger Armegeddon or the Ice Age or something...

Billybob
Member #3,136
January 2003

I thought about DLLs as well, cause one time(this was when I hadn't perfected the Progranism) a strain came up that didn't mutate...but I figure, hey, if they don't want to mutate, then they don't want to mutate, I ain't going to force them :) Free Will system idea.

P.S. YEa, I know, that last statement is kinda funny cause my name is will...

CGamesPlay
Member #2,559
July 2002
avatar

Ok, somebody write some interface that uses A VM!!!!!!!!! and I'll be happy to offer my system as a test bed. The VM can get whatever information it needs about my system, but can't change nothin important.

Bother me enough (read: ask me nicely) and I just might write you your own machine language to use.

--
Tomasu: Every time you read this: hugging!

Ryan Patterson - <http://cgamesplay.com/>

Kanzure
Member #3,669
July 2003
avatar

Master program is needed.

Should we do a Program Organic Compition?

Maybe William shall design that one master thingy, and all ours MUST run under that...

X-G
Member #856
December 2000
avatar

CGP: How about using an emulator like Bochs to act as a VM?

--
Since 2008-Jun-18, democracy in Sweden is dead. | 悪霊退散!悪霊退散!怨霊、物の怪、困った時は ドーマン!セーマン!ドーマン!セーマン! 直ぐに呼びましょう陰陽師レッツゴー!

Billybob
Member #3,136
January 2003

QUESTION: Java....how bout that? Can Java access and run files on the computer? Java would be nice, cause it compiles and has tons of checking.

Carrus85
Member #2,633
August 2002
avatar

The number one problem is, that in order to avoid massive unrunable applications, they need to be in bytecode. True, we could most likely use java as the VM or something...

Note: Is it just me or is this post getting really long real fast? May I suggest a move to IRC?

Kanzure
Member #3,669
July 2003
avatar

We must make sure the Master Program can spawn 2 at once, maybe the first one running while the other one is spawming.

Also, the master program will monitor the top parts where the VITAL crap is, so if that is changed, it is re-changed so it will still run.

CGamesPlay
Member #2,559
July 2002
avatar

X-G: Eh? An ix86 emulator? that'd be kewl, then they could run in protected mode and stuff, not having to worry about an OS or nothin.
But having custom-made VM would be kewl, because you can create all kinds of intresting simulations that might be really wacky.

Seeing as how I need practice writing VMs, I think I'll do it anyways and if people use it, they use it :P

[edit]
Kanzure: Do you realize how impossibly hard that'll be on WIndows? Too much work.

--
Tomasu: Every time you read this: hugging!

Ryan Patterson - <http://cgamesplay.com/>

Kanzure
Member #3,669
July 2003
avatar

CG, make sure it can change the vital information so everything will run even if it was already changed..MAKE IT OPEN SOURCE :P

Billybob
Member #3,136
January 2003

having to re-write the progranisms for a VM without a C++ compiler will suck, I'm dumb!. I might write a VM...or not, I got to work on my German homework... :-/

Carrus85
Member #2,633
August 2002
avatar

Now, if, in essence, we could implement some way to maintain certian portions of the code (Aka. Refrain from having there bytecode edited) this could prove VERY useful.

The only thing I can think if is to find the EXACT INDEX in the file that the vital information starts at, and have the program only alter code beyond that. But, once again, this would mean that a mutation in the code could always mess up the vital information anyway. No matter how you spin it, it is kinda pointless to retain vital code.

One more thing on the process overload... If there is an easy way to kill processes in windows, we could further the evolution of the programs by 'destroying' random processes once the CPU starts choking because of the number of processes.

CGamesPlay
Member #2,559
July 2002
avatar

Ok, plan for the VM, should you like to use it:

Instructions, in ASM like format:

mov     l1, l2      ; Moves l2 to l1
xor     l1, l2, l3  ; XORs l1 with l2, stored in l3
or      l1, l2, l3  ; ORs ...
and     l1, l2, l3  ; ANDs....
not     l1, l2      ; Inverts l1  and stores in l2
cmp     l1, l2      ; Compares l1 with l2.
jl      l1          ; Executes at l1 if the previous cmp had l1 < l2
jg      l1          ; ... l1 > l2
je      l1          ; ... l1 == l2
jmp     l1          ; Continues execution at l1

Anything else?

To keep consistancy, each instruction will be the same size, so programs don't have to worry about that.

Also, you'll note the lack of registers. Also, the code segment is indistingusished from the data segment for extra fun :)

--
Tomasu: Every time you read this: hugging!

Ryan Patterson - <http://cgamesplay.com/>

X-G
Member #856
December 2000
avatar

You've got the order with mov wrong. ANd boolean operations take two parameters as well. And make sure to have aliases for jl, jg, je, etc.

--
Since 2008-Jun-18, democracy in Sweden is dead. | 悪霊退散!悪霊退散!怨霊、物の怪、困った時は ドーマン!セーマン!ドーマン!セーマン! 直ぐに呼びましょう陰陽師レッツゴー!

Kanzure
Member #3,669
July 2003
avatar

Quote:

Now, if, in essence, we could implement some way to maintain certian portions of the code (Aka. Refrain from having there bytecode edited) this could prove VERY useful.

Yup..We need to maybe figure out the vital parts, not DLL crap, but ... other..stuff...

William - can you write a special prog thing that only writes to 1 new file, and runs that 1 new file? That way...well, it wouldn't take up that much memory..

(WORTHLESS 128 MEG OF RAM LAPTOP)

Billybob
Member #3,136
January 2003

You cant stop the Progranisms once they've stated, trust me. If you start a progranism and wait more than a couple of minutes, you HAVE to do a cold shutdown, they grow so fast you can't kill them all AND once the CPU is maxed, you can't open the task manager. Also, killing random progranisms is bad, because there is no pattern behind the killing, they'll never figure out what's happening and thus can never adapt to it, there must be a method to the destruction, so they can figure out how to counter the threat >8)

Carrus85
Member #2,633
August 2002
avatar

Ok, so you don't kill random progranisms, you just kill the progranisms that are the smallest on disk or something...

CGamesPlay
Member #2,559
July 2002
avatar

Or just run it in a VM :)

X-G: No, the bitwise ops will take 3 params because of the lack of registers.

[edit]
Also, I could do it as a tree instead, prolly be better for this application. Any takers?

--
Tomasu: Every time you read this: hugging!

Ryan Patterson - <http://cgamesplay.com/>

X-G
Member #856
December 2000
avatar

How many registers does your VM have? Three is pretty much minimum ...

--
Since 2008-Jun-18, democracy in Sweden is dead. | 悪霊退散!悪霊退散!怨霊、物の怪、困った時は ドーマン!セーマン!ドーマン!セーマン! 直ぐに呼びましょう陰陽師レッツゴー!

CGamesPlay
Member #2,559
July 2002
avatar

X-G: The apps are designed to do one thing: Get themselves wasted 8-) They shouldn't have registers. They can use already executed code space as registers :P

[edit]
However I really think the tree application would be better here.

--
Tomasu: Every time you read this: hugging!

Ryan Patterson - <http://cgamesplay.com/>

Carrus85
Member #2,633
August 2002
avatar

Now what would be funny is if a program 'adapted' to take control of the VM itself and started going Rogue on your system. That would be hillarious.

And, come to think of it, you could implement some form of list in memory of all currently running processes. You could reduce the processor load by only running 10-20 at a time and cycling to another set...

Billybob
Member #3,136
January 2003

Well, I guess I'm ok with ASM, just as long as you document everything well for us half-non-asm'ers, heh.

X-G
Member #856
December 2000
avatar

CGP: You're going to need the C register at the very least. :P

--
Since 2008-Jun-18, democracy in Sweden is dead. | 悪霊退散!悪霊退散!怨霊、物の怪、困った時は ドーマン!セーマン!ドーマン!セーマン! 直ぐに呼びましょう陰陽師レッツゴー!

Carrus85
Member #2,633
August 2002
avatar

Move to IRC, anyone? That way we don't have to keep hitting refresh every 10 seconds, and someone could just log the chat to post it on here...

CGamesPlay
Member #2,559
July 2002
avatar

Well, the tree would be kewl, because there could be a node that decided to change other nodes, and it would work much better and more efficiently than just a string of bytes. Altough, consider other possibilities as well.

Perhaps model an actual cell's function as it joins with others?
Perhaps model a neural network that can rewire itself as other neurons are more active?
Perhaps a box of hairpins that makes shapes of it's own accord?

No idea is too off, here :)

Carrus: gimme a channel :)

--
Tomasu: Every time you read this: hugging!

Ryan Patterson - <http://cgamesplay.com/>



Go to: