Monday, September 21, 2009

Sandwich Principles

Sandwiches have always been one of my favorite foods.  The idea of all food groups coming together in one food entity is interesting and appealing to me.  I’ve had countless sandwich experiences over the years, both of my own making and those of others.  Based on those experiences and experiments I have conducted, I have discovered the following true principles of sandwich making.

Moisture

A dry sandwich is a complete and utter failure.  PBJ’s are the most common culprit for violating this principle, but meat sandwiches can do it sometimes, so care must still be taken.  Moisture can come from a number of sources: condiments, veggies, sauces, and some meats.  A good sandwich fills the mouth with every bite, and that moisture is essential for chewing and swallowing.  Note: mayonnaise, olive oil, and other fats might not technically be “moist”, but they count if they provide the necessary lubrication.

Stacking Order

The order you put things on a sandwich matters more as the sandwich gets bigger.  Even though it all gets mixed together in your mouth eventually, it doesn’t start that way.  A classic example is mustard and salty meat.  Usually, the salty meat should go on top of the mustard so they enter the mouth together.  The acidity of the mustard tempers the saltiness of the meat, and the strong flavors of the meat tempers the power of the mustard.  When put next to each other on the sandwich, they enter the mouth together and right from the start of chewing they are synergizing.  If you put the mustard on the top half, then when you take a bite, you get strong, salty meat in one part of your mouth, and strong, acidic mustard in another.  Only after several chews do the two mix properly.

Surface Area for Sauces

Sauces have a tendency to run out of a sandwich.  I’m sure you’ve all eaten a sandwich or hotdog during which some sauce squirted or dripped out when you took a bite.  LAME!  A good sandwich needs moisture, but that moisture is not doing its job when it’s on your shirt.

No matter how thin a sauce is, at least some if it will stick to whatever surface it touches.  The key to keeping the sauce on the sandwich is to provide enough surface area.  Even thick sauces like mayonnaise will squirt when surface area is insufficient (or if there's too much sauce).

Shredded lettuce is the easiest way to add surface area for sauces.  For that matter, all veggies add surface area and nooks and crannies for sauce.  Don’t use lettuce leaves.  In addition to not having much surface area, they also violate another sandwich principle (discussed below).

The format of the meat you use also makes a difference.  Shredded beef (like in the pot roast sandwiches) has a lot more surface area than the sliced deli meats.  These sandwiches hold in the gravy because the beef had surface area!

Keep the Contents in the Sandwich

This is the classic sandwich problem and is a more general problem than the sauce problem discussed above.  This is also my kids’ least favorite sandwich issue (more tears have been shed at our dinner table over falling-apart sandwiches than any other thing).  When you buy bite into a sandwich, the filling should not fall out the back side or even get pushed out like a hernia.

Many restaurants serve their sandwiches with a toothpick stuck down the middle.  While effective, the toothpicks are hard to eat around, and eventually you have to take it out altogether, leaving you alone with the physics catostrophe assembled in the kitchen.  While I have learned various techniques for eating those sandwiches which keep me from joining my children in tears, there are things the artist can do to create a sandwich that is easier to eat.
  • Shredded lettuce, cheese, and meat not only increase sauce surface area, but they also greatly reduce slippage.
  • Put slices of meat, cheese, and lettuce directly against the bread and put those lubricating sauces in the middle.
  • Hollow out the roll/loaf you’re using (this helps in 3 ways, discussed more below)
  • Put less stuff on the sandwich.  It’s sad when you have to make cuts, but sometimes you just have to.
Hollow out the Bread

In addition to the 3 ways this helps keep sandwich contents in the sandwich, this also reduces the amount of bread that is diluting the flavors in your sandwich already.  This is where good bread really shines.  In the sandwiches I made at our recent family reunion, the bread provided a crispy, chewy shell with a taste I could still discern amidst all the other ingredients.  It was delicious.  If you use store-bought french bread, hollow it out for sure, because otherwise you’re going to be chewing a whole lot of sub-par bread.  Just pull out the knife and get that bread out of the way.

Here are the 3 ways hollowing out the bread keeps the fillings in the sandwich:
  • The sandwich ends up thinner, so it’s easier to fit in your mouth.  The way the jaw is hinged, it pushes forward and up, and your mouth blocks the filling from getting squished into your mouth, so the only place it has to go is out the back of the sandwich.  A shorter sandwich lessens this pushing action.
  • Cut a loaf of bread in half and open it up.  Lay them there on the table cut side up.  What do you see?  Two flat surfaces.  Slap some mayo on there, and you have 2 slippery slides to build your sandwich on.  Hollow them out and suddenly you have gravity on your side.
  • Hollowed out, the bread forms a shell that nearly (or completely) encases the fillings.  It is much easier to hold the sandwich such that your hands can keep the bread barrier in place so the fillings don’t come out.
That last one was the reason I typically make 4 smaller loaves instead of 2 larger ones when I make bread.  The easiest part of a loaf of bread to eat as a sandwich is the end, because it has a complete barrier all around the edge.  Twice the loaves means twice the ends.  Middle pieces lose that protection.  Ideally, the sandwich loaves would be small enough so that only wholes or halves are needed to serve everyone.

Our reunion was actually the first time I tried hollowing out the bread, and those sandwiches were by far the easiest to eat of all the big sandwiches I’ve ever made.  I didn’t hear any single child cry this time.

Balance Taste and Texture

This is a general cooking principle, and it’s often ignored by the ordinary home chef.   By “taste” I’m talking about the 4 types of taste buds we have: sour, sweet, salty, bitter.  By “texture” I’m talking about mouth sensations like crispy, crunchy, chewy, soft, creamy, oily, astringent (think: cranberry juice), meaty, spicy.  Foods that have more than 1-2 types of taste are perceived as being fuller and deeper, and to have more developed flavor.  Foods that have a variety of textures are just plain funner to chew.

Mayonnaise is so good because it tastes a little sweet, a little salty, and a little sour with a creamy/oily texture that compliments salty meat so well.  For many, mayo is all a sandwich needs.

Cured meats and cheeses and many kinds of veggies (like lettuce and green pepper) have some bitter flavor in them—not enough to really notice in the sandwich, but enough to excite some of those taste buds and make the overall sandwich experience fuller.

Bread, tomatoes, some kinds of vinegar, mayonnaise, onions, and bell peppers all impart some sweet flavors.  Again, they’re not enough to make the sandwich taste sweet, but they fill out the flavor.

Sour comes from mayo, mustard, pepperoncinis, pickled jalapenos, vinegar, pickles, and some kinds of cheese; and even fermented sausages like salami and pepperoni have a slight tang to them.

Salty is easy: meat, cheese, mayo, pickles, olives—even salt itself is sometimes warranted.

Whatever kind of sandwich you want to make, make sure you have all those taste bases covered.  Your palate will vary from others, and you might prefer a different balance between the 4 tastes than someone else, but you need some of each to enjoy a full flavor.

The same goes for texture.  Variety is fun.  With bread, meat, veggies, cheese, and sauce, a sandwich already has a lot going for it, but there are still twists and turns you can take.

Making Money in Indie Games?

Over on Gamasutra, Jeff Ward asked this question: "Is there money to be made in indie games?" He discussed a few platforms, a couple revenue models, and concluded, basically, that it doesn't look like it with those platforms/models. Acknowledging that he's probably missing something, he ends by asking if it's really so bleak, if maybe there are other models that could work. This is my response....

Money

A good question to start with is: Why do you want to be an indie developer? The next question is: How bad do you want it? What sacrifices are you willing to make?

Jeff used the figure $40,000 per developer in his calculations. $40,000 is NOT much, like he said, especially for someone like me who has 6 kids. But in reality, you can get by on a LOT less than that. We have a monthly budget of $100 for household items, including formula, a few food items, shampoo, etc. We buy dry beans, wheat, oatmeal, cooking oil, rice, honey, sugar, and salt in bulk. Raise a big garden in the summer and can a bunch, and that will supply veggies year-round. People lived for thousands of years before grocery stores and on-demand fresh food were "invented". We moved to the country and bought a home on several acres of land for a fraction of what our suburban home costed us. We have high-speed internet, and that's all we need to make games.

We don't have health insurance yet, and that's not something we can do without forever, but if it means getting your indie studio started, are you willing to make the cut?

How bad do you want it?

I'm tired of eating beans and oatmeal. Having grown up in the suburbs, I miss having things around to go out and do. Jeff's post demonstrated why cutting costs is so important: it can be really hard to bring in money. The less money you need, the more quickly you can become independent.

Opportunity

It is my opinion that there has never existed a greater time to be an indie developer than right now. Tomorrow will be better, but so far today is the best yet. Everyday, the tools we need are getting better and cheaper; the distribution channels are getting better and cheaper; the market is evolving and becoming more and more conducive to indie development.

There are 2 trends in particular, driven by the internet, that are beginning to emerge in society at large that are making the biggest difference for us. First, big corporations are a liability. They can't move quickly. They can't react quickly. They can't innovate. Some can better than others, sure, but most can't. We indies can't compete with big corporations in the market they are designed to dominate. But we can go where they can't. Because of the internet, we can tap into and find markets that are new or previously hidden.

The second trend is the death of the middleman. Retail stores are more and more irrelevant. Are they still a significant source of revenue for big companies? Of course. But they're on the way out. We indies don't need them. The rising generation doesn't care if their fun comes from the store down the road or the store they type in. It's the same. Actually, it's not the same. The store online is easier and faster.

Publishers are becoming irrelevant. They're a long way from actual death, but they're past their prime. They're becoming obsolete. Publishers used to be important for 2 things: manufacturing (which we don't need anymore) and advertising (which doesn't work anymore). The only thing they have left to offer developers is money, and if you take it, you're suddenly not so independent any more.

One middleman that is relatively healthy right now is the internet portal. The internet enables global competition that keeps any single portal from being very big, from a market perspective. A single portal may have millions of players a month and may make millions of dollars a month, but it's just a single player in a huge playing field, no more than small fraction of the market share. Portals talk big and demand big cuts, but they're nobodies. As entrepreneurs develop new technologies to make filtering the noise of the internet easier, portals will die too.*

Console makers are middlemen, but they're also platforms, so they're a little different. They are big corporations designed for working with big corporation developers. They'll keep making new consoles every few years, and they'll continue to sell, but we'll never need them, just like we don't need them now. We have open platforms with cheaper tools, no middlemen, and zero distribution costs. Console makers will make their platforms more indie friendly once they realize what they're losing with their current policies.

A New Paradigm

Jeff Ward is right that the revenue models that are industry standard don't work so well for indies. There are many great games that don't become hits, only because they didn't get the chance. The right person needs to see it at the right time and pass it on to the right people for the word to spread to the right places for people at large to hear about it. As technology improves, more games will have that chance. Eventually, every good idea will find an audience. We're not there yet, but it's coming.

Flash portals are currently the best tool we've found for getting our game in front of people. People go to portals and play many games. There are thousands of new game out every month. Many portals have ratings that allow good games to float to the top. Good flash games spread virally, as web masters copy them from other portals. It's working great for us. We sell a downloadable premium version via upsell ads in the flash game. We use Adobe AIR for the download version, so it's exactly the same code base and assets as the browser version. Cheap to make, cheap to distribute. We continue to make more than we need to pay the bills a year after release. We recently got raises. We have 9 months of salary in the bank. We've paid contractors for music and story for our next game. It's building. Pretty soon we won't have to eat beans every night. We haven't had a huge hit, only modest sales. Our next game won't have to be a huge hit either for us to continue doing what we love and maybe even get health insurance.

I'm sure there are other models that work, and I'm sure even more will be discovered soon. The Industrial Revolution brought us the "bigger is better" mindset. The Information Revolution is changing that. We have more opportunity than ever before, and it's only getting better. We just need to think in new ways, to look at the world through new glasses.

How bad do you want it?

* I don't mean portals will actually go out of business. They'll just be forced to charge a reasonable fee for the eyeballs they attract. Their inflated egos will die. They'll recognize that they are actually small fish in a huge sea. (Any relation between that metaphor and any existing portal is purely coincidental. I don't mean to single out any one portal in particular.)

Just Do It

I just finished reading Tadhg Kelly's post entitled Make Your Own Games on his Gamasutra blog. I think it's an interesting article that rings true with me personally. Tadgh used a music analogy to illustrate his point: if you really want to be a creative director in the industry, your best bet is to start a band rather than work in an orchestra. In addition to correcting some musical errors (yes, we love the internet), the commentors raised some other points that compel me to write a response.

There are 3 issues I want to discuss: creativity in an indie studio vs. a large company, the value of large-company experience, and opportunity within the game industry at large.

Creativity

In any game development project, there needs to be clear, centralized creative direction. In an orchestra, individual musicians have to keep within their well-defined boundaries. Individual varition of tempo or pitch will ruin the music. That's necessary in a development team as well. Game rules and behavior need to be consistent. Art needs to be consistent. Whether the creative direction comes from an individual (like Will Wright) or a committee (like Valve), all developers must conform to the vision laid out by the designer(s).

Because of the cost of developing AAA titles, game companies are understandably selective of which creative opinions they fund. These companies tend to stick with designers that are well-known and proven. Tadhg made the point that landing a position as the creative director for one of these companies is not likely to ever happen to you. Most people would probably agree with that.

While it is possible for exceptional talent to rise to the top, most people are not exceptional. But that said, you don't have to be exceptional to design an awesome game. You only have to be exceptional to design an awesome game funded by an existing large company.

You can be the creative director of a game development team NOW by starting your own.

Large-Company Experience

It is a common belief among many in the industry that working a job as a developer with a large studio is a necessary prerequisite to starting your own studio. I agree that it's possible to learn skills as an employee working within the necessary “orchestral” constraints of a large company that will help you if you decide to go out on your own. However, I don't see that as necessary.

I have two reasons. First, you can learn those same skills on your own. Being an employee requires mostly technical skills to execute the vision of another person. Technical skills can be self-taught and are generally applicable to whatever game you might be working on. I would argue that the only thing you can only learn as an employee is how it feels to be an employee. There's nothing wrong with liking it. You just can't know what it feels like until you've done it. Perhaps getting a job to learn THAT is a push you need to get out on your own.

Second, independent game development requires skills that can't be learned as an employee. You can't swim by reading a book, and you can't experience the exhiliration of shipping a title that is your own creative brain child unless you do it. When you're working on something that you are truly passionate about, you can learn new things at an incredible rate and accomplish things you always thought were impossible.

Of course, you can be a passionate employee and be amazingly productive and thoroughly love your job. That's awesome if you do that. My post is targeted at those who want to do more than their current job allows. You don't have to get a job in the industry before setting out on your own. If you're short on cash, the economically wise strategy might involve a day job of some kind, but the really valuable learning that will help you make your dreams come true will be happening in your own project, not at work.

Opportunity

I think the most disturbing thing I read in the comments was a sentiment expressed by B N: “In my opinion your friend is just born at the worst possible time to be a game developer. Too late to easily get famous for creating just about anything, and too early to be able to easily be creative on their own.” Others agreed with him. Since they sounded sincere, I want to say a few words on the subject.

B N argued that in the beginning of game development, creativity was easy, because all ideas were new, but making games was technically hard, because tools and technology were so bad. It was from this era that our current big name, famous developers arose. Therefore, it was easy to “get famous for creating just about anything.” All you had to do was manage to create something.

In the mid-'80s, I was first introduced to computer gaming by my dad, who bought a Commodore 64. One day, he brought home a huge box of floppy disks from a friend at work. These disks contained games (turns out they were pirated games, but we had no idea what that meant back then). There were at least 100 games in that box. I tried pretty much all of them. I only liked a few.

It is true that we have relatively few famous game designers and that they did arise from these early years of video gaming. But they didn't do it without competition. Many developers were technically able to create games, but only a few were really good at game design. These designers have continued to make games, and their games keep pace with technology and continue to be better than most games available today. If their success was only due to lack of competition, then better designers would have arisen and replaced them already in the extremely cometitive industry we have today. Will Wright is still making games, and they're still good games, and they continue to get better.

B N observed that improvements in technology continue to lower the bar of entry. Since the bar continues to get lower and since it's not low enough yet to make game development “easy,” the rising generations will have an advantage over us, since they'll have better tools. Therefore, we, the current generation, are at a disadvantage.

Imagine a world where the cost of video game development is zero. Basically, there would be a tool which would turn your imagination into a video game you could play and distribute instantly, and it was free for everyone. That would be the ultimate game designer's dream, right?

Now imagine being a gamer looking for a new game to play. All games are technically perfect, differing only in game, visual, and sound design. Why would you choose one over another? It's more fun and engaging than another. You like the artistic expression better. Whatever it is you prefer in a game, someone had to do a better job of designing than the rest for you to prefer his or her game.

One fundamental truth has been proven in the game industry time and time again: game design matters more than technology. Game design will never be easy. Since tools are cheaper and more powerful than ever before, it's the best time to be a game developer there ever was. We have an advantage over the rising generations, because we're more experienced with game design. Those who take the torch from Will Wright and Miyamoto won't be those who were just lucky enough to be born later than us. They will be game designers that have honed their craft and sharpened their skills through years of experience gained by actually designing games, not by implementing the visions of other designers.

Technology has already reached the point where aspiring game designers can use existing tools to create, market, sell, and otherwise make a living off of your own video games. The only thing stopping you is fear. That fear is fueled by people who say you have to have a job first, or it's a bad time to be a game developer, or it's a bad time to start a business, or anything else. The best time to follow your dream and get to work on your own project is right now.

Flash CS4 and Large Projects

Over on Jobe Makar's blog, he posted about a bug with Flash CS3 and CS4 which prevents the Flash IDE from being able to compile large projects. Adobe spent a lot of time and effort working with him to resolve the issue, and for them it's fixed, but unfortunately the problem is not completely gone.

Background

Here at Gabob, we've had a long history with this bug (the "invisible ceiling"), which has existed since at least Flash 8, when we first started using Flash in the Spring of 2007. After running into it with our first non-game project, we decided to reevaluate our company's direction and go a different route (which was good).

In July of 2008 we hit the ceiling again during the final stages of development for our first big Flash game, Now Boarding. After scouring the internet and finding nothing, we called Adobe, and their official answer was to split the project into more than one swf.

After a week of completely restructuring our project, I split it into 3 swfs, and we were able to move forward from there. Because the game's original design was not particularly suited to splitting the code up, one of the swfs had most of the game's code in it. But I had removed enough code and assets for it to build.

Following the split, we finished the game, shipped it, added a bunch more content for our 1.1 release, shipped that, and then wanted to add some more later.

By now it was January 2009 (after Adobe's 11/17 CS4 update), and we finally decided to buy CS4. I bought it, downloaded it, downloaded the updates, installed everything, and I couldn't build the big swf of the 3 Now Boarding swfs. I could still build it in CS3, so I just continued using CS3 for NB work.

We added more content, then CS3 stopped building it. This time, I scoured the internet again and finally found other people with this problem. Using the java heap trick, CS3 and CS4 both built the game. We added more content, a new map, some new little features, some bug fixes, etc. and then we hit the ceiling again. This was using Flash CS4 with the 11/17 update.

Experiments with Flex

All the posts and blogs I could find on the internet about this issue were about the Flash authoring tool. Flex didn't seem to have this problem, or at least no one had run into it that I could find. I figured if I could put all the code into one swf and use Flex Builder to compile it, then I might not have to deal with this problem ever again.

So I downloaded FB3, started up the trial, made a couple test projects to test how I could use Flash CS4 for all the library symbols we had created and keep all the code in a FB3 ActionScript project. I won't go into all the gory details, but the plan was roughly to decouple all library symbols from .as files by renaming all exported symbols in the fla's (I just appended "MC" to the symbol's class name) and then change all the .as files to instantiate the corresponding *MC object and add it as a child. The fla's would be compiled into swc's which FB3 would import and compile into the code project.

After 2 days of tedious code restructuring, I had a final, single swf built by FB3 that had all kinds of problems. I ended up solving most of them, but some inexplicable problems remained. I then spent another day getting rid of the swcs and just loading the swfs built from the fla's dynamically using the Loader object. Loaded dynamically like that, everything worked correctly.

Our game is still 3 swfs, but ALL code is in one, and that one is built by FB3. One of the original 3 swfs contained only trivial symbols (no timeline code, not even multiple frames, just music, sounds, and images), and those worked fine as a swc, so that one is combined with the FB3 AS project as one swf.

Conclusion

While the journey has been extremely painful, I am very happy with how things are working now. Here are some benefits:

- FB3's compiler is so much faster. Since they contain no code, I don't have to rebuild the fla's very often, so now instead of waiting 2 minutes for Flash to compile in order to try out the changes I just made, it only takes a few seconds (literally just a few seconds).

- FB3 is designed for coding. Flash CS4 is not. I still use gvim for most of my work, but FB3 has nice refactoring tools and a profiler (but the profiler does work on any swf, not just FB projects, so I benefited from it even before this last restructuring).

Remaining Issues

1. There is definitely a problem with library symbols imported from swcs. The symbols that don't work when in a swc but DO work when loaded from an external swf have animations and timeline code. Some of them work, some of them don't. Symbols with no animations or timeline code work fine in a swc.

2. Flash CS4 is targeted (I assume) at movie-makers and developers of small games and other small interactive projects. Flex Builder 3 is targeted at developers of RIA's. Both cost $699 (the profiler is in the pro FB version, and that's essential for large projects). The majority (I assume) of developers who target the Flash player only need one of them and just buy the one they need. Developers of large games need both, so we have to spend twice as much. It'd be nice to have both CS4 and FB3 licensed together in a cheaper package. As it stands, CS4 and FB3 together are only $100 less than Unity Pro, which by many (but not all) standards is better for larger-scale game development...and which now has a Windows IDE.

Money is OK

There’s a general sentiment among many indie game developers that making money is at least a little bit evil.  I suppose it’s probably a lot like other “starving artist” mindsets in other media and industries, but whatever the context, I find that idea interesting.  Since this blog is about video games, I’ll stick to those here.

In some ways for some people the indie game movement is a rebellion of sorts against the corporate empires that dominate the game industry.  We see the games that these companies produce year after year, the money they spend on development, and we are not particularly enthused with what happens when game companies have share holders to please.  Those shareholders and various executives usually seem to care more about return on investment and are busy counting the dollars that flow into their accounts.

Indie developers often seem to conclude that in order to stay true to their own ideas and self expression, they can’t go that route, i.e. sell out for money.  By that I’m talking about making changes to their games to make them more like what is popular just to grab some dollars.

I agree that doing anything just for the money is greedy.  I’m sure there are plenty of high-rolling executives and shareholders that aren’t just in it for the money, but the games that so many of the big corporations release indicate a lot of them are.  They’re afraid to take risks because they’re afraid to lose money, and they’re afraid to lose money because ultimately they value the money more than pushing the industry ahead.  I do think that’s selfish.

However, I would argue that those indie developers who are unwilling to create products that are popular and thereby make more money are just as selfish.  In fact, I would say that their situation is more dangerous because it’s more subtle and is considered by them to be the moral highground.

So how is not making money selfish?

There’s no magic involved when it comes to making money.  If you offer a product, service, or idea to another person that they value more than the money you’re asking, then they will give you that money for it.  If millions of people buy your game, then you have created a game that millions of people value.  You have served them, made their life at least a little bit better in some way.  If very few people buy your game, then very few people value what you’ve done, and so you have served very few people.

If your goal is to create your vision and express yourself, then whether your game sells or not, you’ve created your dream.  You value it, and you profit from it in non-monetary ways.  To say that you don’t want to make money is to say you don’t want to create something that other people will value too.  Doesn’t that sound at least a little bit selfish?

Since the only way to make money in a free market is to create something that other people do value, it’s ironic that those big corporate empires can be so selfish and yet create so much value at the same time.  Maybe some would argue based on what I’ve written here that they aren’t selfish then.  It all depends on why they’re doing what they’re doing.  If they’re doing it to maintain their ROI and keep the money flowing, their motive is still selfish.  If their motive is to give people what they value, then they’re not—the fact that they’re making money doesn’t change anything at all.