Introduction to 3D in REALbasic with Rb3D

by Joseph Nastasi

rb3d01.jpg

alt=“A-OK! The Wings of Mercury

Introduction

In this article, I will be previewing REALbasic3D (Rb3D), a real-time 3D graphic engine to be included in REALbasic release 3.5. First, I’ll present a quick overview of the engine, then go into more detail and finally, provide a simple demo program to demonstrate Rb3D. I have been using Rb3D as the 3D engine on the new version of my spacecraft simulator, A-OK! The Wings of Mercury and have almost a year’s worth of extensive experience with it.

REALbasic has taken the Mac OS development world by storm. Widely recognized as a breakthrough product, it continues to evolve and improve rapidly. Developed by Real Software, REALbasic has always been targeted as a development platform for games. The very first release included a 2D sprite surface that allowed fairly complex 2D and pseudo-3D games to be created. But what if you wanted true 3D? There were several choices, including OpenGL wrapper classes and a full-featured, but not-yet-released, commercial plug-in. Last year, REALbasic software engineer, Joe Strout created a 3D plug-in for REALbasic, called Rb3D. Unlike wrapper classes, which forced you to think like a C++ programmer instead of a REALbasic programmer, Rb3D followed REALbasic’s syntax and object-oriented approach principles.

At the suggestion and request of its customers, including yours truly, Real Software has decided to bundle Rb3D as an internal feature of REALbasic. This has huge implications for programmers looking for a rapid 3D development environment. It also means that 3D programming in REALbasic will be supported on both Mac OS and Windows.

A Quick Look

Rb3D contains four classes and one control. That’s it! We’ll get into some detail below, but basically, there’s a control for defining the view and the camera that’s creating that view, and four classes that define 3D points, orientations, objects and groups of objects. As stated above, if you are familiar with REALbasic, you’ll feel right at home with the syntax.

Rb3D allows you to control all the basic properties of a 3D entity: position, orientation, size and visibility. It also provides basic camera, light and environment controls. Rb3D runs on top of Apple’s now defunct QuickDraw 3D or the open source, multi-platform replacement, Quesa. Quesa runs on top of OpenGL. The good news is that having it built upon two open source graphic platforms allows Real Software to add enhancements that are incorporated into Quesa by other programmers.

alt=“Software Layer”

rb3d02.gif

Rb3D is not in the same league, feature-wise as large, commercial 3D engines. However, the engine does have a few neat tricks up its sleeve that are especially useful for those trying to create a program that doesn’t require a PowerMac G4 600MHz or a 1GHz Pentium III. Its initial simplicity can be an asset to developers for several reasons: First, REALbasicis a great entry-level approach to programming. If Rb3D sported a huge feature set, it would no doubt be too daunting for a beginning programmer. Secondly, Real Software has consistently sought the advice and ideas of its core customer community, so this represents an opportunity for the REALbasic development community to participate in the design of this new 3D engine. But it does provide a very good platform for 3D applications-not just games-with minimal complexity and cost.

Since REALbasic is a compiled language and Rb3D is just a compiled library that is linked in, your 3D programs run fairly quickly. Programming in 3D can be daunting to the beginner. Having sweated out the transition to real time 3D by various methods, I can safely say that, unless you need advanced visual effects or need 30 complicated models moving at 60 frames per second, REALbasic’s Rb3D will suit you just fine.

What You Need

Now that I have you dreaming of making your next game a 3d hit, let’s take a look at what will be needed. First, you should visit Real Software and download (better yet buy) REALbasic 3.2. along with a copy of the Rb3D plug-in. You can also use the current developer release of REALbasic 3.5. Next, you will need a copy of the latest OpenGL SDK, and the latest Mac OS build of Quesa. Alternatively you could use QuickDraw3D instead of Quesa. If you’re using QD3D, you don’t need OpenGL. QD3D does its rendering via RAVE. Most users of classic MacOS already have QD3D 1.6 installed, unless they’ve run the QuickTime 5 installer, which actually removes it. (You can put it back by running the installer again and choosing Full or Custom install.)

The Rb3D Control

The basic control of Rb3D is named, appropriately enough, Rb3DSpace. It exists on the REALbasic control bar and is dragged on to the window of your choice, as you would the canvas control. In fact, Rb3DSpace’s basic properties are the same as the RectControl class as far as Position and Appearance go: width, height, visible, etc. New for the 3.5a2 release is that Rb3DSpace can handle all the usual events directly (MouseUp, MouseDrag, MouseDown, MouseEnter, MouseExit, Open, Close and DropObject). With the plug-in you had to handle mouse clicks in the window that Rb3DSpace was in.

There are a set of Initial Properties that can be set in the IDE. In fact, that is our first limitation. With two exceptions, these properties must be set in the IDE, you cannot adjust them while the program is running. This limitation will be removed for the final 3.5 release, though.

  • Hither and Yon — These properties define how close and how far away and object can be from the “camera” inside Rb3DSpace and still be visible. You can save lots of processing time by making this range as small as possible for your application. More importantly, Hither and Yon affect rendering quality; if the yon/hither ratio is too large, you get visual artifacts such as “scissoring” and other unwanted effects.
  • FieldOfView — This property defines the “camera” lens. A lower value will narrow the viewable field, acting like a telephoto lens. Conversely, a larger value will create a larger viewable field, simulating a wide-angle lens.
  • SkyColor — This property allows you to set background color for this particular Rb3DSpace. This is sufficient for simple games and object editor applications.
  • AmbientLight — This property sets the non-directional lighting source. A larger value means more light. Generally, you set this to a value about 30% of the next property, FloodLight for average contrast. A very low value would result in a more dramatic lighting effect and a high value would result in a “washed out” look.
  • FloodLight — This property sets a directional light source. As with AmbientLight, a larger number means more light. Another limitation: you cannot change the position and direction of this light. The position is fixed at an infinite point at -X,+Y,-Z, and is pointing to the center of the coordinate system, 0,0,0. This is a good general “portrait” position: up, to one side and behind the camera. At some point (not 3.5 though) this will be made variable, indeed a separate light object will probably be included to allow complete flexibility.
  • Wireframe — This is a boolean property that allows you to toggle how the models get rendered by Rb3DSpace: shaded or wireframe. Wireframe is sometimes useful for a 3D object editor or to create a “Sci Fi” 3D look. This property can be changed during run-time.
  • DebugCube — This property is boolean, a new addition for Rb3DSpace and very useful. It basically creates a background with all the axes marked. When you move objects or rotate your Rb3DSpace camera around, you can see exactly what section of the coordinate grid you are pointing at. This can be enabled or disabled at run-time which is handy for debugging and super for 3D editors.

alt=“Properties”

rb3d03.gif”

There two methods associated with Rb3DSpace, typically accessed in a MouseUp or MouseDown event. FindObject takes an X,Y coordinate within Rb3DSpace and returns any Object3D (more below) that lies on that point. In a shooting game this method can be used to verify if a target has been hit. FindPoint is similar: pass it an X,Y coordinate and it will return the equivalent 3D point. Very useful for 3D editors as you can know the 3D position the user is pointing to.

Rb3DSpace has a Camera, Background and Object property associated with it. These three items are specialized version of Rb3DSpace’s core classes, Object3D and Group3D. The Camera object can be positioned and rotated. The Object property is basically an array (Group3D) that you can add objects to. Every Object3D that you append to Rb3DSpace’s Object property will be visible in that Rb3DSpace, provided that the Object3D’s visible flag is true and the Object3D is in the Rb3DSpace’s field of view.

Background works exactly like the Object property except for one major difference: The Ambient and FloodLights do not affect any Object3D in the Background group. This is useful for things like a sky box; you don’t want shading on air! The Background’s position relative to the camera is fixed. This means that when the camera moves, the background moves as well. This is an important characteristic, because it makes the background appear to be infinitely far away; no matter how you move, you don’t get any closer to it.

Vectors

How does one know where an object is in a 3D world? The Vector3D class contains that information. You can assign it any 3D location by setting its X,Y and Z properties. There are methods to find the point’s distance from the 3D origin (Length(), LenSquared(), to find the angle between two 3D points (dot()), and to find a 3D point that is perpendicular to the plane defined by two 3D points (cross()) and to scale a 3D points distance from the origin to one (normalize()). Other Rb3D classes inherit the Vector3D class to define their position in 3D space or vector. I’ll explain this point in a bit.

Quaternions

Which way is an object facing? Welcome to the wonderful world of quaternions. The concept for these little gems came to a math whiz Sir William Rowan Hamilton in 1843 while walking to the Royal Irish Academy where he was the Astronomer Royal. As he passed the Brougham Bridge, he carved the basic equations into the stone of the bridge. Usually when I’m crossing a bridge, I’m wondering why it just cost me $7 US to cross the Hudson River. Oh well, I’ll never be knighted!

Quaternions are a very handy and stable way of representing an object’s orientation. If you’ve dabbled in 3D before, you may know that there are other ways of representing orientation, matrix, Euler angles, etc. All have limitations that can cause major visual problems. I won’t go too deeply into what the Quaternion object can do, but here’s the basics. The properties are W, X, Y and Z, but you’ll rarely set them directly. You can set an object’s orientation, one axis at time by using SetRotateAboutAxis. You pick an axis and give it the angle you want to set it to (in radians). It’s important to remember that this is an absolute orientation, not relative. To rotate an object by ‘X,’ you’ll need some other methods defined below. As with Vector3D, other Rb3D classes inherit the Quaternion class.

Objects

Now we get to the big kahuna, Object3D. As stated before, an Object3D has a Vector3D, the Position property, and a Quaternion, the Orientation property, associated with it. Another new property for the 3.5 version of Rb3D is the Scale property. For example, an object can be made twice as large or twice as small by setting this value to 2.0 and 0.5, respectively. The Visible property is a boolean value that allows you to instantly hide or show an object. The neat thing with this is that you can load all your Object3D’s at the beginning of your program and selectively make them appear. Objects that are not visible take very little computation time. They do take up memory though, so you need to be aware of this and set your application’s memory requirements (Classic Mac OS) appropriately, if you have many complicated models.

Shape is a very powerful property. When you first set up an Object3D, you load a 3DMF file into it (see below). You can load multiple 3DMF objects into it and then change the Shape instantly under program control. If you were displaying a cloud, for example, you could model several subtle variations, load them into Object3D and then change the Shape for a dynamically changing cloud!

Object3D has many powerful methods. When we discussed Quaternions, we mentioned the ability to rotate an object in a relative manner: turn left 45 degrees, for example. The Pitch, Yaw and Roll methods take an angle (in radians) and rotate along the particular axis by that amount. Important point: yes, these are Euler angles, BUT they are being converted to Quaternions by this method; you still get all the benefits of Quaternion’s mathematical stability. You can move an Object3D by changing its Position. In some applications, like a first-person maze exploration game, there is a much simpler method: MoveForward(). Let’s say you make the Rb3DSpace Camera (remember, it’s just another Object3D) rotate to look up, down, left and right. Passing the MoveForward method a positive value will move the Camera that many units; an negative value moves it backward.

How do you get a 3DMF model into an Object3D anyway? Currently a 3D model must be a 3DMF file. 3DMF was the meta file standard for Apple’s QuickDraw 3D and while QD3D has gone the way of the dinosaur, 3DMF is a fairly well supported format, even in the Windows world. It came in two flavors, binary and text. Although Rb3D can handle both, I prefer text for two reasons: text is much more robust and allows for modification of a model after it is exported. So you set up a typical REALbasic text stream read procedure that passes the entire file into a string. You then declare a new Object3D and use the AddShapeFromString method to convert the 3DMF string into a REAL (pun intended) Object3D.

In some applications, you may want dozens of the same object. Let say you’re creating a 3D Space Invader game and each row has 10 aliens that are the same. No need to load ten individual objects. Once an Object3D is created and a 3DMF model loaded, you can use the Clone() method to assign the same Object3D to another Object3D. What’s the point? Cloning simply refers to all the geometry and textures of the initial Object3D. This is faster because you don’t have to have ten separate file loads, and takes up less memory because only one set of geometrical attributes are stored.

Sometimes you don’t need a 3D object. Sometimes a simple 2D image will do. AddShapePicture() takes a REALbasic Picture class and a Scale value as parameters and loads them into a previously created Object3D. You then treat it as any other 3D object. A typical example might be a backdrop of a skyline that will be so far from the camera that a 3D version is not required. The only trick to this technique is that the image is visible from one side only. If the Rb3DSpace Camera moves behind it, the image will disappear. In cases where this might happen, you only need rotate the Object3D that contains the image so it’s always facing the Camera. AddShapePictureWithMask takes an additional REALbasic Picture class and uses it as a mask.

Groups

The final Rb3D class is Group3D. As the name suggests, this class allows you to treat a whole bunch of Object3D classes as one. Since it is a sub class of Object3D, you can do all the same things to an entire Group3D as you can to one individual Object3D. You can load parts of a car (wheels—remember to clone three of them, body, etc.) separately, then load them all into a Group3D that represents the entire car. You can then move or rotate the entire car by moving or rotating the Group3D. Note: this takes more processing time to do than manipulating each part separately. If you have a complicated model or have a lot of other things going on, this is not always the best approach.

The Append() method adds an Object3D to the Group3D. Remove() does just that and you can pass either the Object3D name or its index into the Group3D. Forget how many objects you shoved into a Group3D? Just call Count() which returns the number of objects. By keeping track of and passing an Object3D’s index into a Group3D, you can access it using the Item() method. This allows you to, let’s say make a part of larger model visible or not.

In our discussion of the Rb3DSpace class we mentioned that the Object property is really a Group3D class. Finally, if you’ve changed the Group position or orientation, and want this change to be applied to all of the group contents, just call Update(). This is only needed to update a Group3D that is not visible and therefore being drawn by Rb3DSpace.

Creating a Demo

I’m going to build a very simple demo program and go through it section by section. I will use two of the models included in the demo that comes with the latest alpha release of REALbasic 3.5, but you can download the finished program and models from here as well.

Open a new REALbasic project and drag the Rb3DSpace control on to the default window. Let’s leave all the properties at their default values, with the possible exception of the SkyColor. That blue makes me gag!

Now let’s create a new method, loadModel. We’ll make it flexible so we can use it in other programs later:

<br />
Function loadModel(filename as string) as Object3D<br />
Dim obj as Object3D<br />
Dim f as FolderItem<br />
Dim input as TextInputStream<br />
Dim data as String<br />
// load the 3DMF model<br />
f = GetFolderItem(filename) // assume it's in the same folder<br />
if f &lt;&gt; nil then<br />
input = f.OpenAsTextFile // has to be text files<br />
data = input.ReadAll // get 3DMF data as one big string<br />
obj = New Object3D // create new Object3D<br />
obj.AddShapeFromString data // load model data into new Object3D<br />
end if<br />
return obj // calling code should make sure this isn't nil.<br />
End Function<br />

Now we need to put the call to loadModel someplace. In simple programs, the easiest is in the open event of the Rb3DSpace control itself. So, in Rb3DSpace1 (the default control name), lets put the following code:

<br />
Sub Open()<br />
Dim obj as Object3D // storage for one model<br />
obj = loadModel("Penguin.3DMF")// load the model an assign it to obj<br />
obj.position.z = -300.0 // move the model in front of the camera<br />
me.objects.Append obj // append obj to Rb3D's Objects group<br />
End Sub<br />

That’s it. Just hit run. There is our little flippered friend in all his tuxedo glory. Kill the application and change the FieldOfView from its default of 50 degrees to 20. Nice close up. Okay, let’s go the other way and change FieldOfView to 100 degrees and run. Looks a little lonely!

alt=“Field of View

rb3d04.jpg

Remember that we put the penguin 300 units from the camera (which is at 0,0,0 by default)? Let’s change the Hither from its default of 5 to 260. We’re telling the Rb3DSpace Camera to ignore the first 260 units in front of it. If all has gone right, our friend should be without a bill and hole in his pot belly. Now change Hither back to 5 and change Yon to 260. Now we’re telling the Camera to ignore everything after 260 units. We should see one penguin bill and belly! Set the Yon property to 10000.

alt=“Hither and Yon”

rb3d05.jpg

Now let’s play with the lights. If you set the AmbientLight value to 0, then our penguin will look like he belongs in a Batman movie, nice and sinister looking. (A dark skycolor works best for this.)

alt=“Sky Color

rb3d06.jpg

Checking the Wireframe option will expose the model’s framework. Finally, try checking the Debug Cube option. You’ll see that left is -X and up is +Y. What about the Z direction? Add this line to the end of the Open event method:

obj.visible=false

Hit run and the penguin will be gone and we can see that we’re facing the -Z axis.

Remove the last line and add the following:

me.background = loadModel("Background.3DMF")<br />
// load the background model into the Rb3D background object

Make sure the Yon value is set to 10000 and run. Now you’ll see a simple land/sky background. Go back and play around with the light settings and you’ll see that they do not effect the background.

alt=“Background”

rb3d07.jpg

Camera Movement

Let’s add the ability to move the Rb3DSpace Camera. In the main window’s KeyDown event method, place the following code:

<br />
Function KeyDown(Key as string) as boolean<br />
select case asc(Key)<br />
case 28 // left arrow<br />
Rb3DSpace1.Camera.Yaw 0.1 // rotate left 5.625 degrees<br />
case 29 // right arrow<br />
Rb3DSpace1.Camera.Yaw -0.1 // rotate right 5.625 degrees<br />
case 30 // up arrow<br />
Rb3DSpace1.Camera.Pitch -0.1 // pitch up 5.625 degrees<br />
case 31 // down arrow<br />
Rb3DSpace1.Camera.Pitch 0.1 // pitch down 5.625 degrees<br />
case 11 // page up<br />
Rb3DSpace1.Camera.Roll -0.1 // roll left 5.625 degrees<br />
case 12 // page down<br />
Rb3DSpace1.Camera.Roll 0.1 // roll right 5.625 degrees<br />
case 43 // keypad +<br />
Rb3DSpace1.Camera.MoveForward 10.0 // move forward 10 units<br />
case 45 // keypad -<br />
Rb3DSpace1.Camera.MoveForward -10.0 // move backward 10 units<br />
else<br />
return true<br />
end select<br />
Rb3DSpace1.Refresh // IMPORTANT must refresh the Rb3D control<br />
return true<br />
End Function<br />

Now the you can move the camera around (and therefore the first person viewpoint) using the arrow, page up/down and the keypad +/- keys. Note that 0.1 used in the Pitch, Yaw and Roll methods is one tenth of a radian.

Making Models

A fair number of 3D modeling programs output 3DMF files. Some don’t do a very good job of it or they produce very detailed models that result in huge, complex files. Rb3D’s creator, Joe Strout is also the author of a very cool modeling program, Meshwork. This program was designed from the ground up to produce low polygon count models, especially tuned for real-time 3D. In addition to 3DMF files, Meshwork can import and export 3DS, DXF, POV-Ray, VRML and other formats. The cost is a paltry $30 (there’s a demo available) and there’s an active user email list as well.

Conclusion

The Rb3D is an incredible addition to REALbasic’s repertoire. Now even beginners can create fairly sophisticated 3D applications simply and quickly. I’ve only touched on Rb3D’s capability. The normal and developer release REALbasic lists are already discussing Rb3D, so you’ll pick up ideas there as well as general REALbasic knowledge. As a taste of what you can do with Rb3D here is a development screen shot of a Mercury/Atlas launch from my product A-OK! The Wings of Mercury. The flames are animated, as is the smoke and there are over 40 parts that move, get ejected or spew flame or smoke in that one model. This is a straight screen shot with no image editing.

alt=“Rocket Launch”

rb3d08.jpg

Acknowledgments

Thanks to Joseph Strout for creating this fabulous addition to the REALbasic feature list and for his support and mentoring me on 3D over the last 2.5 years. Additional thanks to Geoff Perlman for having the wisdom to listen to his customers and for adding Rb3D as soon as it made sense to do so. Finally, I need to thank my incredible wife, Sheila, and my wonderful children, Nick, Julian and Sierra, for putting up with the impossibly long hours spent in development of A-OK! WoM. We’re rounding the final bend, guys! All my love!

Bio: Joseph Nastasi is a free lance multimedia programmer and producer. Living in New Jersey with his wife and three children, he is a contractor for Flash, Director and REALbasic projects. A life-long space enthusiast, he has been a consultant for many space-related projects, including movies, NASA history projects and web events

introduction,3d,realbasic,rb3d

Dee Brown of Beenox on Coldstone Engine

Sounds like a great ad for REALbasic. Do you have a close working relationship with REAL Software?

Not really. I do submit bug reports and occasionally post to the developer mailing list but that’s all. I used to be more active in the REALbasic early years.

Let’s talk about Coldstone. Is it written in C/C++ with CodeWarrior?

Coldstone Engine IDEColdstone is divided into two parts: the editor and the compiler. The editor lets you manage the different parts of your game and put them together to create the story and gameplay. The compiler then takes all this stuff and creates a stand-alone application on either Mac Classic, Mac OS X or Windows. The editor is almost 100% REALbasic code but the compiler and the resulting applications are 100% C++. This allows for fast and professional games. We used Metrowerks CodeWarrior to develop the engine core.

Which graphic tools are your artists using?

Photoshop, 3D Studio Max and Graphic Converter.

Can you give us a brief overview of the use of sprites?

First, the sprite engine supports multiple layers and sprites of any size. This lets you create any type of world you want by placing several different pictures here and there, or you can use one big picture for a whole map (like in Baldur’s Gate). The sprite engine (and editor) doesn’t make any distinction between an animation and a still picture (with little exceptions). This means that you can use the very cool (yet powerful) animation editor to create an animation and just add it in the map, in any layer you want. Second, the engine is true 32-bit color, which means that translucency effects are possible with picture formats that support alpha masks such as PNG. Also, all the game “windows,” like the shop interface for example, are rendered by the sprite engine to make them platform independent.

What is the max size that a sprite (character/monster) can be and how many frames per character does it allow for?

There is no limit. You can have an 800×800 character but it may be hard to control on screen. As for frames, it’s unlimited and really up to you. You could let your game take 200MB RAM if you wanted to.

How large can the game world be and how many objects can it contain?

Coldstone Engine IDEOnce again, RAM requirements are your only true world limitation in Coldstone. However, if you want to be able to edit a 1000×1000 map in the Coldstone Map Editor, you may have to give some more memory to the application. RAM really is the only limit you have. Give it more RAM and it will give you the power you need to create that 5000×5000 map you always dreamed of!

Is the screen size set, or can the developer adjust it?

The developer can decide at which resolution and color depth the game will run.

Does Coldstone allow for enhancement through plug-ins?

Coldstone allows enhancement to the game but not to the engine itself. A Coldstone developer has the option to enable plug-in support for their game. So hopefully a good community of plug-in developers will also grow. Things like creating a new renderer or new battle engine through a C++ plug-in aren’t possible though.

Can a saved game file be used in a different game besides the one it was created with (i.e. a sequel)?

When you create a Coldstone game, you have to specify a creator code. If a developer creates a sequel to their game and gives it the same creator code, the saved game would be compatible between the two games.

Are physics used in the game?

There is no real physics engine in Coldstone. You could easily fake physics with the animation editor and its keyframe animation abilities though.

Is the combat system flexible or hard-coded to a fixed game system rule?

Coldstone Engine IDEThe combat system core is hard-coded but the gameplay isn’t. While you can’t recreate the AD&D combat system, you can be very creative in your opponents’ look and behavior. PoG, the game we are developing with Coldstone, is a good example of this. We have standard rush-at-the-enemy monsters, but we also have original ones like earth elementals that summon earth columns from down under you (and that hurts!). The spell system is also very open and opens a wide range of new possibilities to the game designer.

Could you tell us about the magic system?

Theoretically, the magic system in Coldstone works with spell points. You could, however, use the event system to script yourself a new kind of magic system. Who said that it must be called “magic” anyway? You could create a futuristic game and call those “Bionic super powers” or something neat like that. The nature of these spells or bionic powers is all yours to create! Coldstone is bundled with a user-friendly spell editor.

Can the developer add custom key commands for their games? (E.g. use the spacebar or W key to change weapons.)

Coldstone offers the developer the ability to create “global keydown events,” which are basically events that are fired when the player presses a certain key. At this point, the only limitation is the event system.

Will Coldstone support networking or online play?

No.

Does Coldstone create a double-clickable application or does it require a run-time engine?

It creates a stand-alone application for Mac OS Classic, Mac OS X, Windows 95/98, and Windows ME/2000.

Coldstone will be released for classic Mac OS and Mac OS X simultaneously. How much work was it to Carbonize Coldstone?

REALbasic seamlessly did most of the work for the editor. REALbasic has some nasty Mac OS X bugs so I had to code a couple of workarounds, as well as modifying the interface and the help system to fit Mac OS X standards. The compiler of Coldstone is, however, pure C++. Again, it wasn’t that much work since it has been designed from the start to compile on Mac OS, Mac OS X and Windows.

What made you decide to approach Ambrosia Software to publish Coldstone?

Coldstone Engine RPG GameAmbrosia has the online infrastructure required to support such a product. They have a very good web board system that will let the Coldstone developers exchange tips and tricks, as well as a good archiving system so that the Coldstone community will have a place to download up-to-date add-on files for Coldstone and upload their creations. This will also let people of various professions (musicians, 3D artists, etc.) meet and create cool new games. Beside this, Ambrosia has a cool and helpful staff, not to mention their marketing potential in the Macintosh gaming market.

Will developers be required to pay a license fee for commercial titles released?

Such details are unsure at the moment.

Do the Beenox, Ambrosia, or ColdStone logos appear in the finished game through ABOUT screens, required readmes, etc. (in other words, will players know they are playing a Coldstone game)?

Again, this is not set in stone but the developer will probably be required to display the (very nice) Coldstone badge somewhere in their product.

coldstone06.jpg

Can you compare RPG Maker and Coldstone Engine?

They both let you create RPGs but the difference lies on the creation freedom level. RPG Maker lets you create an RPG within a fixed frame. That makes it easy to use because the creator can concentrate on the content rather than the packaging. While Coldstone offers very good tools to let the user shape their own worlds, it also provides them with the ability to modify the container: game interface, menus, even a plug-in system that you can enable to let other developers write add-ons to your game. To make things simple for beginners, Coldstone comes with a game wizard that creates a fully working game frame for you to modify. Coldstone comes up with a default medieval set but allows you to modify it at will or start from scratch and create your very own style. You can have your very first game up in minutes.

How did you decide on how difficult it was going to be for someone to create a game using Coldstone? For example, making it simpler to encourage beginners, or making it more difficult to discourage less motivated users from producing low-quality games.

Coldstone Engine RPG GameThe goal was to make an engine that is appealing for both the wannabe game developers and professionals that want to quickly create outstanding cross-platform games. Coldstone is like Mac OS X — a powerful core wrapped in a beautiful user-friendly interface. Coldstone also comes with more than 10,000 graphics and animation files to help beginners create professional-looking games. There will be some low-quality games produced with it of course, but those will help the Coldstone community by providing game examples rather than hurt it, I think.

  • Position: President/CEO
  • Developer: Beenox Inc.
  • Url: http://www.beenox.com
  • Bio: Dee worked on Bugs Bunny: Lost in time — a PlayStation title — as a logic developer and tool programmer. He also worked on three upcoming PlaStation games: 3-2-1 Smurfs! as a PlayStation programmer and project lead, Bugs & Taz: Time Busters, and The Grinch who stole Christmas as a tool programmer.

How to Get More Sales for Less Work

Introduction

One of the best ways to increase your shareware sales is obvious: release a new product. Of course, this is much easier said than done. But what if there were a way to develop and release a new product in just a small fraction of your normal development time, perhaps just a couple weeks or maybe only a few days? And what if you could launch this new product simply by listing it on your existing order form without having to create a shareware version or doing any uploading at all? You can do all of this simply by releasing an add-on for one of your existing products.

Adding On

An add-on is a product that piggybacks onto one of your existing products. Typically, it requires installation of the original product to function. Examples include new levels for a game, new images for a screen saver, a set of templates for an HTML editor, and new filters for an image editing program. There are three main ways to increase your shareware sales: acquire more customers, get customers to spend more money, or get customers to buy more frequently. Releasing an add-on can actually help you achieve all three of these simultaneously.

Getting More Customers

First, add-ons can help you acquire more customers. Listing add-ons on your order form sets you apart from other developers by showing a strong commitment to supporting the original product. Potential customers may also figure that your original product must be a winner if you’ve decided to release an add-on for it. Add-ons can also increase the amount of time a customer spends using your product, thus increasing the chance for word-of-mouth sales.

Making More

Secondly, add-ons can get customers to spend more money when they buy from you. Many customers will buy an add-on when they purchase the original product, especially if the add-on has an attractive impulse price, so you gain an immediate and permanent sales increase just by listing it on your order form. Some customers who think the price of your original product is a steal will purchase the add-on simply because they expected to spend more. Other customers will purchase the add-on with the original product because they don’t want to have to come back and buy it later. If you don’t sell add-ons, you are probably leaving extra money on the table that your customers are willing to give you.

Something New

Thirdly, add-ons can get your existing customers to buy from you more frequently. Add-ons allow you to offer something new between major releases. People who have already bought from you in the past are likely to be comfortable buying from you again. For a quick boost in sales, announce a new add-on prominently on your web site, in your newsletter, and through any other mediums you may have to reach previous customers.

Less Effort

An add-on can be very quick and easy to develop and requires no shareware version or distribution. Designing an add-on is simpler than creating a whole new product because you are building on an existing framework, and often little programming is required. Best of all, you can release an add-on with little risk, and if it succeeds, you can release additional add-ons for the same product. It is possible to eventually be earning more income from add-ons than from the original product.

Even if you sell upgrades to your existing products, there are compelling reasons to release add-ons as well. First, with minor modifications, you may be able to sell the same add-on for every version, especially if it’s just a data file. Also, it gives you a whole separate product to sell in addition to upgrades. Since an add-on doesn’t require a separate shareware version or uploading to shareware sites, you can release many add-ons in the time it takes to develop a full version upgrade.

Target Marketing

Additionally, you can release multiple add-ons to target specific segments of your market. Split your market into pros vs. beginners, male vs. female, seniors vs. youth, etc., and target specific add-ons at those groups. If you find that one of your products is being used heavily by a certain demographic, consider releasing an add-on for their specific needs. For instance, for a game, you can release an add-on of insanely difficult levels for experts plus another one of super easy levels for young children. You may also find that many parents will impulse buy a child-oriented add-on for their kids.

The Payoff

Take some time to think of creative ways you could develop a simple add-on for your best product. If you can think of something that might only take a week to create, but you imagine that only one in ten previous customers would likely buy it, would it be worthwhile? I released an add-on for my best-selling product earlier this year. The add-on took only 5% of the time it took to develop the original product, but it is earning 25% as much money as the original and is outselling all of my older products by itself. Sales of the original product increased significantly after releasing the add-on. Because of this I plan to release several more add-ons for the same product, and I’m designing future products with expandability in mind. So if you’re looking for a fast and easy way to increase your sales without taking the time to develop a whole new product, consider expanding one of your existing products. The risk is minimal, but the payoff can be significant.

Copyright 2002 by Steve Pavlina

Bio

Steve Pavlina is President of the ASP and CEO of Dexterity Software, an on-line game publisher dedicated to releasing retail-quality games through shareware channels. You can find Steve interacting with Dweep addicts at his website, Dexterity.com.

how,to,get,more,sales,for,less,work

Networking for Shareware Developers

The Human Network

Many shareware professionals are skilled at networking a home office, but they’re often lacking in the area of human networking. In early 1999, I knew my lack of networking was going to hold me back if I didn’t do something about it. As an independent developer, I felt isolated and cut off from the rest of the industry, and I knew I was missing out on opportunities because of it. I would often struggle to solve a problem that someone else had probably already solved, but I didn’t know where to look for the solution, and it was taking me a lot of time to do everything on my own. I quickly realized that if I just had a small network of developer friends, it would save me a huge amount of time because I’d have people to turn to for help and advice. And I also knew that I could help others in the same manner. So one day while listening to a tape about the benefits of networking, I made a firm commitment to get out of my fortress of solitude and start building a human network. Looking back, this turned out to be one of the most powerful and life-enhancing decisions I ever made. Today I have a strong network of dozens of great friends and contacts in the industry. I can achieve much more in less time because I have a tremendous number of outside resources I can turn to for help. And to a large extent this all works passively. New opportunities come to me every week through my network, and I don’t have to work so hard to seek them out on my own. I feel as if my vision has expanded a hundred fold. I want to share with you what I’ve learned through this process and how I think networking can benefit you specifically. To some of you, what I’ve said so far may seem obvious, but keep reading anyway because you may find something useful in the remainder of this article.

Why Network?

The benefits of networking are many. Even if you only do shareware part-time and already hold a full-time job, you should know that most jobs are never advertised. Most jobs are filled through networking. The more people you know who can help you, the more opportunities will come to you. As I am building my company, my first choice for hiring new people would be to put the word out through my existing network. Networking saves time because it is an easy way to find whatever it is you want, such as a new job, a new home, a solution to a problem, or a new business deal. Networking is a lot like investing. You put a little into it, but the payoff accumulates year after year, eventually growing far beyond your initial deposit.

Networking is an extremely good complement to technical work, and it helps to balance you as a person. If you are feeling burnt out from technical work, you can balance your day by investing time in networking. I’ve found that I enjoy my work a lot more, and I’m a lot more productive when I know others are keeping tabs on me. Sometimes I’ve found it hard to motivate myself when my goals are known only to myself, but when I share them with others, I will often work harder to be sure I don’t disappoint them. Networking gives you a feeling of connection with your industry, and this allows you to see how your work is contributing to the whole in a positive way. Sharing resources with others is a terrific form of contribution in itself, something that all humans have a strong need for. Networking will also help you grow professionally by leaps and bounds, especially if you continually associate with people who are superior to you in some way (higher income, more organized, more honest, etc).

Create Your Network Carefully

We tend to become like the people we associate with most. Grab a piece of paper and make a quick list of the ten people in your life you spend the most time communicating with, whether in person, by phone, by email, or by any other means. Study that list carefully. That list is your future. And if this list hasn’t changed much in the past few years, then my guess is that you’ve been feeling stagnant or even stuck. My prediction is that you earn about the same income as the others on your list. You probably have similar standards of living to those you spend the most time with, and your lifestyles may be similar as well. If the people on your list are very neat and organized, you’re probably the same way. If they’re unhealthy, you’re most likely in the same boat. If you feel like you’ve been stuck in the same situation for a length of time and that your efforts to change have felt like an uphill battle, that list is the likely culprit. One of the easiest ways to change is to associate with others who’ve already achieved what you want. Their values and beliefs will essentially infect you, and you will achieve what you want almost effortlessly. Think back to a time in your life when you experienced a major change in the names on your top ten list, such as when you moved or switched jobs or schools. Didn’t you find that you became a slightly different person in the new environment?

For example, let’s say you want to earn $100,000 a year or more from your shareware business. How many of the people on your top ten list are already doing this? If you only associate with others whose businesses are barely scraping by, you’ll likely have a hard time getting your sales to grow beyond a certain point. Every level of income is associated with different beliefs and values. People who earn $100,000 a year simply don’t have the same beliefs as those who earn $10,000 a year. Were you aware that the average lottery winner has lost all the money they won within two years and has nothing to show for it? The reason is simple—these people kept their old network, and thus their old beliefs and values continued to govern their actions, leading them right back to where they started. My shareware income grew tenfold in one year because I made a decision to associate with people who were making ten times as much money as I was. I passively became more like them, and the results naturally followed. I’m continuing to add more people to my network who are again making ten times more money than I am now, and my income is continuing to increase up to their level. I’ve also changed a great deal as a person as a result. If you want to become better at anything, start making friends with people who are already successful in that area, and get them into your top ten list. You can become better at absolutely anything using this approach. But before you add anyone to your network, make sure you want their results, in at least some area of your life.

Building a Strong Network

So how do you build a strong network? There a many ways to do this, and here are some that seem to work best for shareware developers:

Be active in professional organizations.

One of the easiest ways to build a network is to make contacts within the ASP or another professional organization. If you aren’t making back your ASP dues many times over each year from the benefits of membership, then you aren’t doing enough networking. Members constantly share resources in our asp.members newsgroup. If you haven’t already been participating in those newsgroups, you are absolutely missing out on free opportunities that can make you a lot of extra money for very little effort. (For step by step instructions on how to access the newsgroups, visit the ASP site.)

Let me give you a couple typical examples. Many months ago a member posted a link to a new shareware site that accepted PAD files. I submitted my PAD file, and throughout the next few weeks, I received several sales from that site. It took approximately 30 seconds for me click on the link and submit my PAD file, yet that one tip made me more money than the cost of my annual ASP dues. And this happens all the time. Another common occurrence is that members often buy products from other members. Shareware developers aren’t my target market, yet I sell more than enough copies of my games to fellow members every year to more than pay for my dues. If you participate in the newsgroups and include your URL in your signature, other members will visit your web site and get to know your products. Members generally aren’t pushy in promoting their own products to other members, but they get sales just by being visible and contributing. A side benefit is that you become aware of many useful products you might need someday. I often buy products from other ASP members. So if you aren’t participating in asp.members, then you are essentially letting free money escape you.

Volunteer your time.

A strategy that worked well for me was one that I learned from Brian Tracy, who credited it with helping him become a multi-millionaire over time. He simply started volunteering. While he was a salesman, he joined the local chamber of commerce and volunteered to serve on a committee. This made him many connections in the business world, and within a short time he was offered a new job through someone in his network for double his previous salary, which he accepted. He continued volunteering and found that more and more opportunities came to him this way. He was later offered a job as the head of a division of a large company, and from there he went on to start his own businesses. This is essentially the same approach I’ve been using. I didn’t feel the chamber of commerce in my area would do much for me, so I decided to volunteer within the ASP. About a month later I became the vice president and a year later, the president. Relatively few people volunteer, so those who do can quickly reach the top of any organization.

So why does volunteering work? Because only successful people tend to volunteer. Unsuccessful people don’t volunteer—they complain instead. I’ve found that the cream rises to the top, so volunteering is an easy way to associate with successful people. If you look at the people who volunteer in the ASP for instance, I think you’ll find that their incomes are significantly higher than average. Plus they generally seem to be happier and more successful in other areas of their lives as well. Volunteering builds your self-esteem as well; it helps you see yourself as a person who contributes. This in turn causes you to feel that you deserve more, and so you tend to take advantage of new opportunities that are consistent with your improved self image. Greater wealth is just one common result.

Network on purpose.

Last year I attended my high school reunion, and I found many people thought they were there to network, ready to hand out their business cards to anyone who’d take them. These were people of widely different professions who simply couldn’t help each other in meaningful ways for the most part. There are a few professionals who can benefit from this type of general networking, but it’s not particularly useful for a shareware developer. A better use of your time is to network at small, well-targeted conferences, such as the Shareware Industry Conference. There you can meet people who can actually help you, and you will easily find ways to help them. Intellectual exchange is one of the most rewarding benefits of networking. I love going to conferences because I always come away from them with a tremendous feeling of growth.

Build Your Reputation

A key component of long-term networking is your reputation. It is perhaps your most valuable networking asset. If people come to know you as a person of genuine integrity, your reputation will spread beyond the people you know directly, and your contacts will be far more willing to share their best resources and opportunities with you. If you ever make a mistake, people will be very quick to forgive you if you have established a positive reputation. Note that having a good reputation is not the same thing as being popular. It is more important to be known as a person of integrity than it is to be popular. I am always more willing to trust the trustworthy than I am to trust the popular. Of course the reverse is also true. If you develop a reputation for dishonesty or demonstrate a lack of integrity, nothing will kill your chances for networking more quickly. New business is built on trust, so trust is sacred. Never ever violate another person’s trust. When it comes to networking, complete honesty and integrity is the only policy.

The general rule of networking is simple: Contribute! Start by looking for ways to give rather than to get. You don’t have to be an expert; just offer to help others in a way that’s easy for you, such as by answering questions and volunteering advice in areas in which you are knowledgeable. If you gain a reputation for being a person who contributes, you will have no shortage of people offering to help you when you need it. A common pattern I see in the ASP newsgroups is that those who give the most also get the most. If you answer others’ questions whenever you have knowledge that could help them, you may find more people willing to help you as well. Think of yourself as having a networking bank account. You have to make a few deposits first before you can start making withdrawals. If you continually look for ways to contribute to others and your industry, new avenues for networking will open up to you. If you have decent writing skills, write articles. If you have an interest in public speaking, volunteer to speak at a conference. Writing and speaking can help you expand your network tremendously. You can reach many more people this way, and it helps strengthen your reputation as a person who contributes.

Conclusion

Overall, networking is a fairly easy skill to develop and need not consume much time, yet the payoff can be huge. As your network expands, you’ll gain greater and greater leverage. If anyone in your network hears about an opportunity that can be useful to you, chances are you’ll hear about it too. Instead of having to struggle to find opportunities, they’ll come to you passively, so by nurturing your network, you can achieve your goals with far less effort. For me the process has felt like planting ears throughout the industry, all listening for opportunities. If you haven’t been doing much networking, do yourself a big favor and just get started. And realize that there never was a winner who wasn’t at some point a beginner.

Bio

Steve Pavlina is President of the ASP and CEO of Dexterity Software, an on-line game publisher dedicated to releasing retail-quality games through shareware channels. You can find Steve interacting with Dweep addicts at his website, Dexterity.com

Copyright© 2003 by Steve Pavlina

networking,for,shareware,developers

Zero-Defect Software Development

Is it Really Finished?

In my corner of the software industry, I will work from six months to a couple years to develop and release a new computer game. I can sell sequels or expansion packs, but I generally cannot sell upgrades as with other software. When I release a new game, I must make sure it is of very high quality because my users won’t think to look for an upgrade. Because of the short life-span of most computer games and their dependence on transient technology, my opportunities to improve a released product based on customer feedback are minimal. To deal with these issues, I gradually adopted a system of Quality Assurance (QA) practices that allowed me to significantly increase product quality while simultaneously reducing development time. Not to be taken as meaning “bug-free,” Zero-Defect Software Development (ZDSD) is a practice of developing software that is maintained in the highest quality state throughout the entire development process. “Defects” are aspects of the evolving software that would not be suitable for the final product as-is. This broad definition includes bugs as well as unwanted deviations from the desired final outcome. Defects in the development of a computer game would include unpolished artwork, an unacceptably low frame rate on the target system, levels that aren’t fun enough, or any number of unfinished features.

It’s the Quality Stupid

The basic tenet of ZDSD is this:

Maintain your product in what you believe to be a defect-free state throughout the development process.

This sounds simple, but it is a rare practice. The most common approach is to delay major testing until the final QA phase of software development, where defects are often discovered for the first time. Most bugs are not detected or fixed until long after their introduction. The longer a defect remains, the harder it is to fix. On large software products, each stage of development that a defect survives will increase the cost of fixing the defect by ten to fifty times. A defect introduced in the design phase can cost hundreds of times more to fix in the testing phase than it would if fixed immediately after its introduction.

By focusing on product quality throughout the development life-cycle, you will actually complete products faster than if you didn’t pay attention to quality until the end of the project. The general rule of software quality is counter-intuitive:

Improving quality actually reduces development time.

This is because you eliminate all the time spent fixing bugs and reworking code, which can account for as much as 50 percent of development costs on a large project. The typical programmer writes between eight and twenty lines of code a day; the rest of the day is usually spent on debugging. ZDSD shortens schedules by eliminating most debugging time. Extensive studies done at NASA, IBM, and elsewhere have shown that better QA leads to shorter schedules. An IBM study concluded that software projects that make quality a top priority typically have the shortest schedules, the highest productivity, and even the best sales.

The Ten Do-mandments

Test your product every day as you develop it, and fix defects as soon as you find them.

Apply the daily build and smoke test. At the end of every day you work on your project, build the current version of your software, and test it for basic functionality. Microsoft enforces this policy religiously, using large teams to build each project on a daily basis. A programmer whose code breaks the build may be called in the middle of the night and must go back to work to fix the problem immediately. For shareware authors working on small projects, this is far easier. At the end of each day, test your program for at least ten minutes. Make a list of anything you would consider a “defect,” and resolve to fix all defects before implementing any new features. Once you find a defect, fixing it becomes your number one priority, and you avoid writing any new code until the defect is 100 percent eliminated.

Review your code regularly.

When most people think of QA, they think of testing, but testing is actually one of the least cost-effective strategies for finding bugs. The most rigorous testing will typically find less than 60 percent of all bugs in a program, and there are certain types of bugs that testing will rarely find. Studies conducted at many large software organizations have concluded that code inspections are far more cost-effective than testing. A NASA study found that code reading detected almost twice as many defects per hour as testing. Whenever you’ve added a few hundred lines of new code to your project, set aside an hour or two to read over your work and look for mistakes. One hour of code review is equivalent to two or more hours of methodical testing. As you gain experience, keep a list of the types of defects you find, and run down your list whenever reviewing new code. To find even more defects, have someone else read your code as well.

Rewrite poor-quality modules.

When you discover an obscure new bug, do you ever pray, “Oh no! Please don’t let it be in that module!” We all have monster modules of legacy code that were written when we weren’t such seasoned programmers as we are today. Don’t fear them; rewrite them. Often a better approach will only become clear when an inferior solution has already been implemented. This is certainly true for John Carmack, who coded dozens of different approaches when writing the Quake engine before discovering one that met his criterion. Defects will not be distributed evenly across your code. You will typically find that 20 percent of your routines are responsible for 80 percent of your errors. In my programs it is normally the modules that interact with the hardware or with third-party drivers, especially DirectX, that are the most buggy. Raise your standards for those modules that seem to produce a never-ending supply of bugs, and take the time to rewrite them from scratch. You may find that other intermittent bugs disappear completely as a result.

Assume full responsibility for every bug.

Ninety-five percent of all software defects are caused by the programmer. Only one percent of defects are hardware errors, and the remaining four percent are caused by the compiler, the OS, or other software. Never dismiss a potential bug; find out the exact cause of any anomaly. When the Mars probe suffered serious software glitches during its mission, it was learned that the same glitch had occurred only once during testing on earth, but the engineers dismissed it as a temporary hardware hiccup. Unless your hardware drinks soda, it does not hiccup.

Handle change effectively.

You will always think of great new features to add after you have started coding. Carefully consider how each change will impact your pre-existing code. Poor integration of unanticipated features is a major cause of defects.

Rewrite all prototyping code from scratch.

Sometimes you may quickly prototype a new feature to see if it will be viable. Often this is done by sacrificing code quality in the name of rapid development. If you eventually decide to keep the feature, it is very tempting to simply tack on some basic error checking to the prototyping code. Don’t fall into this trap. If you weren’t writing the code originally with quality as a priority, scrap the prototyping code, and re-implement the feature from scratch. Rapidly prototyped features that slip into the final product are a major source of bugs because they are not subject to the same quality standards as the rest of the code.

Set QA objectives at the beginning of every project.

Studies have shown that developers who set reasonable QA goals will usually achieve them. Decide in advance if your product must be fast, small, feature-rich, intuitive, scalable, etc. Then prioritize those objectives. When designing the interface code for an upcoming game, I decided that my top three priorities were to make it beginner-intuitive, fast, and fun, in that order. Consequently, my game’s interface isn’t as graphically rich as other games, but it is easier to use and faster than any other game of its type. Whenever you have to make a design decision, keep your objectives in mind. If you do not set clear QA goals, then you are doomed to accept the results of random chance.

Don’t rush debugging work.

Fully 50 percent of all bug fixes are done incorrectly the first time, often introducing new bugs in the process. Never experiment by simply changing “x-1” to “x+1” to see if that will do the trick. Take the time to understand the source of the bug. Years ago when I was a boy scout and had to put out a campfire, the Scoutmaster would sometimes test my thoroughness by asking me to put my hand in the ashes. I learned very quickly how to put out a fire so well that I had complete confidence it was 100 percent extinguished. When you find a defect, it means your code is on fire. As long as the defect remains, any new code you write will add fuel to that fire. Whenever you find a defect, drop everything to fix it, and don’t move on until you are 100 percent confident that your fix is correct. If you don’t take the time to do it right the first time, when will you find the time to do it over?

Treat the quality of your code at the same level of importance as the quality of your product.

Rate your code on a scale of one to ten for overall quality. The first time I did this, I rated my 30,000-line project as a four. I rewrote the worst of the code until I reached an eight overall. It was one of the best investments of time I ever made because I was then able to add new features at double my previous rate. The quality of your code is highly indicative of the quality of your product. You may find as I have that your best selling products also receive your highest ratings for code quality.

Learn from every bug; each one represents a mistake that you made.

Learn why you made each mistake, and see if you can change something about your development practices to eliminate it. Over the years I have adopted many simple coding practices that allow me to avoid common bugs that used to plague me. There are many types of bugs that I now never encounter because my coding style makes it physically impossible for me to introduce them.

Conclusion

Each of these rules represents a simple concept, but their combined benefits are significant. You will achieve higher progress visibility, avoiding the situation of being “99 percent done” for the last 80 percent of your development time. Higher quality will make your products easier to maintain and less expensive to support. You will spend less time debugging old code and more time writing new code. And most importantly, it actually takes less time to write high-quality code than it does to write low-quality code, so you will save a great deal of time on overall development. If you have never developed products with a zero-defect philosophy from day one, its adoption can reduce your development time for new products by 30 percent or more while simultaneously improving product quality.

Bio

Steve Pavlina is President of the ASP and CEO of Dexterity Software, an on-line game publisher dedicated to releasing retail-quality games through shareware channels. You can find Steve interacting with Dweep addicts at his website, Dexterity.com

Copyright© 2003 by Steve Pavlina

zero,defect,software,development

Do it Now!

Inspired

Time is your scarcest resource. You can always make more money, but once time has been spent, you can never get it back. When going to college many years ago, I decided to challenge myself by setting a goal to see if I could graduate in only three semesters, taking all the same classes that people would normally take over a four-year period. I knew I would start my own business once I graduated, so that goal inspired me to get out of school fast. There was no way I wanted to be stuck in school while the technology revolution was passing me by. In order to accomplish this goal, I determined I’d have to take 30-40 units per semester, when the average student took 12-15 units. So it became immediately obvious that I’d have to manage my time extremely well if I wanted to pull this off. I began reading everything I could find on time management and putting what I learned into practice immediately. I accomplished my goal by graduating with two degrees (Computer Science and Mathematics) in just three semesters without attending summer school. I slept seven to eight hours a night, took care of my routine chores (shopping, cooking, etc), had a social life, and exercised for 30 minutes every morning. In my final semester, I even held a full time job (40 hours a week) as a game programmer and served as the Vice Chair of the local Association of Computing Machinery (ACM) chapter while taking 37 units of hardcore computer science and math courses. My classmates would add up all the hours they expected each task to take and concluded that my weeks must consistent of about 250 hours. I graduated with a 3.9 GPA and ended up receiving a special award given only to the top Computer Science student each year.

I wasn’t considered a gifted child, and this was the first time I had ever done anything like this. I didn’t have any personal mentors helping me, and I can’t recall a single person encouraging me. In fact, pretty much everyone was highly discouraging. It took a lot of convincing to get the department chair to approve my extra units every semester. People assumed I was either cheating or had a twin or that I was just mentally unstable. I was perhaps the only student at the university with a two-page class schedule. I persevered by applying time management concepts that most people simply didn’t know but that were readily available in books and audio programs. I didn’t tell you this story to impress you but rather to make you curious. The time management habits I learned in college have served me very well in building my business, so I want to share them with you in the hopes that you’ll find them equally valuable. They allowed me to shave years off my schooling while also giving me about $30,000 to start my business (all earned in my final semester as a game programmer, mostly from royalties). Without further ado, here’s the best of what I’ve learned about mastering time management:

Clarity is key

The first step is to know exactly what you want. In a Tae Kwon Do studio where I used to train, there’s a huge sign on the wall that says, “Your goal is to become a black belt.” This helps remind each student why s/he is going through such difficult training. When you work for yourself, it’s easy to spend a whole day at your desk and accomplish nothing of value. This almost always happens when you aren’t really clear about what it is you’re trying to do. In the moments when you regain your awareness, ask yourself, “What exactly is it that I’m trying to accomplish here?” You must know your destination with as much clarity as possible. This is one reason that all your goals must be specific, and they must be in writing. Your goals must be so clear that it would be possible for a stranger to look at your situation objectively and give you an absolute “yes” or “no” response as to whether you’ve accomplished each goal or not. If you cannot define your destination precisely, how will you know when you’ve arrived?

The key period I’ve found useful for defining and working on business goals is ninety days, or the length of one season. In that period of time, you can make dramatic and measurable changes if you set crystal clear goals. Take a moment to stop and write down a snapshot description of how you want your business to be ninety days from now. What will your monthly income be? What level of web site traffic do you want (visitors, page hits)? How many hours will you put into your business each week? What products will you be selling? What will your web site look like? Be specific. Absolute clarity will give you the edge that will keep you on course.

Just as an airplane on autopilot must make constant corrections to stay on course, you must periodically retarget your goals. Reconnect with your clear, written goals by re-reading them every morning. Post them on your walls, especially your financial goals. Years ago, I went around my apartment putting up signs in every room that said “$5,000/ month.” That was my monthly business income goal at the time. Because I knew exactly what I wanted, I achieved that goal within a few weeks. I continued setting specific income goals, even when setbacks occur. When I started focusing on shareware marketing in 1999, I was making less than $500/ month from shareware. I set a goal to reach $2000/ month, then $2500/ month, then $3000/ month, and so on. If you are really serious about growing your business, then get serious about setting clear, written goals. If you don’t decide how much money you want to make, you’ll have to settle for the results of random chance. Clarity can not only save you time—it can make you very wealthy.

Be flexible

There’s a key difference between knowing your destination and knowing the path you will take to get there. A typical commercial airplane is off course 90% of the time, yet it almost always arrives at its destination because it knows exactly where it’s going and makes constant corrections along the way. You cannot know the exact path to your goal in advance. I believe that the real purpose of planning is simply so that you remain convinced that a possible path exists. We’ve all heard the statistic that 80% of new businesses fail, but a far more interesting statistic is that nearly all of the businesses that succeeded did not do so in the original way they had intended. If you look at successful businesses that started with business plans, you will commonly find that their original plans failed miserably and that they only succeeded by trying something else. It is said that no business plan survives contact with the marketplace. I like to generalize this to say that no plan survives contact with the real world.

Renowned author and business consultant Steve Covey often uses the expression, “integrity in the moment of choice.” What that means is that you should not follow your plans blindly without conscious awareness of your goals. For instance, let’s say you’re following your plans nicely, and then an unforeseen opportunity arises. Do you stick to your original plan (missing the opportunity), or do you stop and go after the opportunity (throwing yourself off schedule)? This is where you have to stop and reconnect with your major goals to ask which is the better course. No plan should be followed blindly. As soon as you gain new knowledge that could invalidate the plan, you must exercise integrity in the moment of choice. Sometimes you can reach your goals faster by taking advantage of shortcuts that arise unexpectedly. Other times you should stick to your original plans and avoid minor distractions that would take you further from your goals. Be tight on your goals but flexible on your plans.

Failure is Your Friend

Most people seem to have an innate fear of failure, but failure is really your best friend. People who succeed also fail a great deal because they make a lot of attempts. The great baseball player Babe Ruth held the home run record and the strikeout record at the same time. Those who have the most successes also have the most failures. There is nothing wrong or shameful in failing. The only regret lies in never making the attempt. So don’t be afraid to experiment in your business. Sometimes the quickest way to find out if something will work is to jump right in and do it. You can always make adjustments along the way. It’s the ready-fire-aim approach, and surprisingly, it works a lot better that the more common ready-aim-fire approach. The reason is that after you’ve “fired” once, you have some actual data with which to adjust your aim. Too many people get bogged down in planning and thinking and never get to the point of action. How many potentially great ideas have you passed up because you got stuck in the state of analysis paralysis (i.e. ready-aim-aim-aim-aim-aim…)? Failure is not the opposite of success. It is an essential part of success. Once you succeed, no one will remember your failures anyway. Microsoft wasn’t Bill Gates’ and Paul Allen’s first business venture. Who remembers that their original Traf-o-Data business was a flop? The actor Jim Carey was booed off many a stage while a young comedian. We have electric light bulbs because Thomas Edison refused to give up even after 10,000 failed experiments. If the word “failure” is anathema to you, then reframe it: You either succeed, or you have a learning experience.

Letting go of the fear of failure will serve you well. If you are excited about a new product idea but you are afraid it might not work, jump on it and do it anyway. Even if it doesn’t work, you’ll learn something valuable and can make a better attempt next time. If you look at the independent developers who are making $100,000 per year or more, you will commonly see that almost all of them had one or more products that failed before they finally hit on one that succeeded, myself included. But I think most of them will agree that those early failure experiences were an essential part of the ultimate success. If your business is just getting started, begin pumping out products and don’t worry so much about whether they’ll be hits. They probably won’t be. But you’ll learn a lot more by doing than you ever will by thinking indefinitely.

Do it Now!

W. Clement Stone, who built an insurance empire worth hundreds of millions dollars, would make all his employees recite the phrase, “Do it now!” again and again at the start of every workday. Whenever you feel the tendency towards laziness taking over and you remember something you should be doing, stop and say out loud, “Do it now! Do it now! Do it now!” I often set this text as my screen saver. There is a tremendous cost in putting things off because you will mentally revisit them again and again, which can add up to an enormous amount of wasted time. Thinking and planning are important, but action is far more important. You don’t get paid for your thoughts and plans—you only get paid for your results. When in doubt, act boldly, as if it were impossible to fail. In essence, it is.

It is absolutely imperative that you develop the habit of making decisions as soon as possible. I use a 60-second rule for almost every decision I have to make, no matter how big or important. Once I have all the data to make a decision, I start a timer and give myself only 60 seconds to make a firm decision. This includes deciding what product I’ll develop next, whether or not I’ll accept a new licensing offer, or what to write about for my next article. I think people too often delay making decisions when there is no advantage to putting them off. Many people probably spend more than 60 seconds just deciding what they’ll eat for dinner. If you can speed up the pace of making decisions, you can spend the rest of your time on action.

One study showed that the best managers in the world tend to have an extremely high tolerance for ambiguity. In other words, they are able to act boldly on partial and/or conflicting data. The software industry has accelerated to such a rapid pace that by the time you have perfect data with which to make any decision, the opportunity is probably long gone. Where you have no data to fall back on, rely on your own personal experience and intuition. If a decision can be made right away, make the decision as soon as it comes up. If you can’t make a decision right away, set aside a time where you will consider the options and make the decision. Pour the bulk of your time into action, not deciding. The state of indecision is a major time waster. Don’t spend more than 60 seconds in that state if you can avoid it. Make a firm, immediate decision, and move from uncertainty to certainty to action.

Triage Ruthlessly

Get rid of everything that wastes your time. Use the trash can liberally. Apply the rule, “When in doubt, throw it out.” Cancel useless magazine subscriptions. If you have a magazine that is more than two months old and you still haven’t read it, throw it away; it’s probably not worth reading. Realize that nothing is free if it costs you time. Before you sign up for any new free service or subscription, ask how much it will cost you in terms of time. Every activity has an opportunity cost. Ask, “Is this activity worth what I am sacrificing for it?”

Apply Zero-based Thinking

Ask yourself, “Would I have ever gotten started with this project, relationship, line of business, etc. if I had to do it all over again, knowing what I now know?” If the answer is no, get out as soon as possible. I know a lot of people that have a limiting belief that says, “Always finish what you start.” They spend years climbing ladders only to realize when they reach the top that the ladder was leaning against the wrong building. Remember that failure is your friend. So if a product isn’t working for you, dump it, and move onto something else. There is no honor in dedicating your life to the pursuit of a goal which no longer inspires you.

Locate and Recover Wasted Time

Instead of watching a one-hour TV show, tape it and watch it in 45 minutes by fast-forwarding through the commercials. Don’t spend a half hour typing a lengthy email when you could accomplish the same thing with a 10-minute phone call. Batch your errands together and do them all at once.

Apply the 80-20 Rule

Also known as the Pareto Principle, this rule states that 20 percent of a task accounts for 80% of the value of that task. This also means that 80% of a task only yields 20 percent of the value of that task. In college I was ruthless in my application of this principle. Some weeks I ditched as many as 40 percent of my classes because sitting through a lecture was not often the most effective way for me to learn. Often I would simply refuse to do an assignment because I determined it was not worth my time. There was one math class that I only showed up to twice because I could learn from the text book much more quickly than from the lectures. I only showed up for the midterm and final. I would pop my head in at the beginning of each class to drop off my homework and then again at the end of each class to write down the next assignment. I actually got the highest grade in the class, but the teacher probably had no idea who I was. The other students were playing by the rules, not realizing they were free to make their own rules. Find out what parts of your business belong in the crucial 20 percent, and focus your efforts there. Be absolutely ruthless in refusing to spend time where it simply cannot give you results. For instance, don’t spend hours adding cutesy graphics to your web site that won’t have any impact on your sales.

Guard Thy Time

Software development takes massive amounts of concentration and sustained mental effort. To work effectively you need uninterrupted blocks of time. When you know for certain that you won’t be interrupted, your efficiency is much, much higher. I believe this is one reason that many programmers enjoy working late at night after everyone else has gone to bed and the level of phone calls and email drops off dramatically. When you sit down to work on a particularly intensive business task, dedicate blocks of time to the task during which you will not do anything else. I’ve found that a minimum of 90 minutes is ideal for a single block.

Work All the Time You Work

During one of these sacred time blocks, do nothing but the activity you are focused on. Don’t check email or newsgroups or do web surfing. If you have this temptation, then unplug your modem while you work. Turn off the phone, or simply refuse to answer it. Go to the bathroom before you start, and make sure you won’t get hungry for a while. Don’t get out of your chair at all. Don’t talk to anyone during this time. If necessary, warn others in advance not to interrupt you for a certain period of time. Threaten them with acts of violence if you must. The state of flow, where you are totally absorbed in a task and lose all sense of time, takes about 15 minutes to enter. Every time you get interrupted, it can take you another 15 minutes to get back to that state. Once you enter the state of flow, guard it with your life. That is the state in which you will go through enormous amounts of work and experience total connection with the task. When I’m in this state, I have no sense of past or future. I simply feel like I’m one with the code I’m writing. Programming is effortless—it feels like lines of code are just flowing through me into the machine.

Multitask

The amount of new computer knowledge is increasing so rapidly that by default, everything you know about your business is becoming obsolete. The only solution is to keep absorbing new knowledge as rapidly as possible. So much of what I use in my business didn’t even exist five years ago. The industry today is radically different than it was even just two years ago. The best way I know to keep up is to multitask whenever possible by reading and listening to audio programs.

When watching TV, read a computer magazine during commercials. If you’re a male, read while shaving. I use an electric shaver and read during the 2-3 minutes it takes me to shave each day. This allows me to get through about two extra articles a week—that’s 100 extra articles a year, enough to keep up on a few monthly subscriptions. This habit is really easy to start. Just grab a magazine right now, and put it in your bathroom. Also, rip out magazine articles or print out on-line articles to read later. Whenever you go out, carry at least one folded up article with you. If you ever have to wait in line, such at the post office or the grocery store, pull out the article and read it. You will be amazed at how much extra knowledge you can absorb just by reading during other non-mental activities.

Listen to educational audio programs whenever you can. Whenever you drive your car, always be listening to an educational audio program. Nightingale Conant sells excellent ones on a variety of subjects, produced by experts in their fields. Most include six tapes and sell for about $60, but you can buy these used on eBay.com for a deep discount, and they are well worth the price. There are many programs on marketing and sales that can be especially useful to independent developers, especially if you know very little about these subjects. The material tends to be much more practical than what you would learn by taking classes at a university. Whereas people with degrees in marketing or business have been taught by college professors, you can learn about these subjects from millionaires and billionaires who know what works and what doesn’t. One of the best ways to save time is to learn directly from people who already have the skills you want to master.

Multitasking was perhaps the most important skill that allowed me to go through college in three semesters. My average weekday involved about seven or eight hours of classes. But on Tuesdays during my final semester, I had classes back to back from 9AM until 10PM. Because I was taking about a dozen classes each semester, I would have several tests and projects due just about every week. I had no time to study outside of class because most of that time was used for my job. So I simply had to learn everything the first time it came up. If a teacher wrote out something on the board, I would memorize it then and there; I couldn’t afford to fall behind. During my slower classes, I would do homework, work out algorithms for my programming job, or refine my schedule. You can probably find numerous opportunities for multitasking. Whenever you are doing something physical, such as driving, cooking, shopping, or walking, keep your mind going by listening to audio tapes or reading.

Experiment

Everyone is different, so what works for you may well be different than what works for everyone else. You may work best in the morning or late at night. Take advantage of your own strengths, and find ways to compensate for your weaknesses. Experiment with listening to music while you work. Pop a CD in your CD drive, and see what effect it has on your productivity. I use the free WinAMP player [Editor’s Note: Mac users should use iTunes], which can stream commercial-free radio directly to my computer all day long with a variety of stations to choose from. I find that classical music, especially Mozart, is terrific for design work. But for most routine tasks, listening to techno music makes me work a lot faster. I don’t exactly know why, but I’m twice as productive when listening to really fast music as compared to listening to no music. On the other hand, music with vocals is detrimental to my productivity because it’s too distracting. Try a simple experiment for yourself, and see if certain forms of music can increase your productivity. For me the difference was dramatic.

Cultivate Your Enthusiasm

The word “enthusiasm” comes from the Greek entheos, which means literally, “the god within.” I really like that definition. I doubt it’s possible to master the art of time management if you aren’t gushingly enthusiastic about what you’re going to do with your time. Go after what really inspires you. Don’t chase money. Chase your passion. If you aren’t enthusiastic about your business, then you’re wasting your life. Switch to something else. Try a new product line. Remember that failure is your friend. Listen to that god within you, and start doing what really excites you. The worst waste of time is doing something that doesn’t make you happy. Your business should serve your life, not the other way around.

If you’re like most people, you can get yourself motivated every once in a while, but then you get caught up and sink back down to a lower level of productivity, and you find it hard to continue with a project. How easy is it to start a new project when your motivation level is high? And how difficult is it to continue once your enthusiasm fades? Since most people are negative to one degree or another, you’ll naturally lose your positive charge over time unless you actively cultivate your enthusiasm as a resource. I don’t believer in pushing myself to do something I really don’t want to do. If I’m not motivated, then getting myself to sit down and work productively is nearly impossible, and the work is almost painful. When you’re highly motivated though, work feels like play. While in college I could not afford to let my enthusiasm fade, or I’d be dead. I quickly learned that I needed to make a conscious effort to reinforce my enthusiasm on a daily basis. I always had my Walkman cassette player with me, and while walking from one class to the next, I would listen to time management and motivational tapes. I also listened to them while jogging every morning. I kept my motivation level high by reinforcing my enthusiasm almost hourly. Even though I was being told by others that I would surely fail, these tapes were the stronger influence because I never went more than a few hours without plugging back in.

If your enthusiasm level is high, you can work so much more productively and even enjoy the normally tedious parts of your work. I’ve always found that whenever I want to take my business to a new level, I must take my thoughts to a new level first. When your thinking changes, then your actions will change, and your results will follow. Unless you are a naturally hyper person, your enthusiasm is going to need daily reinforcement. I recommend either listening to motivational tapes or reading inspiring books or articles for at least fifteen minutes every day. Whenever I’ve stopped doing this, I’ve found that self-doubt always returns, and my productivity drops off. It’s truly amazing how constantly feeding your mind with positive material can maintain your enthusiasm indefinitely. And if you multitask, you can get this benefit without investing any extra time into it.

Balance

I don’t think it’s easy to sustain long-term productivity, health, and happiness if your life is totally unbalanced. To excel in one area, you can’t let other areas lag behind and pull you down. While in college I made an effort to take off a full day each week to have a personal life. I exercised, went to parties, attended club meetings, played computer games and pool, and even had time to vacation in Las Vegas during my final semester. The high turnover rates at the end of “death march” software projects are the result of a lack of balance. To focus exclusively on your business at the expense of every other area of your life will put you in a situation where you feel like everything is an uphill struggle. Keep the balance by paying attention to every area of your life. As your business grows, be sure that your personal life grows as well.

Time Management

The main goal of time management is to squeeze as much life as possible out of every day. By developing a few new habits that allow you to work more effectively, you’ll have more time for family, friends, and your personal life. It is a great tragedy to have to sacrifice personal time because you still haven’t finished your work at the end of the day. Fortunately, you can avoid this problem by cultivating your time management skills.

Bio

Steve Pavlina is President of the ASP and CEO of Dexterity Software, an on-line game publisher dedicated to releasing retail-quality games through shareware channels. You can find Steve interacting with Dweep addicts at his website, Dexterity.com

Copyright© 2003 by Steve Pavlina

do,it,now

Getting Results in the Shareware Business

The Survey-shareware-business

Several months ago I decided to conduct an informal but lengthy study of successful shareware businesses. The primary question I asked was this: Why are some shareware developers more successful than others? I looked at dozens of shareware businesses with sales ranging from only a few hundred dollars a year to those with sales of over one million dollars a year. This article summarizes the absolute best of what I learned. Most of us enjoy working on our strengths, myself included. If you are a talented programmer, you may spend a great deal of time refining your programming skills. Many shareware developers see themselves primarily as programmers, and this makes perfect sense, since that is how most of us got our start in shareware. Unfortunately, I’ve found that the “shareware programmer” mindset will probably do more to limit your success than just about anything else. Beyond a certain minimum threshold, programming skill becomes a fairly insignificant factor in running a successful shareware business.

It is said that in every field, there are only a handful of critical success factors, such that if you master just those factors, you master your business. This is no less true with shareware, which I believe has seven critical skills. They are: decide, create, promote, sell, serve, measure, and improve. To the degree to which you fail to master any one of these skills, that is the degree to which you limit your own success. I found that the most successful shareware businesses paid attention to most or all of these factors, while the least successful ones tended to focus on only a few while virtually ignoring the rest.

So here are the seven critical success factors in shareware:

1. Decide

Set clear goals, and make plans to achieve them. Goal setting is of paramount importance in any business. A famous study conducted at Yale University found that only three percent of Yale’s 1953 graduating class had clear written goals with plans to achieve them. Twenty years later, the same class was surveyed again, and it was learned that that same three percent was worth more in financial terms than the other 97 percent combined! In addition the researchers found that the three percent had better health, relationships, and social skills. Goals must be clear, written, specific, realistic, and measurable, and every goal must have a deadline. Making more money is not a goal. Increasing your sales by 20% within the next 90 days is a goal. Write your goals down, or type them up on your computer, and review them regularly, at least once a week if not every day. You should set both short-term (one year or less) and long-term (one to five year) goals for your shareware business. Then construct plans for the accomplishment of these goals, and schedule time to work on these plans. Goals should consist of measurable outcomes, but plans should consist of actionable steps. Increasing your sales by 15 percent may be a goal, and submitting your shareware to ten more download sites is an actionable step.

The word “decide” comes from the Latin decidere, which means, literally, “to cut off from.” When you decide to set a goal, you are also deciding not to engage in all the possible alternatives. When you decide to spend your week marketing your software, for instance, you are deciding not to spend that week on product development, email, web surfing, etc. There is tremendous power is making absolute, committed decisions. If you have a tendency to lose hours, days, or even weeks to unimportant email correspondence, web surfing, phone calls, or other distractions, then you probably have impotent goals that do not inspire you. You will notice an immediate improvement in your effectiveness and attitude the first day you decide in advance how you will use your time, and commit to that decision. Simply ask yourself at any given moment, “What is the best use of my time right now?”

2. Create

Develop high-quality products that people will want to buy. Many shareware developers have mastered this skill, but it is only one piece to the puzzle. Obviously if you are going to succeed in shareware, you need one or more products to sell, yet I’ve found that many of the most successful shareware developers spend less than 50% of their time on product development. And you don’t necessarily need a lot of products; many incredibly successful shareware developers have only one or two.

Focus on creating assets in your business while minimizing liabilities. Robert Kiyosaki’s book Rich Dad, Poor Dad provides my favorite definitions of these terms: Assets put money in your pocket, while liabilities take money out of your pocket. It isn’t really that difficult to find yourself with more liabilities and expenses than assets. Magazine and service subscriptions, depreciating hardware, frequent software upgrades, development tools, web hosting and internet fees, taxes, and materials and supplies can whittle away your shareware income very quickly, especially when you are first starting out. Your goal should always be to develop assets that are capable of producing income on their own. If you aren’t making money while you are asleep, then you probably have a job instead of assets. Think of product development as investing, and strive to maximize your return on investment. You are investing your time and energy to produce something which can generate income on its own. The most successful shareware developers have spent their time building up strong assets; they make huge incomes even when they aren’t working. As you develop new products, keep in mind the goal of creating an automated income-generating system.

3. Promote

Market your business and your products, and distribute your shareware as widely as possible. If you build a better mousetrap, you will only attract mice, but if you market a better mousetrap, you will attract customers. This is an area where one finds a great disparity between the best and worst performing shareware companies. Spending 15-25% of their time and resources on marketing is common among the best companies, with little or no marketing among the worst. If you don’t like marketing or feel that it is beyond your abilities, you have two choices. Either commit to learning how to do it, or partner with someone who can help you. If you do decide to learn marketing yourself, I recommend books by Jay Conrad Levinson, Al Ries / Jack Trout, and Jay Abraham.

What are the two most powerful words in advertising? If you don’t know these off the top of your head, then you had better memorize them now. They are the words “free” and “new.” Those two words have made more fortunes than any others. You will see them used liberally in all types of effective advertising. Sometimes just adding the word “free” to the title of an ad can double or triple the response rate. Sprinkle these words generously throughout your web site. Offer free downloads, freeware utilities, new releases, free contests, a free newsletter, new tips and tricks, etc. Put them on your nag screens by offering free tech support, the newest version, free bonuses, etc. Submit your programs to shareware sites. Write and send out press releases using a PR service. Take the time to improve your search engine rankings. If you aren’t on a first-name basis with at least a dozen software reviewers, set a goal to make it so. A friendly reviewer can do a world of good for your business. I can credit significant numbers of sales to software reviewers with whom I’ve developed a relationship over a period of months. Host a regular contest on your web site. They cost virtually nothing to maintain, and they continue to bring in new traffic month after month, ultimately resulting in new customers.

There is no reason not to have a newsletter, and if you don’t have one yet, start one today. There are free services available to host your newsletter for you, making list management painless. I send out a very simple newsletter once a month, and it takes me less than thirty minutes to write each one. Every time I send one out, web site traffic and sales are measurably higher for the next several days. And since new people sign up every day, each issue tends to be even more effective than the last.

4. Sell

If you are running a business instead of just a hobby, then you actually need to sell your products. This is arguably the one area where most shareware professionals perform worst of all, but ignorance of selling is perilous. Of all seven success factors, selling is probably the single most important skill. The number one reason businesses fold is simply due to lack of sales. If you have strong sales, it is much tougher to fail, even if you screw up everything else.

Selling is both an art and a science, and there are many outstanding books on selling. Brian Tracy is one of my favorite authors in this area ?- he has several excellent books and tape programs related to selling. A real page-turner is Frank Bettger’s How I Raised Myself From Failure to Success in Selling’, which will give you a lot of anecdotal insights into selling. Many people feel that selling is beneath them, a shameless, disreputable occupation. Most of those people are broke! You can develop the greatest new product in the world, but if you don’t know anything about selling, you are doomed to failure. What business could possibly succeed without sales? Best-writing authors rarely make any money, but best-selling authors do. If I could spend a day with either the world’s greatest programmer or the world’s greatest salesperson, I’d pick the salesperson in a heartbeat.

For shareware developers, there are two important areas where selling counts most. You must have a web site that sells and a shareware version that sells. Your web site should do a lot of the prospecting and selling for you. It is your on-line salesperson. You must convince people to download your evaluation versions and to buy your full versions. Your order form must be easy to use; it is amazing how many sales are lost by poorly constructed order forms. Your shareware version is your off-line salesperson. While it is certainly possible to make money where the shareware and registered versions are identical, most successful shareware developers agree that having strong registration incentives will increase sales. Many people have time-limited shareware versions. Some use feature limitation. Both approaches work well. The more compelling reasons you give your customers to buy, the more sales you will get. For more ideas on improving your demo version’s effectiveness at selling, see our Registration Incentives Article.

Sell the sizzle, not the steak. Product features do not equal customer benefits. I could have given this article a more logical title such as, “The Shareware Success Cycle.” Instead, I gave it an emotional title. If these were the titles of two otherwise identical sales letters, the first one would have gone straight to the trash unread, while the second would have had a chance to generate a sale. It is not uncommon for a simple headline change to make a tenfold difference in response rate. By all means, you should definitely list product features on your web site, since customers will want that information, but it won’t sell your product as well as your benefits will. To determine the difference between a feature and a benefit, ask the question, “Will a customer buy the product specifically for this reason?” No one will buy your product because it supports fifty different graphics formats, floating palettes, and customizable colors. Those are features. But customers will buy your product because they believe it will save them money, make them feel more organized and efficient, entertain them, etc. The top six things that people want are survival, power, love, money, recognition, and acceptance. If you can find ways to tie any of these into your product, you will have some compelling benefits. Extracting the benefits behind your product can be challenging, but if you are getting any sales at all, then your product does have benefits. If you’re not sure what your product’s benefits are, just ask your customers why they bought it. All benefits are emotional in nature. For instance, customers may purchase a screen saver because they believe it will make them feel more creative, amused, peaceful, etc. Customers always buy on emotion and justify with fact, and if you’re honest with yourself, you’ll realize that you do this too.

A great place to learn about selling is your local WalMart-type store. Look at all the products on the shelves. How do they present themselves? Do you see the words “free” and “new” on any boxes? What is the sizzle that these products are using to entice you to buy? Let’s take diapers for instance. You may see Pampers, Luvs, and Huggies. Those are all emotion-laden names. These are products that collect your baby’s waste, but they are selling you on the values of pampering, loving, and hugging your child. If you think you are selling a product, you are wrong. Your product is a string of millions of ones and zeros. You are selling values and feelings. If you sell games, you are selling fun. If you sell utilities, you may be selling time or power. If you sell an image editor, you may be selling creativity or beauty. Know what you are really selling.

5. Serve

Provide outstanding customer service with a positive attitude. Serve the customer better than anyone else serves the customer. This is one area where shareware can massively outdo retail. Turn every tech support situation into an opportunity to create a customer who is shocked and amazed to receive such incredibly good service. Some of my users with the worst technical problems ended up becoming my most loyal customers, referring friends and family members in droves, simply because I went the extra mile to solve their problems. They know and I know that no other company would have ever gone so far to help them. See every tech support email as a golden opportunity by knowing that you can provide better service than any large retail company ever could.

Find new ways to provide value to your customers. Give away freebies now and then to keep them feeling good about your company. Fix bugs promptly, and continue to add commonly requested features. Offer a free newsletter with helpful tips and tricks on getting the most out of your products, and inform customers of updates, bug fixes, and new releases. If you talk to customers on the phone, stand up and smile as soon as you answer. Treat your customers as you would want to be treated.

It always amazes me to see fellow shareware developers complain about their customers. You may indeed have a challenging customer on occasion, and there are a couple different ways to handle it. You can blame the customer and ultimately flip the bozo bit on him/her, or you can assume total responsibility for attracting that customer and having a product or system that doesn’t adequately serve him/her. The first option leaves you disempowered with no chance to change the situation. The second option empowers you to take action to resolve the problem. If you hold a core belief that your customers are idiots, then this will be reflected in your product design, marketing, web site, etc. You will then attract idiots as customers because that’s the type of person you had in mind throughout your design process. If, however, you start from a core belief that your customers are brilliant, friendly, honest people who want you to succeed, you will make different decisions in product design, marketing, etc, and you will attract those types of customers. I chose the latter approach when developing Dweep, and I am absolutely amazed at the brilliant, warm, loving, honest customers it attracts on a daily basis. Tech support becomes a joy instead of a headache. Never release a product thinking that someone would have to be an idiot to register it, or you will attract nothing but idiots. When you release a new product, you should feel that it will attract nothing but intelligent, friendly customers. Attitude is everything.

6. Measure

Keep track of all the metrics in your business. Measure your web traffic, especially hits, visitors, and top referrers. Is your traffic increasing or decreasing? How many hits are you getting from search engines? What keywords are most effective for you? How many people signed up for your newsletter in the last month? Measure your sales, expenses, profit/loss, new customers, and number of tech support emails. Are these figures increasing or decreasing? How effective was your advertising?

Measure the subjective areas as well. Were your goals met? Where did you succeed? Where did you have a learning experience? What went as expected, better than expected, or worse than expected? What were the causes? Did you get any new reviews? If so, did they contain any constructive criticism? What kind of feedback did you get about your products and web site? Take the time to conduct a simple competitive analysis. Review five or ten competitor’s web sites, products, search engine positions, etc. Then ask other developers for their honest opinions about your own web site. If you’ve never done this before, you’ll be amazed at all the constructive feedback you’ll receive.

The purpose of measuring is to gather accurate data with which to make better decisions. If you don’t measure your results, it is very easy to draw erroneous conclusions. Create a simple spreadsheet to record your numerical results on a monthly basis, and make sure all the figures make sense to you. If you think you made a profit this month, but your checking account doesn’t reflect it, then you may be missing some expenses. Strive to understand the causes behind every figure. If your sales spike or dip, always find out why. Then do more of what causes positive results and less of what causes negative results.

7. Improve

Refine your approach in each area of your business, based on conclusions drawn from your latest measurements. If your current plan isn’t working, revise it and try something else. Apply what you learned from your last competitive analysis. Bounce new ideas off other developers. Read a book in your weakest area, and develop a new skill. Evaluate new software and web-based services, set up a network, or experiment with some new technology that can help improve your business. Expand your web site. Improve your on-line order form. Add new features to your products, and improve your product descriptions. Based on your latest measurements, how can you do more of what worked and less of what didn’t work?

Conclusion

Master these seven skills, and you will have an outstandingly successful shareware business. Fail to master any one, and that is the one that will limit the height of your success. You don’t have to be 100 times smarter to make your business 100 times more effective. The horse that wins the race by a nose may get ten times the prize money of the horse that loses by a nose. Rate yourself on a scale of one to ten in each of these seven skills. Then begin working on your worst skill first, since that will provide you with the greatest overall improvement. If you bring a level nine up to a level ten, that is only a 10 percent improvement. But if you bring a level two up to a level six, you can triple your effectiveness.

Bio

Steve Pavlina is President of the ASP and CEO of Dexterity Software, an on-line game publisher dedicated to releasing retail-quality games through shareware channels. You can find Steve interacting with Dweep addicts at his website, Dexterity.com

Copyright© 2003 by Steve Pavlina

getting,results,shareware,business

Full-time Shareware Business

Your own business

Only three percent of people ever achieve the dream of starting their own business. 80% of new businesses fail in their first five years, and of those that succeed, 80 percent of them fail in their next five years. The odds of success are not good, but there are ways to turn them in your favor. This article will provide some basic guidelines to consider when you are ready to turn your part-time shareware hobby into a full-time business. h2. Step-by-step

The first step is planning. Make a clear, written budget, and get serious about finding ways to live cheaply. Instead of going out to the movies, rent movies instead, or better yet, check them out for free from the local public library. Eat at home instead of going out. Forget about buying new clothes. Work at home instead of getting your own office. Get your basic living expenses as low as possible. Calculate your “burn rate” as the amount of time you can last with no money coming in. Your goal in the beginning is to get that burn rate to be as long as possible, and since it will take a while to build up your new income, the best way to do this is to get your monthly expenses as low as possible.

Because the failure rate is so high, you must be ultra-conservative with your cash. Treat your cash as the most precious resource you have—it is. Never buy what you can lease. Never lease what you can borrow. And never buy new what you can get used. Favor the cheapest solution whenever possible. If you don’t make a serious effort to hold onto your money, it will slip through your fingers faster than you can imagine. Don’t spend $2000 to buy that new computer if you can lease it for $50 per month. Don’t buy a new photocopier if you can make your copies for two cents at the local copy store. Maintain a 30-day purchase freeze for all new major purchases. If you decide to buy something, write it on a list on your refrigerator, and force yourself to wait a minimum of 30 days before purchasing it. You will often find that what you thought was a necessity wasn’t even needed at all. At the end of the 30 days, if you can commit to putting it off for another 30 days, then do so. Procrastinate on spending money whenever possible.

Get serious about building your income, and work hard, hard, hard. You must get to the point of positive cash flow as quickly as possible. It is more important to reach this point than it is to go after some one-time big money deal. When you go full-time, you are running a business, not enjoying a hobby. Pretend you have your own stockholders that expect you to start showing a profit as soon as possible. In the early stages before you are profitable, you must keep your focus on getting to a positive cash flow. Until that goal is achieved, everything else is secondary.

Be flexible. As soon as you realize your original plans aren’t working, change your approach. You’ll shift directions a lot in the beginning until you find what works for you. I can’t recall any developers whose first release was a hit. I didn’t see decent sales until my fifth release, and that seems about average among the successful shareware developers I know. Your first product will probably fail. And when it does, dump it and get started immediately on the next one. Take on consulting work on the side to make up for cash shortages. If you have even halfway decent computer skills, consulting work should be easy to get. My wife is a psychology major with no technical background. But she taught herself HTML a couple years ago and now gets all the consulting work she wants at $75 per hour, creating and maintaining web sites for small businesses. She uses this to supplement her income while she works on building her main long-term business, a vegetarian web site. Consulting is an easy way for technical people to bring in extra cash. I did consulting work myself for a while, and I hated it so much that it motivated me to make my shareware business profitable very quickly.

Practice risk management. Realize that risks multiply, so taking a lot of small risks is like taking one big risk. Keep a top-10 risks list, and update it once a month. A top-10 risks list is a prioritized list of the 10 greatest risks that could cause your business to fail, particularly those that will cause you to run out of cash. For each risk you identify, establish a plan to prevent it from happening. And decide in advance what you will do if a risk does become reality. Always have a plan B. For instance, if you don’t make enough sales by the 20th of the month to cover your bills, you might use that date to know that you’d better do some consulting work fast to make up the shortfall.

Your own boss

Once you go full-time, realize that you are no longer a programmer. Now you are a business owner. As such, programming is only one of many skills you must master. Marketing and sales skills are perhaps even more important. If you aren’t an expert in selling, you’d better become one fast. Read books and listen to tapes to improve your skills in your weakest areas. There are plenty of great business books sitting on the shelves of your local public library. Commit to reading business books 30-60 minutes a day. No matter how much you think you know, you have a lot to learn.

It is a truly wonderful experience to take your shareware business full-time. If you ask anyone who’s done this, you’ll often hear stories of hard work overcoming great adversity, but what you won’t hear are regrets. I don’t know any full-time shareware developers who wish they hadn’t gone full-time, even if they’re making less money than they were in the corporate world. It is a wonderful feeling to be your own boss, to set your own hours, to choose your own projects, and to get paid for your results. Building a successful business is one of the most challenging yet most rewarding things you will ever do.

Bio

Steve Pavlina is President of the ASP and CEO of Dexterity Software, an on-line game publisher dedicated to releasing retail-quality games through shareware channels. You can find Steve interacting with Dweep addicts at his website, Dexterity.com

Copyright© 2003 by Steve Pavlina

full,time,shareware,business

Networking Without the Cables

Please think of an intro header

Many independent developers are skilled at networking a home office, but they’re often lacking in the area of human networking. In early 1999, I knew my lack of networking was going to hold me back if I didn’t do something about it. As an independent developer, I felt isolated and cut off from the rest of the industry, and I knew I was missing out on opportunities because of it. I would often struggle to solve a problem that someone else had probably already solved, but I didn’t know where to look for the solution, and it was taking me a lot of time to do everything on my own. I quickly realized that if I just had a small network of developer friends, it would save me a huge amount of time because I’d have people to turn to for help and advice. And I also knew that I could help others in the same manner. So one day while listening to a tape about the benefits of networking, I made a firm commitment to get out of my fortress of solitude and start building a human network.

Looking back, this turned out to be one of the most powerful and life-enhancing decisions I ever made. Today I have a strong network of dozens of great friends and contacts in the industry. I can achieve much more in less time because I have a tremendous number of outside resources I can turn to for help. And to a large extent this all works passively. New opportunities come to me every week through my network, and I don’t have to work so hard to seek them out on my own. I feel as if my vision has expanded a hundred fold. I want to share with you what I’ve learned through this process and how I think networking can benefit you specifically. To some of you, what I’ve said so far may seem obvious, but keep reading anyway because you may find something useful in the remainder of this article.

Why network?

The benefits of networking are many. Even if you only work on your business part-time while holding a full-time job, you should know that most jobs are never advertised. Most jobs are filled through networking. The more people you know who can help you, the more opportunities will come to you. As I am building my company, my first choice for hiring new people would be to put the word out through my existing network. Networking saves time because it is an easy way to find whatever it is you want, such as a new job, a new home, a solution to a problem, or a new business deal. Networking is a lot like investing. You put a little into it, but the payoff accumulates year after year, eventually growing far beyond your initial deposit.

Networking is an extremely good complement to technical work, and it helps to balance you as a person. If you are feeling burnt out from technical work, you can balance your day by investing time in networking. I’ve found that I enjoy my work a lot more, and I’m a lot more productive when I know others are keeping tabs on me. Sometimes I’ve found it hard to motivate myself when my goals are known only to myself, but when I share them with others, I will often work harder to be sure I don’t disappoint them. Networking gives you a feeling of connection with your industry, and this allows you to see how your work is contributing to the whole in a positive way. Sharing resources with others is a terrific form of contribution in itself, something that all humans have a strong need for. Networking will also help you grow professionally by leaps and bounds, especially if you continually associate with people who are superior to you in some way (higher income, more organized, more honest, etc).

Build your network carefully.

We tend to become like the people we associate with most. Grab a piece of paper and make a quick list of the ten people in your life you spend the most time communicating with, whether in person, by phone, by email, or by any other means. Study that list carefully. That list is your future. And if this list hasn’t changed much in the past few years, then my guess is that you’ve been feeling stagnant or even stuck. My prediction is that you earn about the same income as the others on your list. You probably have similar standards of living to those you spend the most time with, and your lifestyles may be similar as well. If the people on your list are very neat and organized, you’re probably the same way. If they’re unhealthy, you’re most likely in the same boat. If you feel like you’ve been stuck in the same situation for a length of time and that your efforts to change have felt like an uphill battle, that list is the likely culprit. One of the easiest ways to change is to associate with others who’ve already achieved what you want. Their values and beliefs will essentially infect you, and you will achieve what you want almost effortlessly. Think back to a time in your life when you experienced a major change in the names on your top ten list, such as when you moved or switched jobs or schools. Didn’t you find that you became a slightly different person in the new environment?

For example, let’s say you want to earn $100,000 a year or more from your business. How many of the people on your top ten list are already doing this? If you only associate with others whose businesses are barely scraping by, you’ll likely have a hard time getting your sales to grow beyond a certain point. Every level of income is associated with different beliefs and values. People who earn $100,000 a year simply don’t have the same beliefs as those who earn $10,000 a year. Were you aware that the average lottery winner spends all the money they won within two years and has nothing to show for it? The reason is simple—these people kept their old network, and thus their old beliefs and values continued to govern their actions, leading them right back to where they started. My shareware income grew tenfold in one year because I made a decision to associate with people who were making ten times as much money as I was. I passively became more like them, and the results naturally followed. I’m continuing to add more people to my network who are again making ten times more money than I am now, and my income is continuing to increase up to their level. I’ve also changed a great deal as a person as a result. If you want to become better at anything, start making friends with people who are already successful in that area, and get them into your top ten list. You can become better at absolutely anything using this approach. But before you add anyone to your network, make sure you want their results, in at least some area of your life.

So how do you build a strong network? There a many ways to do this, and here are some that seem to work best for independent developers:

Become active in trade associations.

One of the easiest ways to build a network is to make contacts within a relevant trade association, such as the International Game Developers Association (IGDA) or the Association of Shareware Professionals (ASP). If you aren’t making back your organizational dues many times over each year from the benefits of membership, then you aren’t doing enough networking. For instance, ASP members constantly share resources in the private members-only newsgroups. If you haven’t already been participating actively in a trade associations, you’re absolutely missing out on free opportunities that can make you a lot of extra money for very little effort.

Let me give you a couple typical examples. Many months ago an ASP member posted a link to a new shareware site that accepted PAD files. I submitted my PAD file, and throughout the next few weeks, I received several sales from that site. It took approximately 30 seconds for me click on the link and submit my PAD file, yet that one tip made me more money than the cost of my annual ASP dues. And this happens all the time. Another common occurrence is that members often buy products from other members. Shareware developers aren’t my target market, yet I sell more than enough games to fellow members every year to more than pay for my dues. If you participate in the newsgroups and include your URL in your signature, other members will visit your web site and get to know your product line. Members generally aren’t pushy in promoting their own products to other members, but they get sales just by being visible and contributing. A side benefit is that you become aware of many useful products and services you might need someday. I often buy products from other ASP members, and there are several members with whom I spend hundreds of dollars annually. Not all ASP members are developers ? there are also many vendor members who provide useful services. So if you aren’t participating actively in a good trade association, then you are essentially letting free money escape you.

Volunteer.

A strategy that worked well for me was one that I learned from author/speaker/consultant Brian Tracy, who credited it with helping him become a multi-millionaire over time. He simply started volunteering. While he was a salesman, he joined the local chamber of commerce and volunteered to serve on a committee. This made him many connections in the business world, and within a short time he was offered a new job through someone in his network for double his previous salary, which he accepted. He continued volunteering and found that more and more opportunities came to him this way. He was later offered a job as the head of a division of a large company, and from there he went on to start his own businesses. This is essentially the same approach I’ve been using. I didn’t feel the chamber of commerce in my area would do much for me, so I decided to volunteer within the ASP. About a month later I became the Vice President and a year later, the President, both of which were unpaid volunteer positions. Relatively few people volunteer, so those who do can quickly reach the top of any organization.

So why does volunteering work? Because only successful people tend to volunteer. Unsuccessful people don’t volunteer—they complain instead. I’ve found that the cream rises to the top, so volunteering is an easy way to associate with successful people. If you look at the people who volunteer in the ASP for instance, I think you’ll find that their incomes are significantly higher than the average member. This appears to be true in the IGDA as well. Plus they generally seem to be happier and more successful in other areas of their lives as well. Volunteering builds your self-esteem; it helps you see yourself as a person who contributes. This in turn causes you to feel that you deserve more, and so you tend to take advantage of new opportunities that are consistent with your improved self image. Greater wealth is just one common result.

Network on purpose.

Last year I attended my high school reunion, and I found many people thought they were there to network, ready to hand out their business cards to anyone who’d take them. These were people of widely different professions who simply couldn’t help each other in meaningful ways for the most part. There are a few professionals who can benefit from this type of general networking, but it’s not particularly useful for a game developer. A better use of your time is to network at small, well-targeted conferences, such as the Shareware Industry Conference. There you can meet people who can actually help you, and you will easily find ways to help them. Intellectual exchange is one of the most rewarding benefits of networking. I love going to conferences because I always come away from them with a tremendous feeling of growth.

Build your reputation.

A key component of long-term networking is your reputation. It is perhaps your most valuable networking asset. If people come to know you as a person of genuine integrity, your reputation will spread beyond the people you know directly, and your contacts will be far more willing to share their best resources and opportunities with you. If you ever make a mistake, people will be very quick to forgive you if you have established a positive reputation. Note that having a good reputation is not the same thing as being popular. It is more important to be known as a person of integrity than it is to be popular. I am always more willing to trust the trustworthy than I am to trust the popular. Of course the reverse is also true. If you develop a reputation for dishonesty or demonstrate a lack of integrity, nothing will kill your chances for networking more quickly. New business is built on trust, so trust is sacred. Never ever violate another person’s trust. When it comes to networking, complete honesty and integrity is the only policy.

Contribute!

Look for ways to give rather than to get. You don’t have to be an expert; just offer to help others in a way that’s easy for you, such as by answering questions and volunteering advice in areas in which you are knowledgeable. If you gain a reputation for being a person who contributes, you will have no shortage of people offering to help you when you need it. A common pattern I see in various newsgroups is that those who give the most also get the most. If you answer others’ questions whenever you have knowledge that could help them, you may find more people willing to help you as well. Think of yourself as having a networking bank account. You have to make a few deposits first before you can start making withdrawals.

If you continually look for ways to contribute to others and your industry, new avenues for networking will open up to you. If you have decent writing skills, write articles. If you have an interest in public speaking, volunteer to speak at a conference. Writing and speaking can help you expand your network tremendously. You can reach many more people this way, and it helps strengthen your reputation as a person who contributes.

Overall, networking is a fairly easy skill to develop and need not consume much time, yet the payoff can be huge. As your network expands, you’ll gain greater and greater leverage. If anyone in your network hears about an opportunity that can be useful to you, chances are you’ll hear about it too. Instead of having to struggle to find opportunities, they’ll come to you passively, so by nurturing your network, you can achieve your goals with far less effort. For me the process has felt like planting ears throughout the industry, all listening for opportunities. If you haven’t been doing much networking, do yourself a big favor and just get started. And realize that there never was a winner who wasn’t at some point a beginner.

Bio

Steve Pavlina is President of the ASP and CEO of Dexterity Software, an on-line game publisher dedicated to releasing retail-quality games through shareware channels. You can find Steve interacting with Dweep addicts at his website, Dexterity.com

Copyright© 2003 by Steve Pavlina

networking,without,the,cables

Basic Negotiating for Fun and Profit

Introduction

Many independent developers eventually find themselves in a situation where they must negotiate a contract for the first time, such as for a publishing deal. And many developers are taken advantage of on their first deal because of a lack of basic negotiating skills. This article will attempt to give you a general understanding of how to negotiate a fair deal.

T.I.P.

The first thing you must learn are the three variables of negotiation: time, information, and power. You can remember these easily with the acronym “TIP,” so the next time you have to negotiate an agreement, you’ll remember the “TIP” to think in terms of time, information, and power.

Time

The rule of time is that whoever has the loosest time constraints has an advantage in any negotiating situation. This means that if a publisher comes to you, and they say they need your product for Christmas, you know that they have a deadline, and this gives you an advantage. Whenever possible, always find out if the other party has a specific time frame or deadline in mind. The party with the tighter time constraints will often make concessions at the last minute in order to make their deadline. In fact, the best concessions are generally made shortly after the deadline has passed. Deadlines can often slide by a few days, and as soon as the first deadline passes, it tends to make people more flexible if they still want the deal to go through. Time is also a factor if you only have a limited amount of time to use for negotiating. If you fly out to meet with someone to negotiate a deal, and they know when you have to catch your return flight, they may attempt to stall and run down the clock in the beginning, leaving the biggest issues to the last minute when you are forced to make concessions. You are always at a disadvantage when you are forced into a set period of time in which you must reach an agreement. Avoid this situation whenever possible. You can negotiate most effectively when the other party perceives that you have all the time in the world. Incidentally, a relatively high percentage of deals are finalized on Fridays. There is a perceived time pressure to get things wrapped up by Friday so everyone can enjoy the weekend with the certainly of knowing that the deal is done.

Information

The rule of information is that whichever party has the best information has an advantage. Find out as much as possible about the other party, especially how your deal would fit into their overall situation. If they’re a public company, get a copy of their annual report, and find out how their stock is doing. Read their press releases, visit their web site, and learn as much as possible about them. The more pertinent information you have, the better. This is one case where the small independent developer has the advantage, since it’s often easy to find information on a large company and tough to find out as much about a small one.

For instance, if a publisher approaches you, find out what other products they’ve published, and track down and contact the developers. Find out what those developers thought of working with this publisher. Ask the publisher for references, and if they refuse to provide any, be aware that this is a big red flag if they’ve already published several games.

I recently received a offer from an unfamiliar publisher. I visited their web site, found a list of developers whose products they published, and sent a short email to each developer. Most responded, and what I learned was very specific and very negative. I turned down this publisher rather quickly after that. Sometimes the right information can tell you that a deal is not worth entering.

Do your homework. If you are negotiating with your boss for a raise, then having information about salaries can be helpful. If you are underpaid relative to industry standards, pointing this out to your boss when asking for a raise can give you a great deal of leverage. If a publisher offers you a deal, try to find out if their royalty rate and advance offers are competitive. If the figures are below industry standards, then pointing this out to the publisher can help you create some pressure to get a better offer. To the degree that you lack vital information, you are at a disadvantage when negotiating. Internet newsgroups and forums are great resources for learning such information. Having a good attorney will also give you an information advantage, especially if the attorney has done many similar deals in the past. If you’re not sure whether you need an attorney or not, then you definitely need one.

Power

The rule of power is that whichever party has the greatest perceived power has an advantage. Power is the wildcard in any negotiation. Power refers to the ability of the one party to create leverage over the other. For instance, you may be at a disadvantage when negotiating with your boss, since s/he may have the power to fire you or promote you. However, if you are an indispensable employee that the company needs to survive, then you have a great deal of power. Note that this is perceived power, meaning that it only works if the other party perceives its presence. Toddlers are the best negotiators in the world, since they have the ability to scream their lungs out in public; this doesn’t concern the toddler, but it will create instant leverage in any parent.

Your attitude towards a particular deal can make a big difference in your level of power. If you need a deal in order to pay your bills, and the other party knows this, then you are at a serious disadvantage. If you don’t need a deal at all, but the other party is in a desperate situation, then you have an advantage. In any publishing deal, it will help if the other party perceives that you don’t need the deal, even if you do. It help raises your level of power in the eyes of the other party. As soon as you reach the point where you decide the deal must happen, you lose a great deal of power and will likely make many unwanted concessions at the last minute. Treat every deal like a bonus that you can take or leave with impunity. Until the contract is signed, always be mentally open to the possibility that you won’t reach an agreement. The three variables of time, information, and power will help you get an idea of how much leverage you’ll have in any negotiation. The hungry person isn’t going to get a good deal when negotiating for food, nor will the person who doesn’t know what food is supposed to cost, nor will the person who has only one source for food.

Go for win-win or no deal

Having negotiated a variety of deals myself, I am convinced that it’s in everyone’s best interest that both parties be committed to a win-win deal. In my experience the only deals that stick are those that are win-win. Deals that turn out lopsided tend to fall apart somewhere down the line or end up in lawsuits and badly burned bridges. Whenever you negotiate, think of solutions that will satisfy both sides’ needs, not just your own. Whenever a publisher sends me a contract that is massively in their favor, I know instantly that I’m dealing with a win-lose negotiator. I’ve never entered a good deal when the initial agreement started out very lopsided. A fair publisher will generally start with a fair agreement. If you find that you’re shaking your head at every paragraph, it’s probably best to walk away. It will save you a lot of time in the long run. More than once I’ve sent the first contract back and asked for a real contract. If the publisher plays dumb after that, I know they’re looking for suckers, so it’s time to walk away.

Decide what you want in advance

Before starting any negotiation, decide what are your “must have” terms, “nice to have” terms, and “must not have” terms. For instance, perhaps you decide that you want to get 20% royalties, that 10-15% would be acceptable, and that less than 10% would be unacceptable. If you decide this in advance, you will be able to prevent yourself from making unwanted concessions that you later find unacceptable.

Commit everything to paper

Never sign a contract that doesn’t accurately reflect what you’ve verbally agreed to. Sometimes a publisher will tell you one thing and then send you a contract that says something entirely differently. When questioned, they may give the excuse, “that’s just our standard agreement; everyone signs it.” Then they’ll go on to say how it’s too much trouble to change the written contract. Don’t buy it. Once you sign the contract, your deal is what’s in writing and only what’s in writing. Even with the best of intentions, people can leave companies, and then their replacements will have only the written agreement to go on. This has happened to me more than once. If you don’t get it down on paper, it’s as if it didn’t exist.

Never negotiate against yourself

If you make an offer, and the other party refuses, always wait for a counteroffer. Never say, “$5000? No? Ok, how about $4000?” It’s impossible to win when you bid against yourself, but I see this happen all the time. One publisher recently offered me a $5000 advance for a publishing deal. I told them that $5000 seemed a bit low. So they came back and offered $10,000. What if $7500 had been acceptable to me? I knew immediately that I was dealing with a very bad negotiator. They should have asked me for a counter-offer. I might have said $10,000, and we might have settled at $8000. Instead, the publisher has already pushed it up to $10,000 on their own, so if they’re done negotiating against themselves at that point, I can counter-offer with $15,000 or even $20,000, and we end up settling on a nice five-figure advance. I have to say I really love it when people do this. Whenever you are turned down, always wait to get a counteroffer first. A corollary to this rule is that you should always attempt to get the other party to name a figure first whenever numbers are concerned.

Everything is negotiable

Well, almost everything. Consider your first offer in any deal to be just a starting point for negotiations. I have never signed a publishing deal as it was first presented, no matter how much I wanted it. There are always changes to be made because in every relationship, the parties have slightly different needs to be addressed. If the other party is absolutely inflexible on a particular issue, then look for other areas where they can be flexible. If you can’t get a higher royalty rate, for instance, then ask for a higher advance, or try to get a minimum monthly guarantee. If the deal doesn’t seem fair to you, and the other party is inflexible on everything, then most likely they are looking for a win-lose deal, so you’re probably best off just walking away. You can generally tell you’re dealing with a fair negotiator if s/he takes a genuine interest in addressing and meeting the needs of both parties, not just his/her own. The goal of a fair negotiator is to solve all the problems that stand in the way of closing the deal, such that both parties can be winners.

Conclusion

Realize and accept that not every deal is worth having. In my experience most publishing deals in particular aren’t worth entering. If you wish to learn more about the subject of negotiating, I recommend the books You Can Negotiate Anything’ by Herb Cohen and Secrets of Power Negotiating’ by Roger Dawson.

Bio

Steve Pavlina is President of the ASP and CEO of Dexterity Software, an on-line game publisher dedicated to releasing retail-quality games through shareware channels. You can find Steve interacting with Dweep addicts at his website, Dexterity.com

Copyright© 2003 by Steve Pavlina

basic,negotiating,for,fun,and,profit

iDevGames Forum

iDevApps Forum