Six Ways to Write More Comprehensible Code

Total Page:16

File Type:pdf, Size:1020Kb

Six Ways to Write More Comprehensible Code Six ways to write more comprehensible code http://www.ibm.com/developerworks/linux/library/l-clear-code/index.ht... Six ways to write more comprehensible code How to keep your code from destroying you Level: Introductory Jeff Vogel ([email protected]), President, Spiderweb Software 29 May 2007 As a developer, time is your most valuable resource. These six tips on how to write maintainable code are guaranteed to save you time and frustration: one minute spent writing comments can save you an hour of anguish. I learned to write, clear, maintainable code the hard way. For the last twelve years, I've made my living writing computer games and selling them over the Net using the marketing technique that was once charmingly known as shareware. What this means is that I start with a blank screen, start coding, and, a few tens of thousands of lines of code later, I have something to sell. This means that, if I make a stinky mess, I'm doing it in my own nest. When I'm chasing down a bug at 3 a.m., staring at a nightmare cloud of spaghetti code, and I say, "Dear God, what idiot child of married cousins wrote this garbage?", the answer to that question is "Me." So I have been well rewarded by learning about good, sane programming techniques. Some of these practices are described in this article. Many skilled, experienced, morally upright coders will always know some of this stuff by heart. All these people will get from this article is a chance to bathe in my delightful prose style and remember how horrible life was before they got the clean code religion. But there are many who, like me, stumbled into programming in an unexpected or unusual way and never had anyone drill this stuff into them. These things are basic to many but, to others, they are invaluable techniques that nobody has told them. So, to those who don't want to make a mess, this is for you. The example case For illustration purposes, our example program throughout this article is a hypothetical computer game called Kill Bad Aliens. In it, you will control a spaceship. It will move horizontally back and forth at the bottom of the screen, shooting bullets upwards. Your ship will be controlled by, say, the keyboard. Figure 1. Our hypothetical game 1 of 10 31/05/2007 05:53 p.m. Six ways to write more comprehensible code http://www.ibm.com/developerworks/linux/library/l-clear-code/index.ht... The game will take place in periods of time called Waves. During each wave, aliens will appear, one after another, at the top of the screen. They'll fly around and drop bombs. Aliens will appear a fixed period of time apart. After you kill a certain number of aliens, the Wave ends. Killing an alien gives you some points. When you finish a wave, you get a bonus number of points depending on how quickly you finished. When a bomb hits you, your ship blows up and another appears. When you are blown up three times, the game is over. If you got a high score, you are valuable as a person. If your score is low, you are not. So you sit down and start to write Kill Bad Aliens in C++. You define objects to represent the ship, your bullets, the enemies, and the enemy's bullets. You write the code to draw all the objects. You write the code to move them around as time passes. You write the game logic, the alien AI, the code to read the user's will from the keyboard and so on. Now how do we do this so that, when the game is ready, the code is comprehensible, easily maintained, and, in general, not a mess? Tip 1: Comment like a smart person. Comment your code. Obviously. If you write a procedure, fail to comment it, and return to it a few months later to rework it (and you will), not having comments will cost you time. And time is your most valuable resource. Lost time can't ever be replaced. But commenting, like anything else, is a skill. You get better with practice. There is good commenting, and there is bad commenting. You don't want to write too much. Suppose you write comments for a function that, in the future, saves you ten minutes of time understanding your code. Great. But suppose your comments are so verbose that it takes five minutes to write them and then, later, five minutes to read them. Then you've saved yourself zero time. Not so good. You don't want to write too little, either. If code goes on for a page or two without something breaking down what's going on, well, I hope that code is clear as crystal, because otherwise you're wasting future time. And you don't want to comment in stupid ways. When people first start writing comments, they often get hyper and write things like: // Now we increase Number_aliens_on_screen by one. 2 of 10 31/05/2007 05:53 p.m. Six ways to write more comprehensible code http://www.ibm.com/developerworks/linux/library/l-clear-code/index.ht... Number_aliens_on_screen = Number_aliens_on_screen + 1; Uhmmm, duh. If something is so obvious, it doesn't need a comment. And if your code is such a tangle that you need a comment for every single line of it, you'd probably profit from making it simpler in other ways first. Comments don't just save time, they cost it. They take time to read, and they spread out the actual code on the screen, so you can have less of it on your monitor to inspect at one time. And, while we're at it, don't ever do this: Short get_current_score() { [insert a whole bunch of code here.] return [some value]; // Now we're done. } Oh? We're done? Thanks for letting me know. That big right bracket and the infinite expanse of empty space beyond really didn't tip me off to that. And you don't need a comment before the return statement saying, "Now we return a value," either. So, if you are writing code, in the absence of a boss or a company policy telling you what to do, how do you comment it? Well, what I do for code I am stuck with maintaining myself is write an introduction. When I return to a procedure I forgot that I wrote, I want to see an explanation for what is going on. Once I understand what the machinery is doing, it becomes infinitely easier to understand the actual coding. This generally involves: 1. A few sentences before the procedure/function saying what it does. 2. A description of the values being passed into it. 3. If a function, a description of what it returns. 4. Inside the procedure/function, comments that split the code up into shorter tasks. 5. For chunks of code that seem thorny, a quick explanation of what is happening. So we need a description at the beginning and a few signposts inside explaining the road taken. Doing this is very quick, and it saves a ton of time in the long run. Here is an example from the theoretical Kill Bad Aliens. Consider the object representing the bullet the player fires. You will frequently have to call a function to move it upwards and see if it hits anything. I would probably code it something like this: // This procedure moves the bullet upwards. It's called //NUM_BULLET_MOVES_PER_SECOND times per second. It returns TRUE if the //bullet is to be erased (because it hit a target or the top of the screen) and FALSE //otherwise. Boolean player_bullet::move_it() { Boolean is_destroyed = FALSE; // Calculate the bullet's new position. [Small chunk of code.] // See if an enemy is in the new position. If so, call enemy destruction call and // set is_destroyed to TRUE [small chunk of code] // See if bullet hits top of screen. If so, set is_destroyed to TRUE [Small chunk of code.] // Change bullet's position. 3 of 10 31/05/2007 05:53 p.m. Six ways to write more comprehensible code http://www.ibm.com/developerworks/linux/library/l-clear-code/index.ht... [Small chunk of code.] Return is_destroyed; } If the code is clean enough, this sort of commenting should be sufficient. And it will save plenty of time the dozen times I return to this function to fix a dumb mistake I made. Tip 2: Use #define a lot. No, a LOT. Suppose that, in our hypothetical game, we want the player to get ten points when he shoots an alien. There are two ways to do this. This is the bad way: // We shot an alien. Give_player_some_points(10); This is the good way: In some global file, do this: #define POINT_VALUE_FOR_ALIEN 10 Then, when we give up some sweet points, naturally, we'd write, // We shot an alien. Give_player_some_points(POINT_VALUE_FOR_ALIEN); Most programmers know, on some level, to do things like this. But it requires discipline to do it enough. Just about every time you define a constant number, you should strongly consider defining it in one central place. For example, suppose you want the play area to be 800 by 600 pixels. Be sure to do this: #define PIXEL_WIDTH_OF_PLAY_AREA 800 #define PIXEL_HEIGHT_OF_PLAY_AREA 600 If, at a later date, you decide to change the size of your game window (and you very well might), being able to change the value in this one spot will save you time twice.
Recommended publications
  • Pyramid Volume 3 in These Issues (A Compilation of Tables of Contents and in This Issue Sections) Contents Name # Month Tools Of
    Pyramid Volume 3 In These Issues (A compilation of tables of contents and In This Issue sections) Contents Name # Month Name # Month Tools of the Trade: Wizards 1 2008-11 Noir 42 2012-04 Looks Like a Job for… Superheroes 2 2008-12 Thaumatology III 43 2012-05 Venturing into the Badlands: Post- Alternate GURPS II 44 2012-06 3 2009-01 Apocalypse Monsters 45 2012-07 Magic on the Battlefield 4 2009-02 Weird Science 46 2012-08 Horror & Spies 5 2009-03 The Rogue's Life 47 2012-09 Space Colony Alpha 6 2009-04 Secret Magic 48 2012-10 Urban Fantasy [I] 7 2009-05 World-Hopping 49 2012-11 Cliffhangers 8 2009-06 Dungeon Fantasy II 50 2012-12 Space Opera 9 2009-07 Tech and Toys III 51 2013-01 Crime and Grime 10 2009-08 Low-Tech II 52 2013-02 Cinematic Locations 11 2009-09 Action [I] 53 2013-03 Tech and Toys [I] 12 2009-10 Social Engineering 54 2013-04 Thaumatology [I] 13 2009-11 Military Sci-Fi 55 2013-05 Martial Arts 14 2009-12 Prehistory 56 2013-06 Transhuman Space [I] 15 2010-01 Gunplay 57 2013-07 Historical Exploration 16 2010-02 Urban Fantasy II 58 2013-08 Modern Exploration 17 2010-03 Conspiracies 59 2013-09 Space Exploration 18 2010-04 Dungeon Fantasy III 60 2013-10 Tools of the Trade: Clerics 19 2010-05 Way of the Warrior 61 2013-11 Infinite Worlds [I] 20 2010-06 Transhuman Space II 62 2013-12 Cyberpunk 21 2010-07 Infinite Worlds II 63 2014-01 Banestorm 22 2010-08 Pirates and Swashbucklers 64 2014-02 Action Adventures 23 2010-09 Alternate GURPS III 65 2014-03 Bio-Tech 24 2010-10 The Laws of Magic 66 2014-04 Epic Magic 25 2010-11 Tools of the
    [Show full text]
  • "Indiepocalypse"?
    What Do We Mean When We Say "Indiepocalypse"? Jeff Vogel Spiderweb Software Who Am I and Why Am I Here? My name is Jeff Vogel. I started Spiderweb Software in 1994. We’re a tiny little indie game company based in Seattle. www.spiderwebsoftware.com Twitter: @spiderwebsoft Blog: http://jeff-vogel.blogspot.com/ We have written a bunch of low-budget fantasy role- playing games for Windows, Mac, and iPad… Key point: all of our games are very similar. Our games: Nethergate Nethergate: Resurrection Geneforge Exile: Escape From the Pit Geneforge 2 Exile 2: Crystal Souls Geneforge 3 Exile 3: Ruined World Geneforge 4: Rebellion Blades of Exile Geneforge 5: Overthrow Avernum Avadon: The Black Fortress Avernum 2 Avadon 2: The Corruption Avernum 3 Avernum: Escape From the Pit Avernum 4 Avernum 2: Crystal Souls Avernum 5 Avernum 6 Blades of Avernum (I’ve been around a while.) This brief talk is about the history of the Indie Glut (or Indie Boom & Bust) Or, as the rest of the world calls it, the Business Cycle. What I won’t call it: The Indie Bubble (a great clickbaity name, but not really accurate) Or, God Help Us, the Indiepocalypse (No. Nobody believes indie games are actually going away.) I will tell my story of the Indie Glut. I’ll use sales figures for 4 of my games (released 2010-2015) as illustration. A story of the Indie Boom that needs to be proven: It started around 2008. 1. AAA innovation not so great. 2. Games like Braid, World of Goo, and Castle Crashers prove indies are good.
    [Show full text]
  • GOG-API Documentation Release 0.1
    GOG-API Documentation Release 0.1 Gabriel Huber Jun 05, 2018 Contents 1 Contents 3 1.1 Authentication..............................................3 1.2 Account Management..........................................5 1.3 Listing.................................................. 21 1.4 Store................................................... 25 1.5 Reviews.................................................. 27 1.6 GOG Connect.............................................. 29 1.7 Galaxy APIs............................................... 30 1.8 Game ID List............................................... 45 2 Links 83 3 Contributors 85 HTTP Routing Table 87 i ii GOG-API Documentation, Release 0.1 Welcome to the unoffical documentation of the APIs used by the GOG website and Galaxy client. It’s a very young project, so don’t be surprised if something is missing. But now get ready for a wild ride into a world where GET and POST don’t mean anything and consistency is a lucky mistake. Contents 1 GOG-API Documentation, Release 0.1 2 Contents CHAPTER 1 Contents 1.1 Authentication 1.1.1 Introduction All GOG APIs support token authorization, similar to OAuth2. The web domains www.gog.com, embed.gog.com and some of the Galaxy domains support session cookies too. They both have to be obtained using the GOG login page, because a CAPTCHA may be required to complete the login process. 1.1.2 Auth-Flow 1. Use an embedded browser like WebKit, Gecko or CEF to send the user to https://auth.gog.com/auth. An add-on in your desktop browser should work as well. The exact details about the parameters of this request are described below. 2. Once the login process is completed, the user should be redirected to https://www.gog.com/on_login_success with a login “code” appended at the end.
    [Show full text]
  • Avadon: the Black Fortress HD 50% Off Sale - Fantasy RPG for Ipad
    prMac: Publish Once, Broadcast the World :: http://prmac.com Avadon: The Black Fortress HD 50% Off Sale - Fantasy RPG For iPad Published on 11/16/12 Seattle based Spiderweb Software, Inc. today announced that, this week, their hit fantasy role-playing game for the iPad, Avadon: The Black Fortress HD, is now available for half its regular price. Avadon: The Black Fortress HD is an epic adventure in a strange and dangerous world. Gamers play as a spy and warrior, tasked to fight the enemies of their homeland. Avadon held the #1 RPG spot on iPad for over a week at launch and is now available at its lowest price ever. Seattle, Washington - Spiderweb Software announces that this weekend (November 16th-18th) their hit game, Avadon: The Black Fortress HD, is now available for half its regular price. Avadon held the #1 RPG spot on iPad for over a week at launch and is now available at its lowest price ever. See what all the fuss is about on one of the only full-length RPGs available for iOS. Five great nations have banded together to form The Pact. The Pact is defended by Avadon, a secretive sect of spies and assassins. Its agents are everywhere and its word is law. You have been recruited as a Hand of Avadon, charged with missions that require swift action and a heavy fist. However, the enemies of the Pact have plans of their own, and Hands of Avadon are being picked off one by one. It will fall to you to struggle to survive and to reveal that plot that could shatter the safety of The Pact and plunge your homeland into chaos.
    [Show full text]
  • Cheat Codes for Geneforge 5
    Cheat codes for geneforge 5 For Geneforge 5: Overthrow on the PC, GameFAQs has 14 cheat codes and secrets. Geneforge 5 Overthrow Cheats, Cheat Codes for PC. The best place to get cheats, codes, cheat codes, walkthrough, guide, FAQ, unlockables, tricks, and secrets for Geneforge 5: Overthrow for PC. Geneforge 5 - Overthrow. Cheatbook is the resource for the latest Cheats, tips, cheat codes, unlockables, hints and secrets to get the edge to win. Geneforge 5: Overthrow Cheats and Cheat Codes, PC. Is there a complete list of cheat codes somewhere? I can't find it The ones listed in the Geneforge 5 hintbook are as follows: healmenow. I know I am cheating, but honestly, I don't have the full version of Geneforge 3. And for some reason, all the cheats I find on the Internet for. We currently don't have any Geneforge 5: Overthrow cheats, cheat codes or hints for PC. Please check back at a later date for more cheats and. Geneforge 5 cheat codes, Geneforge 5 cheats & tricks, Hints, Tips, Walkthroughs, Guides. Geneforge 5: Overthrow cheats, walkthrough, review, q&a, Geneforge 5: Overthrow cheat codes, action replay codes, trainer, editors and solutions for PC. Having Geneforge 5 codes, cheats, hints, tips, trainer or tricks we dont have yet? Help out other Geneforge 5 players on the PC by adding a cheat or secret that. Geneforge 5 cheat codes, Contributed by jlebel () on Feb 12, Press SHIFT + D to bring up a dialog box then enter any of the following: healmenow. Geneforge 5: Overthrow Cheats Codes Unlockables - PC - IGN Dedicated to Geneforge 5: Rebellion a fantasy role-playing game by Spiderweb Software for PC.
    [Show full text]
  • Games Are “Serious Business”
    8/24/08! Games are “serious business”! • Facts from www.esa.org:! – $7.4 billion revenues in 2006! – Average player is 33 years old and! has been playing for 12 years! – 36% percent of American parents play computer! – 80% percent of gamer parents play with their kids! • From Blizzard press release:! World of Warcraft surpasses! Lecture 1: Introduction! 10 million subscribers in January 2008! – $13 to $15 monthly (for 2.5 million in U.S. at least)! Prof. Aaron Lanterman! – Do the math!!!! School of Electrical and Computer Engineering! • Stephen Johnson, “Everything Bad ! Georgia Institute of Technology! is Good for You: How Today's Popular! Culture Is Actually Making Us Smarter”! Screenshot from! www.worldofwarcraft.com/burningcrusade/imageviewer.html?,images/screenshots/,65,241,! 2! Our MPG class fills an industry need! The realities of real-time! • “CPU/GPU programming skill is the biggest hole they have. They • The architectures we will look at are driven by real-time can't find students who can do it well.” - Prof. Blair MacIntyre! constraints! • “The biggest challenge facing game companies right now is the – 60 frames per second! problem of writing multithreaded code that fully supports the – 1/60 " 16.7 milliseconds! multiple-core architectures of the latest PCs and the next – Average performance is irrelevant; it’s the max that matters ! generation game consoles.” - Jeremy Reimer, “Valve goes multicore”! • In contrast, most scientific applications can be handled • “If a programming genius like John Carmack can be so “offline”!
    [Show full text]
  • Avernum 3 Instructions
    You are about to travel into the strange subterranean land of Avernum, a prison you must struggle to escape. Avernum 3: Ruined World is the final chapter in an indie fantasy role-playing trilogy, the tale of subterranean exiles and their struggle to return to the surface. Battle in Avernum 3 is turn-based. This means that, when you are fighting, action will stop while the game waits for you to make your move. To succeed, you need cunning and tactical skill, not fast reflexes. The enemies you will face are dangerous, clever, and have a wide variety of magical abilities. It will be up to you to figure out how to defeat them. Avernum 3: Ruined World is designed to be easy for a new player to learn. There is a comprehensive tutorial and ample in-game help. However, like most fantasy role-playing games, it has a lot of detail. Fortunately, if you get stuck, these instructions are here to help you out. Have fun! Avernum 3 is a truly enormous game. There is much to do and many, many places to go. Note About Computers and Tablets This is the documentation for both the computer (PC/Mac/Linux) and tablet (iPad) versions. Some details are different for computers and tablets. For example, keyboard shortcuts only apply to the computer version. Parts of the interface with bigger differences will be noted. On computers, to see tips for a button, status icon, etc., move the cursor over it. On tablets, rest your finger on it. If you would like information, to order, or to download one of Spiderweb Software’s big, free demos, you can contact us at: PO Box 85659 Seattle, WA 98145-1659 Phone: (206) 789-4438 [email protected] http://www.spiderwebsoftware.com Avernum 3: Ruined World is Copyright 2018, Spiderweb Software.
    [Show full text]
  • Blades of Avernum Scenario Editor Instructions
    Blades Of Avernum Scenario Editor Instructions Table of Contents Introduction To Scenario Design Section 1: The Basics Chapter 1.1 - Making Your First Scenario, Step By Step Chapter 1.2 - Creating A Scenario Chapter 1.3 - A Few Things To Know Chapter 1.4 - Using the Editor Chapter 1.5 - Editing Terrain Chapter 1.6 - Editing the Outdoors Chapter 1.7 - Editing Towns Section 2: Scripting Chapter 2.1 - Introduction to Scripting Chapter 2.2 - Creating Custom Objects Chapter 2.3 - Quick Introduction to Graphics Chapter 2.4 - Creating Custom Floor Types Chapter 2.5 - Creating Custom Terrain Types Chapter 2.6 - Creating Custom Creature Types Chapter 2.7 - Creating Custom Item Types Chapter 2.8 - Programming with Avernumscript Chapter 2.9 - Creating Scenario Scripts Chapter 2.10 - Creating Town Scripts Chapter 2.11 - Creating Outdoor Scripts Chapter 2.12 - Creating Creature Scripts Chapter 2.13 - Creating Terrain Scripts Chapter 2.14 - Creating Dialogue Chapter 2.15 - Dealing With Errors Chapter 2.16 - Advanced Topics Section 3: Porting Blades of Exile Scenarios Chapter 3.1 - Porting Scenarios, the Basics Chapter 3.2 - How To Port Your Scenario Section 4: Custom Graphics Chapter 4.1 - Basics of Custom Graphics Chapter 4.2 - Custom Floor and Terrain Graphics Chapter 4.3 - Custom Item Graphics Chapter 4.4 - Custom Creature Graphics Chapter 4.5 - Custom Scenario Graphics Section 5: Putting It Together Testing and Distributing Your Scenario Appendices The appendices (which list all the calls, spells, skills, and other designer resources) are in the file Blades of Avernum Editor Docs Appendices. Introduction to Scenario Design Welcome to the Blades of Avernum Scenario Editor! The Blades of Avernum system enables you t o make fantasy role-playing adventures of great detail and complexity.
    [Show full text]
  • This Checklist Is Generated Using RF Generation's Database This Checklist Is Updated Daily, and It's Completeness Is Dependent on the Completeness of the Database
    Steam Last Updated on September 25, 2021 Title Publisher Qty Box Man Comments !AnyWay! SGS !Dead Pixels Adventure! DackPostal Games !LABrpgUP! UPandQ #Archery Bandello #CuteSnake Sunrise9 #CuteSnake 2 Sunrise9 #Have A Sticker VT Publishing #KILLALLZOMBIES 8Floor / Beatshapers #monstercakes Paleno Games #SelfieTennis Bandello #SkiJump Bandello #WarGames Eko $1 Ride Back To Basics Gaming √Letter Kadokawa Games .EXE Two Man Army Games .hack//G.U. Last Recode Bandai Namco Entertainment .projekt Kyrylo Kuzyk .T.E.S.T: Expected Behaviour Veslo Games //N.P.P.D. RUSH// KISS ltd //N.P.P.D. RUSH// - The Milk of Ultraviolet KISS //SNOWFLAKE TATTOO// KISS ltd 0 Day Zero Day Games 001 Game Creator SoftWeir Inc 007 Legends Activision 0RBITALIS Mastertronic 0°N 0°W Colorfiction 1 HIT KILL David Vecchione 1 Moment Of Time: Silentville Jetdogs Studios 1 Screen Platformer Return To Adventure Mountain 1,000 Heads Among the Trees KISS ltd 1-2-Swift Pitaya Network 1... 2... 3... KICK IT! (Drop That Beat Like an Ugly Baby) Dejobaan Games 1/4 Square Meter of Starry Sky Lingtan Studio 10 Minute Barbarian Studio Puffer 10 Minute Tower SEGA 10 Second Ninja Mastertronic 10 Second Ninja X Curve Digital 10 Seconds Zynk Software 10 Years Lionsgate 10 Years After Rock Paper Games 10,000,000 EightyEightGames 100 Chests William Brown 100 Seconds Cien Studio 100% Orange Juice Fruitbat Factory 1000 Amps Brandon Brizzi 1000 Stages: The King Of Platforms ltaoist 1001 Spikes Nicalis 100ft Robot Golf No Goblin 100nya .M.Y.W. 101 Secrets Devolver Digital Films 101 Ways to Die 4 Door Lemon Vision 1 1010 WalkBoy Studio 103 Dystopia Interactive 10k Dynamoid This checklist is generated using RF Generation's Database This checklist is updated daily, and it's completeness is dependent on the completeness of the database.
    [Show full text]
  • Avernum 2 Docs
    You are about to travel into the strange subterranean land of Avernum, full of dungeons, labyrinths, and constant warfare. Avernum 2: Crystal Souls is the second chapter in an indie fantasy role-playing saga, the tale of subterranean exiles and their desperate war for survival. Battle in Avernum 2 is turn-based. This means that, when you are fighting, action will stop while the game waits for you to make your move. To succeed, you need cunning and tactical skill, not fast reflexes. The enemies you will face are dangerous, clever, and have a wide variety of magical abilities. It will be up to you to figure out how to defeat them. Avernum 2: Crystal Souls is designed to be easy for a new player to learn. There is a comprehensive tutorial and ample in-game help. However, like most fantasy role- playing games, it has a lot of detail. Fortunately, if you get stuck, these instructions are here to help you out. Also, please remember that Avernum 2: Crystal Souls is not free. The demo only contains the first small portion of the game. To play the rest, you need to order the full version. To learn more, read the section titled How To Order. Finally, have fun! There is a lot to do in here, and many, many places to go. Note About Computers and Tablets This is the documentation for both the computer (PC/Mac/Linux) and tablet (iPad) versions. Some details are different for computers and tablets. For example, keyboard shortcuts only apply to the computer version.
    [Show full text]
  • Spiderweb Order Form
    Spiderweb Software Order Form If you want to order one of our games online, you can find out how at: http://www.spiderwebsoftware.com/ordering.html If you would like to order by mail, send this completed form with payment to: Spiderweb Software, Inc. PO Box 85659 Seattle, WA 98145-1659 USA Please print clearly! OR Phone: (206) 789-4438 (We're open M-F 10-6 Pacific time.) You MUST include a valid e-mail address. All games will be provided as downloadable full installers and all hint books are downloadable documents. Orders from outside the U.S. welcome! Pay with a check, money order, or postal money order in US Dollars. Name: Address: City: State: Postal Code: Country: E-mail Address (necessary): Would you like to be added to the Spiderweb Software mailing list? Yes ___ No ___ Avadon 2: The Corruption ($20) .................................._____ Avadon 2: The Corruption hint booklet ($6) ......................_____ Avernum: Escape From the Pit ($20) .............................._____ Avernum: Escape From the Pit hint booklet ($6) .................._____ Avadon: The Black Fortress ($20) ................................_____ Avadon: The Black Fortress hint booklet ($6) ...................._____ Avernum 6 ($20) ................................................._____ Avernum 6 hint booklet ($6) ....................................._____ Avernum 5 ($20) ................................................._____ Avernum 5 hint booklet ($6) ....................................._____ Avernum 4 ($20) ................................................._____
    [Show full text]
  • Independent Games (1997–Present)
    Chapter 10 Independent Games (1997–Present) Copyrighted Materials The Scratchware Manifesto and Dimensions of “Indie” - In the summer of 2000, a group of anonymousCRC game designers published a three-part essay, The Scratchware Manifesto, on the abandonware archive site, Home of the Underdogs . The declaration delivered a scathing critique of practices in the digital game industry: it criticized publishersPress who chose game genres with safe investment returns over innovative ones, who made demands on workers with long periods of crunch time, and who shipped buggy games that resulted from rushed production schedules . The essay called for an alter- native type of game described as “scratchware ”. It was to be accessible, high quality, replayable, short, and created by teams of three or less individuals with multiple skill sets . Scratchware games were to focus on 2D art, which allowed for economical and rapid development while providing the opportunity to explore untapped aesthetic avenues . Key to scratchware games would be their cost and method of distribution: $25 or less and deliverable without retailers, via the Internet . Each element was intended to break the practices of the game industry by producing easy-to-acquire games with greater novelty in design, at lower cost to players . In short, it was a rallying cry for the creation of inde- pendent games . The growth of independent games in the mid to late 2000s appeared, on the surface, to have answered the manifesto’s call . Many had operated at 215 216 History of Digital Games lower budgets and with smaller development teams; pixel art, 2D graph- ics, and other flat styles did allow for efficient development times and a critique of photorealistic 3D imagery; many independent game develop- ers were able to exercise creative control, retain ownership, and develop ideas that large developers were not interested in pursuing .
    [Show full text]