Slime0: i drew a picture of the map during statistics today =)
Slime0: scanning and coloring for the heck of it
ThiveerTM: Ha =) Can I see it?
ThiveerTM: ah, k
ThiveerTM wants to directly connect.
ThiveerTM is now directly connected.
Slime0: here, i dont think i'll color it actually, not worth it. one sec
Slime0:

ThiveerTM: hmm... it works well...
Slime0: works?
ThiveerTM: What's the thing on the right?
Slime0: oh, that's sort of a cliff sort of thing
ThiveerTM: makes sense to look at
Slime0: (ah)
ThiveerTM: hmm...
Slime0: understand the cliff thing?
ThiveerTM: I think so...
Slime0: with the "druid" rocks at the top, possibly =)
ThiveerTM: yah
Slime0: there are also cliffs along the ocean at the right, those could be used for something
ThiveerTM: The road doesn't look like much from this angle...
ThiveerTM: it doesn't go anywhere...
Slime0: oh, yeah, it sort of goes down to the docks below... they're small docks though, that i
drew
Slime0: with a fishing community there
ThiveerTM: I'm wondering if maybe it should go through a pass in the mountains or something...
Slime0: which part of it?
ThiveerTM: I dunno... but it seems... ah, whatever
ThiveerTM: mmm... map in general just doesn't quite look right... source of fresh water with the town
way away from it, random castle... mm... Ah, whatever... now need to make rooms and places and stuff...
ThiveerTM: er, points and locations and events and stuff...
Slime0: =)
Slime0: yup
Slime0: i was thinking...
Slime0: the whole thing could be sort of boring if we didnt have some major conflict
throughout it
Slime0: what we need is some evil guy intent on destroying the world, and the game players
can choose to follow him or be "good" - and we can increase his power if no one follows him
so that he can be a real protagonist, or else it could make the game really interesting. 'cause
without something like that, it could get sort of pointless - there's no incentive to help anyone
Slime0: uh, antagonist*
ThiveerTM: hmm...
ThiveerTM: You mean, have people at the beginning choose to follow "chaos" or "order," or have this
evil guy go around recruiting newbies?
Slime0: sort of, but they wouldnt have to really make a choice and hit a radio button for it -
they could simply help out whoever they wanted to, that would enable them to go around as
spies, or change sides when they were convinced they should, sort of like real life
ThiveerTM: ah, nifty
Slime0: then we only have to program the AI evil guy to recognize whether someone's helping
him or not
ThiveerTM: aye...
Slime0: any antagonist ideas?
ThiveerTM: or just give people a generic good/bad ranking related to their deeds..
Slime0: yeah, thats the basic idea
ThiveerTM: you, who he'd be and what he'd do?
ThiveerTM: hmmmmmmmmmmm...........
Slime0: =) wizards are always good for bad guys =)
Slime0: dragon maybe? dunno
Slime0: dragons dont have much personality
ThiveerTM: Aye... I'm always partial to just the generic ethereal subversive spirit type thing, but that
could be weird... hmm... Some kind of master thief could be nifty... dragons, wizards... a weird demon or
monster type guy hiding at the depths of some dark catacomb to the east...
ThiveerTM: who sends out little demonic death people or something to do his bidding...
Slime0: oooh i like that =)
Slime0: we'll have to give him a name
ThiveerTM: hmm...
Slime0: George - nah
ThiveerTM: Bob =)
Slime0: =) that'd be hilarious, except no one would get it =)
ThiveerTM: heh...
ThiveerTM: Zolmordt...
ThiveerTM: Veltrig'tn...
ThiveerTM: ah...
Slime0: sounds like "voldmort"
Slime0: where are you getting those? they're good
ThiveerTM: making up...
ThiveerTM: Dautregh...
Slime0: they're good, but try to reduce the number of consonant clumps
ThiveerTM: alrighty...
ThiveerTM: hmm...
ThiveerTM: consonant clumps make things sound more evil, cause they're hard to say...
Slime0: true, true
ThiveerTM: Drath
ThiveerTM: Droth
ThiveerTM: I like Droth
Slime0: Drath is good
Slime0: hmm
ThiveerTM: hmm...
Slime0: drath. droth.
ThiveerTM: Drawth...
Slime0: I am Droth, you shall die.
I am Drath, you shall die.
I am Drawth, you shall die.
ThiveerTM: Droth.
Slime0: i like drath, sounds like "death" and "wrath" together
Slime0: maybe you're right though
ThiveerTM: hmm... was supposed to be "death" and "wroth" together...
ThiveerTM: ha...
Slime0: drath sounds silly now
Slime0: =)
ThiveerTM: hmm...
Slime0: Droth. that's good. unless we can find a better one later.
ThiveerTM: "I am Droth; you shall die" sounds rather silly too...
ThiveerTM: Ah, okay.
Slime0: heh, we'll change the sentance =)
ThiveerTM: heh
Slime0: yeah actually maybe we should get two syllables in there
ThiveerTM: Dormoth...
Slime0: "Drozath"
ThiveerTM: haha door-moth, nope won't do...
ThiveerTM: drozath works
Slime0: =)
Slime0: Drozath?
Slime0: hmm
ThiveerTM: Drozoth? too many o's..
ThiveerTM: mm and sounds like elictrical shock
ThiveerTM: *electrical
ThiveerTM: Zordoth...
Slime0: Yeah! that's closer
Slime0: Zordath Zordeth
ThiveerTM: Zardoth...
ThiveerTM: Zordeth!
ThiveerTM: mmm, sounds feminine...
Slime0: true
ThiveerTM: mmm, could be feminine
Slime0: that could be neat, yeah
Slime0: aren't many female evil magical people in games.
ThiveerTM: hmm...
Slime0: Zardoth
Slime0: Zardeth
Slime0: Zoink
ThiveerTM: zoink?
Slime0: just kidding =)
ThiveerTM: hmm...
Slime0: Zarddak?
ThiveerTM: hmm...
Slime0: i dunno...
ThiveerTM: aye
Slime0: Zardoth was good
ThiveerTM: alrighty
Slime0: cool then. Zardoth = evil bad guy, living underground somewhere in the East.
ThiveerTM: aye
ThiveerTM: or maybe at the top of a mountain, who knows...
ThiveerTM: he'd have like this big network of caverns under the mountains or something, perhaps...
Slime0: we'll have to come up with something. Is he an actual character in the game? I think
we should do some complicated labyrinth
Slime0: yeah...
ThiveerTM: I dunno...
Slime0: we can't really let him be killed though
ThiveerTM: well, he could be controlled by some even bigger power that nobody really knows mcuh
about which would infest somebody else if he were killed...
ThiveerTM: *much
ThiveerTM: or something...
ThiveerTM: It'd be nifty it were *possible* some how for people to come and confront him if they all
worked together and spent a bunch of months on it and stuff...
Slime0: true, that's not a bad idea
Slime0: yeah! but we have to make it so they *have* to work together
ThiveerTM: yeah
Slime0: we can force each character to choose between certain ways of developing
themselves eventually... focus on black or white magic, strength, other stuff
ThiveerTM: yeah...
ThiveerTM: or just watch what they do, and put a perm limit on stuff they don't use after a while...
Slime0: yup
Slime0: we'll have to create an elaborate way of getting closer to all those things though,
stronger in all the different ways
ThiveerTM: hmm... gonna be hard to put all these actions into effect, and have people work with
eachother and stuff with cgi...
ThiveerTM: what do you mean?
Slime0: yeah, was thinking the same thing
ThiveerTM: things'll be slower than normal adventure games
Slime0: like, there have to be a ton of quests each for gaining a little experience in some
area
ThiveerTM: yah... but also just things like climbing trees, throwing stuff, casting spells on people and
things...
Slime0: we also face the problem of time zones - people can only help each other if they're
on the same side of the world
ThiveerTM: that shouldn't be too much of a problem... the people who are asleep when the others are
awake probably won't know them too well...
Slime0: well, for one thing, i assume we're not having any real "fighting" interface, right?
just puzzles/mazes/etc?
Slime0: true
ThiveerTM: I dunno... you'll have to be able to give stuff to people, maybe you can throw stuff or cast
stuff at them too...
ThiveerTM: should people be able to die? fall off cliff, drown in waterfall, get eaten by bugblatter
beast?
Slime0: they should be able to become unconsious and wake up in some healer's room in the
town
Slime0: healer = guy who heals i guess =)
ThiveerTM: heh
ThiveerTM: then there's the problem of logging... hmm...
Slime0: although, falling and stuff wont happen
ThiveerTM: unless there's some puzzle to avoid falling and stuff...
Slime0: only things like when they enter some "trial" that they're not ready for
Slime0: yeah
Slime0: so now we face the problem of having multiple characters interact
ThiveerTM: one way to get around movement problems...
ThiveerTM: is to have like a 1 minute timer
ThiveerTM: over the intervals of which you can do stuff
ThiveerTM: but that slows things down a lot...
ThiveerTM: hmmm...
ThiveerTM: if there were some way to auto-reload when things change...
Slime0: there is
Slime0: sort of
ThiveerTM: could just reload every thirty seconds or something...
Slime0: CGI programs can send things to the client which says "i got your response, but dont
change the page you have displayed"
ThiveerTM: huh?
ThiveerTM: oh
Slime0: so we can use javascript to send requests every 10 seconds or so, and only get a page
back when something changes
ThiveerTM: ah.......
ThiveerTM: that'd work
ThiveerTM: only be ugh to bandwidth on server
ThiveerTM: *although
Slime0: we could have "sound clips" for talking - you can say something, and if other people
are there, it will appear on their screen: "joey says: hey johnny! what's up?"
Slime0: yeah thats the problem
ThiveerTM: could have a chat for each room, that lists the last things said in the room...
ThiveerTM: cause troubles of people moving around
Slime0: we could also put that in a separate frame
ThiveerTM: hmm...
ThiveerTM: could have one chat thing for every location, and then allow individual communication...
Slime0: how do you define "chat thing"?
ThiveerTM: chat box with history
ThiveerTM: that lists things said by people
Slime0: when you said "location" did you mean "point"?
ThiveerTM: reloaded automagically every 60 seconds or something...
ThiveerTM: no, I meant location
Slime0: ah. hmm. we'll have to make locations smaller though
ThiveerTM: could do points...
ThiveerTM: although that could get pretty messy
Slime0: like, we cant have people talking through walls or through long distances in caves. but
yeah, what you said.
ThiveerTM: could divide locations into rooms into points =)
Slime0: =) would be even messier though, i think
ThiveerTM: mm, guess so...
Slime0: i have an idea, maybe...
Slime0: we could have people allowed to say things directed to other people, if that other
person is in the same box as them. That will go in a file to be opened the next time the other
person sends a server request, provided it's less than, say, 45 seconds from when they said it.
if that person has moved when they "hear" it, then it will tell them where the "sayer" is
located (if we can do that) and tell the "sayer" that the other person did hear them.
Slime0: box = point, sorry
ThiveerTM: hmm...
ThiveerTM: but you'd also want a way to say things to multiple people
ThiveerTM: mmm, could just do a bunch of those
Slime0: we could have a text box with a multiple-select box next to it - select who you want
to hear, and type what you want to say, and hit submit.
ThiveerTM: yah...
ThiveerTM: problem is then there's no generic chatter, so you have to already know people to talk to
them...
ThiveerTM: ah, just add a "send to all" function...
Slime0: yup
Slime0: the select box would list everyone in the same "point" as you
ThiveerTM: yah
ThiveerTM: and can add a whisper feature or something that would pop up an alert
ThiveerTM: get attention...
Slime0: maybe we could provide some magical way of communicating from a distance or
something. or we can allow people to leave "notes" for other people that they would see when
they reached the same spot.
ThiveerTM: hmm...
Slime0: eh, what i just said isnt a priority, never mind for now.
ThiveerTM: could have some kind of magic communication center at town for sending messages...
ThiveerTM: alrighty
Slime0: good idea though
Slime0: we'll think about that after we get the regular talking worked out
ThiveerTM: zoup
Slime0: if this thing gets too big, it'll be a problem.
Slime0: and if it stays too small, that'll be a problem too.
ThiveerTM: so... it's not possible?
Slime0: dunno
Slime0: it needs to be easily expandable, and we need to make sure we get enough people to
play it that they have a chance of working together to solve a problem.
ThiveerTM: aye
ThiveerTM: whole map is arleady might big...
Slime0: true
Slime0: maybe we could put in AI players at the beginning, nah, that wouldnt work, too
complicated
Slime0: maybe we should be more careful about the borders. then we can make it just a town
to begin with, and slowly release more parts as people join, if they do.
ThiveerTM: yah...
ThiveerTM: although then expansion could be difficult, cause so many rooms need to be modified -- I
mena locations need to be modified to add more map stuff...
ThiveerTM: mm, 'twould work
Slime0: only real problem with *that* is that we have to have mini plots until it gets big
enough for, um, Zardoth.
ThiveerTM: well, probably will need sidequests and minipuzzles and stuff anyway
Slime0: true
Slime0: sounds good, that's the plan, i guess...
Slime0: we could sort of *introduce* Zardoth in a conversation here and there, maybe, but
not really do much with him until there's enough people to do so.
ThiveerTM: aye
Slime0: this also makes our job more feasible. it's easier to create a town for now.
ThiveerTM: yah
Slime0: To Do:
Create/map out town
Talking thing
Create Mini Plots
AI people
Slime0: oh, and a prettier interface, too
ThiveerTM: heh
ThiveerTM: probably need some kind of theme image
Slime0: yeah
ThiveerTM: also need engine to do actions
Slime0: what are we going to call this thing?
ThiveerTM: *shrug*
ThiveerTM: ZardothQuest, hah
Slime0: action engine, yes, that will need to be made.
Slime0: =)
ThiveerTM: Tides of Doom. Adventurelight. EternalQuest. The UnGame. also sortsa weird
meaningless names
ThiveerTM: JKAdv
Slime0: dont understand that one
ThiveerTM: JohnKarlAdventure?
Slime0: =D
ThiveerTM: hmm... probably need more plot for title...
Slime0: yeah
Slime0: of course, there's Everquest, (a game which i suppose is similar to what we're doing)
which doesnt tell us anything about the plot from it's name
ThiveerTM: well, it's an online rpg, and thus a never-ending quest game... with mmorpgs usually the
plot doesn't mean much -- it's all char interection...
ThiveerTM: I guess that's sorta what this is...
Slime0: i suppose
ThiveerTM: hmm...
Slime0: i'll have to teach you some Perl somehow
ThiveerTM: yah...
Slime0: not that i'm the expert, but, eh
ThiveerTM: some of that stuff in that "simplistic" engine thing was pretty weirdlookin'...
Slime0: some of it is shortcuts
Slime0: it is sort of weird though
ThiveerTM: is it "chomp" that eats up file-matter? =)
Slime0: =)
ThiveerTM: hmm...
Slime0: it cuts off the last character in a sring, which, when you're reading lines from a file,
is "\n"
ThiveerTM: ah, k
Slime0: might actually just be cuts off whitespace from the ends, or something, i forget. does
the trick though.
ThiveerTM: zoup
Slime0: but that line involves a shortcut too
Slime0: it does the action to the default variable, which is called $_
had I wanted to do it to a different variable, I would have said
chomp $linestring;
or
chomp($linestring);
Slime0: otherwise it defaults to $_.
ThiveerTM: ah
Slime0: important variable information:
Slime0: any variable beginning with $ is a scalar - that means it's like a Javascript variable.
it can be a string, number, reference, whatever.
Slime0: One that begins with a @ is an array, and one that begins with a % is a hash, which is
like an array except that it has key-value pairs, so $myhash{'name'} == 'John'.
ThiveerTM: key-value pairs...
ThiveerTM: don't get it
ThiveerTM: was $ supposed to be % there?
Slime0: like, an array has elements like this:
0 - John
1 - Karl
2 - George
3 - Bob
Slime0: well, sort of, but i'll explain in one second
Slime0: hash is more like this:
name - John
grade - 12
gender - boy
Slime0: the numbers aren't numbers, they're strings.
ThiveerTM: ah, a hash is a structure
Slime0: i suppose =)
Slime0: anyway, the reason I used $...
Slime0: if i were referring to the hash in general, I would have said %myhash. for instance:
foreach $guy (%allguys)
{...}
But, when I'm referring to a *single element* of the hash, I use $. That's because the
element that I'm referring to is a scalar variable.
$allguys{'thecoolone'} = 'John';
Slime0: see, it's weird.
ThiveerTM: ah
Slime0: whether you use $ or @ changes the "context" of the expression being evaluated. If
the expression is evaluated in "scalar context", then it will return a scalar variable. For
instance:
$arraylength = @arrray;
Since the left variable is obviously a scaler, since it starts with $, the right hand side knows
it must return a scalar - it's in "scalar context". Arrays in scalar context return their length.
Slime0: there's also "list context", which tries to return a list, even if it turns out to be a list
with just a single element.
ThiveerTM: hashes the number of elements?
Slime0: i suppose.
Slime0: Consider the following expression:
($myname, $myage, $mygender) = &allaboutme();
First of all, you should know that & indicates that a sub/function follows. &allaboutme() is a
function. On the left hand of the assignment is what's called a list - not necessarily an array,
but a list. Lists are denoted with parenthesis and comma separated elements. Since we're
assigning to a list of variables, the right hand side is evaluated in List context. That means the
function knows it's trying to return a list, rather than a scalar. It may therefore return an
array with the elements 'john', '17', and 'male', which will be assigned to the respective
scalars in the list on the left.
ThiveerTM: What happens if it returns a scalar, or an incorrectly dimensioned list?
Slime0: if it returns a scalar, that's the same as a list with one element, which brings us to an
incorrectly dimensioned list. Extra values in the returned list will be discarded, and if there
are too few then the remaining variables that would have been assigned to will just be
undefined.
Slime0: got that?
ThiveerTM: yah
Slime0: ok, let's see. The file handle.
Slime0: file handles are typically all UPPERCASE... the only way i know of right now to
create a file handle is with the open() function. open(MYFILE, "mycoolfile.txt") will put the
file mycoolfile.txt into the file handle MYFILE.
Slime0: then you can read from MYFILE, line by line, with the angle operator: <>. For
instance, <MYFILE> will return the first line of the file.
ThiveerTM: ah.......
Slime0: and, if it's not assigned to anything, then the string of that line in the file will go into
the variable $_.
ThiveerTM: k...
Slime0: one more thing you should know...
Slime0: the expression
$mystring = "hello";
in JavaScript, that would assign "hello" to $mystring, and then return the value "hello", which
we could do something with if we wanted to. In Perl, however, it assigns the variable and then
actually returns $mystring - the variable itself. That means if we do
($mystring = "hello") .= "hi";
then $mystring ends up being "hellohi".
if you're wondering what .= means, it's like +=, but the concatenation operator for strings is
just a period (.).
ThiveerTM: okayyyyy.............
Slime0: yeah, strings work differently than scalars when it comes to operators. In addition to
(.), there's the (x) operator. "hello" x 3 returns "hellohellohello". (I may have it backwards, it
might be 3 x "hello", but I think i had it right.)
For strings, instead of == you use "eq". You also use "lt" for <, "gt" for >, "le" for less than or
equal to, "ge" for greater than or equal to.
ThiveerTM direct connection is closed.
Slime0: you there?
ThiveerTM: er, yeah...
ThiveerTM: slime0 direct conneciton closed
Slime0: (i didnt close it)
ThiveerTM: hmm
Slime0: hmm, i hate that.
ThiveerTM: dirty line
Slime0 wants to directly connect.
Slime0: =)
ThiveerTM is now directly connected.
ThiveerTM: less than etc. for strings refers to length or value?
Slime0: alphabetically, i would assume.
ThiveerTM: value
Slime0: Oh, boolean-ness... this is weird.
Slime0: i dont think there's any real true or false. Instead, anything that evaluates to the
empty string "" or the string "0" is considered false, everything else is considered true. Note
that strings and numbers convert back and forth, so the number 0 is false, since it's the same
as "0".
ThiveerTM: mm, that's the way it is with other langs -- 0 is false, everything else is true; just have
constants true and false defined as boolean 1 and 0.
Slime0: ah
Slime0: oh yeah, and i think "" is the same as the value zero when forced into a numeric
value, so that's the same.
Slime0: all 0 is false. all else is true.
ThiveerTM: yah
Slime0: ooh! that reminds me. perl has a couple of cool things: unless() is like if() only it's the
opposite, that is, if(!(condition)) is the same as unless(condition)
also, there's an until() which is the opposite of while() - same sort of idea.
ThiveerTM: nifty
Slime0: i guess that's enough for now
Slime0: you know what i'll do to speed things up?
ThiveerTM: eh?
Slime0: i'll have a file containing a list of names, all on one line. That way, the javascript
request sending thing can have it check that list first, and if the person's name is not in the
file, it'll know there's nothing special for them to see, and send an answer back immediately.
But if their name is in the file, then it knows it needs to check if they were talked to or
something like that.
ThiveerTM: that'd work, I guess...
ThiveerTM: be weird to modify
Slime0: could be buggu
Slime0: buggy*
Slime0: we'll see, anyway.
Slime0: i'm going to go, my fingers hurt from typing. i'm sure i'll be back later
ThiveerTM: alrighty
Slime0: probably not too long either =)
ThiveerTM: Farewell, homind.
Slime0: see ya
ThiveerTM: *hominid