Also, when you make a command like "examine bed" the description becomes a new paragraph for easier reading.
Friday, December 6, 2013
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!
Tuesday, December 3, 2013
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
Tuesday, November 26, 2013
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.
|Slightly backward from normal, but whatever.|
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 thatguywiththeglasses.com, which is their official site, and they host their videos through blip.tv, 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).
|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.
|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).
|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
|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
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
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.
*This has been a friendly PSA reminding you to get at least 15 minutes of exercise daily.