Sunday, July 31, 2005



with death



hmmm...

Saturday, July 30, 2005



I knew this would happen... Ive been putting off using the get pixel of the original file for this very reason!

first of all get pixel then using that colour in postscript sucks! I cant even be bothered explaining how long it took to make the damn thing work. and the issues I faced with it, just know im using the old processing not the new one... and that reference dosnt exist anymore... (archive.org, is always my friend), and that at one point I was creating my own conversion function from a packed colour value to hex to rgb all by myself... it really sucked. (I was also trying to split a 32bit int into bytes so that I could seperate the rgb values), In the end I found the correct way of doing it.

how am I supposed to know what little inbuilt functions are called! red (c); $%#*^$%#&£%^("$#354^$&!!!!

and also why the hell does it unpack the colour thing into floats!!!! theyre whole numbers! (yes,yes, im sure theres a very good reason, well guess what Im a beginner and I like things to make sense.)

anyhoo, for Tom and Andy here it is, the get pixel picture... and it sucks.

my whole project sucks.
screw the colour.

Tuesday, July 26, 2005



well I created a terrained level (with the terrain based on the image f the face) to see if It would make things more interesting... I think it ended up confusing things. The image is lost.

Afterall I think part of this whole thing is about removing the 3Dness from something that relys heavily on it. also the whole mapping (making a map from real life (or not) terrain)is a 2D thing. I prefer it how it was

Im going to try a making a terrained level today... one that roughly follows the contours of a face to see how that alters the final drawing...

heres some straight lined piccys from this morning. (20 min game, "inhuman bots")
I think I like the whole "less is more" picture (one post on) these are nice... I dont know, still thinking.



proof! if proof were needed that the damn log file does not read in orderly fashion but takes from whatever bot it chooses.



I went to the trouble of writing rediculous amounts of extra code so that
1. Processing would know how many bots were playing
2. it would create seperate arrays for the positions of those bots (assuming of course that the log file would stick to an order)

so in this case every 20th position would be the same bot, yeah right. If this picture represents the same bot then im a legoman.
bear in mind here that from one point to another represents 1 second!

I knew it was random but I dont know... I thought something great would happen, the picture looks kinda nice but... I dont see no face in there.

besides the picture below looks better and more interesting, the straight lines make it more non-computery... if you get me.

Monday, July 25, 2005



messing about

I'll curve these lines if it kills me! I have a plan to create 1 curved line piccy every second (so like if theres 20 bots therll be 1 20 point curve for that second etc etc.)

Saturday, July 23, 2005

Spoke to Andy yesterday. Was good. He noticed my cheating with the pictures, in that I'd had to shop them to refine the colours. I fully intend for my little code to be able to colour them accuratley by itself but here and now I needed a quick fix for printing.

So yeah my live working code is developing and after talking with Andy he agreed with my idea of disguising the level (making it look more like a propergame of Unreal) so as to increase peoples surprise that the bots are drawing faces. (he also reminded me of something Id forgotton to do, so for future setting up AI spots for bots to act a certain way would be interesting).

He liked my analogy of the bots being my little apprentices (like ages ago when artists would have aprentices who would pretty much paint the whole thing under the supervision of the master who would then sign it and get the credit).

He also like the finding faces in odd places thing (like seeing jesus in a tortilla) which is called pareidolia!

He also gave good advice about the essays which Im going to follow in time for my Derek meeting and liked the idea of me creating a sort of "how to" UT book with important program quirks and how to's (not tutorials!).

Wednesday, July 13, 2005

Okay so I had a bigger statement, like of a few paragraphs, but it was just too long and after reading it a few times I thought the first paragraph was good enough (and general enough) to be my proper paragraph to accompany my piccy. its pretty short but here it is.

Edited... (cuz I forget my url)
-----

My work involves the game Unreal Tournament which is a "first person shooter" computer game and I am using it and the information it generates as an artistic tool, creating from it architecture, sculpture and most recently drawings.

Alison Mealey
www.unrealart.co.uk
alison.organised.info
-----

Tuesday, July 12, 2005



Unreal + processing + Photoshop + A1 + rasterising post script + messing = hours;

actualsize-

Monday, July 11, 2005

For those interested here is the log file that Unreal with my mutator running generates. (this is a game of 1 min)

And here is the final postscript processing code.
.

Im an idiot! Or at the very least I can be thick.

The bots work as I suspected... randomly. Muggins here got all excited when they looked like they were wierd. but there not.

In my defence I didnt get any warnings or errors when building the maps so how was I to know!

If you place a lava volume even slightly on top of a path node then the bot wont run in that direction... I mean their not thick are they why on earth would they happily run towards death (even if they cant see its there).

Im not sure if its because the lava volume is shouting to them "Im gonna kill you", or if its bacause the path node cant shout through the lava volume to tell them its their.

Either way my previous experiments turned up false results, the reason 3 directions were working was bacause in only 3 directions were the pathnodes free from blockages.
Heres what you coulda won...



anyhoo seems pretty random to me, I can make it un-random though by assigning paths different levels of importance, perhaps an important thing to do when attempting to create an illustration.

Friday, July 08, 2005



okay this is messed up... take away their favorite paths of before and they just run in the middle? This cant be right...

well, interesting discoveries today.

Firstly I thought the bots would have quite a bit of random behaviour built-in. Apparently theyre not as random as I thought.

Secondly I believed that different bots would act differently, perhaps one would have a tendancy to always go left... etc.
Aparently not.

Finally I thought that if the player start pointed in a certain direction then the bots would tend to go that way, over other ways.


I created a map which would give the bots choises of which way to go. These pictures were drawn by the bots each bot played for 10 min by themselves.

riker-


hyena-


dominator-


all of them overlayed onto the map and path options. The red dot indicates the direction the player start was pointing-


So what does this mean? right now I have no idea.
they prefer making left turns?
when theres no-one to kill they doont go backwards or right?

oh by the way incase your wondering at the end of the paths I placed a lava volume so that they would die and spaw again in the middle.

One theory I had was that they move towards action, so when they can see themselves floating into the air after death (right after they re-spawn) they run towards it thinking theres people to kill in that direction.

Though that still dosnt really explain why they all went the same direction initially.

Thursday, July 07, 2005

I swear Im seeing things now but this had no bot paths I just wanted a picture of them doing what they usually do, and yet theres a face there... Im sure of it (perhaps they learnt to draw by themselves while I was away)

Tuesday, July 05, 2005



jebus?

Monday, July 04, 2005

ps.setcolours(prettygreycolourf);
ps.drawbigcircles(here,there,everywhere);
ps.fillthelandwithcircles





lovely jubbly

Saturday, July 02, 2005

for those interested. and to save you heartache.

The processing libraries things (like saving postscript or an illustrator file, (thanks to rob for showing me that) ) simply dont work in the new version of processing! (the ones at the bottom, and yes I have just noticed that it says they dont work but why on earth would I read that big bold text line)

Luckily I have the old one and have now got my little files saving away, Im pretty sure you can still download the old version of the website... but maby not. just for the record the libraries work in processing 68 and 69 apparently.

Friday, July 01, 2005


//loop aint working having difficulties with stops!

void setup() {
size (625,625); //was 625 by 625
background(252,255,255);
//stroke(0,0,0);
noStroke();
}


/////////////////////////////////////////////////
//global variables


int stopme = 0;
int count2 = 0;
int starthere = 0;
int endhere = 0;
int dont = 6;
int dont2 = 5;
int i = 0;
String intarr [];
String[] matchstart = { "ScriptLog: START MATCH","Log: appRequestExit(0)", "=" , "ScriptLog:"}; //when to start reading and when to stop
int counter = 0;
int arrlen =0;
int arrnum = 0;
String format;
float thelist[];

///////////////////////////////////////////////
//loop


void draw() {


if(dont2==5) { // read the text file know where it ends
intarr = loadStrings("C:/UT2004/System/UT2004.log"); //will read from correct place
dont2=dont2+1; //dont read the file again till you told!
endhere = intarr.length-1;
// need to minus 1 or errors will abound cuz of writing
starthere = starthere +180;

if (starthere >= endhere){
noLoop();
}

starthere = starthere-180;
}


//////////////////////////////////////////////
//find the relevant lines of the text file (want to speed this process up with a while other wise its stuck in the slow draw loop!)

while(dont == 6) {

if(intarr[i].equals(matchstart[0]) == true) { //check for when to begin
println("we hit start match at");
println(i);
starthere = i+1; //this is where the first x value is situated
println(intarr[starthere]);
i=i+1;
dont=dont+1;
} else {
i=i+1;
} //end start check

/*if(intarr[i].equals(matchstart[1]) == true) { //check for when to stop
println("we hit the end of the match at");
println(i);
endhere = i-1; //this is where the final z value is situated
println (intarr[endhere]);

}*/

}//endwhile

////////////////////////////////////////////////////////////////


if (dont ==7){

counter = starthere;
arrlen = endhere-starthere;
println("the end of the match this time is");
println (endhere);

String justnumstrings [] = new String[arrlen];
//println(justnumstrings.length);


dont=dont+1;
stopme = justnumstrings.length /3;
stopme = (stopme - 50); //divisible by 3
stopme = stopme *3;
//println(stopme); //stop me without big black circle!!!// needs to be divisible by 3


while (counter < endhere){ // start while
String temp [] = split(intarr[counter]);
//println (temp[2]);
if ((temp[0].equals(matchstart[3]) == true) && (temp[2].equals(matchstart[2]) == true)) { //stops log: warning: and error: pissing up the script
justnumstrings[arrnum] = temp[3];
arrnum = arrnum+1;
counter= counter+1;
} else {//could use this to read the whole thing... screw the end of the file
counter= counter+1;
}

} // end while

String format = join(justnumstrings, " ");
thelist = float (split(format));



//println(stopme);
}

/////////////////////////////////////////////////////////////////
//in big draw loop

float temp1 = thelist[count2];
float temp2 = thelist[count2+1];
float temp3 = thelist[count2+2];

temp1 = temp1+10000;
temp2 = temp2+10000;
temp3 = temp3+10000;
temp1 = temp1/32;
temp2 = temp2/32;
temp3 = temp3/32;
temp3=temp3-1;

//println (temp3);
int wihi = int(temp3); //width height

//println(wihi);
//point (temp1, temp2);
fill (0,70); //fill(gray, alpha)
ellipse(temp1, temp2, wihi, wihi);// (x,y,width,height)

if (count2 >= stopme){
//noLoop();
starthere = endhere;

intarr = loadStrings("C:/UT2004/System/UT2004.log"); //will read from correct place
endhere = intarr.length-1;

starthere = starthere +180;

if (starthere >= endhere){
noLoop();
println ("we are not looping");
}
starthere = starthere-180;

count2= 0;
dont = 7;
arrnum = 0;
counter =0;
println("match should start again at");
println (starthere);

//} else {
//noLoop();
//println("endof");
//save("diagonal.tif"); (save a piccy)
//}

}
//println (count2);
count2 = count2+3;

//delay(1000); //if delay is needed
}