Thursday, September 16, 2010

Chocolaty Addendum.

So in the tutorial I released, I had the reader make a very basic vendor that did only as much as getting the job done.  But there are a lot of little things, finishing touches, if you will, that could still be done!

Here’s a quick list of them with code examples.

  • Drop sounds.  That nice “thud” that comes from dropping an agent.

      scrp 2 23 9000 6
          lock
          sndc "drop"
          wait 5
      endm

      scrp 2 11 9000 6
          lock
          sndc "dr10"
          wait 5
      endm

  • Different chemicals from eating the bar. Fat, sugar.

      scrp 2 11 9000 12
          stim writ from 79 1
          sndc "chwp"
          doif pose eq 0
              pose 1
          elif pose eq
      1
              kill ownr
          endi

      targ from

      chem 10 .25
      chem
      3 .25

      endm

  • A stimulus for “pushing” the vendor, to encourage Norns to do it, placed in the Activate 1 script.

    • stim writ from 90 1
  • And I also didn’t go over Commenting.  Anything you put after a * sign is a comment. So for instance, you can say:

    • *inject .25 fat
      chem 10 .25
      *inject .25 sugar
      chem 3 .25

It can be very helpful in organizing your script. :)

Hopefully you all can use these things. :)  If you ever don’t understand something, just try looking it up in the CAOS Documentation, and if you still don’t get it, ask about it here or here.

Beginner Tutorial Part 3

Welcome to the final part of the beginner tutorial.  Our chocolate vendor is almost ready.  All we have left is to

  1. Have it vend chocolate
  2. Make the chocolate edible

Which might not seem like much, but there’s a LOT of new concepts here.

Your script so far should look something like this:

new: simp 2 23 9000 "moe_tutorial_chcd" 7 0 300
bhvr 1

attr 198
elas 10
aero 5
accg 7
fric
50
mvto 6100 9110

scrp 2 23 9000 1
lock
    frat 2
    anim [0 1 2 3 4 5 6]
    over

 

rscr
enum 2 23 9000
    kill targ
next

Now, it’s time to make chocolate come out of our vendor. But before we actually put in the script for making a chocolate bar, we already know that we’re going to need to move the chocolate bar to the vendor’s current location.  So how do we find that?

Well I need to introduce you to the concept of the TARG.

Let us imagine for a moment that we are the engine running this script.  For everything, every code, and ever alteration that occurs, we are working with the “owner” of the script, that is in this case, the chocolate vendor.  As soon as we add the code for the new piece of chocolate, our “targ” is going to change to the chocolate.

I have highlighted this because it’s an important concept.  There are codes to get the position of an object which we will be using, but in order for us to get the position of the vendor, and move the chocolate to it, we need to set a couple variables to store the vendor’s position before we create the chocolate bar, because the codes are only going to work on the currently targeted object.  You’ll see what I mean below.

Our next lines of CAOS are:

setv va00 posl
setv va01 posy

But what does that actually mean? 

The primary way of making objects change and interact is to set variables, and operate (change, divide, add, subtract, etc) on them.  There are five types of variables we can define:  Object Variables, Game Variables, Engine Variables, Named Variables, and Script Variables.

Each type of variable has a different “name”, and is used for different purposes, but each one can hold anything from a number, to a sentence, to an agent in the world.  Variables are VERY powerful.

In this case, we’re using a Script Variable.  You can define in any Script Variable from va00 to va99.  These variables are useful because they will IGNORE the current target and stay in the script until it ends, at which point, they’ll be discarded and lose their values.

So for instance, we are telling the engine that we want to setv (set variable) va00 to the position left of the current target (which at the moment is our Chocolate Vendor).  What this command will do is examine our vendor, and it will look for the left-hand side of the vendor, and return whatever X-Coordinate on the world that happens to be.  Just like using the coordinate tool we used to place our vendor in the beginning, but automatically.

The second command did the same as the first, except it returned the Y-Coordinate of the world at the center of our agent.

-----

Below is a diagram of all the position commands and what value they’ll return to help you understand what each one does.

posr” will return the X coordinate of the right of the agent.

posl” will return the X coordinate of the left of the agent.”

post” will return the Y coordinate of the top of the agent.

posb” will return the Y coordinate of the bottom of the agent.

posx” and “posy” will return the X and Y coordinates, respectively, of the center of the agent’s bounding box.

If this confuses you at first, don’t worry. Just keep it in mind, and you’ll understand what happens when we make the chocolate bar. :)

-----

Let’s make the chocolate now.  Add this after the last command we typed.

new: simp 2 11 9000 "moe_tutorial_chcd" 2 7 301
bhvr 48

attr 195
elas 10
aero 5
accg 7
fric
50
mvto
va00 va01

Much of this is review, so I won’t go through it all, but basically, we’re making a new: simple object, which is a generic (2), food (11), in the 9000 range. It uses the same sprite file as our chocolate vendor, but only uses 2 frames, and starts at frame 7.

Our chocolate is edible and and carryable by creatures, so it’s bhvr is 48 (16 + 32), and it has all the same attributes as our vendor, except it cannot be activated.  The rest is the same, except for the mvto command.

This mvto command is moving the piece of chocolate, not to a predefined coordinate, but to the variables we saved earlier.  Remember, va00 is the left hand side of our vendor, while va01 is the Y coordinate for the center of our vendor.  We defined those earlier.  Now you may be beginning to understand why we set those variables before making the chocolate.

As soon as we used the new: simp command, our target changed.  If we were to “setv va00 posl” right now, va00 would be set to the left-hand X-Coordinate of the chocolate, not the vendor, since the chocolate became our target when it was made, and since technically the chocolate hasn’t been placed anywhere, it would return a value of 0, and would never be moved! D:  That’s why it was important to set our variables for the position of the vendor before creating the chocolate.

-----

Now, we just made some chocolate come out of our vendor. Let’s give it a kick.  It looks like the chocolate would come out of the vendor and go flying left a bit, so let’s give it some left velocity.

Add a “setv velx –10” to give it some “umph” coming out. This will tell the engine to make this object move, that is, set it’s velocity to, –10 pixels a second along the X axis.

-----

Ok, so we have our vendor, and when it’s pushed it animates, vends some chocolate, and then what?  Well it needs to go back to it’s original pose now that the chocolate has popped out.

To do this, we’ll add “targ ownr” which tells the engine to target the owner of the script (our chocolate vendor) because right now we’re still targeting the chocolate, and then we’ll add “pose 0” on the next line, to tell it to set it’s pose back to 0.

That’s all this script needs to do, so now we need to end the script. To do this, we add an “endm” line. This tells the engine that’s the end of the script, it can close it up and add it to the Scriptorium and/or stop running it.

Your script should now look like this:

new: simp 2 23 9000 "moe_tutorial_chcd" 7 0 300
bhvr 1

attr 198
elas 10
aero 5
accg 7
fric
50
mvto 6100 9110

scrp 2 23 9000 1
lock
    frat 2
    anim [0 1 2 3 4 5 6]
    over

setv va00 posl
setv va01 posy

new: simp 2 11 9000 "moe_tutorial_chcd" 2 7 301
bhvr 48

attr 195
elas 10
aero 5
accg 7
fric
50
mvto
va00 va01
setv velx –10
targ ownr
pose 0

endm

rscr
enum 2 23 9000
    kill targ
next

 

We’re almost done!  But oh no! We forgot that this vendor has a sound file!  Right before it pops out the chocolate, it needs to play the vending sound.  To do this, simply type:

sndc “vdnr”

This tells the engine to play a sound that is controlled, named “vndr”. 

Put this piece of CAOS right above the “setv va00 posl ” command, that way it makes the sound just as it’s vending, right before chocolate pops out. :)

new: simp 2 23 9000 "moe_tutorial_chcd" 7 0 300
bhvr 1

attr 198
elas 10
aero 5
accg 7
fric
50
mvto 6100 9110

scrp 2 23 9000 1
lock
    frat 2
    anim [0 1 2 3 4 5 6]
    over

sndc “vdnr”
setv
va00 posl
setv va01 posy

new: simp 2 11 9000 "moe_tutorial_chcd" 2 7 301
bhvr 48

attr 195
elas 10
aero 5
accg 7
fric
50
mvto
va00 va01
setv velx –10
targ ownr
pose 0

endm

rscr
enum 2 23 9000
    kill targ
next

There.  Now we just need to make the chocolate edible and we’re done. :)

To make the chocolate edible, we’re going to make a new script.  For future reference I won’t tell you to close the script with “endm” just know that it must be done. I usually just write out the script’s name (scrp X X X) and endm first, then just place my cursor in between and type, that way I never forget an endm.

So!  We need to make an eat script for our food.  If you remember how we made the activate script for our vendor, this should just be review. 

scrp 2 11 9000 12 (remember this is our food, it’s 2 11, not our vendor, which was 2 23)

stim writ from 79 1
sndc "chwp"
doif pose eq 0
    pose 1
elif pose eq 1
    kill ownr
endi

endm

First we declared the new script. It’s an eat script (12) for our generic object (2), which is food (11), with a species of 9000.

Then we told the agent to “stimulate” the from in a certain way.  The from will be whatever agent activated this script. In this case, a creature will most likely activate it, so it will stimulate the creature.  Examine your Beginner’s document for more information about stim writ, or check the list of stimuli in the CAOS Documentation. The value of 1, was the amount we wanted to stimulate the creature.  I went ahead and had it stimulate the creature fully.  When you stim a creature, they learn from the action. The creature that eats this chocolate will learn that it gains nutrients from chocolate. :)

Then we had it produce a sound, in this case, a nice chomping sound called “chwp”.

The next bit is going to take some explanation.  Welcome to the world of the doif.  It’s one of the most important commands in the game, and the most versatile.  Luckily it’s pretty self-explanatory.

[Do] if something equals something,

do something.

[Else] if something eq something other than the first value we tried,

do something else.

end the doif block.

So basically it reads, if the pose eq 0, set the pose to 1, if pose eq 1, kill the owner of the script (the piece of chocolate).  It’s very simple if you just read it. :)

This basically tells our block of chocolate that it can be eaten twice.  On the first try it changes it’s pose to have a bite out of it.  On the second try, it’s destroyed.

-----

Now there’s ONE last thing we need to do.  Add the chocolate pieces to our remover script, and also make our remover script able to remove all the scripts we’ve added to the Scriptorium.

enum 2 11 9000
    kill targ
next

scrx 2 23 9000 1
scrx 2 11 9000 12

----

The scrx command will remove whatever script number you put after it from the scriptorium. We had an eat script for the chocolate, and an activate script for the vendor, so we scrx’ed both of those.

And that’s it!!!! Our chocolate vendor is FINISHED!

Bellow is the full code. :)

 

new: simp 2 23 9000 "moe_tutorial_chcd" 7 0 300
bhvr 1

attr 198
elas 10
aero 5
accg 7
fric
50
mvto 6100 9110

scrp 2 23 9000 1
lock
    frat 2
    anim [0 1 2 3 4 5 6]
    over

sndc “vdnr”
setv
va00 posl
setv va01 posy

new: simp 2 11 9000 "moe_tutorial_chcd" 2 7 301
bhvr 48

attr 195
elas 10
aero 5
accg 7
fric
50
mvto
va00 va01
setv velx –10
targ ownr
pose 0

endm

scrp 2 11 9000 12

stim writ from 79 1
sndc "chwp"
doif pose eq 0
    pose 1
elif pose eq 1
    kill ownr
endi

endm

rscr
enum 2 23 9000
    kill targ
next

enum 2 11 9000
    kill targ
next

scrx 2 23 9000 1
scrx 2 11 9000 12

Beginner Tutorial Part 2

Now that we’ve got ourselves all set up to code, let’s begin! :)

 

Now as you all know, I’m also working on the C2toDS project, soCreature Labs Chocolate Vendor naturally, I’ve always got my eye on things I can convert from Creatures 2.  As I was browsing The Creatures of Avalon for interesting cobs, I came across this C2 Chocolate Vendor, credited to Creature Labs.

I knew then exactly what I wanted to do a tutorial on!  We’ll be remaking this vendor, from start to finish. :)  So let’s um…start!

First, grab the tutorial files here, and place them in your Tutorial 1 directory.  Also, place the sound file, “vndr” in the Creatures Sounds directory, and the sprite file, “moe_tutorial_chcd” in the Images directory of your Docking Station folder.

 

CAOS ToolOpen the CAOS Tool (which is highly recommended as it has syntax checking), or whatever program you’ll be using, AND start Docking Station.  Never try to develop and agent without having Creatures running!  A good developer beta tests constantly!

Also, start the Sprite Builder tool, and open up “moe_tutorial_chcd”.  Keep this open, we’ll be referring too it soon.

With the CAOS Tool open, make a new empty document.  The first thing we’re going to do is just write up the basic install and remove script for the vendor.

The script for creating this object is:

new: simp 2 23 9000 "moe_tutorial_chcd" 7 0 300

An explanation card of what each of these components “means” is below, a text version of this can also be found in your Beginner Document and the CAOS Documentation.  Here is a card explaining just what each value means (click for larger version).

The new: simp command is obvious as to it’s function, and if you look at Table 4 in your Beginner Reference Document, you’ll immediately see why the first two values are 2, and 23.  It tells the engine it’s a generic object, 2, known specifically as a vendor, which is 23.  Creatures’ brains interact with these classifiers and it’s how they know what an object is called and does.

But what about the 9000?  Well the 9000 is the Species Range.

All objects in the world have a Species. It helps the engine tell one object apart from another, since there could be more than one vendor in the world for example, each doing different things.  If it stopped at 2 23, how would the engine know that this is a Chocolate Vendor, and not the Justanut pod?

For this tutorial I’ve taken a portion of Creature Lab’s registered range, 0-10,000 and allocated 9000-9099 to tutorials. :)

Since this is our first vendor in the 9000-9099 range, we’ll be using 9000, but if it were our second vendor, we’d need to use 9001, so they don’t conflict.  Which means in a range from 9000-9099, you could have 100 vendors all doing different things!

In case you’re wondering, the Justanut pod is “2 23 5”. The Infinite Cheese Machine on the Shee Ark? That’s “2 23 1”.  See how they’re all different but still classified as a generic object (2), and vendor (23)?

The “2 23 9000”, as a whole, is called the “Classifier”. 

----- “moe_tutorial_chcd”

The second component of our first line of script is the name of the image file.  It’s pretty straight forward.  Whatever your sprite file is named, put quotes around it and type it out. :)  Our sprite file is named “moe_tutorial_chcd” so we’ve put quotes around it and…well there it is. That’s pretty much it… lol  Be sure to put quotes and don’t spell things wrong!

----- 7 0

The next two numbers are tricky and can give beginners a hard time. They tell the engine that this particular object is using 7 frames from it’s sprite file, and that it starts at frame 0.

But why 7?  Well if look up at the sprite file, you’ll see that the vendor has sprites from 0 to 6.  Frames 7 and 8 are the chocolate, so we don’t need those yet.  We want the engine to cut out frames 0 to 6, and keep those ready for when we animate the vendor.

But still, you may be wondering, why 7?  The last frame of the chocolate vendor seems to be 6, so why are we cutting out 7 frames?  Well, this can be confusing for beginners, but remember that we COUNT 0 as 1 frame.  Sure, it’s known as frame 0, but it’s still ONE frame and we need to count it. 

So we count, starting at 0, “0 1 2 3 4 5 6”. That’s seven numbers, 0 just happens to be the name of one of them.

Now we’re going to tell the engine what sprite to start at.  We want our vendor to start at the first frame, which is “named” 0.  That’s what the “0” is for in the “7 0”.

Advanced tip - The “0” is also known as the “Base” All frames are RELATIVE to this one. So if you told the engine to start at frame 4, that frame would be known as 0 to that agent.  It’s confusing at first, but you’ll see what I mean when we get to the chocolate.

----- 300

The 300 is the “plane”.  Ever notice how some objects are “in front of” or “behind” others?  This is how the engine knows where to put the object.  Usually you’ll want this to be around 500, but I did 300 for demonstration purposes.  When we inject the agent, you’ll notice it’s behind most other objects in the world, including creatures.

-----

On to the next line! :D

Now we want to tell the engine what properties our object has.  Is it heavy? Can it be clicked?  Does it fall under gravity or float? if it falls, how fast? Will it bounce? Slide?

new: simp 2 23 9000 "moe_tutorial_chcd" 7 0 300
bhvr 1

attr 198
elas 10
aero 5
accg 7
fric
50

I’ve written in a whole bunch of new commands, but don’t be overwhelmed, they’re self-explanatory, most of them. :)  We’ll start at the bottom first.

fric” tells the engine how much friction this object has on surfaces. A fric of 100 will make it completely immobile.  It won’t slide even on a 89 degree slope!  A fric of 0 will make it slide forever!  I’ve used 50 to make it slide a little, but stop fairly soon, and stay put on most angled floors.

accg” is the object’s “accelleration due to gravity”.  Basically, how fast does it fall?  I’ve used 7 because it’s a pretty heavy vender.

aero” is the objects air resistance.  Think of it like friction, but in the air. If you toss this object or it falls, how much is it going to slow down as it travels through the air?  That’s what aero defines.  I chose 5 arbitrarily.  It doesn’t really matter for our vendor cause it’s so heavy.

elas” is the object’s elasticity. How bouncy is it? Our vendor has an elasticity of 10.  It’s metallic and heavy, so it doesn’t bounce much.

Now we get to something a bit more complicated: attr.

attr” defines an object’s attributes. Can it be picked up?  Does it collide with walls? Respond to physics?  You can set the accg to 10, but if your attr isn’t set to obey physics, the object won’t fall. So how do you know what value to put here?

Well if you look at Table 1 in your Beginner Document or the Attribute Values in the CAOS Documentation, you can see what each number represents. 

We want our object to be carryable by the hand, activatable by the hand, suffer collisions, and suffer physics. And if you’re looking at the CAOS Documentation or your Beginner Reference you can see that each of those things has a value next too it. 

Mousable (which means it can be picked up by the mouse) is “2”, “Activatable” is “4”, Suffer Collisions is “64”, and "Suffer Physics is “128”.  So just add those together!  It’s that simple!

2 + 4 + 64 +128 = 198 – so our attribute value is 198. :)

The same thing is done for bhvr, which can be read “behavior” meaning “how can a creature interact with this object?” also known as “Creature Permissions”, except the values here mean different things. 

We only want our creature to be able to activate the vender, not eat it, hit it, pick it up, or anything else, so we’ll just use the number 1.

-----

Great, so our object is just about set up.  But where is it going to go, exactly?  Right now the engine makes the object, but it’s not put anywhere!  We need to tell the engine to move the object someplace.  We do this with the “mvto” command.

new: simp 2 23 9000 "moe_tutorial_chcd" 7 0 300
bhvr 1

attr 198
elas 10
aero 5
accg 7
fric
50
mvto 6100 9110

Ok great! The engine is moving our object somewhere, but where did the 6100 and 9110 come from?  Well if you go into Docking Station and press Shift+Ctrl+X on your keyboard, a tool will appear by your hand.  This tool tells you the X and Y values, or coordinates, the pointer is pointing at. 

Everything in the world is placed on this invisible pixel grid of X and Y values.

I moved around in the Comms Room till I found a good place beneath the agent injector and wrote down the values.  The 6100 is the “X” value.  Think of it as “left to right” on the screen.  The 9110 is the “Y” value.  Think of it as “top to bottom”.  Move around the world with this tool to get a feel for how it works.  You can choose to place the chocolate vender anywhere, I’ve just chosen to do so in the Comms Room.

Advanced Tip – If you get an error when trying to put the object someplace, try using mvsf instead of mvto.  It’s just like mvto, but moves the object to a “safe” location. Be aware however that mvsf is a Docking Station ONLY command.

Now our agent will be in the world, but how do we get it OUT of the world?  Now most developers do this LAST, but I like to do it first so I can test easily, and won’t clutter my world with hundreds of vendors!

rscr
enum 2 23 9000
    kill targ
next

rscr” tells the engine this is a “Remover Script”.

enum 2 23 9000” tells the engine to look at, or “target” every object with the classifier 2 23 9000. It actually means “enumerate over objects with this classifier”. Enumerate is just a fancy way of saying, “target them all one by one”.

kill targ” does just what it says.  It kills the target, which currently is every object with the classifier 2 23 9000, because if you recall, we just told the engine to target all those with the “enum” command.

next” basically just tells the engine to continue after targeting all the chocolate vendors with whatever comes next in the script.

-----

Ok, so our chocolate vendor is in the game, and it’s removable.

new: simp 2 23 9000 "moe_tutorial_chcd" 7 0 300
bhvr 1

attr 198
elas 10
aero 5
accg 7
fric
50
mvto 6100 9110

 

rscr
enum 2 23 9000
    kill targ
next

But, if you try and inject it now you’ll get an error, because we’ve told the engine that a creature can activate it, but we haven’t actually written in any activation script, so the engine is a bit miffed at us for not doing that!

Let’s ease it’s concerns and make our vendor functional by giving it an activation script.  To write a script we type this (before the rscr but after the mvto):

scrp 2 23 9000 1

scrp” tells the engine that this is a new script.  As you know, the 2 23 9000 is our chocolate vendor’s classifier.  So the engine knows that this script belongs to our chocolate vendor.

But what kind of script is it?  That’s what the last number is for.  If you look at “Script Types” in your Beginner Documentation or in the CAOS Documentation, you’ll see what each number represents.  We want this to be an “Activate 1” script, so we’ll make it 1.

Now the engine is going to add this script to the “Scriptorium”.  Basically it’s an imaginary repertoire of scripts that the engine uses and references when things are activated.

So, when your pointer or a creature goes to push the agent, this script is going to be dragged out of the Scriptorium and ran.  So!  Now we get to write in what happens!  Things are getting exciting! :D

First and foremost we want our vendor to animate.  You can see from the sprite file that we have seven frames of animation to run through. So let’s tell the engine to animate our vendor.

scrp 2 23 9000 1
lock
    frat 2
    anim [0 1 2 3 4 5]
    over

lock” locks the script.  I don’t want it being interrupted until it’s done. If you put a lock on a script, nothing can interrupt the script once it starts running. This will be necessary because our chocolate only gets vended AFTER the animation.  If it didn’t get locked, a norn could keep pressing the vendor forever, and the animation would keep resetting, but never finish, and thus, never vend any chocolate, and that would be sad. :(  So we’ve locked this script.  It can’t be interrupted until it finishes.

frat 2” tells the engine that any animations that follow need to have a frame rate of 2. You can think of it as the engine playing each frame twice, thus slowing down the animation by 1/2. A frat of 4 would slow it it down 4xs.

anim [0 1 2 3 4 5]” this is our animation sequence.  It says start at frame 0, and animate through frames 1 2 3 4 5.

over” tells the engine, don’t evaluate anything below this command until any animation currently playing finishes. So the engine will “wait” until the animation finishes.  That way the chocolate won’t come out until the chocolate vendor has reached frame 6 (where it actually looks like it’s coming out).

-----

Time to actually make chocolate! :D

This next section is going to be a bit confusing…so I’m going to put it in a brand new post. It’s going to include a lot of new concepts and some review, so that’ll make it all the more difficult.  Stay tuned.

Wednesday, September 15, 2010

Beginner Tutorial Part 1

So you want to make agents? Awesome! But where do you start? That’s what this post is all about.

The easiest way to understand CAOS is to simply jump right in, but you’ll want a few resources available before you do.  I’m assuming you have already downloaded the CAOS Tool from the Creatures Development Network, or are using some other program to code in.

Also, be sure to download the Sprite Builder tool, or you can use Edos, which comes with the Jagent application suite.

------

First, you’ll want the CAOS guide. You can access it with the CAOS tool by opening the CAOS Tool and pressing F1 or F2 on your keyboard. F1 will open the Alphabetical Guide, while F2 will open the Categorical Guide. The documentation should open in a new browser window.

Alternatively, you can tell the engine to output the CAOS documentation directly. Start Docking Station and press Shift+Ctrl+C and type, file oope 1 "CAOS categorical.html" 0 dbg: html 1 file oclo” without the quotes, and press enter.

 

Notice the engine said, “OK”.  If it says anything else, try again, and check for typos. The engine will save the HTML file to your Docking Station Journal Directory.  It is located in the same place as your My Agents directory.

Once you’ve navigated to the directory, the file should be there.

You can open this document in any browser.  Safari, Internet Explorer, Firefox, Google Chrome, or whatever you use. :)

This reference is extremely valuable once you really get into coding.

--------

The second thing you’ll want is a handy file I created when I first started developing.  I have supplied this document HERE. [Updated 9/16/10] It contains many of the most basic commands, and frequently referenced values for things like Bhvr, Attr, and the C3/DS Chemical list, as well as a quick overview of basic codes you’ll use frequently as a beginner.

I created one of those when I first started, and it made developing so much easier!  Many of those references are also in the CAOS Documentation, but I find a text document is quicker sometimes, and it’s also more compact.

Feel free to add to your document anything you think you’ll need at any time throughout your developing career. :)  Or delete things you no longer use as you begin to memorize things.

-------

The last thing you’ll want to do is set up some folders.  I KNOW this is tedious and seems like a waste of time, but LET ME ASSURE YOU that you’ll be grateful you did this in the long run.

Create a new folder someplace.  Your desktop, Docking Station directory, My Documents--wherever you feel comfortable--and organize it. For this tutorial I recommend creating the following folder structure:

Stay tuned! In Part 2, we’ll actually code something!  (Part 2 will be up in a few days, if all goes well.)