Apple Logo Itsamac Hosting
Mac OS Journal
EditorialsColumnsFeaturesReviewsArchives/StaffSubscribe
 
Table of Contents From the Desktop Connect Feature Column Special The CoXFiles The Gaming Landscape The Surf Report Simply Web Advanced HTML
Medicine Man The Database Guru The AppleScript Foundry Shop Talk Review - GoLive Review - Asteroids Review - BBEdit Review - Agentsheets Behind the Scenes      
   
 
Itsamac.com
Red Light Runner
Applelust.com
     
 

Review: Agentsheets
November 2000 || Volume 01, Issue 04
Review by Erica J. Marceau

SmileySmileySmileySmiley

4 Smileys - 1 Smiley Poor, 5 Smileys Excellent

Agentsheets Icon Title: AgentSheets
Version: 1.4
Developer: AgentSheets, Inc.
Price: $150
Contact Info: http://www.agentsheets.com
Genre: Programming Environment/Simulation Tool
System Requirements:

  • 68K or PowerPC processor
  • 7 MB of RAM for the 68k version, 8 MB of RAM for the PowerPC version
  • Any monitor
  • 10 MB of hard drive space for the 68k version, 14 MB of hard drive space for the PowerPC version
  • Any speed CD-ROM or DVD drive

Platforms: Mac OS

Forward

Learning how to program is a hot topic these days and knowing how is a skill that many want to have. Why? To make the kind of game that they have always wanted to play or to understand more about the world. AgentSheets is designed for the latter and can be used for the former by creating agents that interact with each other with a simple if-then language. Does AgentSheets offer a balance between power and ease-of-use that will enable the average person to create an interesting and functional program? Read on to find out...

Secret Agents in Your Mac NOT on Steve Jobs' Payroll

Gallery Menu The heart of AgentSheets lies in the use of agents that can interact with other agents and with you in a variety of ways. You can think of agents as being the people and items in a world that you are creating. You store all agents in a Gallery Window and create and edit them by using the Gallery menu that you can see to the right. When you create an agent, a placeholder is made, ready for you to fill in the blank. When you double-click on it, a simple editor is opened, so you can draw the agent's appearance. However, the tools are very simple and look like the ones available in ResEdit, and it's unlikely you would be able to create a good-looking agent. Fortunately, you can import instead and the method is unlike anything I have ever seen.

Instead of choosing a picture file to use, you are given a frame the size of the agent instead. What you do is place this frame over the part of the screen that you want to be your agent and press the mouse button. It's taking a screenshot of part of your screenshot which bypasses saving your picture in a certain format and is quite easy. The main limitation of the gallery is that every agent has to be the same size, and you can only have one gallery per project. This can be overcome by simply cutting up large pictures into separate agents and assembling them like a puzzle. While an inelegant solution, it does work. Another irritation is that if you have a lot of agents, scrolling to find the one you want to use can take longer than I'd like. While you can move the agent's pictures around they didn't stay in their position.

Get Your Agents Working

Once you have the agents created, you can decide how they will react to certain situations. All behaviors have three components: triggers, conditions, and actions. You can think of a trigger as the door that leads to the conditions and actions that are connected to that trigger. Conditions are what is tested and if all of them are true then the action is performed. An example that illustrates this is that you want to make a behavior that decides when you get a drink of water. The trigger would be when you're thirsty. The condition could be if you have a clean cup and the action would be to fill the cup with cold water from the tap. There could be many more conditions and many more actions and there are no limits to how many behaviors each agent has.

My Cute Little LobsterAfter the trigger has become true, the condition(s) or if statement(s) connected to it is checked to see if they are true or false. If every condition is true, then the action(s) will be performed. If even one condition is false, the action(s) will not be performed. As you can see in the screenshot to the left, the first trigger says "While running" which means that the condition is checked whenever this simulation is running. The condition attached to this trigger says "Once every 0.5 seconds", which means that the actions always get performed no matter what. Then you look at the two actions which state "Make square attack" and "Make square move-around." What the squares designate is the agent itself, and attack and move-around refer to other triggers that can be associated with any agent. So you look for a trigger with the name of attack and it is the second trigger in the behavior of the lobster. As you can see, it controls when the lobster attacks the knight in the game. Each of the "conditions checks if the knight is right next to the lobster in any of the four cardinal directions. If it is true, then a noise is played and the health of the knight is reduced by 10 less the amount of his shield.

You might be wondering why health_current and shield are typed with an @ in front of them. This is because they are Simulation Properties which are very similar to global variables. You have to use the @ in front of them so that they aren't treated as other triggers. Every agent can use them to add or take away from. In this case, the lobster subtracts 10 from the knight's current health and adds the value of the shield the knight currently is using to come up with a final value for the knight's health. If this game was longer, I could have the knight find a stronger shield and make the @shield value bigger. I could also modify the code to add in the effects of armor or anything else that I wanted to.

At first I thought that only being able to use triggers, conditions, and actions would be confining and that there would be things I couldn't do. On the contrary, I found that there are very few limitations, if any, to the conditions and actions that could be performed. You can change the agent itself, have sound and speech, read from web sites, play songs, talk to all other agents, and much more. In fact, the visual way of programming makes it easier to find errors, because you can drag the behavior onto the agent for them to be performed immediately. Furthermore, AgentSheets highlights each part of the behavior that is currently being tested and beeps when it comes to a false statement. You don't have to decipher strange error statements or analyze a certain the code line-by-line as you would if you were writing in C++ or Java. This feature gives you real power to find out what went wrong and where. Knowing the problem gives you the ability to solve it and test it without having to run the program and waiting for the error to happen which might only rarely happen.

Expanding AgentSheets

Another great benefit of AgentSheets is that it is expandable by the use of plug-ins. Anyone with coding experience can write new ones and AgentSheets, Inc. has a number of them on their web site. The one I like the most allows you to transport to another worksheet which enables you to leave one environment and appear in another one. What I mean by transportation is best illustrated with an example. Let's say that you wanted to create an adventure game and have each worksheet be a part of the game world. You create one section and when your hero walks off the edge of it, another worksheet would replace the one that you are currently using. This way you can have a world that consists of 10 or 100 worksheets which are all connected together. Unfortunately, Ristretto doesn't support this feature so AgentSheets would have to be further updated to support this ability. Another limitation is that you can't have one worksheet acting as an inventory window or as a map with another worksheet as the main playing window.

My GameOnce you have all of your agents and behaviors, you can make the world they will live in. You do this by creating a worksheet, creating agents that will be used for the background, selecting the agent, and drawing it in the worksheet. You can even use an image and place the agents on top of that. Once you have finished writing a simulation, you have to have a way to enable people without AgentSheets to play it. You can easily turn your project into a Java applet by using Ristretto. You just have to click on a button, and Ristretto takes care of all of the details for you. Once this is completed, you have the option of opening the finished project in a browser to see how it works. Unfortunately, Java doesn't support all of the features that AgentSheets does, such as using speech, voice recognition, playing musical notes, reading information from a web page, balloon help, and using the microphone. This is a big limitation to letting other people see your creation in the way that you intended and why I didn't give AgentSheets a higher score. I am hoping that the Java support will be increased so that the Java applet supports everything that AgentSheets does.

Overall

I have referred to AgentSheets often as a simulation and that's where its strength really lies. In fact, NASA used AgentSheets on a shuttle mission so you can be certain that it is very powerful and flexible. You can make a game with it as I have done but it will be simple at best. The main purpose of AgentSheets is for creating simulations and at that it is very powerful. For example, you can discover the food chain by creating a jungle and animals and make behaviors as to what your animal eats and when it makes babies and who their enemies are and how long they live. In fact, a grade school did this very thing in their class. You can examine how viruses make healthy cells sick, teach about Rosa Parks by having a bus move around on a street and have movies play at certain times, and even more. All of these examples are on the CD and I have learned a lot about how to create behaviors by looking at them. However, if you're looking for an easy way to make a game that rivals Deus Ex then you'll have to look elsewhere. If you're looking for an easy way to make a word processor or a control panel then learn how to program in C++. However, if you want to explore the world around you and like or need to ask what-if questions then AgentSheets is a great tool and I heartily recommend it for these purposes.

Erica's Icon Erica J. Marceau - erica@macosjournal.com
Erica's Page - Feedback Form

back Mac OS Journal forward