Monday, December 30, 2013

Dev Log: The Vortex #33 - Double DPI

After noticing that printed cards were blurry, I discovered that Inkscape's default dpi is 90, so I doubled it to 180.  The cards look much cleaner now, so I've made new PDFs of all of them.  File sizes are much larger (and PDFs take forever to open), but ultimately it's better this way to have a much higher quality card.

I also made a couple of minor changes to a couple of Frenzies.  I changed the Fountain Frenzy to be clearer; the point of that card is that the Zealot should not be able to be killed by the Sword attribute, but might still be killed by the Fire attribute.

I also changed the Secrets Frenzy, because the Zealot its attached to can still be killed by Fire, though not converted, so it's not as powerful as Fountain or Overhill, which are supposed to be similar cards.  To compensate, the Reason attribute is now only -1 instead of -3 on Secrets.  Later, I think I'll try coming up with more Frenzies to provide some more variety.

I also changed the backs a little more so there's a little bit of a border around them so you can see where you're cutting if you print them out.

Friday, December 27, 2013

Happy new... uh... December 27th!

Ok, time to get back into the swing of things.  I've started to get back to work on the horror text adventure, and a little bit more on The Vortex, so the next couple of posts will be more of those.

Also, early new year's resolution: credit on pictures that aren't mine.

It's kind of silly that when I post a picture I got of Google that it doesn't redirect to the source more easily.  So I'm going to try to put the website I got each pic from as I go.  It would take too long to go back and figure out every previous picture (just deleting the broken images is enough of a hassle), so I'm opting for just starting from here.

A confused baby
Let's see where putting the address looks good.  Maybe the rollover text?
Credit is always a nice thing to give, and since I'm not looking for CC licenses (my Search Fu is not at master levels yet), I think it's important to put more effort into crediting pics.

Also, if you do spot a broken pic, or would like an image from a previous post to receive proper credit, post a comment to that old post, and I'll see what I can do.

Tuesday, December 17, 2013

Christmas Time

Being that I have a seasonal job for December, and it's nearing Christmas, I have to pause this blog until at least after Christmas.  I'll either give a normal post or at least an update of Friday, the 27th.

Friday, December 13, 2013

Dev Log: The Vortex #32 - Reworded Cards (and Instructions)

I went through all of the cards and reworded them to keep vocabulary consistent.  "in play" is now "the Field of Play" and references to "Turn" have been changed when what I mean to say is "Round".  Some things have been clarified, like a few Frenzies that might have been confusing.

I also made some instructions that look nice, and hopefully are thorough and easy to follow.  I have tons of examples of turns and at the end a five Round game, so readers can get the feel of it.  After sixteen pages, I still haven't covered the weird interactions, so there may still be questions.  But for an alpha version, I think it's okay.  Unfortunately, I couldn't get the rules to look right in .pdf, so I've made two versions: a .xps, and a .doc.  Hopefully, one of those two formats works for you.  I'll try to make it into a PDF some other time.

So here is all the PDFs again, most of which have some changes to them, plus the newest rules DOC/XPS.

Tuesday, December 10, 2013

Dev Log: Horror Text Adventure #32

Rearranged code a bit so Item is a generic class and various items like Bed and Dresser and Painting are subclasses.  Had to learn how to do subclasses.  At first I got met with ~50 errors, but of course they got fixed in groups, so I didn't really need to make 50 corrections.

Also did the same thing with Rooms.

Then I got a tricky runtime error.  I spent hours searching on line and asking people about it, but like many runtime errors, it's not the piece of code that stops that's the problem, but something earlier.  I had forgotten the "new" keyword in a couple of spots, which was making me tear my hair out, thinking that for some reason subclasses weren't inheriting public functions, or somehow they couldn't be accessed through the subclass.  Of course, I had just had a similar problem of forgetting the "new" keyword elsewhere, and I fixed it easily, though the runtime error I got that time was a completely different error.  Same solution, different errors.

Well, that's all basically just background stuff that will make my coding easier (I hope), but doesn't affect too much visually.

Friday, December 6, 2013

Dev Log: Horror Text Adventure #31

User friendliness work.  Now the command you type is repeated in the a box so you can doublecheck what you wrote, both in case you made a typo or an invalid command, and also in case you want to make sure you don't accidentally go north when you just came from there, or other historical notes you'd like to have.  I am having trouble figuring out the best place to put it, however.  At first I put the player's command in the lower left box, but that's really for error messages, so I don't want the player continually looking over there, thinking there's an error when there isn't.  Then I put it in the upper-right box, because that's for realtime events.  However, that's kind of meant for non-player realtime events, so when something pops up there, it should freak the player out a little ("The door slams shut." etc.).  So for now I've stuck it in the upper center box, which is the "dynamic" box, where basically for the most part what you type has a direct impact on what happens there.  So when you examine an item, the item description appears there.  So I think for now that's the best logical place to put the player's command.  UI design is tricky!

Also, when you make a command like "examine bed" the description becomes a new paragraph for easier reading.

Tuesday, December 3, 2013

Dev Log: The Vortex #31 - Last of the Locations

I finished up putting placeholder art onto the 24 "basic" location cards.  Now you no longer have a half chance of getting a gray box for a picture if you draw a location card.  So ignore the link for locations on the previous page, and print out these locations instead:

Also, here are the backs of the cards, if you'd like to have nice back for them:

The one for the majority of cards has instructions in the document on how to print.  For the locations cards, simply print out the page six times and you'll get as many backs as you'll need.

Friday, November 29, 2013

Stuffinged. I mean stuffed.

Turkey day is fun.  Recovering from the mashed potatoes.

Have some quick spot-the-difference games to help wake your brain back up:

5 Differences
6 Differences
4 Differences

Tuesday, November 26, 2013

Positive Feedback Loops

I'm going to go a little left field with this article, starting with a principle of game design and applying it out to websites.

Positive feedback loops sound, well, positive, but they are actually something to avoid in games.  Positive feedback is when a player receives a reward of some sort for completing a challenge, which makes the game a little easier.  On the surface, positive feedback sounds like common sense: of course you should be rewarded for doing a good job.  Lots of games are entirely designed around positive feedback.  Leveling up in an RPG, or getting bigger, badder, better weapons in a shooter.  But in these instances, the positive feedback is also tempered with negative feedback: the game becomes harder, with bigger bad guys, and more of them.  This prevents the positive feedback from becoming a positive feedback loop.

An unchecked positive feedback loop would make the game easier for players who clearly are already successful.  Grinding, in essence, is using positive feedback loops to get ahead and gain rewards for completing the same easy challenges over and over.  Playing the same easy race to come in first and get the same prize money over and over is the racing game equivalent of grinding.  Often, a racing game will only give you the money the first time you beat it, and subsequent times do not yield any prize money.  This gives positive feedback for doing a good job without creating a loop.

There are other rewards that can be given that, by their nature, require no check or balance.  Beating a boss and getting a cutscene for a reward in no way makes the game easier, but it is still a welcome relief to the player.  Achievements (as much as I hate them) also provide positive feedback without creating a loop--as long as the achievement is a trophy or medal or visual effect, and another bonus is not included with it.

I think by now most game designers understand the concept of positive feedback loops, and how to avoid them.  Sometimes they sneak in, because designers are trying to give less-than-stellar players a leg up, while accidentally giving positive feedback loops to great players.  This aspect still has some kinks to work out, but overall I don't see many games with horrendous positive feedback loops.

To me, the bigger issue is applying this knowledge out into other areas.  Positive feedback loops do need to be avoided, and there are quite a few websites that mess these up.

Let's take YouTube as an example.  Suggestions are oftentimes part of horrible positive feedback loop.  For instance, once, a number of months ago, I watched an episode of Nostalgia Critic or something related to it on YouTube.  I normally watch Nostalgia Critic on, which is their official site, and they host their videos through, so the only way YouTube should know I like Nostalgia Critic is through the instance.  Several months later, half of my suggestions are still Nostalgia Critic episodes.

The other half of my suggestions are music videos, because I occasionally look up music through YouTube.

All of my subscriptions are science-based shows, like SciShow and MinutePhysics, so all of my suggested channels are science-based channels, or channels that hover around the VLog brothers (Hank Green is the host of SciShow).

John & Hank Green
These guys are awesome, but I don't need to worship them, YouTube.
So I get three kinds of suggestions, but all are based on things which I already am satisfied with.  When I want to listen to a piece of music, I search for it.  When I want to watch a science-based video, I check my subscriptions.  And I never want to watch Nostalgia Critic on YouTube anyway, I go to their appropriate site for that.

What I would like from YouTube suggestions is new content.  Since Google (owners of YouTube) is a trend-finding machine, they probably can see an overlap between viewers of science-based shows and other types of shows.  Maybe 25% of science show viewers also like political shows, for instance.  I may not like political shows, but there is a decent chance I will.

Instead, I'm stuck in a positive feedback loop with Youtube content.  I've proven to them I like three types of shows, so my reward is more of the same.  And if I watch those, I get rewarded with more of the same, and more of the same, and it never ends, keeping me in a loop, rather than expanding my horizons.

John & Hank Green again, same pic.
YouTube suggested you look at this same picture again.
A great example of using positive feedback, however, is Pandora.  Pandora is a music service that offers you new music to go with what you already like.  So when I type in a band name and create a new station, I'm sometimes given that band, but I am also given other bands that have similar sounds, or are even only tangentially related.  When I give positive feedback about a song I like on the station, it uses that information to expand my horizons even further.  Instead of assuming I'm liking the song because it's by a particular artist, it deconstructs the song and then asks me to listen to music with a few similar parts.

So it uses positive feedback to challenge my music tastes.  It never gives me something ridiculously out there that is over my head, but it slowly introduces new sounds for me to get used to and learn to enjoy (or gives me new music I already enjoy but never knew I did).

Red Hot Chili Peppers album cover
The only thing I don't quite get about Pandora is that is seems to think Red Hot Chili Peppers goes with everything.
When a game has a positive feedback loop, it makes the game boring.  When a website has a positive feedback loop, it insulates the user from challenge, whether it's challenging tastes, or viewpoint, and creates an echo chamber, which can become dangerous.  Heck, this expands to everything:  Mitt Romney thought he could not possibly lose the last US presidential election.  He was stuck in a positive feedback loop and became insulated from alternative voices, so his worldview was not challenged.

But I digress.

I found it rather weird that Google wants to give "personal" results, both in the search engine, and in YouTube comments now (and possibly other places I don't know about).  Personal results seem to be a positive feedback loop that does nothing but damage the experience for the user.

Google/YouTube is just one example of many, of course.  Website designers, social media designers, etc. need to watch out for positive feedback loops just as much as game designers do.  Perhaps even more so.  Because a positive feedback loop in a game only ruins one game.  A positive feedback loop in other aspects of life can ruin a mind.

Friday, November 22, 2013

Dev Log: Horror Text Adventure #30

Not the most visually stunning game, but a screenshot every once in a while is still nice.

Fixed a bug where the player tried examining something that did not exist and it led to a runtime crash.  This was because when checking the player's inventory for that item, if there was nothing in the player's inventory, the items were simply set to null, so they had no type.  So it was trying to check a type when the variable did not even exist.  Easy fix, but error checking sure makes code longer.

Speaking of examining, the player can now type "look at <item>" and "look <item>" in addition to "examine <item>".  Bonus side effect: dictionary function now looks cleaner because huge examine code is moved to a new function.  Similarly, the player can say "take <item>" and "pick up <item>".

The player can also type slightly shortened commands for movement, so instead of "go west", they can also type "go w".  I know that old text adventures had very simple commands like just "w" to go west, but just for the moment I don't want it to be so simple, because I wouldn't want a player to accidentally move to a new room when they are trying to do something else.  So the player has a variety of ways to move, by saying "go", "head", or "move" as the first word, and then a direction or abbreviation of the direction as a second word, so four characters is, I think, short enough for now.  I think it's tough enough to come up with all possible English variations without getting into abbreviations.  Yay language.

The player can now "chat".  That is, if they type "/c" and then a message, their message appears in the chatbox.  Of course, this is not exactly hooked up to the internet yet, so chatting simply displays in your own chatbox and doesn't go out to the world.  But the code that's in place will be replaced (or perhaps added to) once I start with the multiplayer (which will come much later).

I improved player system messages relating to input, by saying exactly what the dictionary didn't understand.  So if you type "go wesr" (misspelling "west") it will tell you it didn't understand "wesr" rather than giving a generic "I don't understand this" message.  One bug about this, however, is a conflict between number of words in the command and the keywords.  So you can say "pick up blah" and you'll get "I don't understand 'blah'," which is what I want, but if you say "pick blah" you'll get "I don't understand 'pick'," which makes no sense.  I'm pretty sure I'll need to overhaul the way the dictionary works at some point.

Also fixed room descriptions so now items in the room are broadly defined ("There is a bed here.") upon entering the room, and longer descriptions ("The pillowcase has bloodstains.") are reserved for examining the item.  (That's how I discovered the bug in the first paragraph above).

Also threw in a couple more description sentences to test.  Now the player may get a varying number of description sentences.  Works ok for now, but still needs cleanup (and probably a cleaner way of making them altogether).

Lastly, you can quit by typing "/quit" instead of just clicking the X in the corner.  Still example commands to create, but five down, three to go is a nice place to be.

I like productive days.

Tuesday, November 19, 2013

Dev Log: Horror Text Adventure #29

Barriers work properly now.  If there is no room nearby, it makes a wall (same as before).  If there is a room nearby, but there are no barriers in that room, then the current room makes a barrier (randomly).  If there is a room nearby with a barrier already set up, the rooms are connected by that barrier.  I believe it's set up by pointer (I hope), rather than duplicating the type.

Also implemented windows fully (as fully as any other barrier type, that is), so now the player can go through a window to get to the next room.  It's identical to a door at the moment.  I'm pretty sure I can find a better way to put the barrier descriptions in.  Right now it's copy-pasting almost identical code a ton of times, varying for direction.  Hopefully I'll figure that out before the 18 if statements balloon into 300.

Also a little code cleanup.  Sometimes I wonder what I was thinking when I have a five line block of code with a variable definition and an if statement that can simply be reduced to one return statement.

Friday, November 15, 2013

Physical Fitness Friday

That is to say, for me.  Lots of yard work today, and more all weekend and some next weekend, I suspect.  So no post today because it hurts my fingers just to type even this much.  We'll see what I can accomplish for Tuesday.  Sorries!

*This has been a friendly PSA reminding you to get at least 15 minutes of exercise daily.

Tuesday, November 12, 2013

Dev Log: Horror Text Adventure #28

Doors exist slightly more properly now.  At least, any given direction with a room in that direction either has a passage or a closed door.  If it's a passage, you see what's nearby; if there's a door, it just tells you that there's a door (so we assume it's closed, basically).  Doors don't lock yet, which is good because I haven't programmed keys yet.

But the barriers are bugged.  I get no compile or runtime errors, but sometimes there's a door on one side, and an open passage on the other.  This is something I never noticed, because passages and walls were clearly defined by whether there was an adjacent room.  But now I see I messed something up, in that barriers are not between rooms and don't connect right, but rather a property of rooms.  I thought I had made them pointers, but I guess adjacent rooms don't actually point to the same barrier.  This will be a fun bug to figure out, since there are a few places it could be, and nothing is immediately obvious.  Yay logic errors!

I may have to redo the barriers from scratch and rethink the system if I can't ferret out the error.

Friday, November 8, 2013

Dev Log: Horror Text Adventure #27

Items that are containers can now only hold a limited, predefined number of other items.  Again, I expect to change this and eventually come up with sizes or something, but for now it's a quick hack that at least puts a little bit of the functionality in there, so I'll know to go back and change it later, when I realize I can put a bed inside a bed, or something.

For now, upon creation of each item, there is a vector for other items, and that vector has a set length.  So for a dresser, for instance, it's set to four, so there can only be four or less items in the dresser.  At present, no items start in the containers, and the player can't discard items in any fashion, so containers aren't precisely interactive.

Tuesday, November 5, 2013

Manhunter: New York and Manhunter: San Francisco (Forgotten Diamonds)

Back in the adventure game days, Sierra On-Line was one of the top dogs in PC gaming.  Lucas Arts was a major competitor, but Sierra had franchises that were hard to topple.  If a game had the word "quest" in the title, it was a Sierra hallmark: King's Quest, Space Quest, Police Quest, and Quest for Glory (formerly Hero's Quest, but changed to avoid confusion with the board game HeroQuest) were among their best-sellers.  They also had cult favorites like Leisure Suit Larry, and the awesomely bad Phantasmagoria FMV games.

Bad acting, bad bluescreen, bad puzzles, bad CGI... sign me up!
There were a few series, however, that didn't get far off the ground, because Sierra wanted to concentrate on sequelizing their biggest sellers, so some of the most intriguing games got forgotten.  Among them was the Manhunter series, a pair of sci-fi/horror adventures.

Phantasmagoria becomes a cult classic, and this gets left in the dust? There is no justice in the world.
In the far-off future year of 2004, Earth has been invaded by an alien race of giant flying eyeballs called Orbs, and humanity has been enslaved.  All humans are required to wear same-looking robes, and remain completely silent at all times.  Chips are implanted in their necks for easy tracking.

You are a Manhunter, and your task is to solve crimes being committed by a resistance group.  You get a laptop to help you, and you must investigate crime scenes and try to figure out the identity of murderers and terrorists.  The problem is that the GPS trackers in people's necks only track bodies, but don't give IDs, so you can watch logs and track individuals, but you can't tell who they are without some detective work.

Something something political joke.
And although you start off working for the Orbs, you soon become embroiled in a deeper mystery that reverses your allegiance and forces you to commit crimes yourself, unraveling new strands that show even more horrifying evildoings of the Orbs (as if just enslaving the human race wasn't bad enough).

Thrown in the mix are a variety of minigames to keep you on your toes.  These are generally quick reflex games, like one where you must throw knives between a man's fingers, to stealth games, like sneaking through a warehouse and avoiding robot guards.  The minigames generally can have their difficulty settings changed, so if you find one too hard, you aren't stuck.

Hint: Always put this one on Easy mode.
Even if you lose these, or die in any other nasty way, it wasn't a big deal like in most of Sierra's other games of the time.  In King's Quest, for instance, you had to save your game every couple of minutes so you could load if you died.  In the Manhunter games, you were brought back to a point shortly before your death automatically, so saving was only to quit and come back later.  Unfortunately, like other Sierra games of its day, you could get stuck being a dead man walking, so strategically placing a few saves is still a necessity.  This is one of the only flaws in the games, though by today's standards, it's quite a big one.

Excusing the arcade-style minigames, most of the game is searching for clues and trying to put together different signals and symbols.  Since you can't talk (and neither can anyone else), you either have to communicate by writing, vague hand signals, or showing important objects off to gain the trust of suspects, witnesses, and others in the resistance.  Keep a pad of paper handy and take a lot of notes.

Every word of this confused me as a kid.
Though the Manhunter games keep you in suspense, and can be pretty creepy and frightening at times, there are plenty of light-hearted moments to relieve the tension, as well, usually by way of Warner Brothers-esque slapstick.  My favorite funny bits, however, are very dark and very subtle bits of text.  In those cases, the jokes are some serious implications and raise the stakes when you understand them.  Though I won't give an example so as not to ruin anything, I will say that if you catch the jokes, you'll be laughing your head off and your heart will be pounding in fear at the same time.

This, however, is not a funny bit.  This bit will make you cry.  No, seriously.
The puzzle-solving can be quite devious, and require a fair bit of out-of-the-box thinking, though nothing as ridiculous or unfair as some other of Sierra's games, so rarely will you get stuck for too long, as long as you understand what you're looking at.  Oftentimes a shift in perspective is all you need.

It may have taken me slightly more than four years to figure out how to get past this screen.  I am ashamed.
Although they are not numbered, Manhunter: New York is the first game, and Manhunter: San Francisco is the second, picking up moments after New York ends.  A third Manhunter game was meant to be set in London, but it was cancelled in favor of continuing other Sierra franchises.  The Manhunter games did not sell as well as King's Quest or Space Quest, so they were dropped.  It's sad, really, because they were extremely original, spooky, funny, and stick with you for a long time.  I've had more than one dream inspired by these games.

Look for them on abandonware sites, and you can probably find them.  It also helps if you have a beepy-boopy internal speaker for the sound.  Surprisingly good music, too!

Also, this is the least gory crime scene you will see.  Be prepared for lots of blood.

Friday, November 1, 2013

Dev Log: Horror Text Adventure #26

The player now has a limited inventory of two items.  Previously, the player's inventory vector could be expanded indefinitely each time they picked up a new item.  I may mess with it later so a player can wear pants with pockets, or a backpack which lets them carry more, though I'd want it to be realistic in terms of the size of things (no sticking sleds in your pocket).  At the moment there are items which can hold items, like dressers, and they can currently hold an infinite number of items, so that'll need to be fixed too later.

That's all I did this week.  Halloween is a fun holiday.

Tuesday, October 29, 2013

Tis the season to be scary

I recently had traffic spikes from two different sources.  Hello new people!  Come for the reviews, stay for the dev logs!

Blog update time:

For the blog itself, there won't be much change next month.  Certainly half of the posts will still be about the horror text adventure, and the other half will be other stuff.  I have a couple of review ideas in mind, so they might show up soon.

But I've also made a little Cafepress shop for some random items, both game-related and not.  I may add new designs as I come up with them.  My markup is basically as small as possible, so they're as cheap as I can get away with (that is, if I understand what I'm doing; the site is not as user-friendly as it could be).  I may switch to Zazzle or another competitor if I find one of them is cheaper for customers.

That's about all the news for now.  Since we're approaching Halloween, have a couple of scary adventure games (multiple chapters each!):

Friday, October 25, 2013

Dev Log: Horror Text Adventure #25

I've now changed the temperature fluff from linear to being based on height variance.  It works better, with no more out of range exceptions, though it's still not the greatest.  Eventually I'll find a far more dynamic solution, just to mix things up, but for now at least it's interesting.  The only problem really comes in when the player starts in a room that's "so hot you think you're going to faint" or "so cold your toes feel numb."  Eventually this will be far more than flavor text, and might have some kind of measurable impact, so it wouldn't do to have the very first room put the player in mortal danger.  But again, for now, since it's just flavor text, it's more of an experiment that can be applied to other circumstances later.

However, all that's just goofy fun stuff.  The really meat I accomplished is adding "examine" to the dictionary.  When the player types "examine <object>" the game checks the room for that item, and spits out the item description.  If it's not in the room, it checks the player's inventory.  I'm thinking to make the game slightly more realistic, the player will have to have a limited inventory.  Bags of holding are silly.

But, in any case, the player can now walk, take, and examine.  We might have the start of an adventure game here!

Friday, October 18, 2013

Dev Log: The Vortex #30 - Card PDFs

Since I rearranged my Dev Logs & Projects tab, I realized how many projects have been postponed.  Let's fix that.

The main reason I put The Vortex on hiatus was because I live in a gaming dead zone where I can't get testers easily.  But why let that stop me?  Just like my Dominion mods, there's no need to make them truly local.

So even though I can't watch people playing this game, they can still test it.  Here are a bunch of PDFs of the cards for you to print out and play, as well as a PDF of the current ruleset.

Each set of cards is in a separate PDF because there's hundreds of cards and putting them in one PDF would make loading it take forever.  It's easier to print them out this way.

The Blue, Green, Red, Yellow, and Locations each get printed out once.  Rogations and Frenzies get printed out twice.  Obviously, print out as many copies of the rules as you like :p

Feel free to print them out and play, and leave a comment about anything you feel sucks and should be changed (also comments saying what's awesome is also welcome).

Note: all the images are purely placeholder and are not my own.

Tuesday, October 15, 2013

Dev Log: Horror Text Adventure #24

So while I was taking my dog for a walk, all bundled up against the biting cold, I decided to add temperature as some flavor text, determined (for the moment) by your z coordinate.  As you go down, it gets hotter, and as you go up, it gets colder.  It was a quick little job, throwing in a case statement for particular floors (though I'll make things more complicated later).  At present, the cold and heat only go up and down to around floor 10 and -10, respectively, and a quick trace error on world creation lets me know when the world is too tall for it.  It's interesting to watch, since sometimes the world sprawls out horizontally without too much variation in height (and I get no errors), while other times I get dozens of errors because the world is like a skyscraper.

Of course, it's not really an error, I just need to have the temperature make more sense.  But as a test for world-determined (instead of room-determined) flavor text, it works.  I will probably also mess with the odds of a change in z, so the skyscraper effect is more rare.

The real error I discovered when I did this is that I've connected rooms backwards.  At first I was confused as to why going down made things colder, then figured out basically when two rooms were connected, and one z is less than the other, the former room was connected above the latter.  That, of course, means that not only did I have my z logic wrong, but east means west, and north means south.  That was quickly corrected.

I also came up with a quick way to randomize what items are in a room, and as a test, a hallway may or may not have a painting hanging on a wall. I can also determine the exact odds of any given item in the moment of (potential) creation.  I may need to generalize this later, when the number of potential items gets large, but for a quick couple of lines, it works for now.

Friday, October 11, 2013

Punk-O-Matic 2: Flash Game Mini-Review

I first discovered the original Punk-O-Matic on Newgrounds many years ago.  It was a simple music maker, allowing the user to make punk music with predefined licks and chords and play it.  You could also extract a code that you could then post so anyone could copy it and listen to the tune you made.  The comments section was full of great music, and it was certainly a fun tool to waste an hour on.

A few years later, I discovered Punk-O-Matic 2 on Armor Games.  This seriously updated it and turned it into a rhythm game.

A pretty neat interface, too, that's much more intuitive than Rock Band.
In POM 2, you start as a garage band, earn money by playing gigs, update your image, learn cover songs, and of course, create your own music with a far more robust system that allowed for not just various kinds of punk, but if you really worked on it, you could make metal and ska (minus horns), too.

A music maker that's fun to work with? Absurd!
POM 2 has a storyline, humorous cutscenes, and the ability to play any of the four instruments.  Best of all, on Newgrounds, Armor Games, and Kongregate, you were no longer restricted to creating codes for your music, but could simply upload them and browse other users' songs as much as you like.

POM 2 was created during the height of the Guitar Hero craze.  Of course, you can't exactly plug a guitar into your computer to play, but instead use six grouped keys on your keyboard.  Two players could also share the keyboard and play together.

I spent ages making music on POM 2, let alone playing the songs in concert.  The problem came in a bit later when, for some reason, parts of POM 2 started breaking.  Scrolling became a problem, and even the controls for playing got buggy.  I couldn't quite understand it.  My only thoughts were that browser Flash updates broke it, and then it never got an update.

But I recently discovered a downloadable version, which works great.  The community disappears because you can't publish your songs to a game site server, but the controls and scrolling are no longer broken.

Now that I've found a working version again, I can recommend giving it a shot.  You can download Punk-O-Matic 2 from

Don't forget to turn num lock on for second player controls!

Tuesday, October 8, 2013

Dev Log: Horror Text Adventure #23

Why was I doing things the crazy way I've been doing?

I keep abstracting out the way the world works because in my mind the world is not truly in 3D space the way, say, an FPS is.  But it makes far more sense to give each room an xyz coordinate set.  Now I'm no longer creating rooms within rooms, and creating an inefficient "snaky" form of maze.  Instead, I just create rooms with an xyz, and on creation of each room, change one of those coordinates by one, plus or minus.  Then check to see if I'm accidentally overlapping rooms, and make corrections with recursion.

That part's all set now.  And with that proper world gen in place, I have much more easily set up barriers.  Now barriers aren't created when the room is created, but is instead a separate process because rooms need to know who their neighbors are before barriers can be made, and if their neighbor hasn't been made yet, it would need to be corrected anyway.

Right now I've made it so if a room has a neighbor in a particular direction, there is a passage between them.  If it doesn't, there is a wall.  This is of course too simple for my goal, but for now I'm doing it that way so I can see at a glance what the structure of the world is.  It actually doesn't work out too bad.  It seems like any given room has at least a couple of walls, and some rooms at the edges are dead ends.  This is exactly what I want, and it was decently easy to get it that way.

This is far less convoluted now and nicely top-down, instead of the sideways structure I had before.  I think it's bug-free, too, so I can start moving on to other things.  Maybe I'll add some fluff text, or perhaps I'll tackle doors next.  The doors, especially locked ones, will require a bit of thinking.  Adding doors is easy; it's locking them and putting the keys on the right side that's the tricky part.

Friday, October 4, 2013

Sustainable Gameplay

There are some games that never get old, and I can go back to again and again, and my only wish is that they were longer.  I think I'd still play any early Tony Hawk game (keyword 'early') if one was handed to me, and I regret getting rid of some of those discs.

Turn back! Turn back! You've gone too far!
Other games are perfect or near-perfect in how long they last: the gameplay is interesting and fun 'til just after the end, so you never get bored throughout, but you don't clamor for more; you just feel satisfied from a great game experience.  I think Super Mario Bros. is like that.  If you beat the game by warping, you don't quite feel completely satisfied, so you re-challenge yourself to beat the game by completing all 32 levels.  After that you feel like "Yes, that was quite enjoyable, but I'm done now."  Really no need to beat the second run through that becomes available with different enemies, I assure you.

Then there are other games that you give up on, because the gameplay was interesting and fun at first, but it overstayed its welcome.  This is a line hard to describe, since everyone has their own opinion on what games are too long.  But I think for me, often RPGs are too long considering their gameplay.  I remember playing Earthbound Zero (Mother) and getting around 95% of the way through before simply giving up.  Not because I died or it became too challenging or frustrating, but simply because the grind got boring.  The gameplay was fun and enjoyable, but it just didn't go barely far enough to be interesting to the end of the game.  If the game were only 5% shorter (no story changes, just shrink a few levels), I would have finished it and been satisfied.  I was interested in the story, too, but my desire to finish the story did not override the plodding gameplay.

I'm pretty sure I never figured out why my house was haunted.
And it's a fine line to cross.  I'm sure many people thought Earthbound Zero was great, espcially RPG diehards (as a generalist who enjoys almost any genre, I'm not the target audience for RPGs, and find that most of them overstay their welcome). I've also heard the tired argument that "It's about the story, not the gameplay" in RPGs.  Sure, story can take precedence over gameplay, I have no problem with that; but gameplay should not undermine the desire to even finish the story.

And it's hard sometimes to determine, from a conceptual standpoint, how long the gameplay will last for the target audience.  You might have a great mechanic that's enjoyable for fifty hours, but you have no way of knowing that until far into the development process, and your game is expected to take about sixty hours for the average player to complete.  Well, you just got hosed, and it was hard to determine that without an extreme amount of testing before making all those assets.

One way to get it right is to betatest, getting gamers who have never played the game to go from start to finish and use their feedback to determine if the game is too long or too short (the former sin being far worse than the latter).

Too short, but I'm okay with that.
The other option that was a fad for a while (and is it still a fad? I hope not) was to incorporate minigames to break up the main gameplay.  I remember Final Fantasy VII had a kind of tower defense minigame on a mountain (before the concept of tower defense was even a thing; oh, that hipster Square).  Tony Hawk's Pro Skater 4 added baseball, tennis, and other nonsense.  The problem with these is their very intended purpose: to break up the gameplay.  They feel jarring and hurt the overall experience.  Sure, they make the player want the normal gameplay back, but only because they were given a diversion that was far worse.

Thankfully, I haven't seen that happen too much anymore, and when it does, it's a much smoother transition that works within the game so you hardly notice you're doing anything different.  Something like the pegasus rides in God of War II might be an example, since you're still doing approximately the same thing you did on land (kill things), so it's not a total departure.

The other way that most games prefer to do things is to introduce new mechanics throughout the main game that enhance gameplay.  In RPGs, you get new skills, items, spells, etc.  In first-person shooters, you get new kinds of weapons.

But sometimes I feel like that's just delaying the inevitable.  If the core mechanics constantly need something new to perk it up, it's just slapping one band-aid on top of another.  I've played too many games where the gameplay has just started to get boring, then a new weapon appears like a deus ex machina to rescue the game for another ten minutes.

Some games do new mechanics well, adding new dimensions of gameplay without overshadowing the original gameplay.  But that works because the gameplay without the new mechanic is still fun and interesting by itself.  Take, say, Mario 64.  Before you get any caps, the game is awesome, and when you start to get caps, it opens up new possibilities and locations you couldn't reach before, provides new challenges, and adds significantly to the experience.  Yet it also does a great job balancing these mechanics, by making caps a rare thing to get.  Only certain blocks give them to you, and they only last for a limited amount of time.  The caps don't overstay their welcome, and the gameplay without them doesn't get diminished after their discovery.

There is a preponderance of upgrades in games these days, I think.  Seems like too many games give you a new upgrade or weapon or ability every five minutes, as if you're a baby and each mechanic is a bigger set of keys being jangled in front of your face.  At some point, the keys get too loud and bright and you get overload.  And let's stop this metaphor before it becomes stupid.

Anyway, I often feel that these upgrades try to distract a player from bad gameplay by making it addictive instead.  You want to know what you'll get next, even though you don't enjoy playing the game in the first place.  If you think about Super Mario Bros. again, there are three upgrades you can get: the mushroom, the flower, and the star.  All three are introduced in the first level, so you know what to expect, and they become a standard part of gameplay that you work hard to keep from losing.  But you don't get a new upgrade in the middle of the game that significantly changes the gameplay.  I think it would be quite damaging to the game if you had to wait until world four to get your first fire flower.

I remember Manhunt, that game where you sneak up on people and kill them in all sorts of delightfully gory ways.  There is a point in the game where you operate a magnetic crane with a fridge on it, so you can whack bad guys around.  I thought it was a funny diversion for a couple minutes, but then it lasted just a little extra too long so I wanted to get the heck out of the crane so I could play the main game again.  It was a minigame that was funny at first but overstayed its welcome.

Then came the point where you stop sneaking around and the game turns into a shooter.  I turned the game off.  That completely changes the gameplay and it wasn't the game I paid for and was promised.  But I see why they did it: the sneaky killing was getting boring.  Well, instead of changing the gameplay completely, they should have just shortened the game.  I would have been perfectly satisfied if the game ended just a hair before the mechanics got boring, so there would be no need for gunfights.

So it wouldn't devolve into every other game ever made.
True, the game would have been short compared to other games, but it would have been exactly the length it needed to be.

I think there is this idea that games need to be extremely long to be worth the price, but what's that maxim? "Quality over quantity."  I think the mechanics of a game should determine how long the game lasts, and nothing else.  If the story needs more gametime, then perhaps the story should belong in a game with gameplay that is interesting for a longer amount of time.

And then there are the games I mentioned right at the beginning, games which seemingly never get old.  The gameplay is just so good that you'll be happy to play the game until you upgrade your console or computer and it no longer works.  And these games certainly do exist; take any successful multiplayer game.  All the infrastructure required, the servers and support teams, bank on the gameplay being so good it's worth all that cost.

But perfect gameplay for single-player doesn't translate to perfect gameplay for multiplayer, so it becomes an even trickier puzzle to solve.  But I think that's for another article.

What we can say is that this does not work for multiplayer.

Tuesday, October 1, 2013

Dev Log: Horror Text Adventure #22

I am in the process of creating barriers between rooms: walls, closed doors, and empty passages.  I have to recode a fair bit to accommodate them, but I think it's better to do it now before movement gets any more complicated.

Basically right now any two rooms are doubly linked, and only empty passages connect.  Of course I need to add doors, especially locked ones, but I also want to be able to connect rooms by an impassable wall, so the player can't move through them, but ghosts can, and the player can hear through it.  The system I have in place doesn't allow for it.

So I'm recoding it know so rooms will connect in a particular direction to a Barrier object, so I can make checks to see what type it is, and if it's a door, if it's unlocked.  Having a variety of barriers allows for more variety of descriptions, as well.  So if there's an impassable wall separating two rooms, the player won't get any sort of room description like "there is a bedroom to the north" because the player can't see it.

I've got some of the code for that completed, mostly in the Barrier class itself.  Now comes the implementation...

Friday, September 27, 2013

Dev Log: Horror Text Adventure #21

World gen has begun.  Half the code for creating a year's worth of rooms was already in place, I had just forgotten I had already made it.  But I finished it up, and removed the previous manual room-by-room creating I had been doing and instead just made a vector of rooms quickly.  Of course, I only have two types of rooms right now, bedroom and hallway, so it's a bit of an oddly shaped house you've got with 365 bedrooms and/or hallways.  Also, currently, the rooms are like a snake rather than a maze, with room #1 connecting to room #2, and #2 connecting to room #3, with no dead ends or multiple paths.  I'll have to work on that at some point.

While I was in there I also fixed a potential bug (which I had not experienced but the code allowed it) where a room could be overridden in terms of the directional pointer, so a player might go north into a room, and then when they go south they end up in a third room, rather than the first.  That would open up great possibilities for labyrinths, but that might cause headaches for both the player and myself.  It's kind of a cruel joke that I want to discourage, actually.  I want the player to feel lost in a maze, but not lost in the game, if that makes sense.

Sometimes you call a bug a feature, but when it's easily fixable with a one-line do-while loop, there's no point.  One always has to be careful about accidents, and deciding whether they are happy or not.

It's kind of odd: setting up the world gen to allow for 365 rooms makes me feel like I can breathe.  Before, when I was just testing with two rooms, I kind of felt like I'd never get anything done.  Even though fixing up and starting world-gen was only a few lines of code, I guess the 'physical' space allows me to starting thinking of the objects and room types rather than feel cramped.  Psychology!

Tuesday, September 24, 2013

DinoPark Tycoon (A Forgotten Diamond)

I clearly remember the very first game I ever stayed up all night playing.  I think I was around eight years old.  I didn't even realize I'd stayed up all night, I simply decided it must be about bedtime so I ought to stop.  When I checked the clock, I discovered it was 4 AM.  I couldn't believe that my parents hadn't told me to go to bed; somehow I had slipped their radar.

That game was DinoPark Tycoon (of course; what's the name of this post?), and it had me hooked.  It came out the same year as the Jurassic Park movie, so the idea of an amusement park with dinosaurs was very high in my mind.

Basically, DinoPark Tycoon is a business sim like the Sim[X] franchise.  I believe this was before the "Tycoon" franchise, and it's by a different developer.  It's meant to be both a business sim and an educational game, allowing the player to look up the dinosaurs they put in their park.  The info is helpful, like dinosaur diet so the player knows how much food to buy (and whether to buy plants or animals), so the educational content is blended with the game.  This was back in the day when educational games were good at that.

Another example.
You had to manage many aspects of running a park, including buying property, fences, concession stands, dinosaurs, dinosaur food, hiring employees, fixing ticket prices, advertising, paying off loans, and even going to auctions.  You even had to pave new parking lots and put up restrooms.

I pretty sure real theme park managers buy their restrooms and parking lots from catalogs.
I remember I always had a personal goal of making it ten years, but after three a multitude of problems kick in, and after five the park really goes to hell in a hand basket.  Dealing with escaping dinosaurs is the least of your problems.  Vandals, managing employees, dinosaurs getting sick, running out of food, running out of money; all of these problems always seem to hit at once.  You have to maintain a high enough profit or the first to go is your employees.  They will leave the first week they don't get paid, and if the concession stand operators leave, you lose more money, and if the vet leaves, your dinos will get sick or overeat, and if your maintenance men quit, the dinos will break through the fences, and if your tour guides quit, visitors will be unhappy, and if your manager quits, the remaining employees will be unhappy.

It's a great big downward spiral of despair that contrasts with the perky internal speaker music and colorful graphics.

On the other hand, sticking the T-Rex behind the chainlink fence wasn't the brightest idea.
I never got into SimCity, and I always had this notion that it was because there was no win state.  I don't think that's true anymore, because DinoPark Tycoon had no win state, but I was obsessed with it.  I think ultimately a lot can be said for theme.

On the surface, you might assume this is a cash-in on Jurassic Park, and it might be partly true, but this takes a much different spin on the concept.  Jurassic Park is really about the characters trying to escape, but DinoPark Tycoon is much more about building and managing such a park.  For some reason, as a little boy, the management of a dinosaur theme park seemed far more interesting than watching dinos eat lawyers.

I think this game is a bit of a hidden diamond.  I don't know too many other people (except those I grew up with) who ever played it.  There were some similar games, like a licensed Jurassic Park themed game, and a dinosaur expansion to Zoo Tycoon, but I think this one has the right level of complexity (or perhaps simplicity) that helped get me into the genre.

DinoPark Tycoon can be found on most abandonware sites, so if it works on your computer, give it a try.  Even if you don't like SimCity (and I don't), this game might get you interested in simulation games.