PDA

View Full Version : Programming a personality



Pages : [1] 2

OBCT
January 31st, 2004, 09:43 AM
To start off, I have had a long day of work and I'm very tired but I won't be able to sleep until I make this post. :puzzle:
So bare with me...

I have seen basic AI that just use 'conditions' such as 'if', 'else' etc but I was wondering if it was possible to program AI that is capable of learning. If this is possible, how would one go about doing such a thing.
The only two ways I could think of doing this is...
1) To store strings of information in one big fat dirty database then having a wonder class that will do all the rest itself (i wish)
2) To write new code into itself.
I'm pretty sure that if 2 was possible, it would be considered a virus. (If its not true...blame pc-cillin...I learnt that from their site)

Obviously alot of this stuff would require the use of more...advanced (if you will) scripting languages such as java, c++.

Well...I totally forgot what I was getting to :a:

Ok...

Lets say we have a movie clip of a ball that randomly slides around the screen.
After 5 minutes, the ball realizes that my mouse spends most of its time sitting still on the bottom left corner, so it writes a function to keep the ball mc away from that area to prevent the ball from sitting ontop of any content.
Make sense?

Something like these examples/ideas must be possible if NASA can put a cool looking robot that basically thinks for itself.
On the other hand...I'm sure most people reading this don't have a 10 billion dollar budget, so I'll you a bit of slack ;)

Anyway, I'm starting to not make sense so I shall retire to my bed. :D

Please feel free to give any examples, ideas, tips + hints, limitations, links etc etc etc

Cheers

-OBCT

P.S - Try say the sentence below 5 times as fast as you can

"The O to the B to the C to the T"

alzor
January 31st, 2004, 12:54 PM
I dont know if its possible with flash, but maybe it is, Im sure something like this would require a very knowledgable expert, Im not even going to try, (Im in no way even a moderately knowledgable expert or even an expert at all lol) but it does sound interesting, and maybe even possible. Im sure whoever is the first to do this would achieve much fame within the flash programming community.

nobody
January 31st, 2004, 02:36 PM
Well the ball thing after 5 minutes wouldn't be too excessively complicated.
Basically you would just get the coordinates of your mouse through some script ever say 2 or 3 seconds. Then you would just have to make a script that found the average of all of those, or maybe the value that was stored the most, and then you could call that number in another script that keeps the ball or whatever away from that point.
I don't know the code or anything on how to do that, but that seems like a logical way to me.
As far as flash actionscript being able to think for itself and what not I have not the slightest idea, but I imagine it would be quite difficult, because actionscript was in no way designed for that.
Good luck to ya.

GreenLantern
February 4th, 2004, 01:46 AM
I really like this idea.

I once wrote an IRC script that talk to other people and it would learn phrases if people said them frequently enough, and repeat them in conversation.

AI is a neat kind of programming. I would be interested in working on an AI project if anybody is going to start one up.

OBCT
February 4th, 2004, 01:51 AM
I would be interested in working on an AI project if anybody is going to start one up.

Funny you said that, because I was planning on making a post to get some people interested in a group project.

So I'm up for it :beam:

I love challenges. They drive me insane but I can't seem to keep away from them. :p

Looking forward to working with you and anyone else who's interested.

Cheers

-OBCT

GreenLantern
February 4th, 2004, 02:04 AM
So what is the general plan? What will this program do?

OBCT
February 4th, 2004, 02:20 AM
Tis a good question :elderly:

I guess first we have to figure out what our limits are to prevent us from trying to achieve the impossible.
Personally I like a program to look good, keep you interested and to be a bit original.
Of course I'm open to anyones ideas.

Is it possible to set up poll's on this forum? If so, we could get a general idea of what everyone would like to see/use/make.

GreenLantern
February 4th, 2004, 02:33 AM
I think we should create a few solid ideas based on the idea of "Creating a program with personality"

One idea that I have been thinking about is a program like the game "The Sims" Where you have to take care of a person, keep them in a good mood, ect.

What do you think?

OBCT
February 4th, 2004, 02:37 AM
Yeh that sounds like a great idea.
I'll have a look through all my scripts to see if I have anything we could use.

OBCT
February 4th, 2004, 02:46 AM
Just an idea for the personality variables...we could have each personality trait as a public var that will return a number between 1 and 100.

public var __attentionSpan:Number;
public var __happyness:Number;
//etc etc etc

Of course, we would need AS2.0 for that but it's just a thought.

GreenLantern
February 4th, 2004, 05:12 AM
ya I like that idea.

Every personality trait would be on a scale of 1 to 10. Then you could base their actions on a formula that is applied to certain traits.

OBCT
February 4th, 2004, 05:28 AM
Do you think we should have the option to save the character traits onto a blank text file so user's can slowly develop a character.
E.g.

saveBtn.onRelease = function()
{
fscommand ("save", name+".txt");
loadVariablesNum ("blank.txt", 0);
}

Using loadVars would probably work as well...I just havn't tried it.
Another option could be using Access, MySQL or any other database like that. The problem with that is that we'd need a server.

So how are we going to interact with our person/character?
Any ideas?

GreenLantern
February 4th, 2004, 06:36 AM
i'm more of a loadVars kind of guy myself. I'm not even really familiar with the fscommand stuff.

I definitely think that it needs to be involved with a database somehow. Should that be later on in the project? In other words, should it be up and running before we worry about saving to a database, or should we just go balls out?

I will have to sleep on the interaction process. There are several different ways to go about it. What is probably going to have to be done, is that we are going to have to design an environment that can be interacted with.

So what is the name of this project?

OBCT
February 4th, 2004, 06:58 AM
i'm more of a loadVars kind of guy myself.
Excelent =) I hate loadVariablesNum

I can do all the frame work for the database if we use PHP and MySQL because I can test it out on my work server but I can't keep it up for public use. Any language will do the job so we'll figure that out when we get more people and more stuff organised.
Doing the server side while we're doing the ActionScript will save everyone alot of time and effort looking back over code and trying to find which variables need sending/recieving for which page etc etc etc

A name............
hm.............................

I'm not really good with names so I'm happy with whatever.

Now we need to get some more people togeather...how we do this, I'm not sure. :q:

OBCT
February 4th, 2004, 06:59 AM
BTW, that little RedMirrorBall swf has been keeping me busy for ages!

GreenLantern
February 4th, 2004, 08:53 AM
ya i've been trying to think of something else to do with it. Like when you click on it, it divides or something.

Marz
February 4th, 2004, 11:23 AM
Hmm... *lol*...

Interesting enough... A personality that is ever changing is a human mind. The human mind is very very hard to program.

How do you program a complex mixture emotion / feelings to a computer AI?

Now... You mix a certain degree of logic in with some emotions and then blend that all together with total unpredictability. And there my friends, you get a personality AI.

I would help. If I had the time.. But like everything else.. My project list is in the double digit figures.

SeiferTim
February 4th, 2004, 11:39 AM
With all the stuff Marz is doing, I'm starting to suspect he's secretly cloned himself... I'm on to you... :te:

GreenLantern
February 4th, 2004, 11:39 AM
I don't think it will be anything that complex. Not human.

I was thinking at first we could have 4 different dots. Based on the personality of the "thing" it would move to one of the four dots. You duplicate dots with random "e-motions" and let them loose.

The program can grow from there, but that would be a cool start.

SeiferTim
February 4th, 2004, 11:51 AM
You posted at the same time as me, RedMirror... you're talking about Artificial Life, not AI... Artificial Life is a bit easier to work with, since you're emulating the actions of life-forms... I've seen a few nice looking examples around on the Net, I've been seeing them around for years... Mostly they have to deal with artificial Single-celled organisims.

GreenLantern
February 4th, 2004, 11:54 AM
I think that AL can be translated to AI. Instead of objects you are just gravitating to ideas, thoughts, ect.

Johnny64
February 4th, 2004, 12:00 PM
Cool.....this cool :D I what to help :)

and i have a server that can de used :D
it has php and i have 2 MySQL db's.

GreenLantern
February 4th, 2004, 12:01 PM
and your in this thread and i can play with your footer while i sit in here.

SWEEEET!!!!

hahaha

anyway what do you have to say there master?

Johnny64
February 4th, 2004, 01:17 PM
dunno :P
am goed at finding a ways to script things so if you say you what some thing like this and like that i can most of the time think of a good way to script it :D

Marz
February 4th, 2004, 01:55 PM
Originally posted by SeiferTim
With all the stuff Marz is doing, I'm starting to suspect he's secretly cloned himself... I'm on to you... :te:

:trout: from the right side while at the same time a :trout: from the left side.

Cloning... What's that? :whistle: :run:

WarrOrange
February 4th, 2004, 04:04 PM
well im not sure EXACTLY what you are talking about with the dots thing mirror but tell me if this is the kind of AS your talking about

www.geocities.com/scuba875/Emotion.fla

anyway that is a very rough layout of what you could possible mean, but i was just trying to get my point across... ya but take any AS you would want.. g/l!

aussy
February 4th, 2004, 04:28 PM
Hey guys, I'm a member since like a year ago, but haven't really been doing flash stuff for a while. IMO, this would be a good start.

You would start out with the person or thing at a random mood, let's say 1-100 (100 being the best mood, 1 being the worst).

The mood should gradually go up or down by lets say a random 1-5 every random 1-5 seconds. Then, there would be kinda numerous checkpoints at every lets say 10 points. When the mood ends up passing through one of those "checkpoints", then it would be chosen randomly to go randomly down, or randomly up.

That's just my idea for a basic emotion like thing, but I would suggest it staying around 50 for the most part, and make the mood kinda gravitate toward 50.

Then, you could add in all these other factors. You could put liek weather or something in there, and when it's rainy, the mood decreases faster, and visa versa when its sunny. And then you could give treats, etc etc etc. Basically we're thinking about making a tomagotchi here :smirk:

zeka
February 4th, 2004, 05:43 PM
like MOPYFISH! :P

WarrOrange
February 4th, 2004, 05:46 PM
..... riight..... lets not get off subject plz

OBCT
February 4th, 2004, 11:00 PM
I've got a few ideas but they will need alot of planning and thinking through.
If our character/person can interact with the user, we could do it several ways. (Probably alot more)
- The character has human needs
- Sleep
- Food
- Love etc
- The character could also talk to us using an array of questions and answers

When we feed our character for example....

feed = function(amount)
{
this.character.hunger -= amount;
this.character.happiness += amout;
}

This is just an example of one way to change the characters feelings on the event of interaction.

We'll need a list of personality traits to create variables for and also a list of physical needs (food, water etc)

I'll try some stuff out with some classes and see if we can get a base to work with.

Spirit-Z3RO
February 5th, 2004, 08:29 AM
whOA, this is exactly what I've always wondered if a team could be put together to do all this.
Hai everyone =) I'm a noobie flasher, but a deep thinker (and so everyone tells me).
Are we building a gigapet or are we making something somewhat alike to Chobits?
If you dunno what that is, here's a site that tells a little bit about it, just found it off yahoo =) http://www.chobitsdvd.com

I'm not sure if what other's have posted are the same thing as what I'm thinking but I thought of a few things...

Personailty - Temper of the "thing" should be decided to see how easily it'd tick "it" off. Let's pretend that on a scale of 1 - 10, one meaning easily angered, and 10 meaning hard to anger. Our "Thing" here has an anger scale of 8, takes a bit to piss off. Then we have events that happen (such as things we say/type to it, if we play with it, if we forget to feed it or take it out for dinner, ect) and each good/bad thing increases or decreases the scale of the 1 - 10 starting off at 8. After that, we can have its mood return to normal status over a period of time. The recovery can be based on a formula (i'd make it right now, but almost time for school >< life of a 16 year old -_-). Or we could cheer it up, and wether it'd let us cheer it up or not, we can also set up a formula for how spoiled (a brat) it is. Then we make ANOTHER for how fast that temper scale recovers.
The same concept can be applied again and again on different traits of this "Thing".

Honda is doing the same thing... but doing the major budget project called ASIMO

http://world.honda.com/ASIMO/

Anyway, bunch of ideas in the past have flown through my head. I'm quite excited about this, so excited, I probably didn't make any sense above, maybe even missed out a few words as I typed. I'll try to remember all those ideas (and take note of them this time) and post more in the future. Hope my message wasn't a bother to read (who knows, maybe a waste of time to some of ya :p)

School time.. sigh.... drama allllllllll over again:asleep:

Oh yeah! also, the hardest part (to me) seems to be how are we (if it's alright to say "we" :p) going about making the "Thing" recognize what we say/type to it. Such as a textbox for words (but then... maybe it's not so hard...? Is it about the same as seach engines?).

OBCT
February 5th, 2004, 08:38 AM
Spirit-Z3RO,

I have been searching high and low for an algorithm to use as a personality. Your welcome to work on any way you think is best for a formula and/or algorithm. :)
If you don't think you have the ability to apply it, the group and myself will happily help you out.
Anyway I have to finish up work for tonight.

One more thing...
I was thinking about having the ability to talk to the character. We could do this via xml...I've already writtin up a class to parse the data (I'll post it tomorrow). Of course implementing (is that a word?) the xml nodes will certainly need some work.

Cheers

Spirit-Z3RO
February 5th, 2004, 08:48 AM
Whoa, i edited a minute after u posted, lookie that. What's algorithm..? ! dictionary.com!

Algorithm - A step-by-step problem-solving procedure, especially an established, recursive computational procedure for solving a problem in a finite number of steps.

I see.

About the talking thing, I remember way back when I wanted to learn spanish and so I checked out books/CD's from the library. Part of the program, from the CD, says a word and tells you to repeat it. My memory is blurry, but I think it actually heard me saying the word out loud (I felt like an idiot being alone in a room and saying words in spanish to my computer) and if I remember right, it took the frequencies of my voice... We didn't have a mic... !?WHA!? Maybe there was a built in one, I just didn't know about it.

Anyway, since I'm posting again, might as well use it well.
For emotions such as happiness and stuff, we don't have to have a set varieble. We can have it linger up and down a few numbers. You know how you'd get mad at something and then later on forget about it or calmed down a little, but when you think back at it, it just pisses you off like no other, sometimes more than you were before (since u had time to think of other reasons to blame someone else for having cops called on you at a party), and the same for when you're sad (I still don't get it... why did she... wh... :'( ).

Bleh, gotta go shower now =)

OBCT
February 5th, 2004, 09:02 AM
I'll give you a quick example of how we would use emotion.

Character Bob
Temper = 7 //Constant
happiness = 8 //Constant

currentHappiness = 6.5 //Variable
currentTollerance = 4 //Variable

*Throws ball at bob*

The ball hitting him has a 'temper value' of 1-3 (random between those values)

Now we would use some type of formula that mathematically figure out how the event effects bob depending on his personality (constants) traits and current state of mind (variables)

In the scripting for this...to have the ability to change his/her personality...we will need to use those constants as variables which very slowly change (over hours or even weeks)

As for the ability to talk to the character...that will have to be done via string inputs. Flash supports microphones however not well enough to write voice recognition classes.

Johnny64
February 5th, 2004, 10:03 AM
here is a random moving function. for if we what your "sim" to move around randomly but i can change it if your guys want the "sim" ake Johny to move bepending on his mood.


move = function() {
if (!Math.floor(Math.random()*20) || this.angle == undefined) {
this.angle = Math.random()*360;
}
this._x += Math.cos(this.angle*(Math.PI/180))*this.speed;
this._y += Math.sin(this.angle*(Math.PI/180))*this.speed;
};

:pleased:

thoriphes
February 5th, 2004, 10:21 AM
I am really interested in this. I've always wondered too, how an AI would "learn". On a different scale, how would it "remember".

I've theorized on having an AI write/create its own functions based on what it's learned, but then yet another problem surfaced: how could you possibly have an AI write to itself? From there, I thought, should I let it modify itself? What if it screws itself up, or worse, take total control somehow?

I haven't really started programming in any learning AI, but I have certainly hypothesized of one. Functionality, application, whatnot.

OBCT
February 5th, 2004, 10:32 AM
We don't have to worry about that.
These are the reasons

1) We havn't figured out a way to let itself create new functions......yet......(we can dream :) )
2) You can limit how much it would learn
3) All it takes is pressing the delete button, and problem solved.

As for remembering things... we're going to use a database to store ALL our variables. Seeing most character traits will always be changing, the database will be updated then over time our character could go from being totally happy to a complete a**

Have a look through some tutorials 'Mars' has writtin. Aparently they're very good for anyone who wants to learn AI in Flash.

OBCT
February 5th, 2004, 10:33 AM
BTW Master64,

Thanks for that little bit of script!! Everything helps :D

Cheers

SeiferTim
February 5th, 2004, 11:28 AM
This is starting to get really interesting... I made a Virtual pet back in High-School for the Math Fair (I used QBasic), it was a Virtual Zombie. It wasn't really anything elaborate, in fact it was pretty crappy. But I won second prize: $50. Look, for 9th grade, $50 is pretty spiffy :D. So then my Senior Year, I had a class called: "Indpendant Study in Computer Science". Best class EVER. My Assignment was to spend the entire year making a program to turn in at the end of the year. I first made a monopoly game in VB, and was 99.8% finished when we all went on Winter Break, and when I returned, discovered that they had ghosted all the machines. Crap. So for the rest of the year I re- made my Zombie program in VB, added some Flash (Ah, good ol' Flash ver 3.0) Essentially, you could build your zombie from different parts(different arms, heads, etc.) and each piece had it's own attributes. Then, the Zombie would stand there, and as time went on would get hungry, tired, etc, and you had to PLay, Feed, or Punish the Zombie to keep it in line. I added some other intersting bits: The hungrier the Zombie was, the Angrier it would become, and faster, and if you punished it too much, it's disciple would stop going down (it would become immune to the punishments), All in all, it was a pretty sweet program, despite the fact that the graphics were pretty lame (except for the death scenes I made in flash, which generaly showed a giant zombie head trying to eat you...), and I got an A on it.
I might still have a ZIP of it somewhere... possibly... I'd have to track it down.
Once my PCs up and running again (come on refund check!) I'd love to help out with this. :D :D

Spirit-Z3RO
February 5th, 2004, 12:17 PM
You know... when I first saw this post, I had goosebumps everywhere (ok, not literally) thinking that something like "Chobits" would come along. But the more I thought about it, the more it became a gigapet. We can make it sad, happy, learn, forget, and remember. But it's all in the program. If the "thing" (lets give it a name already :-/ and I've always saw the "thing" as female the first time it crossed my mind) had a delima, which would it pick? Would it just freak out and go on an infinite loop trying to pick both of them at the same time? Or will it just pick one just because out of calculations instead of what it'd like.

Anyway, I was just thinking about this until this hour (2nd period) and
SOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOooooooooooooo oooooooooooooooooooooooooo........................ ....

I was thinking, why don't we make it grow? As it grows, it's personality gets set due to the way we treat it. It may grow up to be lonely, may grow up to be happy, may grow up to be a mean man eating zombie, whatever.
I see it as this.

*click click*
"Initializing..."
"Loading (This project's name) Character Settings..."
*Settings for your Thing comes up*
*Skips the Upload Custom Character. Clicks on Female – Options for a female character comes up -- Clicks on: Xhair, Xhaircolor, Xhead, Xeyes, Xnose, Xmouth, Xbody, Xlegs, Xskincolor, X(clothing, jewelry, ect)*
(And to be appropriate, there are no major details to the appearance of the Things)
*Scrolls down and sets Character Growth Rate then sets ForeverYoung instead of AgeNwither, then sets Age to 25*

-=*=- OK, my teacher FREAKING out on me thinking I'm in my E-mail (prohibited) and so I copy and pasted this whole message onto a notepad -=*=-

"Hi, my name is ______. I am your (our Thing's name)."
*types in "hi"*
“^_^”

Sigh, class is almost over, now I'm copy+pasting this over before he sees me. I'll explain what all that stuff up there is and a little bit more once I get home.

SeiferTim
February 5th, 2004, 02:05 PM
OK, my teacher FREAKING out on me thinking I'm in my E-mail


Show them what you're actually doing, and I bet they'll be impressed. You seem to have a very good grasp on this topic...

Spirit-Z3RO
February 5th, 2004, 02:46 PM
Funny how I am yet in another class that's making me come to the school computers. Pretty nice ones too, about 30 P4 compac computers.

OK, anyway, back to what I was saying... an hour ago.

Let's call this girl, "Ayumi"

So I picked a gender (female) and the way she looked. Then I chose if she'd stay young or if she'd grow old and die and such.

So lets have her scale of Happiness be set by how well you treat her and same with everything else about her (personality wise). So setting the age to 25 means that's when her personality finally is SET. Once it's set, the formula below is applied

Anger = # from 1 - 10, in this case 3 (you called her fat)
Temper = # from 1 - 10, in this case 8
timeElapsed = Time elapsed since you've angered her, in this case 12 minutes have passed
year = 356
hour = 8
seconds = 60
hour = 60
temperRecoveryRate = hour/((temper - anger)/timeElapsed/year)/seconds/minutes
.... AHHHHHHHHHHH I JUST THOUGHT OF SOMETHING COMPELTELY NEW, not sure if it'll work though, I'll work on it, lunch time =)

Yeldarb
February 5th, 2004, 02:55 PM
hey guys, i'd love to help in any way possible, I have a server that can be used, but it only has 100 mb space and 5 gb transfer per mont, but if that will work, i've been looking for something to do with it. I was thinking of doing an open source flash/php/html/photoshop site, but this would be a cool use too.

I also know some actionscript, I'm not as good as some of the others here, but I like to think I am pretty good. :P If you need any help, just hollar. :)

SeiferTim
February 5th, 2004, 03:20 PM
You should give her a "Memory" Variable, which would detemine how long it takes before she 'forgets' something, which you can then attach to anything else you might want to. In the background, there should always be a timer going, and she should 'remember' recent events more vividly than older events.
So say her memory rating is 20, which (I'm simplifying it a bunch) says that anything that happened >20 minutes ago, won't be fresh in her mind anymore, but should something 'remind' her of the incident, she can then pull it back up again.... for example:

We seem to be keeping a "piss her off" kind of theme... I guess I know how our love-lifes have been... ;) So let's say that at 10:00, you say something that makes her mad. let's say you say that don't like her dress... Her anger goes up, her behaviour goes down, and until 10:21, if you anger her further, anger++, and behaviour--. And if you try to cheer her up, or appoligize (unless you do something really good, say Make-Up Action > Anger Action), she'll pretty much be in a pissy mood, and not speak to you, and won't be able to forgive you... But at 10:21, her anger and behaviour will slowly return to normal, and appology attempts will be more successful. Now lets say at 11:30 you say something that reminds her that you made her upset before, like, say you mention the word dress, in connection with another person ("Oh, I like the dress she's wearing", or something), she'll be able to 'remember' that you hated her dress, and she'll snap at you.

Well, this is generally how I imagine my wife's brain works... ;) Shhh... don't tell her I said that... :P Now you can also attach the Memory value to other things, like things she likes, or things she sees/hears, or learns.... I can think up a few variables later on, and post them up here... I think this might end up leaving the ActionScripting World, and become a more advanced piece of program, if we manage to pull it off... this is fun! I haven't felt so alive, and part of a whole! I know, I'm getting all sappy... I just haven't really had a chance to do a whole lot of programming since High-School, and nothing this cutting-edge...

SeiferTim
February 5th, 2004, 04:00 PM
Okay, been thinking. Took my Lunch Break, fed my brain....
I would like to start structuring this project a little bit, so I'm going to list some things that I think should be focused on, and we'll see what's up.

For right now, do we want to create the project is a way to allow random personalities? Or should we make one that every-time it's reset is going to be the same. Personally, for right now at least, I would prefer the latter, we can always make a second incarnation later.

For lack of a better term, and thanks to Spirit-z3ro, lets tentatively call this: "Project Ayumi".

My vision (which i want other people to add/adapt/or change to fit what we all want to do) is to create a program that can effectively behave in a manner similar to a living being, not quite sentient, or AI... more like a Virtual Pet, or a Sim, but much, much more complex. Here's the problem (and I think someone else mentioned this before) behavior is based on experience, and experience is based on environment. We can't have Ayumi act like a text box, or chat program, and expect her to understand: "It's hot today", if she has no concept of heat. Or take offense at: "You look fat", if she has no concept of what 'looking' is, or what fat is. So, we'll HAVE to build an interactive environment for her to exist. I envision a small house, which we can graphically display, and fill with objects that she can use, and that the user can also interact with. She'll basically start out with a few "instincts", for things that she'll need to know how to do in order to function, like walk, and look, and things. We'll have to program it in there, somehow, that if Ayumi wants to go from point A to point B, this is how she does it. How she determines what point B, and why she wants to get there, should be up to her. While I think it will be possible to get her to understand english language, I don't know if we should start by working out a way for her to 'talk' back to us in english. She should (temporarly) communicate with us through word-ballon type things, and by her behaviour - like a child, or mute person.
As far as teaching language, it should work like word-association... think Sesame street. If she doesn't know a word, she should be able to "ask" what the word is, and then you can "describe" it, by showing her something in her environment. Say you say "Ball", and she doesn't know what a Ball is, you can hand her a ball. It's going to get real complicated... heh heh... she won't be able to understand everything, obviously... and we should allow her to associate words with other words... like: If you tell her that a "Ball" is to "play" with, and "play"ing is "fun", and if having "fun" makes you "happy", then if she is not "happy", if she learns correctly, she'll go pick up a "ball"...
This is a BIG project... heh heh... let me know your opinons, and stuff.. if I'm on the right track, or if I'm out of my mind... :sure:

Also, when I finally get my PC running again, I've been running an Apache Server, with my files on it for my other projects. I could (if people lend a hand) make a "Project Ayumi" server, and run both a web-site, and a way to share files between project members, if you guys want. I think that if we get enough hard-working people together, this can become a big thing. :D

Marz
February 5th, 2004, 04:25 PM
Allright guys.. I figured I'd voice my entire opinion on a couple of ideas for you guys.. To help you out.. Here are a couple of options you might want to consider when approaching this.. And a 101 on human behavior and mocking it pseudo like in AI. :)

• When designing a personality.. You have to have options... Expand the amount of options and you have a very playable and workable personality... That.. And you will have to sit down and look through all of the different personality types... Which there are alot. If you want to make it interactive... Your personality doesn't really fully develope until you get above 18+ years of age.. But that is just a rough estimate... So.. How about rasiing a kid.. say.. 12 years old.. The times go really slow.. And then after he hits.. 21.. His personality would be set... And from that point on.. you would follow the guidelines on that particular personality model...

Example :

You raise the kid up... and you beat him all the time.. so he is rather timid because of this... but at around the age of 18.. you allow him to smoke and drink and do drugs.... by the time he reaches 21.. his personality will be that of a drug induced timid kid... Thereby letting people take him over and he basically gets shoved around alot... How would this affect your charts then? Well.. His anger wouldn't rise very sharp at all since he is very timid. His depression though would rise and fall very fast. Sickness would be the same as well... So..

• Your charts... Don't limit yourself to the basic.. If you want to make a personality.. Include everything that you can... Here is a chart that could help you guys out with the moods.

http://www.codedaddy.com/files/moods.jpg

That's a quick and easy chart to show you how the basic mood balance can go... Your character can be anywhere within that triangle and you can tell how your player is mood-wise by going throughout that.

• Now... Your character isn't all about moods.. There is a certain couple of other factors you have to take advantage of and notice... And these should be covered in kind-a a slider type area... And here is what I'm trying to represent.

http://www.codedaddy.com/files/levels.jpg

Now.. There is a couple of pointers to help you guys out... Ohh One last thing

• Store everything as data as much as possible.. Store in .txt files or something along the lines of that to keep the code size down to a minimum. Variables.. Use them often.. And have alot of arrays to look up data and information.. Instead of using math.. When you can... Make charts of data that represent moods and levels.. :)

SeiferTim
February 5th, 2004, 05:41 PM
This is starting to remind me a little bit of "Creatures", except I think they were doing more with genetics, and things...

Digigamer
February 5th, 2004, 06:29 PM
Its really amazing how far AI has come actually. We watched a movie yesterday in chemistry about AI in robots and some of the things the robots could do was amazing. For instance one of the challenges they had was they had to make a robot walk around (roll around) this office building they had set up. The office building had 2 conference rooms, 2 professors rooms, and a couple trap rooms. The robot had to go to each of the conference rooms and check to see which one was empty. It then had to schedule a conference in the appropriate room. Then it had to find the professors rooms and notify them of the conference one minute before it was scheduled to start. This was a real life office building. not a digital computer screen.

There was many other things they showed (such as cars that drove themselves on highways). One of the robots built skills' progressed over time. It would learn how to walk and how to reach for things just like a baby would.

AI in computer is much easier then real life robots. Just check out a game like halo. While the bad guys don't learn from their mistakes they still act according to what you are doing. And your teammates are even smarter. They will cover you, hide if you hide, and tons of other things we don't even notice. Just wait tell halo 2. If they are spending this long on that game I'm sure the AI will be incredible.

All in all AI is a very interesting and complelling subject. One that I would like to learn more about. I don't have the skills to start practicing anything more then baby AI right now though.

InsaneMonk
February 5th, 2004, 06:43 PM
Here is a .fla

OBCT
February 5th, 2004, 06:58 PM
I just quickly wrote a VERY basic movement class for our character. It needs alot of work and it's pretty much useless at the moment but now we have something to work with.

InsaneMonks fla is a very good example of the type of thing we should, and probably will use.

Anyway here is the movement class

dynamic class moveCharacter extends MovieClip
{
//Initial Variables
private var angle:Number; //Current angle
private var speed:Number; //Current speed
private var maxS:Number = 10; //Maximum speed
private var minS:Number = 5; //Minimum speed

//Constructor function
function moveCharacter()
{
this.onEnterFrame = this.move; //tells flash to run the move function every time the frame is entered
}

private function move():Void
{
if (!Math.floor(Math.random()*20) || this.angle == undefined) //if 'angle' has no value
{
this.angle = Math.random() * 360; //set 'angle' to a random number between 0 & 360
}

if (!Math.floor(Math.random()*10) || this.speed == undefined) //if 'speed' has no value
{
this.speed = Math.floor(Math.random()*(this.maxS - this.minS + 1)) + this.minS; //sets 'speed' to a random number between and including our max and min speeds
}

this._x += Math.cos(this.angle * (Math.PI / 180)) * this.speed; //moves our character on the x axis
this._y += Math.sin(this.angle * (Math.PI / 180)) * this.speed; //moves our character on the y axis
}
};

Spirit-Z3RO
February 6th, 2004, 12:31 AM
SeiferTim and Marz, you guys seriously read my mind like an open book (or the internet :p)

In my head, I had this set up:
The way you treat Ayumi sets her scales from this to that, until a certain age, all about her is set onto the scale she had come to. From there on, it'll go low and high depending how well you take care of her. When you go overboard (such as anger her over her tolerance scale) then a formula will be applied and she'd have a slight change in her Set personality.
I thought of this because sometimes when we're treated horrible again and again, we seem to change (for worse or better).
And as for the Memory thing. I've always pictured that Ayumi has a room/house or whatnot. You can interact with her and do things such as, "Ayumi, could you go get the "Ball" for me?
"What is a ball?" She'd ask. Then a description box will come up and you type in descriptions for it, one such as:
"It's a round object, you play with it and have fun." Then she might start grabbing every round object she can find when you ask her to grab a "Ball." "Is this Ball?" She might ask when she brings it to you.
You could reply, "Yes, that is the ball, thank you (maybe that'll make her happier a bit on her happiness scale) ," or you could reply, "No, that's an "Led Cannon Ball" (wherever she'd find it), it does not Bounce and it is Heavey, a Ball you Play with is Light and Bouncy."
So here we have another description for the Ball and an entirely new description for Led Cannon Ball.
We could set properties in all the items in the room. Such as the Ball: Bouncy, Red, Light, and Fun.
Led_cannon_ball: Heavy, black, and NoFun.
ect.
Then we could ask her the Date and she'd soon learn to find the calender and tell you the date.

After you've described something to her, she might not be able to find it. So you click on it telling her it's there, then she learns that it's there. But as for the ball, it may be misplaced (maybe your lazy bum was too lazy to drag it back to the toy box) and so she asks you where it is and you find and click on the ball and she finds it and learn that it may be misplaced. She'll soon learn to find the ball, and choose locations that are closest to her, but always the toy box first.

We can even build her a computer that allows us to play games or to write what she's learned, her emotional status, ect into a .txt file and we can find it to print it out - Ayumi's Status.
(hehe, maybe she'd be too sad or even shy or angry to display some of her status, maybe she'll have a big o' middle finger made of slashes and dashes and stuff when you look at the .txt file).

And now, the time...
What I'm imagining is that you have a Xamount of money, and maybe we can create one for her too. you create xamount of money by going to work -- a somewhat mini-game and you get to choose which, but have to stick with it for a certain amount of time (bar tender's get a lotta tip... and a girl's phone numbers... what if.. what if Ayumi can get jealous!?)
The money made is to buy Groceries and to keep it simple for now, for xamount of money and you buy xamount of food, food is displayed as a plate of nuetritious food. Whenever you're not there to feed her (which may make her happier, but if she's mad, maybe she'd be happier eating by herself).

I've divided our time into hers by 4, and here's how things turned out.

15 seconds is in a minute
225 seconds is in 15 minutes and 15 minutes is in an hour
1350 seconds in 90 minutes and 90 minutes in 6 hours and 6 hours in a day
then, 120,150 seconds in 8010 minutes and 8010 minutes in 534 hours and 534 hours in 89 days and 89 days in a year

Then we can use a formula (still working on it) and make her calm down from anger, calm down from hyperness (if that's a word) or anything.

Btw, the reason I used the example of making her mad because it's seems to be the best. You make her mad, she holds a grudge on you based on how bad of a thing it was. It can actually apply to every emotion she can have, but maybe different formulas for each emotion. And... I just smiled and said "whatever makes ya happy" then walked away... >< :p

Anyway, long post it has been, I'll shut up here, I talk too much
-_-
but before that... I was thinking if we DO make it so that she can have different clothing and such... maybe we can even make it so you can BUY her clothing, toys, jewelry, ect. And the items have their own properties. She might like a light dress over a over-weighed midieval armor... And lets pretend she has a shirt, somewhat tight. She reaches for an item and the shirt will too! But of course, the shirt would just be reaching for it, and not do anything else out of unordinary (such as snatching a can of alphabet soup out of her hand...).
I saw a thing
http://www.seraph.nl/
at its Downloads>Flash MX>Physics>Drag Grid
and it reminded me of how a shirt would interact with her shoulders. If she was to reach UP, the shirt would be all stiff, instead, it'd STRETCH itself upwards, staying with the arm, but doesn't bounce back like the site's Drag Grid.

Spirit-Z3RO
February 6th, 2004, 12:43 AM
OBCT, your .fla gives me an "Unexpected file format." =(
I have MX..

OBCT
February 6th, 2004, 12:46 AM
Alright I'll try to convert it in about an hour. I've still got stuff to do before lunch.

OBCT
February 6th, 2004, 01:10 AM
For those of you who have Flash MX can use the fla below.

Some of the ideas people have been talking about are great!!! :beer:
Keep up the good work :)

Cheers

Spirit-Z3RO
February 6th, 2004, 02:11 AM
!? Howcome I see no AS in that .fla?
EDIT
:blush: duh, it was highlighted and so I kinda.. blanked out on it

OBCT
February 6th, 2004, 02:20 AM
The class in the MX version is in a movie clip. Double click on the "Movie Controller" movie clip that you should see in the top right hand corner of the stage.

Any .as file can be read using notepad or something like that but Flash MX 2004 Pro comes with the option to write and read external actionscript files.

I can't remember the full story. As far as my memory goes, Flash Player 6 supports Actionscript 2.... I'll have to get back to you on that because I can't remember.

Anyway...we should start jotting down any formula's that might be usefull, the variable names (personality traits) etc so we can draw up a diagram and get into it :)

SeiferTim
February 6th, 2004, 03:17 PM
I think we should start with the basics. I was pondering about this since I left work yesterday, and this is what I think we need to start with:

First, we should have a variable to represent Mood (Ayumi.Mood). It should be able to go from -100 to 100 with anything negative being unhappy, anything positive being happy. Ayumi should start at 0, and we'll need to start as if she's a baby.

Give her a simple rule: The lower her Mood is, the less happy she is, and she should try to keep her happyness high, but if she is content (Mood=0), then she should relax.

That general rule, is pretty much the one rule that (to me) all life forms seem to possess. It's simple. But here's where we incorporate it:

As time progresses, her energy will decrease (Ayumi.Energy--). Energy is needed to function, and after several hours, she will need to sleep, which slowly recovers her energy. So, if Ayumi's been awake for 16 hours, she'll need to go to sleep, and by then her energy will be pretty low.

Food also increase energy, and our bodies feel hungry when it is time to recharge. We should have a hunger variable (Ayumi.Hunger), and to keep it true, it should be a number from -10 to 100. Between -10 and 0, she is still 'digesting' her last meal, and not at all hungry. As time goes on, the hunger value will increase, and she will start to get hungry when it hits 1. Now, we don't want her running to the fridge everytime her hunger hits 1, most people don't do that (though there are some that do, and they have to book 2 seats on an airplane for just themselves whenever they fly), but what we can do, is add an algorithm that will say every interval (whether it's a minute or a second, or an hour), her hunger will go up, and her mood will go down by 1/4 of the current value of hunger, rounded down, and she should get enough to want to eat hungry around 3.5 times a day.

The code might look something like this:


if (timer == interval) {
Ayumi.Hunger--;
Ayumi.Mood -= Math.Floor( Ayumi.Hunger / 4 );
if (Ayumi.Mood < 0 ) {
CheckMood;
};
};

Please excuse any syntax errors, I haven't really done a lot of math actionscripting in a loooong time, and I'm not at my PC at home to check my syntax... but you should get the idea...

Anyway, so now her mood is going down while she's hunrgy... so, if we put the Rule into place that says if she's unhappy, she should try to find a way to be happy again, we would call our CheckMood procedure.

CheckMood would basically try to get her to figure out what's making her uncomfortable. In this case, the only thing it COULD be is Hunger, so right now our CheckMood should simply say:


if (Hunger > 0) {
Ayumi.Status.Hungry = True;
};

so that she'll know she's hungry. Now, another piece should come into play. She should already know (since it is a basic animal instinct) that if Hunger == True, then To make Hunger != True, you EatFood.

Any objects in her world that are food, should have: Object.Type = Food as a property, and (hopefully) she won't have to be told which items are food, 'cause if you're hungry, you're not going to have to try and figure out: Does Ball==Food? Does Rock==Food?
She should be able to walk over to the nearest source of food, and eat it. This will Send her hunger value back down, in an amount based on how much food there is, and will hopefully raise her mood, depending on if she likes it or not. Candy may only lower hunger a little, but raise mood alot, and broccoli may lower hunger a lot, but lower mood. (Once we get real advanced, we can try to make her "remember" which foods she likes, and does't like.) Now, to make things have a little consequence, we could add another variable, which I haven't thought of a name for yet, something like: ExcessFood, or something, so that if she over-eats, this value will increase, and she'll have to burn energy to lower it, or risk either getting sick, and/or getting fat. This is just the very beggining of what we can do with food and hunger, and we can branch out from here.

Q: Do you think we should start trying to 'officiallize' this project? Get a list of names of people who are 100% devoted to the project, and start getting things together? It may be a good idea, since I see this thing going places if we really work together. I'll be (finally) getting my motherboard replaced within the next week, so I can get a server going, if we all agree on it.

Spirit-Z3RO
February 6th, 2004, 11:50 PM
Devotion? How about Obsession? I'm sure most of us have always wanted to do this... and is really thanking OBCT for bringing it up here and at this time.

I've been thinking about this project day and night... and a new formula (which I would get a lead, then get all confused).

I've thought of a bunch of variables... but by now, i'm sure you know I can't exactly explain what I try to very well.

Anyway, here's what I thought Ayumi's stats would look like

Name: Ayumi
Age : 19

Happiness : +3
ToleranceLevel : +(HappinessLevel+SetContent)/4
HappinessLevel : +(((SelfEsteem/3)*HappinessLevel)+SetContent)-SadnessLevel
AnnoyanceLevel : (SetTolerance*.25)+ToleranceLevel
SelfEsteem : SetContent/4
SetTolerance : 6
SetContent : 7
AngerRecovRate : (I only have a part of the formula.
HappyRecovRate : All the recovery rates would have
AnnoyRecovRate : a common formula with different variables)
Dominant : Softee
Recessive : Toughee

Ok, a bunch of those are just wierd right now. But I'll explain here:

The Levels
All the Level are what they are currently at, but not something permenant such as the Set variables. The levels add to your Set variables (involving same emotions at least) and they go into the positives and the negatives base on how you treat them.

ToleranceLevel - Sometimes tolerance is higher due to happiness. The formula is (HappinessLevel+SetContent)/4. So the equation above would be (7+3)/4 = 2.5, so the ToleranceLevel would be +2.5.

AnnoyanceLevel - Annoyance comes easily, usually just by an offensive comment or joke. The formula is set as (SetTolerance*.25)+ToleranceLevel because we're taking 1/4 of Ayumi's SetToleraence and adding it to the ToleranceLevel because when you're happier, being annoyed is harder as well. The equation above would be (6*.25)+2.5 = 4, so she may be annoyed when her she's Anger is at 4.

HappinessLevel - How happy she is due to how well you treat her. The formula to is +((SelfEsteem/3)*HappinessLevel)+SetContent, so in that equation it'd be ((1.5*3)+7 = 8.75,so her overall happiness is 8.75, that's +1.75 more than her SetContent, and since when she has +1.75 more than her SetContent, she's more than content, she's happy.

Self-Esteem - We all have self-esteem. Usually, the higher it is, the happier we are, but not always.

SetTolerance - The Set Tolerance level when Ayumi reached a certain age. Appearantly, she has reached or gone beyond that age because she has Set variables.

SetContent - The base number of happiness to keep Ayumi at content. Going below that makes her easier annoyed, mad, ect.

The Recovery Rates
I have part of the formula, but not quite. The same formula should be able to be applied to all her emotions but with different variables.

Dominant and Recessive - Ayumi's Dominant is on Softee, and Toughee is on Recessive, meaning when something that lowers her happiness, she's more sad over angry. What the Dominant and Recessives are is determined another variable (forgot what it was all of a sudden) when she's hit her Set age (the age where she gets her Set variables).

All these should be able to fit all her emotions (sad, mad, gloomy, depressed, hyper, happy, content, maybe even shy).

I know there are still a bunch of flaws in this, such as some more variables are needed and some may be taken out because they are not necessary, but it's all I can explain after a day's of brain frying.

Now, some questions...
Will this be in 3D?
Ayumi should already know basic words, but how will we get her to recognize keywords? Do we have to type in a word that'll activate the recognize code? example. "That is a(n)" "OBJECT." So the code finds the "That is a(n)" and records the next thing after it, before the period (and/or maybe a comma), which is "OBJECT."

Last thing... I know even I'm not making any sense, it's like BrainStorming time right now...

OBCT
February 7th, 2004, 05:36 AM
I've got a very busy weekend so I won't be able to do anything so I'll get back to you all on monday.

Until then ANYONE is welcome to do any programming (even a tiny bit helps), graphics, write down your ideas but most importantly.....Have fun :).

Cheers

SeiferTim
February 7th, 2004, 11:57 AM
Your logic makes a LOT of sense, Spirit-Z3RO, I like your thinking! Some of your variables seem a little redundant, which I'll try to clear up in a minute... The way I'm seeing it right now, we should try to make it 2-D, perhaps sprite based.... trying to make it 3-D at this stage will probably be too much insanity... And I don't know if you thought about it, but we should make her mood increase/decrease exponentially.... since if you're already a little upset, if someone does something to upset you further, even a minor thing, you tend to get more upset then usuall.

So let me try and consolidate what we have so far, as far as variables are concerned (and forgive me if I tend to lapse back into a semi-VB code, since we're not sure what we're going to code it in, I'm trying to avoid sticking with any particular language)


//Identity

.Name 'A string that contains the characters given name. We should eventually give her the ability to recognize nick-names, and other monikers as well ('sweetie', 'cupcake', 'darling', etc)
.Gender 'Should be either M or F, we could make it a Boolean, and say True = Female, or whatever.
.Age 'I think we should make this an integer to represent her virtual age, like 15, 19, or whatever.

//Physical Condition Levels

.Hunger 'Integer of between -10 and 100 to rate her hunger
.Temperature 'Integer representing her current body temperature (if she's cold, she'll try to get warm, etc)
.Energy 'Her current energy level, integer between 0 and 100
.Health 'Integer representing her Health level, I'm thinking it should be between -20 and 100, depending on if she's eating healthy, and sleeping, and staying warm, etc, she should be realtively healthy.
.Life 'Integer to represent her current life force (HP perhaps?) When it hits 0, she'll be dead. HOPEFULLY this won't ever happen, but the fear of Death is one thing that aids in motivating people to do things, and keep safe. She should have an internal drive to try and keep her Life rating as high as possible.

//Mentality Levels

.Happyness |
.Anger |
.Sadness | Integers from 0 - 100
.Fear |
.Sanity |
.Excitement |
.Anxiety |
.Self ' Integer from 0 - 100 which rates what she currently thinks of herself (self-esteem)

//Personality
//For the most part, these will be nearly static, but that's not to say that they can NEVER change... they should change very, very gradually. They should all range from 1 to 100 (perhaps more). These things will affect how much her Mentality Levels Change, just like what Spirit-Z3RO was aluding to...

.playfulness 'How playful she is. The more playful, the happier she is, and the easier to ignore bad things.
.arrogance 'The more arrogant, the less she'll want to listen, and believe you.
.cleanliness 'How tidy she is. higher rating means she'll try to be more organized
.visciousness 'Higher rating means she'll be more of a prankster, or just plain mean.
.courage 'Higher rating means that she'll be less apt to fear new things, or anything at all.
.curiosity 'Higher rating means she will be more inclined to try and learn new things.
.obediance 'Higher Rating will mean she listens, and obeys more than not
.stablity 'Rates her abilty to keep to a steady schedule, or keep things the same (if this is low, she may tend to forget doing daily or routine actions)
.adaptablity 'Rates her ability to change depending on her environment. If this is low, she may get confused if something suddenly changes.


I'm sure this list will expand, and increase exponentially as we add to it. Lend a hand, everyone! :D

Spirit-Z3RO
February 7th, 2004, 01:32 PM
YAY!!! Those were the words I tried to find... ashamed of myself not being able to =(
But wow, you sure found the goods one =)
Anyway, we need formulas for those right? And maybe one variable effects another?

SeiferTim
February 7th, 2004, 02:15 PM
Generally, all the variables I mentioned above should probably be just regular variables, but we'll have functions and algorithms later on down the road that will use the variables to change others.... such as a subroutine to determine how upset she gets at a particular event:


sub CauseAnger ()
.happiness = .happiness - (Event.strength + (.anger/10)% - (.playfulness/10)% - (.self)%)
.anger = .anger + (Event.strength + (.anger/10)% - (.playfulness/10)% - (.self)%)
end Sub

note: by (VAR/10)% I mean a percentage equal to one tenth of that Variables value.... So if I'm talking about +(.anger/10)%, and anger is currently 20, then the number that we'd have is 2%, so we'd add 2% to the total value.

We're going to end up with a few billion of these (okay, maybe not billions, but a whole lot...)... it's going to end up being crazy... I like it :D

So who wants to start coming up with the way our person's going to look? And what their environment is going to be about?

Spirit-Z3RO
February 7th, 2004, 04:42 PM
Haha, since I've just recently saw Chobits, in my mind, she's an anime character (at least it matches her name). I know some girls at school that can draw like insanity... maybe if i get them to draw me one, scan it, ect.
Environment.. hmmmmmm. We create a house for her (those of interior design, help!) and our stage will be the room she's in (cept the bathroom). So we have a stage of a living room, and when she walks in another room, our stage is there as well. For some odd reason, the living room and the kitchen is in my mind. I guess I just imagined her either playing or doing something in the kitchen.
Objects, we'll need a buncha them. Books, Calender, Toys, kitchen stuff, and everything you'd find in a normal household. "define NORMAL" some of u may say, lol.
But yeah, we would need to be able to interact with those objects, as well as Ayumi.
Now.. i just need to practice on flash and stuff... maybe what i say will make more sense.

SeiferTim
February 7th, 2004, 05:01 PM
I can probably make the environment pretty simply... I picture it as all being in 2-d sprites, kind of a pixelated type of style. I just can't draw humanoids in any way, shape or form.... so someone else may have to do that...
I'll come up with some of the environment, if you want, once I have a working PC again. I kind of picture a large Japanese-style house, with a lot of open spaces, and lots of rooms. I don't see any reason to exclude the bathroom, but we should make it censor out if she's doing anything questionable, like bathe, or use the toilet (ala The Sims)... she should be able to go there and brush her teeth, comb her hair, etc.
I sort of picture her as a teenager (since I think you said it about abillion times, Z3RO! :D), and I see her as having short brown hair, and big eyes, plus the stereotypical brown-plaid schoolgirl skirt kind of thing. I'm thinking she'll be cute, like a child, but i want to try to stay away from anything that would be "attractive", or we'll be fighting off adolescent boys with sticks...
All-in-All, I know the code isn't even started yet, but if we get an idea of where she's going to live, we can start to fill in some of the blanks on how much depth we should give her...
To start with, we should just make one or two rooms, and fill them with objects to let her interact with. I think we should start with getting her to learn how to feed herself before tackling the big stuff, like mood, and stuff.

Spirit-Z3RO
February 7th, 2004, 10:54 PM
"larege" Japanese-style houses... lol! I see her as having long hair in a dress, nothing flashy (to mkae her look innocent i suppose). And as for the "cuteness" or whatnot, I think she [I]should[I] be cute. I mean, why not? The purpose of japanese-styled cartoons (anime) is to exaggerate the looks of ourselfs, one way or another, that applies to their personalities sometime as well.
Little kids (generally girls... generally) like taking care of toy babies because they're "cute", the child is attracted (not in any "weird" way), and that's how we should think of it if Ayumi's cute.
Also, it'd be unfair to our little Ayumi if we compared her look, another words, graphics, to the 3D graphics today (such as all those beachball games with girls wearing bikinis;))
But to some of those who have been attracted to anime in such ways, I apologize for calling it "weird". I understand that everyone has their fantasies and there's nothing wrong with having fantasies, and so, I sincerely apologize -_-

SeiferTim
February 8th, 2004, 09:54 AM
"larege" Japanese-style houses... lol!
We'll obviously have to spoil her like she's rich, or something... ;)

OBCT
February 8th, 2004, 10:14 AM
I've quickly done up some very basic classes just to start setting and getting the initial variables. Next we could do the class containing formulas and stuff like that.
I'll go into more detail tomorrow when I have my day off :p:

Here is the class in AS2

class CreateCharacter
{
// INITIAL VARIABLES

// CONSTANTS
var Name:String; //Character's name
var Gender:String; //Characters gender/sex
var Age:Number; //Characters age

// SEMI CONSTANTS
var playfulness:Number; //The more playful, the happier she is, and the easier to ignore bad things.
var arrogance:Number; //The more arrogant, the less she'll want to listen, and believe you.
var cleanliness:Number; //How tidy she is. higher rating means she'll try to be more organized
var visciousness:Number; //Higher rating means she'll be more of a prankster, or just plain mean.
var courage:Number; //Higher rating means that she'll be less likley to fear new things, or anything at all.
var curiosity:Number; //Higher rating means she will be more inclined to try and learn new things.
var obediance:Number; //Higher Rating will mean she listens, and obeys more than not
var stability:Number; //Rates her abilty to keep to schedule.
//if this is low, she may tend to forget doing daily or routine actions)
var adaptability:Number; //Rates her ability to change depending on her environment.
//If this is low, she may get confused if something suddenly changes.

// CONSTRUCTOR FUNCTION
function CreateCharacter()
{
this.ShowInfo();
}

// SET FUNCTIONS

function setName(name:String):Void
{
this.Name = name;
}

function setGender(gender:String):Void
{
this.Gender = gender;
}

function setAge(age:Number):Void
{
this.Age = age;
}

function setPlay(play:Number):Void
{
this.playfulness = play;
}

function setArrogant(agro:Number):Void
{
this.arrogance = agro;
}

function setClean(clean:Number):Void
{
this.cleanliness = clean;
}

function setViscious(viscous:Number):Void
{
this.visciousness = viscous;
}

function setCourage(courage:Number):Void
{
this.courage = courage;
}
function setCurios(curios:Number):Void
{
this.curiosity = curios;
}

function setObediance(obediance:Number):Void
{
this.obediance = obediance;
}

function setStability(stability:Number):Void
{
this.stability = stability;
}

function setAdaptability(adaptability:Number):Void
{
this.adaptability = adaptability;
}

// GET FUNCTIONS

function getPlay():Number
{
return this.playfulness;
}

function getArrogant():Number
{
return this.arrogance;
}

function getClean():Number
{
return this.cleanliness;
}

function getViscious():Number
{
return this.visciousness;
}

function getCourage():Number
{
return this.courage;
}

function getCurios():Number
{
return this.curiosity;
}

function getObediance():Number
{
return this.obediance;
}

function getStability():Number
{
return this.stability;
}

function getAdaptability(adaptability:Number):Number
{
return this.adaptability;
}

function getName():String
{
return this.Name;
}

function getGender():String
{
return this.Gender;
}

function getAge():Number
{
return this.Age;
}

// CLASS METHODS

function ShowInfo():String
{
return "My name is " + this.Name + ", I am a " + this.Gender + " and I'm " + this.Age + " years old.";
}
}

// This was rushed so save your critisism for tomorrow :to:

To use this in Flash MX 2004...

var Person:CreateCharacter = new CreateCharacter();
Person.Name = "Bill Gates";
Person.Gender = "Female";
Person.Age = 70;
trace(Person.ShowInfo());
//You can easily add on any values by giving the class variable, the property, then the value
//e.g.
//Person.obediance = 0.00001;
//Person.visciousness = 99;

Here is the class for Flash MX

#initclip

CreateCharacter = function()
{
this.ShowInfo();
}

CreateCharacter.prototype = new MovieClip;

CreateCharacter.prototype.setName = function(name)
{
this.Name = name;
}

CreateCharacter.prototype.setGender = function(gender)
{
this.Gender = gender;
}

CreateCharacter.prototype.setAge = function(age)
{
this.Age = age;
}

CreateCharacter.prototype.setPlay = function(play)
{
this.playfulness = play;
}

CreateCharacter.prototype.setArrogant = function(agro)
{
this.arrogance = agro;
}

CreateCharacter.prototype.setClean = function(clean)
{
this.cleanliness = clean;
}

CreateCharacter.prototype.setViscious = function(viscous)
{
this.visciousness = viscous;
}

CreateCharacter.prototype.setCourage = function(courage)
{
this.courage = courage;
}

CreateCharacter.prototype.setCurios = function(curios)
{
this.curiosity = curios;
}

CreateCharacter.prototype.setObediance = function(obediance)
{
this.obediance = obediance;
}

CreateCharacter.prototype.setStability = function(stability)
{
this.stability = stability;
}

CreateCharacter.prototype.setAdaptability = function(adaptability)
{
this.adaptability = adaptability;
}

CreateCharacter.prototype.getPlay = function()
{
return this.playfulness;
}

CreateCharacter.prototype.getArrogant = function()
{
return this.arrogance;
}

CreateCharacter.prototype.getClean = function()
{
return this.cleanliness;
}

CreateCharacter.prototype.getViscious = function()
{
return this.visciousness;
}

CreateCharacter.prototype.getCourage = function()
{
return this.courage;
}

CreateCharacter.prototype.getCurios = function()
{
return this.curiosity;
}

CreateCharacter.prototype.getObediance = function()
{
return this.obediance;
}

CreateCharacter.prototype.getStability = function()
{
return this.stability;
}

CreateCharacter.prototype.getAdaptability = function()
{
return this.adaptability;
}

CreateCharacter.prototype.getName = function()
{
return this.Name;
}

CreateCharacter.prototype.getGender = function()
{
return this.Gender;
}

CreateCharacter.prototype.getAge = function()
{
return this.Age;
}

CreateCharacter.prototype.ShowInfo = function()
{
return "My name is " + this.Name + ", I am a " + this.Gender + " and I'm " + this.Age + " years old.";
}

#endinitclip

And to use this in Flash MX...

var Person = new CreateCharacter();
Person.Name = "Kylie Minogue";
Person.Gender = "Female";
Person.Age = 32; //Probably older ;)

trace(Person.ShowInfo());

// Rather than tracing the returned value from the function, you could use this

var info = Person.ShowInfo();
trace(info);

//Makes no difference but it gives you another option

Wow...thats alot of code :!:

Sorry for being breif but I will make it up to you all.

BTW, has anyone noticed how many people have read this topic?
It's like 470 people in 8 days. :geek:

Cheers

SeiferTim
February 8th, 2004, 10:45 AM
Wow. That's a lot of code! That's awesome!!!
...man, I wish my computer was back up and running so I could actually play with some of the code...
I actually feel like I'm better with the conceptual programing, then the actaul down-and-dirty codiding sometimes... but I still want to be able to lend a hand...
I think the reason so many people have taken a look at this is because it's such an interesting concept, and is turning out to be a lot of fun!

SeiferTim
February 8th, 2004, 11:22 AM
Tentative Information: - if any of this is blatenly incorrect, let me know... I'm trying to help consolidate some of the basic information on the project.

Project Name: Project Ayumi
Team Members: OBCT
Spirit-Z3RO
InsaneMonk
RedMirrorBall
SeiferTim
Marz
If I mistakingly left you out, let me know!!
Project WebSite:http://ayumi.no-ip.com *
Funding: None, at this time. Perhaps we can set up a PayPal thing later?
Programming Language: AS2, it would seem to be the best choice
Graphics Style: 2-D Semi-Pixelated Cartoon Style

Help me add to this :D

* Once I get my server up and going, and we'll eventually, probably, spring for a Domain Name later... I see us using the site as a way to inform others on the project, as well as a way we can let each other know whats going on... I can also put together a private FTP server to make it easier to exchange files.

alzor
February 8th, 2004, 01:02 PM
hey could I get in on this? and for an idea later on, maybe we could make something like a design a character type of deal instead of having a premade one, the player can design their own character and save it via php, although Im not so great in actionscript this looks really interesting...

SeiferTim
February 8th, 2004, 01:36 PM
i see that sometime in the future, there might be a way to have character randomly created, as if it was "born".
If you have any ideas, feel free to post them :D

Here is my idea on what some of the interactive objects should look like:


class object {

var name:String; // The Official name of the object, i.e.: "Ball", "Plate", "Television", etc.
var ObjType:Number; // The type of object it is. We'll have to
// make a list of items: 1 = Toy, 2 = Food, etc.
var ObjWeight:Number; // the weight of the object, Heavy
// objects ae hard to lift, etc. We can simplify this by have 'ranks' of
// weight: 0=weightless, 1=light, 2=medium, 3=heavy, 4=immovable, etc.
var ObjColor:String; // The general color of the object... I think we
// can let her have a 'favorite' color and so she may like certain
//things more than others based on the color.
}


I think That's about all we need to worry about with the items. Everything else should be based on her learning how to use the items. For instance, she should be able to figure out that any object with type == 2 is okay to eat, and any object with type == 1 is something to play with and have fun. I'm not quite sure how we're going to get her to understand these things, per say, but conceptually, it should work in a way that she can say:


Ball : Toy
Toy : Play
Play : Fun
Fun : Happy
Happy : !Sad

And so on and so forth, so that any time she wants to lower her sadness, she will put 2 and 2 together, and pick up a ball.
I imagine sometime down the road we'll end up with a massive list of these connections that she'll hopefully be able to build these connections herself.

Spirit-Z3RO
February 8th, 2004, 02:57 PM
OBCT, that's a LOTTA codes, gj :)
SeiferTim, you forgot to put yourself in the list -_-

Yeah, I wish I could lend a hand too... so I'm hoping to learn a lot of programming elements (mainly flash I guess) and so if I'm a bother, please bare with me;)

Ok... drawing with flash is hard.. all the lines and stuff, especially with a mouse that doesn't exactly always click OR drag

Below: An appearance of Ayumi.. in the making anyhow. I'm sure a lot of you have better ideas and more creativity on this topic, please post them ^_^
And about the image below, ignore the face, ignore the eyes, just see if ya like the hair and ears.
The face turned out to be a guys face....

SeiferTim
February 8th, 2004, 03:11 PM
I picture something much..... smaller...
We'll hammer out the exact details of the looks later on, I'm thinking the main result would be that she looks kind of like the smilies that they have been using on this site, kind of like my Avatar, but a little bigger, and more realistic.
<center><img src="http://www.bahamutsoft.com/images/seifersprite.gif" border=0 alt="SeiferSprite"></center>
BTW: Does anyone know what my Sprite is based off of? It should be pretty obvious.... I made a movie a ways back for a website (Which died) called: GameBastard.com. It was sort of a Game Review site, but more like the Onion of Gaming... most of our articles were more humorus than informative... in fact, I think our MGS2 Review was done with the screenshots made in Paint (with Arrows pointing out important features like bad guys, cardboard boxes, and mullets) since our TV-Card was on the fritz.
Anyway, this sprite was on the main opening screen for the movie, and it had stuck with me ever since (I even spent a whole month trying to get a web-comic going, with my little guy, but it also died)
See if you can guess who was the model it was based on, and wait until you see my upcoming new footer!

Marz
February 8th, 2004, 06:10 PM
I only provide brief intervention when you guys need something to revlarrify a couple of things here and there.. And that is about it. :)

SeiferTim
February 8th, 2004, 06:24 PM
Originally posted by Marz
I only provide brief intervention when you guys need something to revlarrify a couple of things here and there.. And that is about it. :)
But it is Brief helpful intervention. :beam:
You still help a lot. :) I wouldn't dream of leaving you out of the team, even if you only pop in once in a while to offer your opinion.... hmmm I just remembered....

Marz's Clone

:P

GreenLantern
February 8th, 2004, 06:29 PM
Wow, this has really come a long way since I last checked in. It took me ten minutes to get to the bottom of this thread.

I like what I see.

OBCT
February 8th, 2004, 09:20 PM
SeiferTim,

The project form is great!!
How did you manage to get a website so quickly?

Spirit-Z3RO,

You don't really need to know anything to help out. Even if you were making us all coffee at 4am in the morning, it'd still be helping ;)
BTW, I like those graphics!

Using the class I slapped togeather, I'm making a form to create a new character. Using a few input boxes and ALOT of combo boxes, you just enter the data in, then click submit.
Does anyone have any priority of where to save this data?
MySQL?
Access?
NotePad:pa: (Please lets make this a last resort)

Cheers

Spirit-Z3RO
February 9th, 2004, 09:43 AM
*Puts on his coat and barges outside, heading towards the Coffee&Tea shop*
.............
*Runs back inside after a block, forgetting he was suppose to be in school*

I'll do what I can ^_^

I'm already learning from the posted coding...

Where are we going to start though? Movements? Emotions? Bases such as food = edible and toy = dont choke on it?

SeiferTim
February 9th, 2004, 09:48 AM
Actually, it appears as if someone else took the name from me... I'll try another one. I didn't make a site yet... I'm waiting on my new motherboard... I'll let you know what it'll be...
Z3RO, you've been contributing as much to the project as anyone else has. You've helped me come up with the list of variables I threw together earlier.

SeiferTim
February 9th, 2004, 09:59 AM
Now, our site should be at:
projayumi.no-ip.com
Don't have anything up for it yet, I can work on it in about a week or so, depending.
I can make up a logo, and things later on too...
start letting me know what type of info you want on the site.

OBCT
February 9th, 2004, 10:40 AM
Ok well here's the run down of what I'm working on at the moment.

Registration -
To use the program you register a username & password, then select the character details (name, age etc).
The reason for this is because having 1 person per character in the database will be easier to work with. This can be changed down the track.
So first I'm setting up the details form in Flash then I'll do the server side script to add the info into the database, then I'll write an SQL script so anyone can install it.
I'll (try to) write up the scripts in PHP (easy :thumb: ), ASP, JSP, CGI so pretty much anyone can use the application without having very specific server requirements.

I just realized I better do a spell check and fix up all of my many million spallen mistaxs :P

A Small Prayer
Dear Lord,
Thank you for inventing Object Orientated Programming!!! It has made my life soooooo much easier!!!
Before I go on with this post......can I ask you to get Macromedia to release Director MX 2004 a little bit quicker....I'm getting bored of waiting...:pope:

A message for Yeldarb, alzor, Master64, Marz and anyone else who has made a post
If your still willing to help out, we're still willing to pretend we want you to :D jks...

Everyone is always welcome to join in this "Programming Fest" (if you will).

I'll thank everyone again for everything they're doing :thumb:

I'm not sure about anyone else but I think I've broken the record for having the highest blood/cafine level at any one time.

:bounce:
:run:

Cheers

Lady Miaka
February 9th, 2004, 10:47 AM
Hello

Has anyone not learned the lessons about AI from the Terminator! We're doomed!!!:skull: :skull: Soon we'll have an army of teenage terminators flooding our malls and starbucks!! Noooooooooooooooooooo:skull: :skull:

GreenLantern
February 10th, 2004, 08:35 AM
I think this project has gone beyond the scope of my knowledge. I will be watching though.

Spirit-Z3RO
February 10th, 2004, 09:45 AM
WHOAAAAAAAAAAAA THERE, WAIT A MINUTE. SeiferTim, that icon of yours... however are those little dudes made? I mean... if pixel by pixel... how the color blending and such?

I've always wondered how those were made, I've tried going in paint, zoom in reeeeeeeaaaaaally close, then set Black on left mouse button and White on right mouse button... twas forever taking.

Sorry, all this just kinda hit me after the gigantic headache.

Anyway, I'm currently learning how to use Freehand 10... I've been avoiding it because the first few times I've tried to use it I was entirely confused. That drawing I did a few posts ago was all in Flash... no wonder it was so hard.

Sigh, the library lady is getting mad at me because I'm not suppose to be on the computers (There's at least 30 of them for crying out loud) if I'm not doing a school related project. So ----------------------- buh-bye :(

SeiferTim
February 10th, 2004, 09:55 AM
I think the one I have right now was made a few years (yes, I've been using it for years) ago in Paint Shop Pro. You can use just about anything you want, I can do some in Photoshop, and yes, they do take a long time to make. However, if we have someone who is good at pixel art, I think it would be the best way to create the style of the program.

Lady Miaka
February 10th, 2004, 10:06 AM
Hi seifer

SeiferTim
February 10th, 2004, 12:31 PM
Originally posted by Lady Miaka
Hi seifer
Hello, Miaka. How are you? :beam:

l0stpr0fet
February 10th, 2004, 09:34 PM
Ive been reading through this, and I have a few theoretical ideas:

To have full AI, one must program all possible variables of life. IE: walls are hard, concrete is hard, etc etc. Say you have one 'mind'. this mind is linked to a database where everything is stored (the properties of life, like walls = hard, pillows= soft, etc). this mind is a database in itself though, and it has things stored in it, and as this mind learns, the database stores the information. one thing that would have to be overcome is the collection of null values. if you are a young child, you may learn eventually that the wall is hard, but you may not know what the wall actually is. so you would have a field in the mind's database that says 'is hard' (which would be another one of life's properties), and have that link up to a null value because the mind doesnt know what to call the 'hard thing'. someone would have to tell the mind what a wall is, or what the hard thing is. so then the mind's database eventually grows very big with null values, and non-null values. if you think about it, the human mind works in a similar way. you have a bunch of information in your mind that is either known or unknown, linked or unlinked. wall is linked to 'is hard' and vis versa. for example, i know that there is a sky, which has many different properties. *begin stupid metaphors* it is blue, its full of air, clouds, etc etc. maybe you know there is a thing that is blue and has air and clouds, but you dont know the name. maybe you know something has clouds and something (which is air, but you dont know what air is), but you dont know what that said thing is. you can think of the mind as a giant file system. if you have ever seen the movie Dreamcatcher, think of the part where the main character is in his own mind, and he can move the memory files around, etc. this filesystem is the mind itself. everything a mind knows is stored in the filesystem. a mind can not know something and not have it in the filesystem.

if im getting complex, sorry, im trying to put this into some kind of readable form :).

continuing on,

so the giant database exists for all the midns who link up to it. similar to the matrix, lots of people hooked in, their minds linking up to a giant database. this database has an unfathomable number of global variables like 'rocks are hard' 'bouncyballs bounce' etc etc. i will refer to these variables as 'knowledge', and i will refer to this large database as the 'world'. now, if our 'mind' links up to this 'world', it begins to live, and learn. over time this mind acquires parts of 'knowledge'. one thing about the 'knowledge' is that if you have a rock, rocks have many attributes. like, a rock is hard, a rock can be shiny, a rock can be dark, can be light, etc etc.. (thus creating a HUGE database that is the 'world') there are many different forms of rocks as well. so then you would have trillions upon trillions upon trillions of little databases that are the 'knowledge', such as rocks again. a rock would be a database of its own, containing ALL of the possible attributes of a rock. the 'mind' will know many different parts of the rock. this mind holds much information, and starts to form a ginormous database of its own, creating mini databases for rocks, for walls, for bouncyballs, etc etc. now this mind has lots and lots of information about all sorts of different things like rocks, walls, and bouncy balls. (hehe, that rhymes). as the 'mind' 'lived' and grew and expanded, it would apply this knowledge to its actions. ie: dont run up as hard as you can against the wall, because it hurts. i will cover feelings further down on this post. now we have a mind that starts to think on its own, learning things like walls are hard, bouncyballs bounce, bob marley is god, rocks are hard, and so on. this mind continues to gather more information from this 'world' database, as it experiences different things from the 'world' and its objects (ill explain objects later). the term learning can and must be broken down, so that it is possible for someone to have the mind learn. learning is pure experience. without experiencing something you can not 'learn' it. you can not know what 1+1 is without actually doing 1+1.(even if you see 1+1 being done,you would most likely try to figure 1+1 out, thus forcing your mind to experience what 1+1 is) this is another thing that makes AI complex. not everything someone experiences makes them learn. in more rare situations, some things are ignored rather than learned. teaching does not always make the mind learn, for the mind is not always experiencing, only hearing, or even seeing in some cases. objects: things in the 'world'. these objects have many different attributes applied. an example of an object and its attribute would be a rock and the attribute 'is hard'. there would be a ginormous amount of objects, and even more attributes. i probably covered this a bit, but this is just for clarity. also, an object doesnt have to be a physical thing, it can be an idea as well. (not going to explain that, too in depth) feelings: the different things a 'mind' experiences in the 'world'. feelings are something that the mind is influenced or affected by. different objects can affect the mind's perception of other objects, etc. not only will the mind have 'knowledge' now, it will also have a whole database of feelings and emotions. this database of feelings and emotions will grow as the mind experiences different things, like running into a wall, and feeling pain, and having an emotion of sadness, anger maybe. back to feelings...

feelings can be triggered by anything in the 'world'. things like a flower making the mind feel happy, or death making the mind feel sad. while the objects in the 'world' may have constant attributes, the mind will interpret things differently. a rock to one mind may make it feel mad, while a rock in another mind may make it feel happy. say there is a master database of emotions, and in this database, EVERY single possible emotion is stored here. the 'mind' will acquire these emotions, and attribute them to objects. if you get beaten with rocks all your life your mind will hate rocks, and attribute a negative emotion to rocks. basically, one mind's interpretation of an object will most likely differ from another's. this is the reason that 'objects' can not have emotional properties. objects are things in the world, and emotions are the mind's interpretation of these objects. then once the mind attributes an emotion to an object, this emotion is stored within the mind, and will have an effect on other objects and other emotions. another complexity exists. the mind can attribute emotions to variations of objects. ie: a shiny rock makes a mind feel good, and a dull rock makes the mind feel bad. <--- simple terms. this creates the mind to also store different instances of objects, all with emotions attributed to them. (another huge database).


although i did not cover every aspect of a human mind, i am not educated enough to know every single thing. heh, they dont teach you about such things in 11th grade.(to my dissapointment)


well, my brain is fried, im going to work on my website now :), I hope this was helpful to your project. Sounds interesting, i might have to chip in from time to time.




LostProfet


"Imagination is the only weapon against reality"

ps: longes post ive ever made heh

{EDIT} also, i probably contradicted myself or something, i was writing from my mind, and i didnt pay much attention to sounding smart lol {/EDIT}

Spirit-Z3RO
February 10th, 2004, 11:14 PM
Correct me if I'm wrong... but isn't this what we've been talking about this whole time (but further detailed)? Or have I just gotten the wrong idea:confused:?

Really good stuff LostProfet, makes me think about a lotta stuff :)
"Why do I hate alcohol?"
"Oh yes, it was my father's excuse of beating the tomato juice out of the family."
I'm in 11th grade too =)

Anyway, how I've seen it so far:
A child does not know to jump of a table falling face first if it doesn't know gravity pulls it towards the ground, and since the ground is hard... well...
Anyway, we, as humans, are also an animal (scientifically speaking I suppose), and so we have some natural senses. Somethings we just know NOT to do (though I can't really think of anything humans wouldn't do when they're still at an infant stage, at least after watching America's Funniest Home Videos).

The mind explores often through curiosity and so we should have a curiosity variable. The more curiosity, the more things Ayumi wonders about, the more things she wonders about, the more she explores about them. This may be a good and/or bad thing, however. Putting her hand on the hot stove may not be the best idea.

So much more to say... but...
I think we should just stick with the basics for now, then add on more and more, like layers of memories... yes, I DID want to sound 'wise' for just a moment :)
We should begin on the simple emotions such as happiness, sadness, anger, ect. The same goes for her world. We could start with one room, maybe the living room, and create it so she is able to interact with the objects in the room. Place some simple objects in the room. A toybox containing a ball, a fish tank containing water, and maybe a flower pot with dirt and small pebbles and such.
Once we can make it so that she's able to explore, identify, and learn all about it, we can expand her world. Create the whole house. And in a bedroom, maybe we could make it so she likes a certain color based on what color you keep your walls, carpet, tissue box, or dislike it because she's gotten sick of it. We could base that off her curiosity level, the higher it is, the more different colors she may want to see and so gets sick of colors quickly. Anyway, in that room, we could have different colored clothing or just simply purple slippers. In this bedroom, she learns about clothing, realizes the colors she like (though not constant), and what things she uses and what others she wears instead of using.
A little by little, we could make it so she even has a mall she goes to, a grocery store ect.

I'm not too sure why i'm saying all this, I'm pretty sure that's how it's been in you guys' minds as well, just been really tired and really just.. wiggin out and stuff.

Sorry if I said something stupid (though may be this whole post, haha)

OBCT
February 11th, 2004, 05:24 AM
Hurray for us!!! We've got the thread with the most views :p:

I've put togeather some really quick, basic, and (at the moment) useless scripts.
Everything here is basically the registration, login, forgot password etc etc etc.
So far I've only got it in PHP so those of you without servers that support PHP, you might have to ask a friend to load this stuff onto their server.


These scripts are safe however no one here, nor myself will be held responsible for any damaged caused by the original scripts OR modifications to the original scripts. On using these files, you are doing so at your own risk.

The above is just so no one can sue anyone.

Here they are



config.inc.php
<?PHP

$dbhost = "localhost"; //Database host name....can be left as localhost
$dbuser = "username"; //Database login username
$dbpass = "password"; //Database login password
$dbname = "database_name";//Name of database
//for linux users it would be "username_databasename" e.g. "bob_work"
//for solaris and unix users it would be "website_com_-_databasename" e.g. "bob_com_-_work"

?>



connect.inc.php
<?PHP

include_once('config.inc.php');

$connect = mysql_connect($dbhost, $dbuser, $dbpass) or die(mysql_error());
$select = mysql_select_db($dbname) or die(mysql_error());

?>



install.php
<?PHP

include_once('config.inc.php');

if (mysql_connect($dbhost, $dbuser, $dbpass))
{

if(mysql_select_db($dbname))
{

if (mysql_query("CREATE TABLE `ai_users` (
`username` VARCHAR( 20 ) NOT NULL ,
`password` VARCHAR( 20 ) NOT NULL ,
`email` VARCHAR( 50 ) NOT NULL ,
`id` INT( 10 ) NOT NULL ,
PRIMARY KEY ( `id` )
);"))
{

echo "<center><B><U>Database has successfully been installed!</U></B></center>";

}
else
{

echo "Error!
Please check that you do not already have a table named 'ai_users'.
Click <a href='" . $_SERVER['PHP_SELF'] . "'>HERE</a> to try again.";

}

}
else
{

echo "Error!
Please check that the database name in 'config.inc.php' is correct.
Click <a href='" . $_SERVER['PHP_SELF'] . "'>HERE</a> to try again.";

}

}
else
{

echo "Error!
Please check that the username, password in 'config.inc.php' is the correct login for your database.
Click <a href='" . $_SERVER['PHP_SELF'] . "'>HERE</a> to try again.";

}

?>



register.php
<?PHP

include_once('config.inc.php');
include_once('connect.inc.php');

$username = $HTTP_GET_VARS['username'];
$password = $HTTP_GET_VARS['password'];
$email = $HTTP_GET_VARS['email'];
$id = rand(100000000,999999999);

$check_usr = mysql_query("SELECT * FROM ai_users WHERE username = \"$username\" ") or die(mysql_error());

$check_result = mysql_num_rows($check_usr);

if ($check_result > 0)
{

echo "&result=2&"; //username in use!

}
else
{

$query = mysql_query("INSERT INTO ai_users(id, username, password, email) VALUES
(\"$id\", \"$username\", \"$password\", \"$email\") ") or die(mysql_error());

$confirm = mysql_query("SELECT * FROM ai_users WHERE username = \"$username\" AND password = \"$password\" ") or die(mysql_error());

$result = mysql_num_rows($confirm);

if ($result > 0)
{

echo "&result=0&"; //Everything is ok!

}
else
{

echo "&result=1&"; //Error!

}
}

?>



login.php
<?PHP

include_once('config.inc.php');
include_once('connect.inc.php');

$username = $HTTP_GET_VARS['username'];
$password = $HTTP_GET_VARS['password'];

$query = mysql_query("SELECT * FROM ai_users WHERE username = \"$username\" AND password = \"$password\" ") or die(mysql_error());

$result = mysql_num_rows($query);

if ($result > 0)
{

echo "&result=0&"; //Everything is ok!

}
else
{

echo "&result=1&"; //incorrect username or password

}
?>



password.php
<?PHP

include_once('config.inc.php');
include_once('connect.inc.php');

$email = $HTTP_GET_VARS['email'];

$query = mysql_query("SELECT * FROM ai_users WHERE email = \"$email\" ") or die(mysql_error());

$result = mysql_num_rows($query);

if ($result > 0)
{

$row = mysql_fetch_array($query);
$username = $row['username'];
$password = $row['password'];

$subject = "AI password recovery";
$message = "Dear " . $username . ",\n
I have sent you this email because of a request from the AI program.
If this email was not sent by yourself, I suggest you change your email in the database. \n

The following are your login details:\n
Username: " . $username . "
Password: " . $password . "\n

Have a nice day :)

From your friendly AI server.";

$sender = "PasswordRecovery@" . $_SERVER['HTTP_HOST'] . ".com";

mail($email, $subject, $message, "From: " . $sender);

echo "&result=0&"; //Everything is ok!

}
else
{

echo "&result=1&"; //Email not found

}

?>


I have attached a zip file with all the php pages and the fla that goes with it. You will also need to go through the fla and change any links in the code to the path of your website. If anyone has any problems, please ask a friend because I havn't got time to help out everyone personally. I'm sure there will be bugs but nothing dangerous so theres no need to be paranoid.......unless your using an illegal copy of Flash :jail:
:to:

Please make sure that you change 'config.inc.php' to have your server's username and password rather than the text that is already there.
For example.......if my database user and pass is "OBCT" and "IgotApassion4Flashin" you would use this...


<?PHP

$dbhost = "localhost"; //Database host name....can be left as localhost
$dbuser = "OBCT"; //Database login username
$dbpass = "IgotApassion4Flashin"; //Database login password
$dbname = "OBCT_aiDB";
?>


Now this is where the hard stuff starts :thumb:
We're just about to get into the actually AI side of things. From here on, we're going to need ALL the help we can get.
The graphics on the fla file I attached are s*** so anyone is welcome to come up with some design to use or edit anything they want.

Important Note:
The form style components were...
Created by N G Rohler.
Email: theelk@elkfoot.com. All rights reserved.

Doing all the AI scripts is probably going to take months. So PLEASE HELP!!!
Even if its just formulas and algorithms copied and pasted from this forum and into Flash, it will still help.

http://www-cs-students.stanford.edu/~amitp/gameprog.html

This is a link that has other links to HEAPS of information on AI. We won't be doing alot of the advanced stuff because most of it is based on game programming rather than AI programming. Anyhow, it will still give everyone a better understanding of how AI works, how to implement it and all sorts of other stuff you probably dont need to know :geek:

This won't work without Team Work!

Please help us all out :)

I've got a busy 2 weeks coming up but I'll be doing all I can to contribute to the project.

Cheers :thumb:

OBCT
February 11th, 2004, 05:27 AM
ma bad....we're the 5th most read post.

SeiferTim
February 11th, 2004, 10:18 AM
:whistle:

Nice submission, everyone... we're getting into some deep metalogical territory here... heh heh...

Some things:

l0stpr0fet: Sounds about the same as what I was thinking. The trouble here is that it will be hard (if not impossible) to 100% accurately reproduce the human psyche, if nothing else because of the difficulties in the fact that the computer does not have anyway to understand physical things. How would you describe HOT or COLD, or PAIN to a computer? I think what we are all trying to acheive here is to emulate a very simplistic version of a Human Mind, in a laboratory environment. She won't have access to certain emotions, or things, but I deffinately agree with the fact that she should be able to create her own connections between objects and emotions. If we show her a candy bar, and she eats it, and the candy bar has a Taste (example) value of 99, then she may decide she likes te candy bar, and eat them often, to raise her happiness... but if we smack her everytime she eats a candy bar, she may decide that she doesn't like them all that much, and may even become a bit of a chocophobe... which would be a little crazy... :beam: I hope you decide to stay with the project, and lend a hand!

Spirit-Z3RO: I was thinking along the same lines of your Curiosity thing... :beam: Hopefully we can get to a point that even if we're not even there, she can still be learning stuff on her own, which would be awesome! Say we leave her alone by herself, and she starts to get hungry. We're not there to feed her, but she sees the fridge in the kitchen, and her curiosity drives her to open the door.... and viola! Food! After that, our main problem will be to keep her from getting a little too much overweight... ;)

OBCT: You know a lot more about PHP than I do... :beam: I've only dabbled! I promise to have a server running for us shortly, just bear with me (getting a check on friday, so I can get it going by the end of the month...) I'll be running the latest version of Apache, and will be able to run PHP on it with no problem, and I have MySQL as weel. I'll plug in the files you posted earlier. I'll send you out a PM when everything's going on Authentication instructions, and so on. Alternatively (and probably better for my bandwidth), we can pitch in and spring for some hosting with another provider. DotEasy.com is afforadble, and pretty reliable, but we should all pitch in, and I'm not sure if we all want to do that, just yet....

Great work everyone! This is building up to be an awesome project! I'll post some more technical info later on... :beam:

flash4food
February 11th, 2004, 06:52 PM
wow this proyect will be very complicated!

anyway i read some of ur posts and i imagined it with some kind of isometric system, if u know how to do this well u could randomly build houses for ur characters with personality AI and even make a house editor! that would be cool

OBCT
February 11th, 2004, 10:15 PM
Just a quick update for everyone...

I've found a good script to use as a base but it's going to need alot of work.

This was made by
Chad Adams
adams_chad@yahoo.com


#initclip 3

function ChatBot()
{
this.callbackHandlerLocation = this._parent;
Key.addListener(this);
this.init();
}

ChatBot.prototype = new MovieClip();

ChatBot.prototype.setCallbackHandler= function(method, location)
{
this.callbackHandlerLocation = (location == undefined) ? this.callbackHandlerLocation: location;
this.callbackHandler = method;
}

ChatBot.prototype.onKeyDown = function()
{
if(Key.isDown(Key.ENTER))
{
this.findAnswer(this.input_txt.text);
this.output_txt.scroll = this.output_txt.maxscroll;
this.input_txt.text = "";
Selection.setFocus(this.input_txt);
}
}

ChatBot.prototype.say = function(the_str)
{
this.output_txt.text += the_str + newline;
}

ChatBot.prototype.init = function()
{
me = this;
this.my_xml = new XML();
this.my_xml.ignoreWhite = true;
this.my_xml.onLoad = function(success)
{
if(success)
{
var root_xml = this;
while(root_xml.nodeName == null)
{
root_xml = root_xml.firstChild;
}
me.dataObj = new Object();
me.createObject(me.dataObj, root_xml);
Selection.setFocus(this.input_txt);
}
else
{
this.output_txt = "error loading xml";
}
}
this.my_xml.load(this.the_file);
}

ChatBot.prototype.createObject = function(theObj, the_xml)
{
for(var i in the_xml.childNodes)
{
if(the_xml.childNodes[i].nodeValue == null)
{
var obj = theObj[the_xml.childNodes[i].nodeName] = new Object();
this.createObject(obj, the_xml.childNodes[i]);
}
else
{
theObj["text"] = the_xml.childNodes[i].nodeValue;
}
}
}

ChatBot.prototype.findAnswer = function(the_str)
{
the_str = this.shaveChars(the_str);
var my_array = the_str.split(" ");
var firstFound = null;
my_array.push("text");
var pos = this.dataObj;
for(var i = 0; i < my_array.length; i++)
{
if(pos[my_array[i]] != undefined)
{
pos = pos[my_array[i]];
if(firstFound == null)
{
firstFound = my_array[i];
}
}
}
if(pos.length != undefined)
{
var text_array = pos.split("|");
for(var i = 0; i < text_array.length; i++)
{
var n = text_array[i].lastIndexOf(":");
if(n >= 0)
{
var x_str = text_array[i].substr(n+1);
this.execCallback(x_str);
}
else
{
this.output_txt.text += text_array[i] + newline;
}
}
}
else
{
if(firstFound == null)
{
this.output_txt.text += "Sorry, I don't understand. Please ask questions only." + newline;
}
else
{
this.output_txt.text += "I don't know "+firstFound+" that is." + newline;
}
}
}

ChatBot.prototype.shaveChars = function(the_str)
{
var chars_array = new Array(".", "?", ",", "!", "'");
for(var i in chars_array)
{
var str_array = the_str.split(chars_array[i]);
the_str = str_array.join("");
}
return the_str;
}

ChatBot.prototype.execCallback = function(the_str)
{
this.callbackHandlerLocation[this.callbackHandler](this, the_str);
}
Object.registerClass("ChatBot", ChatBot);

#endinitclip


In a nutshell, this is a script that loads and parses an XML file that contains things for our AI character to say.



<person>
<how> I am well thank you </how>
<OBCT>The coolest Flash Application Developer alive!!!!</OBCT>
</person>

This xml file for example, will use "how" and "OBCT" as key words, search through the list and find a keyword, then return the node value.

If we ask
Who is OBCT?
The application will return
The coolest Flash Application Developer alive!!!!

I've attached this extension for anyone to experiment with.

Cheers :beer:

Spirit-Z3RO
February 12th, 2004, 09:41 AM
Where can I go to learn the basics of PHP (don't even know what it stands for...).

Hmmm.... still need a formula for a few things -_-

Do we want to speed up the days of Ayumi's world, or are we going to keep it the same as real time?

If we do decided to speed up her day, there are only a few times you can speed it up to keep the seconds/minutes/hours to be a clean number (as in not 2.3333333337 hours per day).

We can speed the time up for the clean numbers by 2, 4, 6, 8 and 12.

so
24 hours / 2 = 12 hours - 12 hours per day
24 hours / 4 = 6 hours - 6 hours per day
24 hours / 6 = 4 hours - 4 hours per day
24 hours / 8 = 3 hours - 3 hours per day
24 hours / 12 = 2 hours - 2 hours per day

There's advantages to both of them, but I don't have time to post them, so I'll just wait till what you guys think of it all.

And the learning/memory and curiosity.... if her curiosity is intensivly high... which makes her wanting to explore rather than sleep... her learning ability and memory would be a bit lower for that time when she should be really tired as we would be if we didn't sleep.
Sometimes we go to bed still wondering about some things, but we can wait because we're satisfied with what we've found out about what we're wondering already... so basically...
we need a satisfaction variable!....
....
I think...

OBCT
February 12th, 2004, 09:46 AM
http://www.phpfreaks.com/
http://www.hotscripts.com/PHP/
http://www.phpbuilder.com/

Theres plenty of tutorials there but don't go out of your way to learn something if your not interested in it.

I'll just keep in mind to comment my (other peoples) code more often. :)

SeiferTim
February 12th, 2004, 11:23 AM
Spirit: Good point, but I think we need to think about it a different way... perhaps a Will variable? And come up with some kind of algorithm such as this:
(Bear with me, since I pretty much forgot what variables we came up with before, but this is hypothetical, anyway... :))


if ( (.energy + ((.will + .drive)/2) + (.curiosity/4)) + (.mood/2) > 0 ) then NeedSleep = False;

We're going to end up with tons of things happening every interval, I hope that we don't run into a processor problem, i.e.: too much code happening at one time.... another good argument for using simple, non-processor intensive graphics....

So here's a general layout of the way the program will (possibly) run:

Program Start - Establish link to Databases, and open beginning scripts.
Draw Graphics - Begin assembling the graphics, i.e., the house, the objects, etc.
Establish Current Environment - Take current time/date, and take random factors, to build the evironment: Temperature, weather, etc.
Awaken Ayumi - Give Ayumi all the needed info she needs to function.
Run Check - Checks all of Ayumi's current status... i.e.: hunger/mood/etc.
Free Run - Give Ayumi the ability to do whatever she wants, and let users interact.
Check Back - Every X intervals, go back to step 5.


We'll need to disect each of these steps as we go along... personally, I think checking her status every second or more often is a bit much, we could try to move it back to about once per minute, or once every 30 seconds... depending on the system.
I don't think we should try to speed up her local time, we should keep it real-time, based off of the Server's Time. So that 9:00 Pm server time would be night-time to Ayumi, and she'll act acordingly:


if (night) then
EnergyDrain = 2
else
EnergyDrain = 1
end if

So that she gets tired quicker when it's night time... ;)
We can make a lot of other similar 'quirks', like, if it's raining, her energy and mood decrease exponentially. Things of that nature.

When we display her 'world', we should split the screen into 3 sections:

Main Environment - Shows Ayumi, and her environment
Status - Shows all of her stats, and things, in easy-to-read bars. Perhaps we can/should make it toggle, so that you can hide it if you want...
Actions - Quick Icons to show things that the user can do. Talk, Pick Up, Examine, etc.


We'll have to come up with a list of Actions that we (the users) can perform, and what they do... I named a couple, but I think we can make up a lot more, if we want.

We still kinda need someone to do all the graphics for Ayumi, and the animation... if anyone is interested in lending a hand, but is more Graphically oriented...

OBCT
February 12th, 2004, 12:08 PM
[

[list=1]
Program Start - Establish link to Databases, and open beginning scripts.
Draw Graphics - Begin assembling the graphics, i.e., the house, the objects, etc.
Establish Current Environment - Take current time/date, and take random factors, to build the evironment: Temperature, weather, etc.
Awaken Ayumi - Give Ayumi all the needed info she needs to function.
Run Check - Checks all of Ayumi's current status... i.e.: hunger/mood/etc.
Free Run - Give Ayumi the ability to do whatever she wants, and let users interact.
Check Back - Every X intervals, go back to step 5.
[/list=1]

With number 1...we've got a good start :thumb:
To have this finished we're going to need to have set as many of the constant's as possible, or at least which one's we're going to use.

Number 2...........I'm graphic illiterate, so I'm not even going to go there :sigh:

Number 3.........Lets give this a start! If we use maybe 4+ variables such as

-Wind
-Precipitation
-Temperature
-Humidity

Using that we can figure out a random number between x & y, then have that change every z minutes. It shouldn't be too much of a problem because we don't need anything else to have been made.
Let me know your ideas and we'll take it from there. :)

Number 4 and down.......we'll keep throwing ideas around then put it togeather when we get up to it.


We're going to end up with tons of things happening every interval, I hope that we don't run into a processor problem, i.e.: too much code happening at one time.... another good argument for using simple, non-processor intensive graphics....
SeiferTim, your exactly right! Good thinking! :thumb:
Graphics and moving objects (usually) eat up the most processing time so here's a few ways of getting around them
1) Attaching images and movieclip objects dynamically so we'll have the option of deleting it when its not in use
2) Using...."non-processor intensive graphics.."
3) Not using Flash :to: jks

Oops, 3am.....I got work in 5 hours :hangover:

Keep up the good work everyone :beer:

Cheers

SeiferTim
February 12th, 2004, 02:01 PM
Think, think, think.... c'mon brain! WORK!

Okay. Weather.
Someone else can come and clean up my sloppy code, since I'm doing this while I'm at work... I know it's not syntaxically correct. Shoot me... ;)

//***basic global variables for Weather conditions***

Temperature:Number; //Temperature in degrees
Humidity:Number; //Amount of Humitidty (if it's anything like St. Louis, it's be up as high as it can go... )
Precipitation:Number; //Percentage of current precipitation, low (like say 10) is light drizzle, or light snow flurries, 100 would be like torential downpour, or blizzard.
Wind:Number; //windspeed in MPH
Conditions:Number; //Percentage of how favorable the weather is in general (100% = Perfect, 0% = DO NOT GO OUTSIDE!!)
precipType:String; // type of precipitation that wil occur...

//basic code snippits for actual weather conditions... add them into the code somewhere to give the weather some change...

if (Temperature > 35) {
precipType = "Rain";
} else if (Temperature > 32) {
precipType = "Sleet";
} else {
precipType = "Snow";
}

Conditions = (100 - (Precipitation + Wind + (Humidity - 20))) + (Temperature / 4); // I think this needs some work, but this is kind of a sample...


Anyone care to add to it?

Spirit-Z3RO
February 12th, 2004, 10:56 PM
Hehe, I've always wanted to learn the codes such as PHP, C,C++, ect, all of those. They seem very similar... so I figured once u figure one out, the other shouldn't be as hard, though may still be hard. And I understand how you can get two or more codes mixed up sometimes, but it's just something I've always wanted to do :)

OBCT
February 12th, 2004, 11:37 PM
Programming is piss easy once you learn the process of everything. It took me ages before I understood all the OOP stuff, inheritance etc but once thats all figured out, you can start having some fun :)
Doing this project in Java or C++ would make things ALOT easier in some ways, but alot harder in others.
Flash is still very limited as to what you can achieve.
Java on the other hand...theres ALOT you can do but...it takes a while to write everything.

As for the weather class, I've got something basic nearly done. I'll show you asap.

Jerryscript
February 13th, 2004, 12:03 AM
I first worked on an AI project in the 80's for the US Army, and it was limited to if/else stuff, the programmers weren't very creative, too locked in the code. They wanted to know what decisions were made by field commanders, then they worked for a day and called the FCs back to ask them to break down the decision into sub-decisions. They would repeat the process over and over, and continued this for weeks, and had a pretty impressive set of code, until they tried it out against itself. ;)

AI based on progamming a fixed set of variables is not AI, but rather effect/response, or a Pavlovian result. This is fine for virtual pets, but it never achieves anything beyond mood changes and very simple behavior modification.

All life-form actions are based upon a single factor: desire. Psychologists have known this for almost a century, but have argued over and over about what desire is and which desires have precedence.

Intelligence then can be loosely thought of as the end result of desire (sort of a backwards engineering way of looking at it).

Example: A baby has a desire for food, but lacks the intelligence to satisfy it. (Here is where the if/else programmers get screwed up.) A baby wants food, fusses if he doesn't get it, or is happy and goes to sleep if he does. So, the baby learns almost immediately it will get food if it cries. As time progresses, the simple if/else for food is complicated by the introduction of taste and the resulting desire for certain flavors. Now the baby doesn't just cry if it's hungry and doesn't receive food, it may also cry if it is hungry and receives food it doesn't like, or it may cry if it receives food it likes but wants another flavor right then. Along the way, a baby begins to learn to communicate until he can satisfy the desire for the flavor. Hence, a baby's cry becomes an adult's order to the waiter for "just a hint of garlic".

Many of the posts in this thread have mentioned punishment/reward. In the baby example, punishment/reward will help to modify the way the baby communicates, but will not usually affect the underlying desire (it may strengthen or weaken it, but never erase it). This is why rebellion is a fact of nature, you can modify the behavior, but not the behavior's motivation.

So how can we modify the basics of programming, if/else statements, to emulate non-linear decision making? Think 3-d. Normal if/else statements can be envisioned as 1 dimension, you either go forward or back. So the if/else statement can be thought of as a stop sign. Extended if/else statements (multiple comparisions, multiple elseif, etc) can bring us to 2 dimenional allowing us to go forward or back, and left or right (or up/down, which would be a matter of orientation). In this manner, the if/else statements can be thought of as moveable roadblocks. Extending the progarmming concept furthur, we can use variable typing, string contents, mutli-dimensional array searches, etc, to bring us to 3 dimensional allowing us to go forward or back, up or down, left or right. In this manner, we no longer are dependent upon mapping (stop signs, road blocks), but have achieved a new level of freedom.

Now, the final piece of magick: time. Over time, desires are strengthened/weakened based upon the availability to satisfy them, the appearance of new desires (or the reminder of old ones), and the relationship of this particular desire to other desires and the conflicts that attempting to satisfying them creates. As noted previously in this thread, mood is very time dependent, but even more important is the time-to-satisfy-desire vs conflicts-with-other-desires. Though you may love strawberrys, you can only eat them until you begin to feel bad, hence a conflict between the desire for strawberrys and the desire to feel good over time weakens the desire for strawberrys, and intelligence will recognize this and may not eat as many strawberrys in the future.

So then, we may be able to program intelligence as the ability to make a choice (desire) based upon the environment (conflicts) and the time available.

So we have three determining characteristics of AI: desire, time, conflict

The 3-d if/else coding is not too difficult to write and/or extend dynamically. However, the complex interations of time and conflict have always been my stumbling blocks.

OBCT
February 13th, 2004, 01:10 AM
It's comming to the point where my ideas about programming this personality are running out.

Anyway.....heres the Weather Class for anyone to expand on.....

ActionScript 2.0

class Weather
{
var precipitation:Number; //100 is bad, 0 is fine
var temperature:Number; //Degrees Celcius
var humidity:Number; //Percent
var event:Number; //Random number to produce certain weather events
var wind:Number; //k/ph

//Temperature restrictions
var high:Number = 50;
var low:Number = -10;

//Humidity restrictions
var max:Number = 90;
var min:Number = 60;

function Weather()
{
this.update();
}

function update():String
{
this.event = Math.floor(Math.random() * 100) + 1; //Creates a random number to define any large weather events
this.temperature = Math.floor(Math.random() * (this.high - this.low + 1)) + this.low;
this.humidity = Math.floor(Math.random() * (this.max - this.min + 1)) + this.min;
this.precipitation = Math.floor(Math.random() * ((this.humidity + this.temperature) / 2.5)) + this.temperature;
this.wind = Math.floor(Math.random() * (this.precipitation * 2.5));

if (this.temperature < 18) this.humidity = this.humidity % 50;
if (this.precipitation < 0) this.precipitation = 0;
if (this.event == 100) this.makeBlizard(); //When 100 becomes the event number, it makes a blizard
if (this.humidity < 0) this.humidity = 0; //To stop humidity from becomming a -number
if (this.wind < 0) this.wind = 0; //To stop wind from becomming a -number

return "Temp: " + this.temperature + "\nHumidity: " + this.humidity + "\nPrecipitation: " + this.precipitation + "\nWind: " + this.wind;
}

function makeBlizard():String
{
this.temperature = Math.floor(Math.random() * (-30 - -15 + 1)) + -15;
this.wind = Math.floor(Math.random() * (180 - 150 + 1)) + 150;
this.humidity = Math.floor(Math.random() * (30 - 12 + 1)) + 12;
this.precipitation = Math.floor(Math.random() * (100 - 90 + 1)) + 90;

return "ARRGGHH!!! A BLIZARD!!! \nTemp: " + this.temperature + "\nHumidity: " + this.humidity + "\nPrecipitation: " + this.precipitation + "\nWind: " + this.wind;
}

//Any more weather events can be added
}

ActionScript 1.0

#initclip

Weather = function()
{
//Temperature restrictions
var high = 50;
var low = -10;
//Humidity restrictions
var max = 90;
var min = 60;

this.update();
}

Weather.prototype = new MovieClip();

Weather.prototype.update = function()
{
this.event = Math.floor(Math.random() * 100) + 1; //Creates a random number to define any large weather events
this.temperature = Math.floor(Math.random() * (this.high - this.low + 1)) + this.low;
this.humidity = Math.floor(Math.random() * (this.max - this.min + 1)) + this.min;
this.precipitation = Math.floor(Math.random() * ((this.humidity + this.temperature) / 2.5)) + this.temperature;
this.wind = Math.floor(Math.random() * (this.precipitation * 2.5));

if (this.temperature < 18) this.humidity = this.humidity % 50;
if (this.precipitation < 0) this.precipitation = 0;
if (this.event == 100) this.makeBlizard(); //When 100 becomes the event number, it makes a blizard
if (this.humidity < 0) this.humidity = 0; //To stop humidity from becomming a -number
if (this.wind < 0) this.wind = 0; //To stop wind from becomming a -number

return "Temp: " + this.temperature + "\nHumidity: " + this.humidity + "\nPrecipitation: " + this.precipitation + "\nWind: " + this.wind;
}

Weather.prototype.makeBlizard = function()
{
this.temperature = Math.floor(Math.random() * (-30 - -15 + 1)) + -15;
this.wind = Math.floor(Math.random() * (180 - 150 + 1)) + 150;
this.humidity = Math.floor(Math.random() * (30 - 12 + 1)) + 12;
this.precipitation = Math.floor(Math.random() * (100 - 90 + 1)) + 90;

return "ARRGGHH!!! A BLIZARD!!! \nTemp: " + this.temperature + "\nHumidity: " + this.humidity + "\nPrecipitation: " + this.precipitation + "\nWind: " + this.wind;
}

//Any more weather events can be added

#endinitclip


I'll have more to say tonight after work so until then...

Cheers :thumb:

OBCT
February 13th, 2004, 09:32 AM
Just a question.............

What happens when we're not interacting with our character?
:ear:

SeiferTim
February 13th, 2004, 10:23 AM
Originally posted by OBCT
Just a question.............

What happens when we're not interacting with our character?
:ear:

Good question. What I would like to see, is a way for her to continue 'living' out her existance like normal, i.e. have the program still running somewhere, and let her figure things out on her own. This may end up being very, very difficult to pull off, so we'd need to have a fail-safe... like every 30 minutes create a 'check-point', that we can go back to if something goes really wrong... say we leave her running for 8 hours (we're sleeping, or something), and for 5 hours, everything goes fine... so we'd have 10 checkpoints in the system... at 5:20, she decides that she wants to see what happens if she puts a watermelon in the microwave, wrapped in foil (just an example)... after the explosion, she no longer wants to have anything to do with watermelons or microwaves (she's scarred for life), and nothing we do can bring her back to sanity... so, we'd go back to our 10th Check-point (the one that happened at 5 hours), and re-do those last 3 hours, or so... "REDO!"
Which brings up another important thing we should discuss: accidents.
What happens if she turns on the stove, all the way up, puts some bacon in a pan, and then leaves the room for 10 hours? Do we just have the bacon burn, and taste nasty? Or do we set the house on fire? My opinion would be to set the house on fire, make the fire department show up, put out the fire, and then she'd have to witness the incedent in its entirety. This should help her learn to be more cautious the next time she is cooking, or, if she's really messed up, make her a pyromaniac...:red: Now, we probably won't be jumping into the "cook-her-own-food" section just yet, for right now, she can pull ready-to-eat food out of the fridge, but you see where I'm going with this: don't go easy on consequences. If something bad can happen, make it able to happen so that she learns from it. Really like the code, OBCT! :beam: I promise to lend more of a hand when I get my PC running again... ordered the Mother Board and new CPU last night from TigerDirect.com... got me an AMD Athlon XP 2600! A step up from my 2000 Yay! :beam: Should arrive today, or tomarrow (while I'm stuck here at work :P), and I should be up and running by Tuesday.

Welcome to the topic, Jerryscript! I imagine that we'll have a bit of diffilculty getting Ayumi to really desire anything... it'll be a challenge... I think we're still sort of in the realm of just making Ayumi look like shes actually thinking, or desiring... we'll hopefully keep adding, and tweaking until a point where she can truly act on her own. I think we may want to inclue a couple of Desire factors into our model.... not sure how we can do it yet... perhaps we can assign a value of "Desireablility" to each item, and/or action that Ayumi comes across.... and she can change these values depending on things... for instance, we can have a table of Desire built somewhere in her code that she can add to, and change:


Apple = 10;
Chocolate = 70;
Affection = 80;
Snake = -20;
Sleep = 10;

Her list can change depending on what she's been doing, say, she's been eating chocloate all day, then the desire for chocolate might go down to 0, or negative (denoting that she is repulsed by that particular item)

Arg. I got a call, and lost my train of thought... why do stupid people need DSL anyway!?! Grr.... :a:

SeiferTim
February 13th, 2004, 11:11 AM
I remember what I wanted to say.....
We should probably make 2 lists: a static, and a dynamic list.
The static list would be her general outlook on all items.
Say: Chocolate is 70, and Heights are -10.
But her dynamic list would be the way she currently holds any one particular item... so that say she eats 10 boxes of chocolate in one sitting, then in her Dynamic list, her desire for chocolate will be set to -5, but gradually return to 70 after a period of time. The first list is inevitably going to end up being massive, but the second list we can keep pretty small by only containing the items that currently have a change, so that when chocolate is anything but 70 it'll be on list 2, but if it is 70 (which will probably be most of the time), it will be absent from the list.
This will help cut down on the size of our tables... at least a little tiny, probably insignifigant bit...:}

I think we'll need to incorporate a variable into each object, or action, that rates it's underliying desireability (sp?), so that chocolate in general has a desireablity of 50. Some people don't like chocolate, so after they try a piece for the first time, they decide they don't like it.

For Ayumi, she'll try a piece for the first time, and a bunch of different things will come together: Current mood, current environment settings, recent events, random "taste" modifiers, etc. And depending on all these factors, she'll reach her own conclusion on whether or not she likes chocolate. 2 examples:

First, let's say she's had a bad day, it's rained all day, she had this happen, and this happen, etc, etc... she's just surly today. So, someone decides to give her her first piece of Chocolate, which based on her current mood, and her random "taste" modifiers, she gives it a value of 15 in her Desire List A.

Second Example: She's had a great day. Everything went okay, the sun was shining, it was pleasant out all day... etc. She tried chocolate for the first time, and after her standard calculations decides that it deserves a whopping score of 98.

Thinking about it, this isn't quite the same as the Desire mentioned above, but more like what she generally likes/dislikes... but I think with these values we can give her some desire to motivate her actions.... in theory... :beam:

OBCT
February 13th, 2004, 11:40 AM
YES!!!

Lets work with that!!!!
If we can turn that into an algorithm, we'll have made probably the hardest part.
Once we've got that formula, all we'll need to do is put it into a class then relate any events and emotions to have it output the new result...

E.g.

Chocolate = 70..........10 boxes(3 pounds) later chocolate will == 10.........

Then we update that into our database and Bob's our uncle! :beam:


got me an AMD Athlon XP 2600!
I want one two!!! :m:

Usually I'm running about 30 programs at once...then windows has a cry and asks if I want to free up some ram.......I click yes......then it wont let me because THERES NOT ENOUGH FREE RAM!!!! :m:

Back on the subject..........

How are we going to animate our character when performing certain tasks like doing the dishes and cooking dinner?

For example.....

function testAnimation():Boolean
{
var canDoAnimation:Boolean;
var animationSkill:Number;
var name:String;

if (this.name == "OBCT")
{
if (this.animationSkill == 0)
{
this.canDoAnimation = false;
return this.canDoAnimation;
fscommand("quit");
}
else
{
trace("Liar!!!");
}
}
}

As you can see...I'm bored!...and I've got no idea about graphics/animation.
We have to keep in mind that Flash can't handle much before it either locks up and asks if you want to continue running the script or it justs down.

If you want to see it in action, then try this.

THIS USES UP ALOT OF RAM
DO NOT TRY THIS WITHOUT SAVING YOUR DATA

onEnterFrame = function()
{
for( ; ; ) { };
}

As you can see, even one line of wrong code can cause a bit of trouble so we'll just have to be careful.

If we want to have our characters skin customizable... should we make some basic model that has a bitmap around it? :huh:

So yeh...just a few thoughts.

Cheers :thumb:

SeiferTim
February 13th, 2004, 12:12 PM
More arguments for moving towards a more powerful language... perhaps C++, or VB, with DirectX Tied into it.... then again, almost all of our animation should be in small sprites, to help with the work-load... I do know quite abit about animation, and things, I can work in Flash, or VB, fluently, the others I've been out of touch with for so long, it may be a bit difficult.
Essentially, anytime we start a particular action, say Sleeping, then we just set a global variable, or one of Ayumi's Class Variables to CurrentAction = Sleep;, and have another piece of code pick up and display the animations nesecary. Not hard at all, but you seem to have more of a practical, data moving mindset, while I've been coding games for years, and just now moving into a more practical working environment. I think we can compliment each other's abilities nicely.

Yeah, my 2600's gonna be schweet! I already had 768MB of Ram in my PC, and I never got the "not enough ram" message, even when I had Photoshop, Flash, 3ds Max, and WinAmp with my 20,000 mp3s in the playlist running. Man.... I can almost taste the power behind the processor... MWA HA HA!! My wife's gonna build her own computer, and she's looking for a 2800... she's tired of my motherboards "always" melting, though it's only happened once!

Spirit-Z3RO
February 13th, 2004, 12:16 PM
Seifertim, remember the Set variables I was talking about in the earlier posts?
That's the dynamic and static list!
I knew I didn't make any sense -_-
Once we get a formula of what the Dynamic variable for the chocolate is, based on how she grew up, we can apply that to literally everything.
Example: Chocolate has a natural value of 0 - she doesn't know of such thing yet.
While she's still young... you... smach her with a stick of chocolates, she probably won't like that very much, so chocolate gets a -10. Then once she gets older, her Courage variable (if we have one) will allow her to take a bite of chocolate (as revenge maybe?) and decides she likes it, so it gets +20 or whatever number.

and... I HAVE THE SAME AMD! 512 RAM.... the thing over heats like no other T_T and.... i can't run at normal speed (only at 1.4) due to heat... only gots three fans...

DESIRE- I was thinking of this once, and I decided the curiosity would fill this gap up, but now that I'm thinking of it again (thanks JerryScipt) and realized that Curiosity doesn't fill up for desire :-/

Desire and Curiosity DO have connections right? Desire to know, curiosity to explore... or just 'curious and so put hand on stove'?
Maybe if we gave her a Desire variable... and a script that scans if she knows certain things or not, if not, she'd ask you...

So if she doesnt know what the wall is, she'd point at it and ask, "What is that?"
"It's a 'Wall'" you tell her (maybe we'll have to format certain keywords).
So from then on, she knows it's a wall.
Next day (sun goes down, moon comes up, sun goes up, moon stays for a little bit, moon goes down), she comes and asks, "What's that thing on the wall?"
"What thing?" You ask, seeing a painting and an... apple nailed to the wall...
"That," she said and pointed towards the painting.
"That's a 'Painting'."

And based on her energy, intelligence, ect. Her learning ability may be differ. If she's tired, she'll probably forget (or maybe not even have the desire to ask in the first place). Then the next time she asks you, "What's that again?"
"Again" because often times, we already know that we've asked SOMEONE what something is, but don't remember what it is or sometimes even who you've asked it to.

I have this whole thing about Desire, but I'm running out of time (in class) so I have to get going.

Sorry if I said anything stupid >< been in a hurry and I'm somewhat brainstorming as I post, so forgive me -_-

Oh... is this anyway connected the Philosophy? If yes, I think we can get some really good ideas in the Order board and the Random board...

SeiferTim
February 13th, 2004, 12:36 PM
Sorry, Spirit, I must not have caught your explanation before, I missed it. We need to try and get a little more organized... :crazy: Anyone want to volunteer to start compiling all the information we have now? We can make it a TXT file, or use MS Word, or something, and once I get a chance, I'll start adding it to the web-site.

Yeah, my 2000 used to overheat a bunch, but I bought a massive fan and heat sync for the CPU, which eliminated that problem... hopefully I won't have a problem with the new CPU.... :puzzled:

This method of having 2 lists does make a lot of sense, and we should try to incorporate it.

SeiferTim
February 13th, 2004, 12:38 PM
Oh... is this anyway connected the Philosophy?
I would think it leans more towards Psychology, or behavioral Studies, neither of those I know much about.... heh heh...

SeiferTim
February 13th, 2004, 02:16 PM
Oh Yeah, Spirit: http://www.w3schools.com
Check it out. I haven't been there in a while, but I'll try to get back and check out some of the PHP stuff they've got when my comp is rebuilt. They've got lots of tutorials.... :beam:

Jerryscript
February 13th, 2004, 10:13 PM
SeiferTim,

I think for an AS based character with a database to draw upon, you have a good begining to an algorithm there. I think the important thing is to remember the KISS rule. While we are thinking about this, we are coming up with new ideas, but when thought out, we will find that most of them are variations on a theme. Much like optimizing any set of code, our algorithm will begin to grow complex, but eventually will be able to be optimized to an AS compatible form.

One thing I think we need to add now is the environmental variable of the desire objects. Perhaps we can say that if the current environment is the restroom (or any environment that would make eating undesireable), the desire for any food object would diminish. However, upon leaving the restroom, it would would increas by an amount that is determined by the environment outside the restroom. For instance, the desire for all foods is diminished by 70% upon entering the restroom, and upon leaving the restroom, it returns to the previous level (with a time factor), unless events have passed in the restroom that would prevent it (won't even hypothesis on what events :) ). If the environment outside the restroom has changed upon leaving it, say someone opened the oven with chocolate chip cookies making the entire house smell delicious, then the desire would be increased/decreased appropriately. I would like to keep it as simple as possible, but I think this is an important factor.

Spirit-Z3RO,

I'm not certain that curiosity and desire are different. Every intelligent being is constantly in search of knowledge of some sort, whether it is knowledge of what their favorite character on TV will do next (never thought of being a couch-potatoe as a knowledgable experience before eh?), or the knowledge of what a wall is in the eyes of a child, or the knowledge of how to achieve success, it all boils down to an attempt to satisfy a desire. The couch-potatoe enjoys the TV character, and desires to know more about them (is curious about them). The child wants to learn what the wall is so that they can interact with others (a basic desire), after all, they are asking how to say wall, not what is a wall in this example. The hyper-acheiver wants success, the knowledge is just a means to an end with curiosity being the desire to know how. Hmmm, that pretty well sums up what I'm trying to say, isn't "curiosity" the "desire" to know?

I do like the energy factor, and I'm already trying to think of how to apply the KISS rule to any implementation of a correlation between energy and environment.


On the subject of compiling this in a single location, perhaps a wikki of some sort would be a good idea? I'm not real up-to-date on how to organize online projects of more than three people.

Also, which AS version should we use? I'm partial to AS1 now, but I believe this project may take long enough to consider AS2 only features as usable in the future.

Roomie has to use the phone, more on this later! :)

Thanks for the welcome!

Spirit-Z3RO
February 13th, 2004, 10:56 PM
JerryScript, THANK YOU :) I was wondering why the connection between Curiosity and Desire came to mind.

Anyway, SeiferTim, OBCT, thanks for the links, I'll bookmark them for now... so busy -_- my mother just opened a bakery, so i have to help out there once I get out of highschool. Anyway, I can't find my notebook....... where is it... :*(?

Jerryscript
February 13th, 2004, 11:06 PM
One last quick note for today:

Just wondering, anyone ever mess with using various bit formats for affecting variable factors?

Example: the RGB color object. While it's RGB value is a single number, it's composition is formed from three factors that each affect the overall output in both individual and grouped ways. Increasing the value of any of the three basic colors will not only increase that color's dominance, but also the overall brightness.

So our desire algorithm could be based upon a set number of factors (3 for this example: time since last satisfaction, environment, and current base desire level), and any changes to a particular item's desirability could be made with a bitwise calculation:


// factors using hexadecimal base
function getDesireLevel(item,time,environment){
return(item<<16|time<<8|environment);
}

This code can be expanded to the number of factors desired, and even have a variable number of factors. The tricky part would be determining which factors should affect which next in the bitwise shift.

Perhaps this is a way to achieve the multidimensional freedom from if/else I ranted about in my first posting?

(sidenote- I am proficient with flash/php/ming and will be happy to help with the coding. With ming (see my old basic ming tutes (http://jerryscript.hostrocket.com/php/ming/lessons)), we can dynamically hardcode any variables/object/etc needed into a swf, this can help to cut down on the number of calls to the database, and reduce the number of needed calculations at any given time. hmmm, I hope we can make use of the SO as much as possible for even more bandwidth reduction.)

SeiferTim
February 14th, 2004, 10:22 AM
Jerryscript - Not sure what you meant by "Wikki", I've seen the term before, but wasn't sure if you meant it in the same context.

What I was thinking of doing for our site, is simply throw up a PostNuke site, edit it a bit, and then throw A phpBB forum up as well. This should give everyone a chance to follow up with how the project is advancing, and make their own contributions if they want. I'm looking to put it somewhere (affordably) with more bandwidth, but for right now, since I'm broke, I'm just gonna run it off my Apache Server....

If I understand you correctly, each desirable item/action would essentially have a matrix assigned to it, with each af the values for Time Since Lase Indulgence, Environment Conditions, and how much that item is desirable in general? The thing that concerns me, is that she might end up suddenly wanting a particular thing, just because it's been a long time since she's had it.... (after a while, the Time Value will be high-enough to cancel out any other things to make the item less desirable....) Which, we know, is not nessecarily the case. Just 'cause I haven't had a Coke in a long time, doesn't mean I'm going to run out and get one, just because... there has to be some underlying catalyst to open the desire, so to speak.... it's kind of hard to expain, but I'm not going to suddenly jump up from my chair, and say: "HOLY MACKERAL! I haven't had broccoli in a year!" Then run out and get some broccoli...
Just speaking in hypothetical terms, we should find a way to balance the desire levels... I' trying to explain this as best I can (wish we had a Dr Phil in the forum... ;) ) Lets say I like Pepsi, don't like Coke too much, but don't hate it either. I'm thirsty. So my desire for any consumable fluid is fairly high to begin with. I haven't had a Coke in 6 months, but I've had a Pepsi yesterday. I walk to the QuickTrip, go to the fountain, and they have both Coke, and Pepsi. Due to the fact that i haven't had a Coke in 6 months should not overrule the fact that I prefer Pepsi, but lets say the numbers unbalance the the reality, and I end up getting the Coke on the sole basis that 'it's been a while since I had one'... To me it doesn't seem like a lot of sense, and this applies to a lot of things, other than just soda, or food... it should also apply to other things as well.... like I said, it's a bit hard to put it all down in print... I'm trying to describe it the best I can... :beam:
I think before we start getting too crazy, we should do this:
Build the engine where she is non-thinking, and pretty much like a virtual pet. Make her energy decrease, and her hunger increase over time, and we can force-feed her, and stuff. Get that working, and then we can begin to implement a sort of Desire, and perhaps an artificial thought process as we go along... otherwise, we're going to be constantly coming up with crazy things to try and add, and not really go anywhere... ;)

OBCT
February 14th, 2004, 10:36 AM
I'm in the middle of watching "Texas Chainsaw Massacar" or something like that and **** OUTLOOK EXPRESS SOUNDS!!!!!!
Right in the middle of a VERY scary part, I here some weird noise at 50 million decibles so now I have to change my pants :(
Nah i'm jokin but this brings me to another thought......

With our (non existant) alorithm.....will this limit the possible behaviours of our character?
This may sound like a dumb question but I'm manic off my tree and I can't figure it out.
Lets say we just came up with one in 10 minutes......then someone else somewhere in the world creates another algorithm.......what would make one better than the other???
Are we limiting the possibilities by using just the 1 formula?

I understand alot about human behaviour but when it's put into maths.....it makes noooooo sense anymore.

Grrrr.......theres sooo much stuff spinning around in my head and I can't figure out how to write it down so it makes sense. :(

Another quick thought before I get back to watching this stupid movie............

Should we try to make a basic version of AI to simulate what we're trying to achieve so we can visually see that this is possible??? Like even if its just 3 variables effected by time and weather that did a System.out.println on our applet to show the results......

"Famous last words while using a computer"

"I wonder what this does........"

Cheers ppl :p:

SeiferTim
February 14th, 2004, 11:09 AM
What's that...? Behind you! NO! Don't! It's - It's OUTLOOK EXPRESS!!
Anyway, I really think we need to get organized in a way that say OBCT was typing a subroutine for checking hunger, and I was working on a piece of code to show her being hungry, we should be able to compliment each other's work, like if I call my function "showHunger()", then he will be able to call my function, and use it, but he doesn't need to know how it works. This is generally how programming in a group works... if we get our site going, we can get ideas from other contributors, and add to what we already have. This is generally how we should work... in my opinion anyway...

OBCT
February 14th, 2004, 11:17 AM
I agree Seifer Tim! When working in groups, ALOT more gets done!

*Pulls a keg of coffee out of the garage*

And this will help 2 :sen: :bounce: :te:

SeiferTim
February 14th, 2004, 11:30 AM
if I can get someone to handle the actual images, I can code all the image handling events, and get the animation set up. i really want to go this in a Pixelated Sprite type format, since it'll be easier to work with, be less graphical intensive, and be nice on the eyes, too... I think OBCT is pretty much the best choice for all the code relating to PHP, and if he's willing to handle the workload, some of the other code as well (weather, etc)
Spirit, if you're good with AS, and I think you said you were, if you want to handle some of the various AI scripting, and alogrithms... and if JerryScript wants to help out, let us know what you'd be good at doing. Anyone who has good pixel-art skills, let us know if you're interested in helping!!!

SeiferTim
February 14th, 2004, 12:14 PM
It's primitive, it's free, it's cheesy, but it's temporary: http://www.angelfire.com/dragon2/projayumi
Just to get us centralized, and help lift the strain from Kirupa's Servers... :beam:

Jerryscript
February 14th, 2004, 12:31 PM
Cool, my last post on this at Kirupa, thanks for bearing with us all Kirupa members! :)

Perhaps this could be a sourceforge project? The sourceforge interface allows for various levels of administrative control over group projects.

SeiferTim
February 14th, 2004, 12:54 PM
Not too familiar with SourceForge... details?
I don't have a forum going, yet... bear with me... can only do so much while at work....

SeiferTim
February 14th, 2004, 03:14 PM
Ugh... pretty much done with the site for right now... I had to resort to using Angelfire.... I appologize, everyone.... THIS IS ONLY TEMPORARY!!
By next week, I will have a real site running. I just wanted to get something up for right now... don't critique the look, I know it's crappy, but if you want to help add to it, let me know.
http://www.angelfire.com/dragon2/projayumi
Check it out!

Spirit-Z3RO
February 14th, 2004, 11:19 PM
First of all, dude OBCT, the coffee hauling is MY job :a:
Second of all, SeiferTim, I posted that I'm not too good with AS :( But I'm learning!
And now, I forgot what I was going to say... so I'll post in a little bit -_-

*edit*

Oh yeah! I remember now!
The Pepsi VS Coke delima. What if your curiosity was at a higher level than normal, causing you to choose coke... wondering what it tastes like again...?

OBCT
February 18th, 2004, 08:37 AM
Is anyone still interested or did we all jump off a cliff when the forum was down?

We need to get a list of formula's and variables so we can put them into classes and get SOMETHING working :)

Cheers

SeiferTim
February 18th, 2004, 01:10 PM
I'm interested. Just haven't been at work lately (days off, finally :beam:), plus, I'm trying to rebuild my PC finally. I should be getting the DDR Ram I need today... hopefully (When I ordered the Motherboard, it never said DDR Ram, and I don't have any... heh heh...)

OBCT
February 19th, 2004, 09:28 AM
OMG OMG OMG

http://home.swipnet.se/dungeondweller/development/dev00055.htm

Anyone who doesn't read this will die a terrible death :)

Yes, it's based on action games but there are HEAPS of key concepts we really should use!!!

Have a look through and tell me what you think.

Cheers

OBCT
February 19th, 2004, 09:30 AM
http://www.cs.northwestern.edu/~forbus/c95-gd/lectures/The_Sims_Under_the_Hood_files/v3_document.htm

I'm on a roll tonight! :thumb:

SeiferTim
February 19th, 2004, 11:46 AM
Both of those are pretty awesome... didn't have a chance to read through the SIMs one too much, but the other one was schweet. I think we can try to build our system to incorporate similar concepts, I kind of liked the "most urgent action", which makes sense that certain things will cancel out the current desire of someone, for instance, if Ayumi is standing somewhere, and wants to go watch TV, but in the kitchen a fire is raging, she should determine that putting out the fire/calling the Fire Department/Escaping the House are more urgent than her desire to catch an episode of Law & Order.

SeiferTim
February 19th, 2004, 02:11 PM
I think we still need to kind of get things situated, so that we know what we're doing... :) OBCT, do you have some code that you've figured out, and like? Spirit, do you have some of your ideas put together so we can work with them?
I want to start typing up a type of Project Outline sometime soon, once we get the info together.
I'm looking into SourceForge.net, and it looks interesting, to say the least... as SOON as my PC is working, we'll have a small server running, and I can send everyone links.

In the meantime, anyone have any ideas, on how to incorporate some of our recent ideas? I want to really start working on this soon... :beam:

SeiferTim
February 19th, 2004, 02:42 PM
Okay, so I was trying to read through the pages, and pages of documentation on SourceForge.net, on what they do, and how to submit new projects... it's a lot of stuff, and its too crazy at work to be able to read through it... if anyone else has a chance, or has had experience in the matter, can you give us a bit of a condensed version? I plan on going through all of it eventually, probably when my PC is up, and we've basically got a bunch of descions to make. OBCT, I know you're dedicated to the project, and I think Spirit is, too, so we need to get the 3 of us together (on-line, most likely), and work out all the kinks.... if you want to send me your e-mails, please either PM me, or e-mail me: seifert@bahamutsoft.com, and I can work on getting things put together for us... I intend on building a site, and (unless someone else would be so kind...) I'm going to work on some project documentation, and then start on some coding/graphics work... phew... got some work ahead of us, don't we... he he... :beam:
Okay, let me know your opinions, thoughts, ideas, etc... I'm going to lunch!

Spirit-Z3RO
February 19th, 2004, 11:27 PM
Yeah... I did jump of a cliff... thank goodness I survived, the forum's back up :)

Yes, I am still very into this, but I've been insanely busy lately helping out at my mom's bakery from 3pm-9pm and school before that, by the time I get home, I'm wondering about life -_-
I only have time on the weekends basically, but maybe not for a week or two... I'm failing 3 classes and having an incomplete in one.... haha.... So I'm trying to pass two more classes, at least.
Anyway, I'm thinking of making a demo-like thing with the variables and all and some substitute formulas (until we get figure out real ones) when I can. Sorry of not being much of help -_-

Btw, I'm also busy with learning how to speak japanese.. then I'd be quadlangual :D!

SeiferTim
February 20th, 2004, 09:38 AM
Hey, good luck man, any help you can offer is great, but don't overdo it, at the expense of your sanity/health/grades... :beam:
If you want, you could always lend us a hand by contributing free baked goods... :D :LOL:

OBCT
February 20th, 2004, 09:58 AM
Hi Everyone,

Sorry I havn't been able to do much latly but work has been going CRAZY!!!! :scream:
Stupid clients ;P

By monday, I'll have (hopfully) had some rest and things at work will have settled down so I'll make a start on some classes....or atleast some framework for them.

My email is
admin[at]wren-intermedia.com[/email]
or
adamwren[at]wren-intermedia.com
- Replace [at] with @

I'm not sure how much everyone knows about OOP but inheritance is going to be VERY usefull in this project so keep that in mind.

In the mean time, if anyone gets a chance to write up a list of variables we're going to use when a new character is created, that'd be great. It just saves me 10 minutes of reading through every post.

God I'm lazy lol.

Cheers

SeiferTim
February 20th, 2004, 12:35 PM
I'll see what I can do.

SeiferTim
February 20th, 2004, 12:57 PM
OK... here goes:
Variables:




//Time

currentDate:Date; /*Is there a Date type in AS2.0?
I haven't really had a chance to look...
I hope there is...*/
currentTime:Time; /*I know there's a Time type, right?
(been out of AS for a while...)*/
intervalLength:Number; //Constant of how long an interval is.
secondsInterval:Number; /*Constant of how many intervals are in
one relative second to her world.
Example: If an intervalLength is 100 1/1000 of a second to us,
and secondsInterval=10, then the program will act in RealTime.
But if we make secondsInterval=100, than the program will run
in 1/10 the speed of real-time (if my math is correct).
We can also change the intervalLength, and in theory, every Interval will be when we run any checks we need to run...
(we might want to reverse them, and have intervalLength=1000,
but have secondsInterval=.5, so that an intercval happens every
2 seconds.... or something...)*/

//Enviromental (Not nessecarily part of the Weather Function)

temperature:Number;
windDirection:String;
windSpeed:Number;
precipType:String;
precipNow:Boolean;

//Object (Copied from my earlier post)
class object {

var name:String; // The Official name of the object, i.e.: "Ball", "Plate", "Television", etc.
var ObjType:Number; // The type of object it is. We'll have to
// make a list of items: 1 = Toy, 2 = Food, etc.
var ObjWeight:Number; // the weight of the object, Heavy
// objects ae hard to lift, etc. We can simplify this by have 'ranks' of
// weight: 0=weightless, 1=light, 2=medium, 3=heavy, 4=immovable, etc.
var ObjColor:String; // The general color of the object... I think we
// can let her have a 'favorite' color and so she may like certain
//things more than others based on the color.
}



//Character (Copied directly from OBCT's Post.)

class CreateCharacter
{
// INITIAL VARIABLES

// CONSTANTS
var Name:String; //Character's name
var Gender:String; //Characters gender/sex
var Age:Number; //Characters age

// SEMI CONSTANTS
var playfulness:Number; //The more playful, the happier she is, and the easier to ignore bad things.
var arrogance:Number; //The more arrogant, the less she'll want to listen, and believe you.
var cleanliness:Number; //How tidy she is. higher rating means she'll try to be more organized
var visciousness:Number; //Higher rating means she'll be more of a prankster, or just plain mean.
var courage:Number; //Higher rating means that she'll be less likley to fear new things, or anything at all.
var curiosity:Number; //Higher rating means she will be more inclined to try and learn new things.
var obediance:Number; //Higher Rating will mean she listens, and obeys more than not
var stability:Number; //Rates her abilty to keep to schedule.
//if this is low, she may tend to forget doing daily or routine actions)
var adaptability:Number; //Rates her ability to change depending on her environment.
//If this is low, she may get confused if something suddenly changes.

// CONSTRUCTOR FUNCTION
function CreateCharacter()
{
this.ShowInfo();
}

// SET FUNCTIONS

function setName(name:String):Void
{
this.Name = name;
}

function setGender(gender:String):Void
{
this.Gender = gender;
}

function setAge(age:Number):Void
{
this.Age = age;
}

function setPlay(play:Number):Void
{
this.playfulness = play;
}

function setArrogant(agro:Number):Void
{
this.arrogance = agro;
}

function setClean(clean:Number):Void
{
this.cleanliness = clean;
}

function setViscious(viscous:Number):Void
{
this.visciousness = viscous;
}

function setCourage(courage:Number):Void
{
this.courage = courage;
}
function setCurios(curios:Number):Void
{
this.curiosity = curios;
}

function setObediance(obediance:Number):Void
{
this.obediance = obediance;
}

function setStability(stability:Number):Void
{
this.stability = stability;
}

function setAdaptability(adaptability:Number):Void
{
this.adaptability = adaptability;
}

// GET FUNCTIONS

function getPlay():Number
{
return this.playfulness;
}

function getArrogant():Number
{
return this.arrogance;
}

function getClean():Number
{
return this.cleanliness;
}

function getViscious():Number
{
return this.visciousness;
}

function getCourage():Number
{
return this.courage;
}

function getCurios():Number
{
return this.curiosity;
}

function getObediance():Number
{
return this.obediance;
}

function getStability():Number
{
return this.stability;
}

function getAdaptability(adaptability:Number):Number
{
return this.adaptability;
}

function getName():String
{
return this.Name;
}

function getGender():String
{
return this.Gender;
}

function getAge():Number
{
return this.Age;
}

// CLASS METHODS

function ShowInfo():String
{
return "My name is " + this.Name + ", I am a " + this.Gender + " and I'm " + this.Age + " years old.";
}
}

// This was rushed so save your critisism for tomorrow <img src="images/smilies/drool.gif" border="0" alt="">


It needs a little editing, but it's a start.

OBCT
February 20th, 2004, 01:04 PM
Hahaha, I spent about 2 minutes trying to figure out where I've seen that script before :p
Ahhhh...I'm too tired for this :)

SeiferTim
February 20th, 2004, 01:56 PM
Tired? You posted at: 02-20-2004 12:04 PM
He he.... it's the middle of the day! Wake up, you!
Don't give me none of that "Different side of the planet" crap... I know it's the same time everywhere... "Time-Zones"... phwa! It's a conspiracy made by the FAA, to trick people into paying for longer flights... ;)

bombsledder
February 20th, 2004, 05:09 PM
ahhem what is a1

(noobie spaeking)

SeiferTim
February 20th, 2004, 05:39 PM
Originally posted by bombsledder
ahhem what is a1

(noobie spaeking)
:h::h::h::h::h::h::h::h::h::h::h::h:

OBCT
February 21st, 2004, 10:21 AM
Does anyone here know OOP with AS2.0 and feels like giving me a hand? :puzzled:

I got bored of sleeping so I made a start....not nessicarily a good one :P
Before I can really make any progress I need a second opinion so I'm not spending hours making a class that either won't work or has no purpose.
(I'm not the most organised person you'll ever meet)

Anyway, if anyones interested, let me know.

Cheers

OBCT
February 21st, 2004, 10:22 AM
Oops, I forgot to get rid of the image.

That class tree diagram won't work because Flash doesn't support multipul inheritance :(

SeiferTim
February 21st, 2004, 10:41 AM
Hmm... can't say I'm a guru on the AS2.0 OOP, but I know about OOP in general.... We should start simple, and work from the most basic function. First, we should worry about how she's going to work as an animal, what animal instincts are inherently built into her psyche before she even gets to worry about free-will. We need to start with the algorithms, and functions for Eating, Sleeping, Self-Preservation, and Waste Management (which I think we'll need to include for any kind of realism)
Don't worry so much about graphics yet, for right now, just give her a way to view her current status, and then show what she's doing right then.

Once we have, basically, an animal mentality, then we can start building in the mental concepts that will come into play.

The general thing would end up with a screen, with a list of her current statusus, and a text box on the other side, which says: "Sleeping", "Eating", etc.
Make a way to edit her stats in real-time, and see what she does, like if we jack Hunger up to 100, she should switch straight to "Eating", or whatever. then we can work from that as our base model.

SeiferTim
February 21st, 2004, 11:15 AM
...and I appologize if I kind of sound like I'm 'ordering', or trying to tell people what to do, I don't mean to, I'm just thinking of what I would/should be doing myself, except I'm still waiting on a Motherboard (stupid place shipped me the wrong one... :ogre: ) I promise to contribute more concrete items to the project, like FLA files, and images, and things, once my computer is living again.

SeiferTim
February 21st, 2004, 04:17 PM
Hey guys:
I was wondering about this earlier... we were talking about PHP earlier... do you think it will be a good idea to make Ayumi have to run off of a server, or confine it to a server environment? I think we should try to make it a stand-alone application, that can work from any one computer. We can have the application in Flash, with AS, and lots of MovieClips, and have her interact through the User in that interface, while she writes her own 'brain', by adding to other files, which can be a collection of TXT files, if we want. I think this will result in a better application, and we can edit her mind a little easier that way....
What do you think? I guess I really wasn't clear on the reason that we would use PHP anyway.... If you think otherwise, let me know...

Spirit-Z3RO
February 21st, 2004, 10:57 PM
I'm think she should be like a software =) .exe and stuff. That way we call all have our own little Ayumi's (or whatever name you have for her, Dianariah if you'd like). And if there are any glitches, it's easier found... I think...
Btw... what does Ayumi do when we have our computers off?

SeiferTim
February 22nd, 2004, 11:39 AM
You turn your computer off? :h: :h: :h:
:beam:
Making it an Executable wouldn't be hard at all. I don't know that it would assist in bug-detection, or not... but it would make it easy to distribute. Nowadays, its almost too easy to make a software package with an installer (like InstallShield), and distribute it that way. I kind of like the idea of 'having your own Ayumi', but we should include a way to trade/distribute your Ayumi's Brain with others to help increase the overall knowledge between Ayumis....
As a way to run tests, (and I know this is jumping ahead quite a bit) we can make each person who has an Ayumi have to register their Ayumi with us, and then we can keep track of how much each one 'knows' as time progresses.

Thinking about some of the basic check subroutines... and I think that it'll generally look something like this:


function IntervalCheck() // called every interval, based on constants
{
if (!Character.Sleeping) {
Character.energy -= (Character.energy * .1); // energy decrease
by 10% (if my math is correct...)
if (!Character.Eating) {
Character.hunger -= (Character.hunger * .1); // hunger decrease by 10%
if (CheckHunger) {
SetNeed("food",10);
}
}
if (CheckEnergy) {
SetNeed("sleep",10);
}
}

function SetNeed(needWord:String,amtChange:Number):void {
/* Here will be a function which will access, and change the
database regarding her current needs, and asign a value to the
item under "needWord"... for instance, if needWord = "food",
then it will find the "food" entry, and apply the amtChange to it,
lets say it's 10... so the food entry will increase by 10. Whichever
need is at the top of the list would be the "most urgent need".
So "SetNeed("food", 10);" would make the food entry increase
by 10... I'm just not sure how to code it....*/

}

function CheckEnergy():Boolean /* I'm not sure if I'm doing the
coding of this Perfect, I doubt it, but I'm sure I'm getting the
points across so that somone can fix it....*/
{
if (Character.energy + Character.willpower > 0) {
Return False;
} else {
Return True;
}
}

function CheckHunger():Boolean
{
if (Character.hunger + Character.willpower > 0) {
Return False;
} else {
Return True;
}
}


Anyone have any additions? Idea? Suggestions? :h: Lemme know! :beam:

OBCT
February 22nd, 2004, 11:44 AM
Gary Gossman would shoot you for using messy code like that :to:
lol jks Im just playin

SeiferTim
February 22nd, 2004, 11:48 AM
Originally posted by OBCT
Gary Gossman would shoot you for using messy code like that :to:
lol jks Im just playin
Hey, it's pretty good for someone whos typing this up from work, on a crappy WinNT machine, with miniscule internet access, no refence material, and a phone in my ear, with people too stupid to say: "No", whenever something pops up on the screen saying: "Would you like to install program X, for offers on Free Deals?"
This one guy has every possible spyware program installed on his computer, and he can't figure out why his Internet Explorer keeps crashing, and when it does open, why he can't type anything, since the spyware is blocking his keystrokes...
...brain.....hurting....urge...to kill....rising....:huh:

OBCT
February 22nd, 2004, 12:12 PM
Hey, it's pretty good for someone whos typing this up from work, on a crappy WinNT machine, with miniscule internet access, no refence material, and a phone in my ear, with people too stupid to say: "No", whenever something pops up on the screen saying: "Would you like to install program X, for offers on Free Deals?"
This one guy has every possible spyware program installed on his computer, and he can't figure out why his Internet Explorer keeps crashing, and when it does open, why he can't type anything, since the spyware is blocking his keystrokes...
...brain.....hurting....urge...to kill....rising....

Yes, it is very good. We all do appriciate it :azn:


WinNT machine :asleep:
May god have mercy on your sole ;)

I'd be using Linux if the world wasn't so M icrosoft orrientated. :sigh:

Back on subject

I've writtin up a tree diagram of how we could set up our classes and I'm (almost) sure it'll work really well.
It doesn't hurt to try I spose.

I'm getting VERY confused at the moment because I'm using about 6 languages for several projects :puzzle:


Making it an Executable wouldn't be hard at all. I don't know that it would assist in bug-detection, or not... but it would make it easy to distribute. Nowadays, its almost too easy to make a software package with an installer (like InstallShield), and distribute it that way.
We could write a 'wrapper' application for our swf file using .NET (or something) which could give us alot more power and stability while still having our 'Ayumi' thing in swf format.

Anyway its 3am and I have to work tomorrow.........wait.......... it is tomorrow! :scream:
I'm gunna be stuffed :hangover:

I'll get back to "ya'll" tomorrow.
*Laughs at the fact that people ACTUALLY say that*
(Australian joke)

Cheers ppl :p:

OBCT
February 22nd, 2004, 12:20 PM
Oops

I meant Visual Basic not .Net

SeiferTim
February 22nd, 2004, 12:22 PM
Originally posted by OBCT
Oops

I meant Visual Basic not .Net
MWA HA HA HA HA!! VB is my domain! Heh heh :beam:
I know much, much more about VB than I know about Flash. :beam:

OBCT
February 22nd, 2004, 12:24 PM
I know much, much more about VB than I know about Flash.
I've changed my mind....we'll use Java (my favourite) ;)

SeiferTim
February 22nd, 2004, 04:16 PM
So where's this Diagram of yours, OBCT?! HUH?! HUH?! I DEMAND RESULTS!!!! :evil:
;P
:beam: (-:

OBCT
February 22nd, 2004, 09:53 PM
So where's this Diagram of yours, OBCT?! HUH?! HUH?! I DEMAND RESULTS!!!!
Right here :thumb:

http://www.wren-intermedia.com/kirupa/AI/classes.jpg

zeka
February 22nd, 2004, 10:55 PM
well all i've seen so far is talk. Is anyone actually working on this? :puzzled:

OBCT
February 22nd, 2004, 11:03 PM
Zeka,

If you'd been paying any attention and actually reading the posts, you'd know that we've been putting code togeather and making a start.

OBCT
February 23rd, 2004, 10:15 AM
I've writtin up a tree diagram of how we could set up our classes and I'm (almost) sure it'll work really well.

Ignore everything I said there.

We need to take this step by step. Not jump ahead like I did :bad:

Lets write up a list of methods our character has. Not specific things such as.......

'decide weather he/she is going to watch his/her favourite tv show or go out with his/her best friend even though this person managed to break up our characters sister.'

This sort of thing will require ALOT of methods like what current mood they have, what their feelings are towards that person etc.

public function Die():Void
{
trace("Congratulations!!! I'm dead!!!");
}


As you can see, the event of dying requires no effort at all. It is simply the process of removing any previously existing properties from a character.
Anyone/Anything can die. It is inevitable.

My point is....this is a method that will apply to anything within our character.
Each subclass of Person will inherit this method and trigger individually if need be.

Once we've got a list of methods for our superclass, then we can work our way down to each subclass.

Having said all of this...I'm still doing some more research on the general topic to make sure I'm not speaking s*** :sure:

Cheers

SeiferTim
February 23rd, 2004, 11:01 AM
You mean like....:


public function Walk(a_x:Number,a_y:Number,b_x:Number,b_y:Number): void {
//move character from point (a_x,a_y) to point (b_x,b_y)
}


That sort of thing? Like basic actions that are inherent to the system that she should be able to do regardless? I think/hope I'm following you... :ne:

OBCT
February 23rd, 2004, 11:54 AM
That sort of thing?
Yes.

Like basic actions that are inherent to the system that she should be able to do regardless?
Exactly!

Heres an example.....

class Person
{
public var speech:String;

public function talk():String
{
this.speech ="You have a good day.";
return speech;
}
}

Here we have created a class called 'Person'. Any instance of Person will be able to use the talk() method.

Now we'll extend on this.....

class SadPerson extends Person
{
function talk ()
{
this.speech = "I’m sad. " + super.talk();
return speech;
}
}

Here we've extended Person to create a SadPerson which inherits all properties from its superclass (Person).
Theres no need to set 'speech' because it's already been set in its superclass.
SadPerson also says "I am sad" AND "Have a nice day"
Where as Person can only say "Have a nice day"

Here's what you can try in your fla to test it......

var MrPerson:Person = new Person();
var MrDepression:SadPerson = new SadPerson();

function makePeopleTalk(myPerson:Person)
{
trace(myPerson.talk());
}

makePeopleTalk(MrPerson);
makePeopleTalk(MrDepression);

The first thing that will return is "Have a nice day" which is called from Person.
The second is "I am sad." + "Have a nice day" because SadPerson inherits that method from its superclass.

Now....'Arm' (for example) is NOT an instance of Person because an arm is not a person.
Arm is simply an object that has referance to Person without directly inheriting its methods.

I hope I'm explaining it alright. :geek:

So we need to write up how we're going to do this before we get into too much of the fun stuff.

Have a play around and I'll get back to everyone in about 24 hours.

Cheers

SeiferTim
February 23rd, 2004, 03:14 PM
Originally posted by bombsledder
ahhem what is a1

(noobie spaeking)

...still haven't figured out what this was supposed to mean.... :h::h:

SeiferTim
February 23rd, 2004, 03:18 PM
Wow, somehow I managed to completely not see that post, OBCT, here I am, it's now 2:19 pm, you posted it at 10:11 am, and I'm checking back every 2 minutes: "Why won't anyone reply?!"
:drool:
Okay, I'll come up with some stuff shortly.... :beam:

SeiferTim
February 23rd, 2004, 03:57 PM
Wow. that was my 400th post.... <sniff> :*( Its so beautiful...
OKay, anyway... lets get to work!!



/*Sleep - this should get called if she is tired, or whenever her
Bed Time and her willpower is not high enough to keep awake*/

public function Sleep(energy:Number, timeSinceSleep:Number):Void {

/* Okay, I'm going to try to pull this out of my ***...
this should be code for detemining how long before she
wakes up... Will probably need work */

If ((!Blocked("Bed") and (energy + willpower > 0)) {
WalkTo("Bed");
}

StartAnim("Sleep");
Sleeping = True;
setTimeEnd ( 8 + (8 * (timeSinceSleep / 100)) - (8 * (energy / 100)), "Sleep");
/* should make her sleep for 8 hours, plus
(timeSinceSleep/10)%, and minus (energy/10)%.*/

}

public function setTimeEnd(endTime:Number, eventHandle:String):Void {

/* Not sure how to code this one exactly, but it should make a
table which adds the endTime to the current time (in hours), and
then sets it with a EventHandle... for example:
Sending setTimeEnd(8.5,"Sleep); will Take the current time, say
21:00, add 8.5 hours to it: 5:30, and put it in a table with the
label: "Sleep", so that at 5:30, the character will stop Sleeping...
I think it may need more work... */

}

APDesign
February 23rd, 2004, 05:42 PM
I don't know how familiar you guys are with UML, but I was browsing through a book about it and using a pseudo UML format to come up with your methods might be a better idea than actually starting coding them. Then again this is my first post in this topic (although I have been reading it) and I don't really have any place to tell you guys what to do. This is interesting though, is it open invitation to help out? if i ever feel I can do so, that is?

and SeiferTim, I HOPE that I am wrong on this one, but I think the guy meant AI, not a1. :x

SeiferTim
February 23rd, 2004, 05:49 PM
I don't think we have any particular screening process in place, if you feel like contributing, go ahead and post :beam: thanks :) We can add you to the contributors list if you want. Um, never heard of UML, know where I can find more info on it? And if he did mean AI, it stands for: "Artificial Intellegence"

APDesign
February 23rd, 2004, 06:02 PM
Well, I don't know all that much about it, but look at the the first section on the first page of this document

http://www.engin.umich.edu/class/eecs381/lecture/UMLsummary.pdf

It doesn't have to be as in depth as that document gets, but just have the classes, and list the methods... it can be good for critical thinking about what methods are going to be required and to get a good overview of the whole project.

heh, you don't have to add me to the contributers unless I actually contribute something.

SeiferTim
February 23rd, 2004, 06:08 PM
www.rational.com/uml/index.jsp

SeiferTim
February 23rd, 2004, 06:10 PM
Hmmm... it says its a language to help model software before actually building them.... I think...

OBCT
February 24th, 2004, 10:09 AM
//Add this code into a new flash document then test the movie
_root.onLoad = function()
{
hunger = 100;
points = new Array();
points = [0, 0, 150, 0, 150, 15, 0, 15, 0, 0];

_root.createTextField("hungerTxt", _root.getNextHighestDepth(), 10, 20, 100, 20);
hungerTxt.text = "Hunger";

_root.createEmptyMovieClip("hunger_bar", _root.getNextHighestDepth());
hunger_bar.beginFill(0xFF0000, 100);
hunger_bar.moveTo(points[0],points[1]);
hunger_bar.lineTo(points[2],points[3]);
hunger_bar.lineTo(points[4],points[5]);
hunger_bar.lineTo(points[6],points[7]);
hunger_bar.lineTo(points[8],points[9]);
hunger_bar.endFill();
hunger_bar._xscale = hunger;

_root.createEmptyMovieClip("boarder", _root.getNextHighestDepth());
boarder.lineStyle(1, 0x000000, 100);
boarder.moveTo(points[0],points[1]);
boarder.lineTo(points[2],points[3]);
boarder.lineTo(points[4],points[5]);
boarder.lineTo(points[6],points[7]);
boarder.lineTo(points[8],points[9]);
}
_root.onEnterFrame = function()
{
if (hunger <= 0)
{
delete onEnterFrame;
delete hunger_bar;
}
else
{
hunger -= .5;
hunger_bar._xscale = hunger;
trace(hunger);
}
}
Heres a (basic) idea.

We create a list of properties each person has such as hunger, tiredness etc (This is slowly turning into the sims)
Then create a speed variable which determins what rate the property decreases at.
It's a possibility to create a timer to effect the change rather than relying on a certain frame rate.
The other important thing to have would be that each action a person performs, effects the speed at which a property decreases.

E.g.
Hunger...
Normal migh be -.05
Watching a cooking show could become -1.5

Are we happy to stick with this for now while we sort out the basics?

Let me know if not. :ne:

BTW I'm taking the rest of the week off! :beam:

Cheers

SeiferTim
February 24th, 2004, 10:32 AM
That sounds like a fair-enough plan... do you have a way to upload a SWF to a web-site, so I can take a look at what you've got? Can't download at work, and don't have access to Flash here... :(

OBCT
February 24th, 2004, 10:40 AM
http://www.wren-intermedia.com/kirupa/AI/hunger.swf

SeiferTim
February 24th, 2004, 10:45 AM
Looks nice. Hopefully the speed is variable, so we can slow it down a bit. :beam:

OBCT
February 24th, 2004, 10:46 AM
Hopefully the speed is variable
I'm one step ahead of you. :p:

SeiferTim
February 24th, 2004, 10:50 AM
The idea I had was to have a side-bar off the the right of the main screen (which would be where you watch Ayumi do stuff, and interact with her), that is simply a listing of all her current stats:

Hunger: [=======___]
Energy: [=====_____]
Happiness: [======____]
Etc, etc.

And some icons to represent what she's currently doing/thinking, like a little circle with a mouth-eating for "Eating", a circle with some Zzzs in it for sleeping, and so on, so that if we can't tell what she's doing exactly my the animation, we can tell by those icons on the right.

SeiferTim
February 25th, 2004, 06:30 PM
...did everyone die? :skull:
What happened?!

APDesign
February 26th, 2004, 12:39 AM
I'm silently 'listening' still, nice health bar. Maybe making the health bar so you can instantiate it would be beneficial though. Then you could easily have graphical representations of pretty much every attribute of the person. I can try and work up some code for that since I could also use it for a virtual aquarium thing I'm working on, but no guarantees.

Spirit-Z3RO
February 26th, 2004, 10:56 AM
Oh jeez... havn't had time to do anything lately... The only reason I'm even on is because I just got kicked out of class (or else I would've beaten this guy with my desk). So now I'm at the library cooling off.... feeling better seeing that there's still an Ayumi project, makes me happy :)

Can't think right now though.. still very angry...

SeiferTim, I think we were born at the same time or something, our minds link =) (cept you're appearantly smarter... curses...)

Just looking at the Status bars, can I make a suggestion?
For things that have an opposite side to it (such as happy/sad hyper/tired), we make the bar start from the middle.

[-----------||-----------]
Happiness - Normal

[-----------||===------]
Happiness - Happy (somewhat)

[----=====||-----------]
Happiness - Sad

Know what I mean?

But for things that only go one way (ex. hunger), we keep it the way it is.

And of course, the classic color changing status bar. When the Happiness bar goes to below 0, it goes to a light blue (or whatever color that'd represent sadness) and a darker blue when she's VERY sad (about to cry or already crying maybe?)
Hmm.... Once I get home... I think I'm gonna work on this bar (the image for now, forgot how to use flash... completely).

and one last thing... I know I havn't been helping that much -_-
But I still want to help make this thing work
SeiferTim, thanks for keeping things going, that goes the same for u OBCT.

Have a good day -_- I have next hour to go to... and maybe break that guy's nose during lunch time... he outweighs me by 75 pounds... but I thin i can manage :bad:

OBCT
February 28th, 2004, 10:52 AM
SORRY EVERYONE!!!

I havn't had time to do anything latly. I tried to take a few days off work but it lasted a day before I had to go back.

I've got the weather class basically done and I'll make a start on the time class as soon as possible.
Once that's done we'll try to do the Person, Personality and Actions classes then we'll take it from there.

I don't mean to boss anyone around :cyclops:
Just trying to keep things alive :thumb:

If anyone's still interested let me know. Even if no one wants to I'm going to keep trying because this is getting interesting! :pleased:

While I was at work (everything's work these days :a: ), I wrote up a class that converts US/English mesurements to the metric system which I think will come in a great deal of handy seeing we're all over the world.
When (if) I get time, I'll do one that converts metric to US so it works both ways.

Anyway I better get to bed :sleep:

Cheers :bandit:

SeiferTim
March 1st, 2004, 09:25 AM
Yo, OBCT, been trying to work on things myself, been off for the last 2 days, and still don't have a computer... my RAM should come in either today, or tomarrow, and I should be on-line pretty soon :beam:

Spirit-Z3RO
March 1st, 2004, 09:42 AM
I'm working on one of the bars - the happiness bar.
I have a button that adds minus' a number. The higher that number goes, the further to the right from the middle a slider would move. I forgot so many things on flash... (though wasn't much that I knew, but still forgot a lot)

The slider bar is being screwy -_-, I was trying to do it when I was extremely tired - which was a dumb thing to do because it just got me irritated -_-

Once I get time again, I'll work on it.

The bar should be able to work for all her things right?

Though there's not going to be 50 bars on the screen showing her status... we could, however, give her a computer, and when she uses it, it shows us her status ^_^

btw, what langauge are all those postings? AS2? Or... just an AS thing in flash I forgot to study...?

OBCT
March 1st, 2004, 10:19 AM
Good to hear from everyone :beam:

Quick question!!!

What's happening with the time?

In our characters 'world' will it run at the same speed as normal?
Will we be saving some form of time stamp, then continue from there when loaded?
How many hours in a day?
How many days in a week?
How many weeks in a year? etc etc etc

I've made a start on the time class but I'm having some weird problems, which I wont go into, so if anyone has any idea of exactly how the whole time frame...thing....is going to work....let me know.

Cheers :p:

SeiferTim
March 1st, 2004, 10:50 AM
I had thought of the problem with time: We should have a variable that sets the time difference between her time, and our time.
Say, we could have the variable be set to: .5
Which would mean that one of her minutes would equal 2 of our minutes, effectivly, she would be living in "Half-Time".



//constants:

timeSystem:Number = 60; /*Sets the number or seconds per
minute, etc for all time rates 60 seconds per minute, 60 minutes
per hour.*/

hoursInDay:Number = 24; //how many hours are in one of her days.

daysInWeek:Number = 7; //how many days are in a week

daysInMonth:Number = 30; /* how many days are in a month
(we can elaborate on it later, if we want, IE: 31 days in January,
28 in February, etc.)*/

daysInYear:Number = 365; //how many days are in one of her years

//Dynamic Variable

timeDifferenceRate:Number = 1; /*difference between our time
and her time. 1 = Real-Time, 2 = double time. We can make this
changable, so that someone can speed things up for a while,
and/or slow it down.*/


Does that kinda explain things? :ne:

Spirit-Z3RO
March 2nd, 2004, 09:59 AM
one of her minutes would equal 2 of our minutes

Yes, it does make sense, but... why would we want her time to be slower than ours (as if ours weren't slow enoug -_-)? Are there advantages and such?

If we want to speed her time up, hehe, speed it up by four times or two times.

If four times, that means 6 hours would be in a day. I posted it all on an earlier post, but after SeiferTim's replies and thinking about it, I don't think speeding the time up would be a good idea... you'd be too busy...

Still a problem - How are we going to "Resume" Ayumi? The only thing I can think of is that we have two variables, one returning the time you get off and one returning the time you get on. And while Ayumi is "loading", we can set the speed in her world up so it'd catch up to ours.... but the fractions might not work..... uuuugggh -_-

oh yeah
timeSystem:Number

what IS that? What language...
(been very lost as of late)

SeiferTim
March 2nd, 2004, 10:20 AM
Um... The idea is that you would the value of timeDifferenceRate will effect how much difference there is between our time, and her time. You can either slow her down
timeDifferenceRate = .5; or speed her up
timeDifferenceRate = 2; or whatever. Sort of like the sims, you may want to have her doing things quicker than usual, or whatever.

As far as "saving", and "resuming" are concerned, this shouldn't be too hard to work with, since the way we're building Ayumi, she'll have access to a database of information, which will be hard-files on the computer, all we need to do is save a file (probably just a TXT file, or into a Database), all her current stats: hunger, anger, etc, and then when we load, just pull that file back into the system, and sets her stats back to what they should be... and her "brain" files, which is the database, can, by their very nature, be accessed the same way they always have been...

I hope I made some sense... :beam:

Oh, and the language is AS 2.0.
When you declare variables, if you put ":Number" on the end, its basically telling Flash that its going to be an integer.
You can also put ":String", etc... you can see these in the tutorials on Kirupa's main site.... I forget where it is exactly...

OBCT
March 2nd, 2004, 10:41 AM
After hours of stuff around I've come to realize (finally) that the best way to do some things, is the simplest way.
So heres a basic time function we could implement.
It's terribly writtin and needs a bit of work but here it is....


public function currentTime():String
{
second++;
if (second > 59)
{
minute++;
second = 0;
}
if (minute > 59)
{
hour++;
minute = 0;
}
if (hour > 23)
{
date++;
hour = 0;
}
if (date > 30)
{
month++;
date = 0;
}
if (month > 11)
{
year++;
month = 1;
}
return hour + ":" + minute + ":" + second + " " + date + "/" + month + "/" year;
}

function iCantThinkOfAName():Void
{
someTextBox.text = this._parent.currentTime();
}

setInterval(iCantThinkOfAName, 2000);

setInterval() runs a specified function every x milliseconds.
1000 is 1 second so that would be the same as our time.
2000 would be half the speed
and
500 would be twice as fast.

We could (and probably should) expand on our time function to return each variable seperatly so if we need to use the year variable (for example), we won't have to write up a seperate function or woteva blah blah blah

I have to agree with SeiferTim's idea of saving the data into the brain then load it up when the application starts.

I just had an idea......

Rather than using Flash to do all the saving to text files....why don't we use a language with more functionality in that area?
Visual basic would probably be our best bet so that's were SeiferTim steps in :snug:

One more thing while I'm still thinking about it........when setting our constant's....should we keep them in an XML file so while we're in the testing stages, we don't have to change anything in our Flash document. Changing an xml file's attribute's value would be just that little bit quicker than using Flash and finding the class etc...

Anyway, let me know what you think.

Cheers

SeiferTim
March 2nd, 2004, 10:53 AM
Sounds good to me! :beam: I don't know much about XML, just a little bit, but I know loads about VB.
Should be getting my RAM tomarrow, so I can start sometime soon.... problem is that I'm working everyday this week! :(

SeiferTim
March 2nd, 2004, 04:30 PM
It wouldn't be hard at all to make Ayumi's graphical display in Flash and then load it into VB, and use FSCommands to go back and forth from Flash and VB, its very easy... that way we can have all the code in VB, and all the Graphics in Flash, but for the most part, all flash is going to do is say: "if status = "sleep" then startSleepAnim", etc.

Spirit-Z3RO
March 3rd, 2004, 03:13 AM
So we're just going to resume her from where she was?
I've always thought about how the Time thing on the computer keeps the time... even if you've unplugged your computer. Does it have anything to do with the battery in the mobo? Anyway, I was hoping we could resume Ayumi like how the clock resumes itself when u start the computer. Am I making any sense?

Spirit-Z3RO
March 3rd, 2004, 08:47 AM
oh yeah, and this simple fellar.

Yes yes, lame it is, but it could become the foundation of it all! lol

SeiferTim
March 3rd, 2004, 09:25 AM
You mean like in Animal Crossing, where if you quit for 3 hours, and come back, 3 hours have passed in the game? That sort of thing?

OBCT
March 3rd, 2004, 10:16 AM
This is just something quick that I made using Zero's fla as a base.
It pretty much speaks for itself so have a look and let me know if you have any questions.

I gota run!

Cheers :thumb:

bombsledder
March 3rd, 2004, 04:48 PM
geese im sort of a noob but to me that is good work

SeiferTim
March 3rd, 2004, 08:52 PM
Das is gut! :beam:

Spirit-Z3RO
March 3rd, 2004, 11:20 PM
W00t! OBCT, me likes that :)

SeiferTim, I've never played that game -_- But that seems to be the idea.

You know, I was thinking, if she's sleeping, we should have her actually be sleeping for a while... and if her energy is too high, she might not go to bed. She might even just stay in bed for a little bit (how long that is would be based on maybe a random variable or based on all the other variables), then she starts wondering around with the lights off. Or if she lays there for long enough, her hyperness would decrease (at a faster rate) and soon fall asleep.

Spirit-Z3RO
March 3rd, 2004, 11:20 PM
W00t! OBCT, me likes that :)

SeiferTim, I've never played that game -_- But that seems to be the idea.

You know, I was thinking, if she's sleeping, we should have her actually be sleeping for a while... and if her energy is too high, she might not go to bed. She might even just stay in bed for a little bit (how long that is would be based on maybe a random variable or based on all the other variables), then she starts wondering around with the lights off. Or if she lays there for long enough, her hyperness would decrease (at a faster rate) and soon fall asleep.

SeiferTim
March 4th, 2004, 09:08 PM
My computer is working! Finally! I'll be able to get stuff up on a server for everyone soon... what do we want to have on the site?

OBCT
March 5th, 2004, 11:27 AM
My computer is working! Finally!
YAY!!!!!! :pleased:

For the website I spose we'd have a basic outline of what the project is based on, recent news etc.
um.......source codes... and what not.

It doesn't have to be anything special at this stage.

Good news: Work has calmed down and (hopfully) will stay this way for a bit.

Bad news: Theres like a cyclone or something where I live and it's been causing huge power problems, so I'm not sure how reliable the power will be for the next few days.

Cheers :p:

SeiferTim
March 5th, 2004, 11:36 AM
Cyclone? Cool. We just get tornados... :D
okay, I'm off on Sunday, so, after I get everything else done that I need to do, (laundry, cleaning, etc), then I can get working on it...
BTW: What do you think of my Footer? Like it? I'm going to make up an Ayumi Logo, which has the same effect... we just need a little pixel-icon of what she'll look like...

OBCT
March 5th, 2004, 11:51 AM
We just get tornados...
JUST tornados ay? lol
This is probably the worst weather Brisbane's had in......wot......30 years..............I think.....I dunno, I'm not old enough.


What do you think of my Footer?
I really like it! Well done :thumb:

Maybe I've missed something, but what does Ayumi actually mean?

SeiferTim
March 5th, 2004, 12:07 PM
As far as I know, Ayumi is just a name, but i think Sakura Petals are pretty fitting for her...
I think I need to edit my footer a bit, perhaps lessen the amount of petals, since it tends to slow it down when there are a bunch of my posts on the screen at one time...

Spirit-Z3RO
March 5th, 2004, 10:58 PM
SeiferTim, I was about to comment on your Sakura :) They're beautiful.

Ayumi (for all I know) is actually one of the most popular celeberty in Japan... I forgot about that when I suggested the name. Anyway... Sakura IS a very traditional name... and... sounds like what we're wanting... but it's up to u guys ^_^

Spirit-Z3RO
March 6th, 2004, 01:09 AM
I swear... if i ever attempt this again and this is the outcome... I'm gonna shoot someone

................

AAUUUUUUUUUUUUGGGGGGGHHHHHH THE IMAGE WONT SHOW >:(

Ok, I do NOT know why this is, but you have to copy and paste the URL into your address bar, I've tried clicking on the thing, but the stupid thing wouldn't show.

http://www.geocities.com/final_gundam8/wee.jpeg

.-~*EDIT*=~-.

oh my goodness gracious, I truly am an idiot... that's not pixel art.. though I did it pixel by pixel.. LOL (at himself)

hmm.. though i could still change her facial expressions like this...

BlueBoots
March 6th, 2004, 02:02 AM
This is fantastic!

I'm new to kirupa forums and this is the first full topic I've read, and spent 3 hours 15 (roughly) reading during work hours. Well, after-hours, when I should be working...
BTW, why does your time need to be reality based? I made a game where the time (reprented by graphic clock) moved when an action was performed, so time basically stood still. This isn't what you want, I know, but hopefully it'll help you think of otherways around your time problem.
What if time was in a graphic movie clip, and it all related to the frame that movie clip was on? I have sky scenes that alter their colour and saturation depending on the frame my movie clock in on (or to the user, what time of day it is)...
Grab a visual thesaurus from your library, they're great for brainstormin'!
Also, have you guys thought about what this project is for? Or is that not really the point...

Anyways, have fun!
Blue

PS
Please keep this project public!

SeiferTim
March 7th, 2004, 03:58 AM
Hey everyone, it's nothing big, yet, but take a look at the site: http://seifertim.no-ip.com/ayumi
(Still working out some Apache kinks, it'll be http://projayumi.no-ip.com soon...)

SeiferTim
March 7th, 2004, 04:08 AM
Oh, please feel free to comment on the site... Since inevitably, Ayumi is a girl, I kind of choose girly colors... which results in the Gayest looking site I've ever made... but somehow... I think the color scheme fits the idea we have for Ayumi's personality...
Let me know what you all think...

SeiferTim
March 7th, 2004, 04:10 AM
Originally posted by Spirit-Z3RO
SeiferTim, I was about to comment on your Sakura :) They're beautiful.

Ayumi (for all I know) is actually one of the most popular celeberty in Japan... I forgot about that when I suggested the name. Anyway... Sakura IS a very traditional name... and... sounds like what we're wanting... but it's up to u guys ^_^

How come I never even saw this post? Ayumi is a very common female name in Japan. I like the name, and I think the petals would fit her personality.

SeiferTim
March 8th, 2004, 01:13 PM
WHoo-Hoo! I got the server working properly:
http://projayumi.no-ip.com
:beam:
Now, alls we gots ta do is fill it with content!

SeiferTim
March 8th, 2004, 08:40 PM
OKay, heres the begginings of Ayumi's house... what do you think?

Spirit-Z3RO
March 9th, 2004, 09:41 AM
Dude, the site, omg. I hope a girl did the designing for ya ;p
It's really good, especially if you're a guy who did this alone (shows you have a wide range of designing, at least to what I think :p).
I'm trying to pass all my classes rigth now because the trimester is ending...
I think I just failed US History... (never did any homework).
I passed chemistry!
My stage craft class has like 5 assignments.. which I havn't done.... uh oh...
Failing American Novel.... reading OFFLINE.... what in the world?:(

About her house, is the floor gonna be that big? If so, wouldn't Ayumi be huge?
hmmmmmmmmmmmmmmmmmmmmmmmmmmmm
I gots an idea, but wont have time to do it -_-

The floor padding is at a good size, but the wallpaper has a HUGE design.
So I was thinking what if you made them smaller, and put one of them on each of the tips of an imaginary star.

So you'll have small sakura flower patters in a pentagon formation, and rotate them around at random...
I'm not making sense, am I?

SeiferTim
March 9th, 2004, 09:49 AM
I made a large floor area so that she would have room to move around. Her house will have furniture and things around the place, and she'll need lots of room to move around. Yes, I made the site by myself... my wife helped out with a little of the design, but it was pretty much done by myself... what are you trying to say? :P

SeiferTim
March 9th, 2004, 11:50 AM
My next day off is on Friday, so I might try to start filling up the site with more info... anyone have anything in particular they want to add to the site? Also, it may be a good idea to start handing out the link to people to drive interest... if it starts eating up too much of my bandwidth, I may move it off my server, but I doubt that will be nessecary for awhile...

Spirit-Z3RO
March 9th, 2004, 11:50 AM
Ahaha, gomen gomen ^^;

I guess that's a good reason to have it big.

I hurried and made a floor plan - with paint (UGH!).
The living room is TOO big... but.. you know, you get the idea

SeiferTim
March 9th, 2004, 11:52 AM
Good! I like! I especially like the entrance room, which most japanese style houses have, like a mud-room, where they change into their house shoes when they come in.

:beam:

BlueBoots
March 9th, 2004, 08:49 PM
it looks kinda western to me, with such a large bedroom and a closet and things, perhaps you should visit your local library and get some info on Japanese (I asume she's from Japan) design. Is she living alone? If she is the house would be much much smaller.

And seiferTim, do you have any idea of the perspective you're aiming at for that room? If you like take a look at this:

http://homepages.paradise.net.nz/jimsaund/site/flashTest.html

I uploaded it for help with a loading problem (It has no pre-loader as yet) But the foyer has an eye-level perspective to try and draw you into the scene, I'm trying to make it look like your character is standing in the room and you're seeing through their eyes.
I got the impression from your pic you're looking down on Ayumi, but that could just be me I guess.

If you like I could send you the guide I used for drawing that room? I drew it all up in Flash MX, I don't know if you will be using 3D software or not, mind.

Blue

PS
The functionality is not yet set up in the .swf! Don't expect anything to work! :D

BlueBoots
March 9th, 2004, 08:51 PM
http://homepages.paradise.net.nz/jimsaund/flashTest.html
^
Correct URL!

Also, click the Tui (Top right bird) to hide the interface so you can see the room better.

SeiferTim
March 9th, 2004, 09:29 PM
I was actually aiming for a semi-cartoony type of design.... think "Blue-Clues" House, and you'll get an Idea of what I mean.

BlueBoots
March 9th, 2004, 11:09 PM
Cute! Mine is kinda weird like that too, sorta cut-out (The interface anyway)

Spirit-Z3RO
March 10th, 2004, 04:49 AM
Yeah... she's living alone, so the house is way too big, but I didn't have time to think about that, if my teacher would've saw me... all hell would have broken loose.

When I thought about it in the end, however, I simply thought "though Japanese houses are packed, she needs space to interact, when everythings too close together, doesn't seem like she can do much."

I apologize for the exaggeration of the sizes -_-
but, I'm asian - I've been watching japanese drama shows (what other shows do u get when you're asian :q: :p) and so I have a pretty good idea how they are(of course it doesn't mean that I know all of it, I know, be quiet :p :))

The kitchen, btw, is usually big enough for a person to sit there and spin around as they grab materials when they cook (for a 1 person apartment anyhow) and the bedroom is generally small, enough for a desk, a futon, and a bookshelf. The closet - 2 layered (not always). They're often quite spacious for a closet, but the larger closets are usually used to store futons, fans when winter comes, ect.

Anyway, sorry >_<

And blue, we havn't exactly welcomed you so...

WELCOME TO KIRUPA FORUMS!!!

(i've always wanted to do that)

Spirit-Z3RO
March 10th, 2004, 04:58 AM
whoa, i havn't checked out the .swf... wow!
I think i have spoken too soon! urs is awsome!

We have a question here

Do we want her to live in a HOUSE or an APARTMENT?

Btw... did you do all the art in flash? cause that seems like it'd be a pain in the bottoms -_-
Anyway, nice work!

divarch
March 10th, 2004, 06:27 AM
Need another enthusiast??
I am new here, but not to Flash, so I would be delighted to participate in all-round effort.
The idea for a group project I like, and the theme itself.
Someone would say, 'I am too old for this crap', but not me.

Originally posted by SeiferTim
This is starting to remind me a little bit of "Creatures", except I think they were doing more with genetics, and things...
First thing that accured to my mind. Brilliant piece of AI, but you are right, it was more of genes thing.

But, procreation is a nice idea, for project Ayumi also. I know it's still early, but hey, let her have her own character values passed on.
Why don't add things depending on her age for example.
It would be nice not to have every kind of objects from start, not good for personality building :smirk:
She could become spoiled.
Like, with 10yrs of age, she doesn't need a lipstick, right? Nor the villa to live in...
Anyway, for starters, 'cause I looked all the posts, and the layout,the basic environments design, just an idea to add. What about less graphically complicated approach.
Like 2D (side-view), doors and (room) swf's.
At least at the beginning while she's in a test mode.

Oh, and since I am a bit late to enter the subject, is there a .as or .fla file to download. The one you are working on... Or did I miss it in some post?
Cheers

SeiferTim
March 10th, 2004, 09:36 AM
There are a few chunks of code throughout the post to download, but nothing has really been built yet...
Welcome! :beam:

SeiferTim
March 10th, 2004, 09:47 AM
Spirit: I like your floor plan! Who cares if her house is a little exagerated, look at the house in Love Hina, which is freakin' huge (well, its not really a house..but... you know...)
Anyway, I think it should be large enough for her to move around in, and if we have to justify her house with story, say her parents were rich, and left her the house when they died/traveled/disapeared or whatever.
Keep the house the way you have it! Oh, and do you like the tatami floor I made, at the request of my wife? :beam:

OBCT
March 10th, 2004, 12:45 PM
Hey everyone,

Just letting you know I'm sick as dog **** at the moment so I won't be on the computer much...if at all.
I should be right within 3-15 days, depends how I feel I guess.
Sorry I can't chip in much.

Cheers

SeiferTim
March 10th, 2004, 12:54 PM
Get well soon.:beam:

Spirit-Z3RO
March 10th, 2004, 05:25 PM
Yes, get very well soon :)
Seifer, that's the first thing I noticed, the floor and the first thing that came to mind is, "Whoa, he knows exactly what he's doing."
Divarch, welcome :)
Her personality would change as she grows... but I guess we would need a maturity thing too don't we.

So while she's young, we could have her Spoiled variable be changed by her Age variable.
so let say...

pubAge = (a random number between 12-14(and yes, i am a noob, dunno how to set that number, lol))
Spoiled = 2
Age = 12
if (Age <= pubAge) {
Maturity = age/Spoiled;
}
if (Age > pubAge) {
Maturity = (Age*pubAge)/spoiled
}

ok, it's a crappy code, but you get the idea - I hope.
pubAge = age of puberty. Though that's not exactly the age they actually mature, we can always change the variable.

I hope I'm making sense -_-

SeiferTim
March 10th, 2004, 05:30 PM
Originally posted by Spirit-Z3RO
Seifer, that's the first thing I noticed, the floor and the first thing that came to mind is, "Whoa, he knows exactly what he's doing."

Phffft... I don't know what I'm doing, I was making it wood, when my wife walks by, and says: "You should make it tatami"...
I said (quiet intellegently): "Bwuh? Blubutuberwah??!"
*mostly because I had just spent an hour getting the wood texture just right, and the seams in the boards just right... :beam:

Spirit-Z3RO
March 10th, 2004, 05:42 PM
lol, tell your wife "good job" and "thank you" for me :)

divarch
March 10th, 2004, 05:43 PM
Originally posted by Spirit-Z3RO
but you get the idea - I hope.

Hey, thanks for the warm welcome guys, and yes I get what you mean.
Of course, maturity....
As for the spoiled it would be:
spoiled=12+(random(2)), right?
Of course, I do not intend to type Math.round and such, still...:D

I have looked through the chunks of code I found on the thread topic, and can say, there' s enormous effort to be made, luckily.
I am now going out of flat, will log on tomorrow, with some fresh ideas hopefully.
Keep them coming...

Spirit-Z3RO
March 10th, 2004, 07:50 PM
yeah, that's it!

Spirit = 1

if(spirit = 1) { trace ("Spirit not too bright in the head")
}

BlueBoots
March 11th, 2004, 02:08 AM
Originally posted by Spirit-Z3RO
whoa, i havn't checked out the .swf... wow!
I think i have spoken too soon! urs is awsome!

We have a question here

Do we want her to live in a HOUSE or an APARTMENT?

Btw... did you do all the art in flash? cause that seems like it'd be a pain in the bottoms -_-
Anyway, nice work!
^ -- Thanks! and for the welcome to, you're the first person to say that !!!^_^!!!
And yeah, I drew all the art myself, although most of it is incomplete. I took photos of trees and leaves, and the birds are prints of paintings from one of our clients, scanned in and traced. (The freaky lady is just a height test for perspective in the room, she's one of our early concepts!)

Back to Ayumi:

Seifer, I feel like we've got off on the wrong foot! I really like the room, I just wasn't sure what style you were going for (And when I draw a room without side walls it's because I can't work out the perspective) and I thought I'd try and help.

I'm really interested in this stuff but I've never programmed AI before, so when I saw the chance to help out I jumped on it, sorry if I've offended you!

</end rant>

Blue

SeiferTim
March 11th, 2004, 09:35 AM
:h: i wasn't offended...

lestat680
March 11th, 2004, 02:53 PM
http://www.speak2me.net/

I found a very nice example of an AI that writes itself based on what information you give it.. it could probably be a nice source of inspiration..
I have spent hours upon hours on this site.. arguing with this AI and it remembers.. I believe that it creates statistics on the information it receives, and when enough simmilar information is stored, it intergrates it into it's memory..

_____________
p.s.
created this user just to tell you.. :)

SeiferTim
March 11th, 2004, 02:56 PM
Cool, I'll check it out! Thanks :)

divarch
March 11th, 2004, 03:37 PM
Hey, thanks for the link, lestat,
but seifer... don't bother checking...;)
It's a very bad copy of Macromedia's Robo project or something..

And it only stores information as you put it in.
I just had a nice drag of 10 minute conversation about my name, and she kept asking me the same thing over and over.
So, without the animation it would look like 'Elise' that existed on Commodore 64.:cyclops:

But it keeps the thread moving ..:beer:

SeiferTim
March 11th, 2004, 03:39 PM
It was alot like Alice, which somone (I think it was Spirit) posted earlier in the thread... I think that's more AI, where as Ayumi is going to be more AL.

divarch
March 11th, 2004, 03:47 PM
Originally posted by SeiferTim
where as Ayumi is going to be more AL.

That's the spirit!
Did I say spirit?

That's the Seifer!:thumb:

lestat680
March 11th, 2004, 03:49 PM
try betting into a discussion with it, about whether or not it excists.. i've managed to convince it that it doesn't exist.. it took some time but it was actualy quite fun..

SeiferTim
March 11th, 2004, 04:03 PM
While it is a lot of fun, I don't think our Ayumi is going to have much in common with the Alice-type programs.

Spirit-Z3RO
March 11th, 2004, 05:04 PM
WHO THE HECK IS ALICE!?
I'm lost -_-

Anyway, about that link, I've seen it no ads often. Appearantly, none of them understands japanese, lol.

And everytime I start a sentense with "WITH" all she says is
"I guess it would be more difficult without it."

This basically a chat bot. Like on counter-strike, the bots respond if you were to swear.
Ayumi's gonna have a personality of her own, based on how she grew up :)

SeiferTim
March 11th, 2004, 05:06 PM
Originally posted by Spirit-Z3RO
WHO THE HECK IS ALICE!?
I'm lost -_-

Anyway, about that link, I've seen it no ads often. Appearantly, none of them understands japanese, lol.

And everytime I start a sentense with "WITH" all she says is
"I guess it would be more difficult without it."

This basically a chat bot. Like on counter-strike, the bots respond if you were to swear.
Ayumi's gonna have a personality of her own, based on how she grew up :)
Exactly! :beam:
I thought you posted the link to Alice, which was basically the same thing... you typed in a box, and she responded... its somewherre in this topic... but, oh well.. :beam:
I don't think Ayumi will be able to 'talk' for quite a long time, but I think she'll communicate kind of like the way the Sims do... with thought balloons, and things...

Spirit-Z3RO
March 11th, 2004, 05:21 PM
I deny that -_-
I've only seen it in an ad, i wouldn't know an actual link
do not try to accuse me of such a thing! (though it's not a bad thing.. or is it?)
hehe, going camping, be back in a few days :p

BlueBoots
March 11th, 2004, 05:56 PM
Do you think that you could modify and simplify this for an animal?
Like a pet??? *eyes widen with excitement*

divarch
March 11th, 2004, 06:27 PM
You mean something like this:
:geek:

BlueBoots
March 11th, 2004, 07:09 PM
Those attachments never work for me! I saved the link, but the .swf doesn't do anything...

What's it supposed to do?

divarch
March 12th, 2004, 03:15 AM
Oh, nothing special, forget it ....

Spirit-Z3RO
March 12th, 2004, 02:53 PM
oh - my - G**

That was INSANE. Just got back from camping, had to come home a day earlier... my friend got drunk and fell of a 20 foot cliff. Somehow, he ended up with only a bunch of scraches on his back, we're not even sure if anything's broken yet -_-.

Anyway... I really don't like the idea of Ayumi being a pet, she's gonna be a... friend... lol
How about this, she's like a Toy Baby for everyone.
To me, when you realize people are learning from you, you feel pretty special about it... and... I don't know anymore... I just wanna eat my Cup Noodle and like, go sleep or something, my heavens that was insane.

Have fun everyone, keep it up!

BlueBoots
March 12th, 2004, 11:16 PM
I didn't mean for Ayumi to be pet... I think she's more like the dude in a Little Indian. I don't know if you've read it but I'd recommend it, even though it's a childrens book. It's about a boy who makes a toy indian (Native american) come to life, and about how he learns that he's not a pet, or a toy, but a real man in his own right.
Like Ayumi will be a virtual person in her own right, I guess...

What I meant was that could the Ayumi code (simplified version of mind you) be adapted for a virtual pet? Like with the values depreciating over time and all that?

Spirit-Z3RO
March 12th, 2004, 11:47 PM
oh, i'm sure it'll start all simple. I see this as a puzzle -

we have a few pieces
we havn't (but about) put the pieces together
we dont have all the pieces - yet.

So it'll start off rather simple, i think.

BlueBoots
March 13th, 2004, 02:20 AM
Yeah, I've read through this entire topic (some parts more than once) so I can definitely see the whole starting off simple thing as a good idea!

The major advance I see Ayumi as being is that her AI is not controlled by the user, but by time... And I guess you guys want real time eh?
I'm not sure if Flash could handle the whole ask her a question and get relevent, intelligent answers.