Monday, June 27, 2005

processing code dump for today (I just cant be bothered bringing in my laptop). this code kinda works, and kinda dosnt. the aim is to constantly read the text file while it being created and update the processing thingy while Unreal is being played.


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


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

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

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


void draw() {


if(dont<=5) { // read the text file know where it ends
intarr = loadStrings("C:/UT2004/System/UT2004.log"); //will read from correct place
dont=dont+1; //dont read the file again till you told!
}


//////////////////////////////////////////////
//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;
} 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]);

counter = starthere;
arrlen = endhere-starthere;
fixarraygay = arrlen-1;
dont=dont+1;
}
}//endwhile

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


if (dont ==7){

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

while (counter < endhere){
String temp [] = split(intarr[counter]);

justnumstrings[arrnum] = temp[3];

arrnum = arrnum+1;
counter= counter+1;
}

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

fixarraygay= fixarraygay-9;
dont=dont+1;
}

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


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;

point (temp1, temp2);

if (count2 >= fixarraygay){
noLoop();
println("endof");
}

count2 = count2+3;

}

Friday, June 24, 2005

What can I say spent a while thinking about bot pathing, the bots creating environments (sans people) artificial intelligences creating there own environment from their movements.

But then I got carried over the past week or so, away with bot pathing and how different settings of bot (thick or clever) or different mutators can create a different pattern of movement...
then Bot pathing I discovered is quite like drawing with vectors....

then I did a series of experiments using my old watcher mutator and the processing code I made earlier. (and obviously a pretty nifty map I made with bot paths everyfingwhere)


This picture was created with the "super arena" and "super beserk" mod running, and using "masterful" bots.


This picture was created using "masterful" bots.



This picture was created using "novice" bots.



This picture was created using "godlike" bots.



I modified the levels bot paths here as I thought important features were being missed out, the bots are "godlike".



Im sure you seen the pettern emerging here but just incase overlay all the piccys over each other and what dy get?


and I couldnt resist a slight adjustment based on the illustration that inspired the bots paths.

Just incase your not too clear how bot pathing works... you give them a rough estimate of what is a "good way" to utilise the level (usually paths will lead to guns and ammo etc), then you let them play, obviously they have minds of their own and make descisions on where to walk based on things like who shooting them at the time, they do however remember the paths are there and try to follow them roughly.

You might have noticed that the "godlike" bots felt freer to deviate from the paths than the novice bots... which I think is really interesting and something that wouldnt have been discovered had they not been leaving breadcrumbs as they walk.

My bot pathing pic


meant to say that each of the games that created the images above were played by bots only, I spectated... each match was 30 mins long (initially there were only 15 players, in the end I think there were 25)

bot pathing... hmmm interesting, ideas forming, come my pretties come.

Thursday, June 16, 2005

Its always the same... no posts for ages then 5 turn up all at once. I made this a while ago, and Im sure its important to my project I just dont know how yet.

When you treat a CD badly sometimes It'll get to the point where its wont install anymore. This happened with my copy of Mafia, but I wouldnt take no for an answer and used a vicious method of forcing it to install whatever it could, allowing files to be there that were corrupted or simply empty.

Well god knows how, but the game believed it had installed itself properly... it however forget one important bundle, the textures and I love it for it, especially as I have all the save games and can play all the movies like this.

Enjoy, my god its beautiful. (and I'm not talking about the preloader)






Thinking a pleasentville type unreal game... cept textures rather than colours (where the abscence of textures will be the goal)

one player moves at the bottom and the geometry falls into place, one player moves around ontop and the world falls away.

triggers that will "construct" geometry where you have just walked.

Wednesday, June 15, 2005

Freedom from pixel art! I can now concentrate on Unreal fully...

An interesting "experiment" (what happens when you forget to build paths before you test the map in the game) I have a proper full size version of this that runs for about 5 min without looping, its quite disturbing really.