Tue - January 13, 2004

Massive Multiplayer Open Source Collectable Card Game


MMOSCCG? Yikes! Got to think up a better name for it than that.

Been trying to get into learning Cocoa programming lately, with little positive results. Other than the holidays making things busier, I only have two days to run errands and go grocery shopping, which results in a lot of walking around carrying heavy things, thus when I get home I'm not in the best of shape to tackle learning a new programming language. Studying before work isn't much better, as about the time I'm starting to "get it" and things are clicking into place, I have to stop, go to work, and spend the next eight hours trying to make other people's business cards look interesting. Fortunately, it does look like I'll be able to shift to four nine hour days in a couple of months, then I'll be able to devote an entire day to programming, which is something I'm much better suited for than little snippets grabbed at random intervals.

However, even with the little snippets falling into and out of my induced-distraction mind, I'm getting a better idea of what Cocoa and object-oriented programming can do, can't do, and what it does quite well indeed. Launching straight into ALife programming and the toon chat program is much like planning how to paint the Sistine Chapel ceilings before the first day of your "Painting Basics" art class. It's good to have a goal but you've got to be realistic somewhere along the line. That's why I was thinking of a training project, something that I could focus on while learning various aspects of programming, something that can start simple and become more developed and refined as I learn new techniques in computer gaming creation. it definitely has to be a game, I want something fun to make it more creatively interesting.

Right before my massive burnout I was working on a collectable card game with Eric Hunting. It was to be open source, so anybody could come out with their own expansion, uniform in it's mechanics, so any expansion could be played evenly with any other expansion, thus Greek Mythology could fight it out with cheesy 50's sci-fi movies, and geared to accept a wide range of playing styles, so people who like playing in different ways could be on equal footing. I worked out the basics, came up with a few prototype sets, sent out playtesting decks, got back responses from the few who actually played it, and was about to launch into the revision stage to make it simpler to play when I got stressed bombed at work over a five week period and the burnout settled in for a long, long stay. Nothing was done with it ever since. Until now...

The basic framework of the game is still good, it's as expandable as your imagination; game balance is good, playing your cards right will let you overcome your opponent no matter how far behind; playing style is still flexible so a devious plotter and planner can plan and plot deviously while a hack & slasher can happily toss minions into combat with catapults and they'll both be on equal footing if they plan their decks right. The problem was complexity, there was too much to take into account and consider, too many variables to keep track of every turn, and it took up too much space on the table when playing. I had worked out a way to simplify the cards on the table before the burnout hit, but there was still the complexity of the game mechanics itself to deal with.

Well, as you can no doubt guess by now, such complexity would be easy for the computer to handle. All the computer had to do was go through each player's deck and sort out what rules applied to which cards, it could add up points and conditions at the start of each turn, and it could make the game easier for the players by only offering them the choices that apply. In fact, by turning this game into a computer game, it also allowed me the add yet another complexity that I couldn't add to the card game: critters!

There was a game out many, many years ago that I liked very much called Titan. You traveled around various circles of land types (swamps, deserts, jungles, etc) and recruited critters, which in turn allowed you to recruit more and higher-level critters with which you attacked your opponents critters and did battle on an enlarged area map. I liked this idea a lot but could not figure out how to work it into a collectable card game that was played on a table. With the computer handling everything and displaying the critters on the screen, it becomes easy. Well, easy to play, the programming is another matter entirely. With the computer handling everything, critter recruitment, interaction and combat can be standardized to the point where any expansion can play against, or even mingle with, any other expansion, while the ability to create new and different critters and expansions remains.

So now this game is at a point where it could actually be realized, maybe even playable. This game is also a good learning platform, as it starts out easy, just getting the "cards" and rules laid out. Once that's accomplished, I can move on to making it playable, where two people could play a few games of the basic concept. Then I can add the computer opponents, a first introduction into ALife, so people can play it by themselves. Then I can step up the graphics, making the crittters and terrain look good, animated even, adding special effects, sounds, etc. Then once that's at an acceptable level, I can move on to making a simple 3D engine so the critters can be like moving miniatures, where gravity is variable, and other effects can be applied based on the rules of the card being played. And of course, I'll have to work on a program that will allow people who know nothing of Cocoa or programming to make their own critters, their own cards, and if they are really ambitious, their own expansions.

Yes, it does seem like a big project, but when you break it down as learning steps, it's not all that difficult and even helpful in that it's continually building on what I program before. Best of all, Cocoa programming, with it's object-orient focus, is idea for this kind of game. Still, just wish I didn't have to do it all alone, but that's how it is.

Also, if anybody has an idea for a good name for a computerized collectable card game that can handle any genre or concept as an expansion, please suggest it. Anythings better than MMOSCCG!

Posted at 03:44 PM     Read More  

Sun - December 14, 2003

More on how I'm going to go about the programming


One of the biggest obstacles has already been solved, and there's even books written on how to do it.

When I first thought about making virtual worlds where virtual critters can roam about and interact in, the main problem I had was in how to make this world have basic physics. You know, gravity, momentum, force, contact, etc, all that stuff we take for granted in the real world, until we fall down a flight of stairs. Fortunately, games have paved the way. In the race to develop the most "realistic" games, programmers competed to develop the best physics programs. After a period where everybody had their own way of doing things, the best elements of these were shared/learned/pirated enough to become a basic standard. Now there are books in the stores detailing how to program a world where you can pick up things, drop them, or shoot them to blow up other things. While these are all in different languages, the basic concepts are explained well enough that you could convert the examples to the programming language of your choice. Due to how the field of first person shooter games has become so predominant, and how some of these books were very badly written the first time around, newer and better books are in the works right now, and should be in the stores next year after I've learned enough cocoa programming to make full use of them.

Once a good understanding of how to make a physical virtual world is accomplished, you can alter it to fit your needs. In my case, there are two divergent fields to explore: the toon universe where physics are something you can ignore at times (like not falling as long as you don't look down) and an all-audio world where only music defines things.

For the toon chat program, I'll be fortunate in that I'm using cartoons are a medium, and not lifelike humans. Trying to make a human-like character move and react realistically is very difficult and event he slightest flaw will make it seem fake. On the other hand, a toon character that walks funny actually increases the believability rather than detracts. This allows me to simplify matters, which makes for smaller program elements and faster transfer of data. For instance, in most games where they strive for the utmost realistic modeling, the computer has to configure the skeletal structures, muscles, limiting factors, and of course the entire physics of the world, to make a character pick up a rock and throw it. This is why on-line games require a fast broadband connection, so your computer can send all this data to the server, which then computes it and sends more data back. Since I'm going for a P2P (peer to peer) capability, the data bouncing back and forth needs to be simplified. Another problem with striving with realism is the limit it places on customizing your character. You can't give your character extra arms or a really huge nose, because that would require a complete reprogramming of how that character would move. By limiting the character physiology to the basics (just joints and degrees of freedom of those joints) you can create any kind of critter you want, then the ALife programming takes it and figures out how to make it walk from point A to point B, how to dodge pies, and how to make those big eyes when it realizes it's holding a lit stick of dynamite.

However, the MAL (musical artificial life) is going to be a bit trickier. True, I won't have to deal with gravity or object contact parameters, but I will have to figure out a way to get the MAL's to communicate with each other using actual music that can be tailored to follow different genre styles, and to be recognizable as music in the first place. Don't want to spend a lot of time only to have the MAL's end up communicating like R2D2. This is why I'm thinking along the lines of using world physics as a way of modifying the communication. Like I said, tricky, but should be interesting to try.

For instance, one thing I'm considering is a food reward system. Let's say you want a certain style of swing jazz rhythm. You input the sample notes (or let the computer sample a few MP3's of your choice) then go off to do something else for a while as the computer generates a few dozen MALs, let's them play out a song, then gives MAL-icious treats to those whose beats come closest to the sample tunes. This continues for a while as those that get it end up well fed while those who are stuck playing country western elevator muzac die off from malnutrition. However, others who are kind-of close but are developing their own unique style will be getting enough food to survive long enough for the virtual orgy, where all of the survivors swap code in a free-for-all orgy of procreation. The offspring of this are then put through similar will play for food simulations, and the survivors will once more exchange data to produce another generation, and so on and so forth, until you return and shout "Computer! Entertain me... NOW!" and it lets the latest generation of MAL's play their happy little songs for you to judge (like American Idol, but a lot less shallow and vacuous). You could chose one or two as good enough for swing, and set them aside for later use/development, you could dispose of several who don't strike your fancy, and you may find one that, while not swing per se, is interesting and well worth keeping.

So, that's a rough outline of how I'm thinking right now (but without the special effects, cast of thousands and long but witty dialogue between the mad scientist, the jester and the violent barbarian with expansive vocabulary skills)

Any ideas or questions from the viewing audience? (all three of you)

Posted at 12:49 PM     Read More  

Thu - December 4, 2003

Wanted: A 3-D Printer


I could really use a device that can make tiny gears and parts of my own design. I sure hope I don't have to make one myself.

Anybody who knows me well enough knows how I like Lego gears and such. I used to play with them quite a bit to try out ideas and prototype concepts. Problem now is that I need to test out concepts that are too small, too unique, too customized for Lego to handle. I'm starting to use Supersculpty to fabricate various parts, but it's a skill I've long since lost from disuse and have to learn again from scratch. Also there's the matter of precision. I am not a precise kind of guy when it comes to gears and tiny things.

What would really make a difference is a 3D printer, a device that works just like an inkjet printer but creates a three dimensional object. The print head would run over an area, laying down tiny drops of liquid in a certain pattern, followed immediately by a curing light that would solidify the liquid into a hard plastic. Then the print head is raised (or the platform lowered) and it repeats the process for another layer, and so on and so forth until you have a finished doohicky.

The problem is, the type of 3D printer I'd like is currently terribly expensive and far more technical than it needs to be. The lowest priced 3D printer that does what I want (with the end product being durable enough for my needs) costs around $8,000, and the program to run it requires a masters degree in engineering just to make a simple cube (TRUE! An engineering firm bought one, but had to return it a month later as none of their highly trained engineers could figure out the software. *Sheesh* Who runs these companies?) The cheaper 3D fabrication devices also have problems, most notably is the inability to create small, precise things like gears, the waste of material (you need to use large blocks of plastic to make a small doohicky, then dispose of a lot of plastic dust) and the program controlling the devices are clunky, limited, and windows only (yeah, that's right, Mac users could never be interested in making things). There have been somewhat reliable rumors floating around that suggest a major printer company is close to having a 3D printer ready for the consumer market (under $1,000 and easy-to-use program) but they are hesitant to release it because they don't see a large market, they figure only design engineers would want one.

Stupid, stupid, stupid executives.

Of course there's a market for it! Anybody who likes making things will want one, from the hobbyists to the professionals. I know for a fact that model hobbyists would kill to get a 3D printer to make custom parts and props, while kids would love using one to make their own toys and action figures to play with, and there are hundreds of professions that would make daily use of such a printer.

This reminds me of Syquest and why the company went down the tubes. Their engineers had designed a removable hard drive system that was cheap, durable and easy to use, a small cartridge would hold 100 megs of data and could be cheaply made. However, the top execs decided that only artsy types would need such large portable storage for their big Photoshop pictures, and since the art crowd made up only a small part of their current market share, the execs decided it wasn't worth their time to even consider. Then a year and a half later Iomega came out with the Zip drive. Almost the exact same thing (a little better designed, though) as Syquest's abandoned project. Within a few months of the Zip drive hitting the store shelves it became an industry standard. Within half a year it was a standard option on all computers being sold. Within a year it had something like 90% of the market for removable disk data storage. Everybody was using it, from all professions and most home users. When Syquest dusted off their plans for a similar drive and tried to compete, it was way too late, they had already lost. Even their big drives sales plummeted and they soon went bankrupt, only to be bought out by Iomega.

Same situation here. An affordable 3D printer would be a big hit across the whole spectrum of computer users. Make the program that runs it adaptable enough (and open source enough) and you'll have thousands of web sites full of designs people could download and print out, thus increasing the demand even more. But try telling that to the suits in charge.

The technology is here, today, to make such a printer, but nobody seems to "get it" and market one. If there isn't one in the stores by the end of next year, I'm probably going to have to make one myself, and I'd rather be building robotic pets instead.

Posted at 10:33 AM     Read More  

Robot Critters For Fun and Profit


You'd think the success of Aibo would have spurred new developments into pet robots, but nooooooooooooooooooooo...

I like tinkering and creating interesting mechanisms, so I've always been interested in robots. There are many, many, many things I'd like to try out, but the lack of a machine shop and electronics training keeps me from doing much. The first can be solved with a 3-D printer/fabricator, which will be covered in the next entry. The second has always been thwarted by an unreasonable education system. When I tried to take beginner electronics classes they were either very late at night (and hard to get to) or very early in the morning. Of the two 6:00 am classes I took, I remember nothing. Just a foggy blur of trying to make it to the class on time and report cards that said I received a C. Fortunately, there are thousands of "how to" electronic guides on the net, giving step-by-step instructions on how to build anything from small one-motor BEAM bugs to advanced neural nets, and there are many books on learning the basics for beginners, so all I need is a lot of free time to learn it.

I've always believed there was a market for robot pets. People have always had a tendency to emotionally bond with machines they use often. Just listen to some guy talk about a car he's had for over a decade, and people are already treating those new robot vacuum cleaners as pets. The major setbacks to robotic pets have always been computer power and battery power, both of which are no longer a problem or will soon be solved.

Price isn't that much of a concern. When Aibo first came out, with it's hefty price tag, many analysts and experts praised it's engineering but predicted it would never make a profit for who would spend so much on a robotic pet dog? Well, they sold the entire first run in a week, the entire second run in less than a week, and the entire third run before they even started the production line. Wasn't until they mass-produced the second generation that they could keep them on the shelves.

Due to this success, a few other companies came out with their own knock-offs and wanna-be's, all of which were seriously limited in the computational department. The thing that made Aibo so popular was that it could learn, develop it's own personality, and explore to learn more about it's surroundings. The copycats did none of these, except for one, the BIObug, which was based on BEAM technology, but that thing made way too much noise. After letting it run around for ten minutes you wanted to throw it off a cliff just to get away from the constant shrill beeping. As a result of these failures and not-quite-failure-but-not-successes, the toy industry as a whole decided there wasn't a market for robot pets and went back to safe things with a proven history (and some of those things are pretty good, have you seen the latest RC flying toys? Impressive!)

But still, given the success of the initial release of Aibo, you can see that there is a demand for good robot pets, even very pricey ones. So what I would like to do (someday, if I win the lottery) is make robot pets, load them up with ALife programs (and possibly a fuel cell battery) and sell them to people with tons of money to burn.

First off, I would go for fantasy or creative critters. Why recreate a dog or cat when you could never get close to an accurate simulation? I'd rather make dragons, because nobody knows what a real dragon would act like so there's no pressure to get it as accurate as possible. Except the flying part, but anybody who would be disappointed that it doesn't fly wouldn't buy one in the first place. Also dinosaurs would probably be a lot of fun.

Secondly, I'd use ALife programming to allow them to develop their own way of moving, exploring and learning. If you ever watch a video of a robot that was programmed to move a certain way around an obstacle course, then a video of a robot that learned on it's own how to move, you'd immediately notice a distinct difference. The first would make short, logical and precise moves, and if you changed the course it would get lost and ram into things all the time. The second would actually behave like a small critter or insect, scurrying around the course with what can only be described as physical personality, and if you changed the obstacle course, it would adapt and continue on. Furthermore, ALife robots have shown an amazing adaptability to mechanical malfunctions. Remove a leg or wheel, it learns to compensate.

Also, ALife would allow the pet-bot to figure out the best way for learning, storing and accessing knowledge. There was one voice recognition program at MIT that I read about which provides a good example. A group of students had a major disagreement on how to handle the computer learning to listen, so they broke up into two camps, one that told the computer how to learn, store and access the data, and the other that programmed the computer to figure it out for itself, everything else was the same. By the end of the project the top-down group had a system that required the user to spend at least ten hours repeating words into a microphone so the computer could understand him, and only him, if he spoke slowly and carefully, and required something like 40 gigs of hard drive space. The second group had a system that could recognize what nine out of ten people were saying at a normal talking speed and with various emphasis (only heavy accents needed an hour of "training") and required less than 600 megs of memory. The results of this classroom project is at the heart of the best voice recognition programs that you can buy today. So using this approach, you can program the pet-bot how to learn, move around, adapt to changing environments, then insert an iPod for tons of data storage (and music it can play and dance to when you command it to entertain you ;-)

Thirdly, the robot has to interact with it's environment, and it's owner. While a cheap little microphone takes care of spoken commands (and two will give it stereo locating ability) I'd also want to give it a camera so it can see. The good news is that digital video cameras are getting cheaper, smaller and higher resolution every day, and it's easy to set up a split optical arrangement to give a single camera stereoscopic vision. The bad news is pattern recognition is still primitive and clunky. However, the good news with that is all of the research that I've found uses the doomed-from-the-start top-down approach (imagine trying to teach a computer how to tell the difference between a TV and a microwave, then you have to teach it to deal with portable stereos) so this looks like a job for (all together now) ALIFE PROGRAMMING! (cue heroic fanfare) If you set up the program to try to figure out on it's own what it sees through the camera, then it will gradually learn much like a child does. In fact, the pet-bot has an advantage in that it's learning can take place virtually. It can take snapshots of new items that it doesn't know about, then connect wirelessly to your computer and put up a slide show for you to review and identify. Furthermore, it can learn to read, listen to music and sing along, play fetch, play chess, and many other things all virtually. For instance, reading: you can type up a lot of text into your computer, then the program can view that text as a graphic image, compare it's guesses as to what the image means to the actual text, rewarding itself for correct words it identifies and returning to the words it fails at. So while your pet-bot is roaming around exploring your home, the spiritual astral projection of it's digital soul is busy inside your computer studying Shakespeare or learning Japanese so it can sit on your shoulder and translate anime while you watch.

Fourthly, the biggest problem for all robotics is power. The more robots can do, the more power they consume. Batteries are bulky and heavy, and while many noteworthy improvements have been made in small, lightweight batteries, you're limited to a choice between a big, heavy robot that runs for an hour, or a small, light robot that runs for five minutes before needing a recharge. Fortunately, there's hope on the horizon. Fuel cells are looking mighty promising, and come in a variety of configurations. In the lab they've been able to make fuel cells that produce the same amount of power as a traditional battery but at 10% the size and weight. Furthermore, these fuel cells can run on hydrogen (that you can produce at home with a small solar-powered production unit), alcohol (a shot of vodka lasts longer than a dozen AA batteries), and even sugar (a spoonful of sugar feeds a mess of microorganisms that produce the fuel the cell uses to create electricity). With longer and lighter battery life you have a pet-bot that can run around more, which means it can learn more, which results in it getting smarter and developing it's own personality and becoming much more pet-like.

But until these fuel cells hit the stores, there's still a lot I can do. For instance, it would be fun to make desktop pet-bots. You plug them into your computer via a firewire cable (so it can exchange data and power with your computer) and it can roam around your desk, exploring every nook and cranny, reading your mail, and having playful chats with you while you're playing games... or while you're at work, actually playing your games ;-) They would also be kind of portable, as you could plug them in any outlet, carry around a laptop battery or two so you can impress friends and strangers at bars. All the while they would be developing their intelligence, personality and learning ability, so later on when a fuel cell model comes out, you can download your desktop pet's data into the new robot and have the same old pet but with more freedom. Though it might still want to play your computer games when you're gone.

So that's the plan. Now to find the time to implement it all.

Posted at 10:31 AM     Read More  

Sat - November 29, 2003

How I'm going to do it


Using Genetic Algorithm and Cocoa Programming to create living code critters (insert mad scientist laughter here)

When I started to consider doing my own experiments in Artificial Life, I looked around for which program language to use. First thing I did was look into what others are using, which wasn't that helpful. Most people in the field use whatever programming language they already knew, or made up their own for security reasons so their virtual critters wouldn't escape (imagine a Godzilla-like code creature, rising from the mutations in an artificial life experiment gone horribly wrong, rampaging through the university's computer network laying waste to pirated music files with it's virtually radioactive breath). (Actually, that would be pretty cool.) In the formal classes of teaching Artificial Life/Intelligence, they use programming languages that are favored by the AInt crowd for their top-down structure, which near as I can tell, is poison to ALife, as I've yet to see a truly impressive ALife development from these languages, all of the good stuff is being done elsewhere.

While I was searching for a language, OS X for the Mac came out, along with a programming language called Cocoa, which is Objective-C object-oriented, which meant nothing to me until I read a review that called it "The Lego of Programming." I decided to use Cocoa right then and there. This turned out to be a good decision for two reasons:

1) All of the piddly little details are built-in with Cocoa. Everything that makes a program look good (buttons, graphics, GUI, etc) and actually usable by others are all included in Cocoa already, so instead of taking time and effort away from my MAL programming just to figure out how to put in a slide bar of differing colors, I can drop in an already pre-made slide bar and get back to the important stuff.

2) The various parts of the program are treated like objects (think Lego blocks here) that can be added, removed, altered, exchanged, whatever, without having to recode the entire program. This is especially good for how I want to go about programming my MALs, for this way I can treat each block as a separate genetic algorithm that evolves on it's own. While it's true that any programming language can have subroutines that you can treat like blocks, the more you use them the more confusing it gets, and if they change (as I want them to change) it takes a lot of programming to keep them from messing up the main program. Cocoa (and other object-oriented languages) are made specifically for this type of programming and is much better at handling it than any other language.

For instance, let's say I have a MAL that I'm training to play Surf rock guitar. It has a tempo, chords, strings, melody and style blocks that it uses to evolve a tune that is similar to Man or Astroman's style. While it is running through numerous generations of the overall tune, each of those individual blocks are also going through numerous generations, so the strings block is evolving itself and doing a better job at picking out a tune on a string-like instrument, and can be given a banjo and used in a bluegrass MAL later on, giving it a headstart. Conversely, I can also limit the evolution of these blocks, like I can set the strings and chords to only evolve a little or not at all while instructing the melody and style to evolve greatly. This is something that's missing in most of "serious" ALife programming, where the programs are treated as whole, complete entities, thus each program has to be recreated just to change the objective or attributes of a minor part.

Now is a good time to talk a bit about Genetic Algorithm (insert dramatic organ music here)

Genetic Algorithm is a style of programming where you give the computer the basic fields and let it do the trial and error of learning. A great example of this is walking. When a person tells the computer how to make a virtual figure walk, you end up with a figure that walks way too smoothly to be natural, gliding across the virtual floor in a manner that just screams "Computer Generated." When the programmer tries to adjust the walking to make it look more natural, they end up spending oodles of time and effort studying walking in real life, inputting every tiny detail so every toe is accounted for in every step, going through the tedious motion capturing of a living person so the knees move realistically, and so on and so forth. All of which could end up looking great, but then if you wanted to add a little obstacle for the virtual walker to step around, you have to redo the entire process.

With Genetic Algorithms, you give the computer a virtual figure with legs. You tell the computer how far the joints can move, which muscles move where, give it some physics (gravity, momentum, ground, etc) then tell it to move the joints and limbs about and try to get from point A to point B. Of course it doesn't make it, just ends up falling down and flailing about, but you tell it to try 40 times, then take the six attempts that took at least one step before falling, have them mate with each other (compare code and keep the parts that made that one step) then tell the three offspring to try 30 times. This results in one to three steps before falling down, so you take the top six performers, marry them, send them to a honeymoon in Vegas, and when they get back they have three kids that you run through the process again for 20 times. You keep doing this and eventually the computer figures out how to walk from point A to point B without falling, then you can add obstacles for it to avoid or walk over, give it a crippled leg, an extra leg or two, or even rhythm so it can dance around objects, and the program will learn on its own how to do it.

If you want to see how such a walking program evolves, check this out:
http://www.naturalmotion.com/pages/technology_hiw.htm

If you're on a Mac running OS X, you can download a "Learn To Walk" screensaver that does what I'm talking about:
BreveWalker

This is an actual program, not a movie. It runs through various tests, using different lengths of legs with different ranges of motion, every time the camera angle changes, it's starting a new test run. You can watch the critter wave it's legs around as it learns how to move them, but eventually it'll figure out how to walk and run around the virtual landscape. Leave it on all night and see the difference in the morning. The virtual bug remembers, so even if it's on five minutes at a time, for 20 times, it learns as much about walking as it would if you left it on an hour.

Once you have a program that knows how to walk, and knows how to adapt to different environments, handicaps or alterations, then you can keep that "walking" as a block for use in other code critters as a basic foundation. This plays an important part in my 3D Chat and Virtual Theater projects.

More later, time to leave for work.

Posted at 12:34 PM     Read More  

Tue - November 25, 2003

Your computer is an actor, the internet is the stage


How to entertain friends and maybe make an impression on total strangers

By now all of you reading this (as I expect only close friends will ever see this) should know of my plans for making a 3D chat room, kind of like a mix of Palace and Unreal. Indeed, there are massive on-line games out there were member spend hours just chatting to each other, in-between killing monsters, of course. However these cost quite a bit per month and are geared for action, not socializing. There have been other attempts, such as "There," "Second Life" and "Sims On Line" but they've all failed due to money-grubbing, centralized control, or top-down mentality, not to mention incredibly bone-headed decisions of the top people to exclude all Mac users from joining the party (a flaw which is killing Adobe's "Atmosphere" even before it gets started, as the most creative and attractive "worlds" seem to be made by Mac users running windows emulation, which they can no longer use as Adobe cracked down on "non-target" users, now it's withering away as beta testers are losing interest)

If you look at successful social hang-outs on the net and failed ones, you can't help but notice that the winners are loose, peer-to-peer, no central authority, user controlled (to the extent they want control) and open to manipulation as a form of expression. This is why BBS, newsgroups, open forums and instant messaging flourished, and the lack of these elements is the reason commercial ventures failed.

What I hope to do is create a simple 3D chat program that is entirely peer-to-peer. Any one person can create a room and invite others inside for conversation and animated hijinks, Those joining can have their own avatar, special effects and props, which they can use, trade or ignore as they wish. Each person's computer will be used as a kind of cluster supercomputer for the computing of the 3D world and the transfer of data. For instance, if somebody joined with a spiffy special effect that turned all chairs into jello monsters dancing the tango with whoever is sitting in them, all computers connected to this room would take part in figuring out how to achieve that effect to the best results, the faster computers doing most of the work, the slower ones doing what they can. When completed, the information is sent to all visitors in pieces, and from all computers. Instead of one server sending all the data to all the computers, which is time consuming, you have all of the computers gathering the data from all the others, while simultaneously sharing it, so the more people you have in that room, the faster all of them get the data (a concept which works quite well with Bittorrent for the transfer of 300 meg files).

Also, that data would be as simplified as possible. Once everybody in the same room has the basic information (body shapes, items, physics, etc) then all you need to send is what is moving where, or the subtle changes that occur when one person throws a pie at another (although pie-throwing will be a basic element of the main program, remember who's going to be making this). Furthermore, once the basics of how things are made are settled, the data can be compressed further, so you could send your avatar's data (covering appearance, effects, physics, etc) via email if you wanted so your friends are ready to go the moment they connect.

That's when I started thinking this could be used to make 3D movies, or plays if you will. Once you have the basic program, you can stage your characters in my 3D chat program to act out a scene, with dialogue, special effects, camera angles, dramatic music, etc, then the program would break it down into the basic instructions and compress it so you could email to a friend, who would view it by double-clicking on the file, then add their own act to it and mail it back. This approach could also work for a typical forum, where you can view everybody's statements then add your own at the end (imagine My Dinner With Andre but with finnish trolls, techno-cats, sexy zebras and disgruntled wombats frolicking around a giant treehouse).

Since this is open source, the people using it can make with it what they will, and they can innovate as much as they desire. The Palace was at its most popular when users were creating their own code effects and animated avatars, and "There" isn't even getting off the ground because they refuse to let users tweak their own avatars (and in both cases, greed is killing them) People (for the most part) want to communicate with others, something overlooked by The Powers That Be in the computer world in the past, and still today, and every time a new dimension is added communication increases. With this Digital Theater format the dimensions are widened a lot.

Now comes the tricky part: how to program it...
(to be continued)

Posted at 09:49 PM     Read More  

Wed - November 19, 2003

Artificial Life - Overview


A description of what I hope to achieve, given enough time and a winning lottery ticket

Artificial Life Programming: Like most people who want to get into programming, I look at my chosen field (AL) and see everybody is doing it wrong and that somebody needs to set them straight ;-)

But seriously, there's a lot of work being done out there that's fascinating, and some in entirely the wrong manner, but nothing being done in what I want to try (that I know of). What I hope to do is come up with a form of artificial life that uses music as a way to grow, evolve, learn and interact with the user and with other musical artificial life's (hereafter referred to as MAL).

I've always been interested in Artificial Intelligence, but the basic framework has always seemed unrealistic to me: that being the programmer tells the computer what to think and how to think it. When you break it down, that's a pretty overwhelming task, as trying to define all knowledge and social interaction into purely yes-no parameters would either be way too simplistic or get bogged down in gigs of trivia. It always struck me that what needed to be done was to program the computer to learn, and to develop it's own learning style that suits it's digital brain the best. A few pioneers in Artificial Intelligence tried this approach but blew it by trying to program the computer to learn, but only in the way they told it to, which resulted in either useless simplicity or bogged down in gigs of trivia. From what I've seen all the limitations and roadblocks in Artificial Intelligence originate in it's inherent top-down approach. You'd get the same results from a mountain goat trying to teach a fish how to swim.

Then some people started working from the bottom up. Give the computer a simple set of code with which it can build on, evolve, develop and refine on it's own, then let it run loose for a while and see what happens. This field is called Artificial Life, because you let the program live rather than micromanage it to death. As to be expected, this new approach was disparaged by the Artificial Intelligence community, and in some instances banned from certain universities as a dark mystic art and not true computer science. Eventually Artificial Life made significant breakthroughs that put the best AI efforts to shame, so it was grudgingly accepted as a viable alternative. Unfortunately, this acceptance is also causing setbacks, as the top-down school of thought appropriated the bottom-up method and screwed it up by inserting way more complexity than is needed, and rigidly defining the outcome before the program is even run. In other words, they fail to grasp the concept that makes it succeed.

So I've always wanted to dabble in Artificial Life if only to see where it could go if given the chance to explore new avenues of development. I'm fortunate in that due to the very nature of bottom-up Artificial Life, the basics are, well, basic, and can be done with a small computer and an intermediate grasp of programming. Well, okay, it also takes a slightly warped mind to grasp the concept in the first place, but I think I got that part covered right now.

When I first started thinking of actually doing something with Artificial life, I knew right away I wanted to do something with usable results. Making dots blink in interesting patterns get boring after a few minutes, and esoteric numerical calculations only appeal to hard-core mathematics types, while on the other hand evolutionary programming (where you let the program create other programs through evolution artificial life) are definitely in the advanced side of the spectrum.

But then Eric came up with an interesting idea for an audible computer, one that uses sounds instead of a screen to relay information. That got me thinking about using music as the concept for my artificial life program. With music you have a very basic framework (notes, chords, tempo, etc) from which a very wide variety of possibilities emerge. Using music, a person can train their program along the lines of music they like by feeding it through yes and no replies (yes, I like that melody, no I hate the drum solo = melody maker gets nourished, the drum code becomes extinct) and gives different programs a means of communicating without having to utilize the exact same language (a jazz MAL can jam with classical MAL by comparing melodies, even if the instruments, tempo and style are completely different).

Also, I thought it would be a hoot to mix and match MALs for jam sessions. Wouldn't it be fun to train a jazz saxophone MAL then plop it into a band made of up an classical orchestra led by a bluegrass banjo MAL?

More later.

Posted at 02:04 PM     Read More  

Not so grand opening


The first entry

Okay, here we go.

Several people have wanted me to keep a log/diary/journal/whatever where I write down my ideas (a certain wombat in Canada being at the front of the line), while others have suggested that a blog like this one might help me define various concepts to the point they become actual projects. Kind of like going through the process of figuring out how to write my ideas out so others can understand them would develop the ideas into practical steps do-able in the real world.

My biggest concern here is that writing about my ideas would take the place of actually doing them (a problem I've seen in other people). But considering that since my big meltdown I haven't been doing anything anyway, there's not much to lose in trying.

So here goes. The big projects I want to try doing (in no particular order):

Artificial Life Programming
Tashta's Present
Robotics/Animatronics
Digital Theater
3D P2P Chat Room
Writing a fun story people like to read

These will be discussed in separate entries, in their own categories, so you can read only what you're interested in. And of course, Tashta's Present won't be discussed at all because I hope she'll read this blog and I don't want to ruin the surprise (if I should ever get it working right)

So, anything you want to talk about? Let me know.

Talk to you later
PAL

Posted at 01:58 PM     Read More  


©