1. Another benefit of the OOP approach. Also, dice.

    February 25, 2010 by Stone

    I just realized at work today that I am not sure how to get the grid to display. This actually means I can try something I’ve wanted to try with OOP: writing the game without a fundamental component, and seeing if it can be added later. I figure that if I can track everything on a grid, having a draw command go over the grid and display what is there shouldn’t be so hard after. It’s quite a change though from what I’m used to. Web design is all about the visuals, and you really can’t work without them. It will be strange not seeing instant gratification on a change, and passing a lot of numbers to the interpreter, but I think that may be the quickest way to get started.

    A friend of mine made an interesting comment the other day at the craps table. We got to discussing RPGs, and he said that nearly all dice rolling is linear, even though it doesn’t have to be. Most RPGs probably have some roots in Pen and Paper (PnP) games, and those are often limited to dice with an even number of sides and modifiers. This didn’t need to be the case, but the alternative was usually more about number crunching than anything interesting. He surmised that it would be interesting if a game could use casino games for rolls. Imaging playing an RPG in which your actions correspond to actions at a table. You get into a battle with an orc. Behind the scenes, you are each dealt two cards for blackjack. You choose to attack. This puts you at the ready and in the blackjack game, signals that you want to stay. The orc takes a defensive stance, the equivalent to taking a hit, then staying. Both of you flip your cards at once! ooh, he busted, and his block fails. You had 21 (and didn’t know it), so you get a critical hit!

    At the very least, it would make an interesting game. I’m not sure how practical it would actually be in practice.


  2. Design Philosophy

    February 9, 2010 by Stone

    If you know my gaming habits, or read some of my posts about roguelikes, you know that I am a big fan of Linely’s Dungeon Crawl, or more specifically, the updated Stone Soup variant. I find the game fun, challenging, and interesting to play. It does not have a few of the flaws (I consider them flaws) of ADoM that keep me from regularly playing. ADoM is fantastic in it’s own right, and is definitely a step above everything else in the realm of roguelikes, but I keep starting and stopping, beginning and not getting far, and I think there are a few reasons why I do this, and can’t possibly be the only one:
    1) Instant Death. Nethack is notorious for this, but ADoM has a huge number of these too. InstaDeaths are a good addition to gameplay within reason, but there is nothing quite as frustrating as losing a character you have been working on for a while, to a threat that you should have been able to handle, regardless of your HP, toughness, resistances ect. I won’t go into details here, (that would be a long rant), but with permanent character death, instadeath sucks, and should only be used sparingly in avoidable situations.
    2) Certain skills are vital, others are pointless. While each character in Crawl only needs certain skills, different characters will need different ones, and they are all therefore useful. Can someone please tell me what your appearance score in ADoM was for? Me neither. On the other hand, I never had a win without the healing skill, which leads to my next issue…
    3) Non random, non choice, linear paths. How many times did I have to rescue that damned carpenter? The only time I had a choice was if I already had the healing skill, and most classes don’t start with it. Choices are only good if they are meaningful, and not a no-brainer. This is a big part of the Crawl philosophy, any time you could choose to do something, you are choosing not to do something else, which makes it tougher to decide. My favorite example from this are the Crawl Gods. There are so many to choose from, each with their own strengths and weaknesses. Do you choose the one that covers your weaknesses so you are more well rounded? Do you choose the one that complements your strengths, turning you into a deadly force to be reckoned with? Do you take the slow and steady god that will have huge rewards later for your patience now, or do you take the god who trusts you early with his power, but never really grows into anything game-changing?

    Bonus point: Good and Evil. This is one that Crawl loses in favor of ADoM. Crawl’s good and evil is bland at best, with “good” gods who help slay undead, and won’t take demon followers. It is there, which is good, but you don’t generally have many actions that slide you one way or the other on the cosmic good and evil scale, other than the act of existing as undead or a demonspawn.

    In ADoM, you could rob stores, kill the innocent, heal the wounded, spare a life, save the mad, gamble, commit acts of cannibalism, donate your money to good (or evil), sacrifice your enemies, sacrifice your friends, save a little girl’s puppy, or eat it in front of her. One of the first things you can be asked to do by the sheriff of the first town is to bring an outlaw leader to justice. One of the first things you can be asked to do by the leader of the criminal town is to slay said sheriff. It’s truly interesting, and your Lawful/Chaotic alignment has an effect on the game.

    So, in summary, I think a good design philosophy for my roguelike is as follows:
    1) No no-brainers. Decisions should be interesting, and have an impact
    2) Said decisions should be plentiful
    3) The player should see sources of death coming with enough warning most of the time to react (ie, you shouldn’t see a message about a monster picking you up and throwing you out a tower window unless you could be expected to know that that monster could do that. It should never happen immediately on the monster coming into line of sight. Also, no monster should do more damage in one turn than the player has HP, unless the player could see it coming)
    4) (duh) The game should be fun. any and all rules can and should be modified if they add tedium, encourage farming or scumming, or inhibit players from enjoying the game.

    With that in mind, I will probably commit a crime against my own philosophy in my first roguelike, and follow the design and layout and predictability of Mystic Towers. I think I might make a goal of mine to eventually move away from pre-defined layout, but to start with, I don’t have to try to code a map generator that way, and I know that the original layout was tailored to the tower, with the right number of spells and location of items to ensure an enjoyable game, and it seems wrong for my tribute to stray from that.


  3. It’s funny, actually.

    January 28, 2010 by Stone

    I have a number of subscribers, and I delete a few spam comments, but it is funny to me how many of you remain anonymous. A few of you probably really do read these, and I would love to get your opinions and comments.

    Please, reply, let other people know that of the 19 users who don’t appear to be spambots, you are real, and you have an opinion.

    And an update: Java is going well, but it has been a rough couple of weeks and I’m a few chapters behind. I just got to the one about making the application run in it’s own window (awesome!), so I will be putting up some samples and some code in the next few weeks.


  4. Finally, a phone app that makes me want a better mobile phone.

    January 6, 2010 by Stone

    The article: http://gizmodo.com/5440911/google-and-adobe-bringing-flash-101-to-nexus-one

    This has been my biggest complaint about the iPhone, and if it works well, this may well be the jolt Apple needs to get it together and get Flash on the iPhone too.


  5. Java: What is OOP?

    December 28, 2009 by Stone

    For the people who are not nerds that are reading this (all 1 of you), you may be wondering what Object Oriented Programming (or OOP) is, and why you should care. Really, you probably don’t need to care about it, but for someone like me, it represents an efficient and scalable way of writing code. The idea is that anything you might interact with in a program is actually just an existence of that type of object. To put it another way, you might have a dog. I also have a dog. If this were a program, both of our dogs would be part of the Dog class. This handles things that all members of the class Dog should be able to do, such as eat, bark, and poop. These are things our dogs have in common. If caring for your dog were a computer program, you wouldn’t be caring for just any dog, but your specific dog. My dog is named Chester. Chester is a different dog than Fluffy. They are completely separate, and have no relationship beyond both being dogs. They can have different names, different species, different eating habits, whatever, and what happens to one doesn’t affect the other. My dog is a Cocker Spaniel. His breed has no effect at all on Fluffy. In a programming sense, this makes sense. Suppose I write a game in which you catch a ball. Any time you play the game, the ball is the same, right? Now suppose I make another game in which you have a ball and you bounce it on the ground (these are boring games, but good examples).

    Which sounds better to you:
    a)Taking the same ball you just caught, and bouncing it on the ground.
    b)Taking the ball you just caught, putting it away, getting a new one (making a new one in this case), that is nearly identical to the first one, and bouncing that.

    I hope you said A. This is the big benefit to object oriented programming. I can re-use the ball anywhere I need a ball. If in a new game, I want the ball to be deflatable, I can add the property to the ball in that game without changing the rest of them (by extending it for those who know the terminology). If I decide that I got the concept of a ball wrong, and it should be square instead of round, I can change the ball class to match this, and it will become square in all the places that it is used. But still, only the one set up to be able to deflate will be able to.

    I hope that made sense. In terms of the Roguelike I hope to write, this should mean that things in the game can be simplified heavily. A dragon is the same thing as a cockroach: both are part of a group called “monsters” (or maybe “enemies”). What makes the dragon big, scary, green, fire-breathing, or two-headed is all set after the program already understands that it is a monster, and has the properties of a monster (HP, experience point value, etc.). I could set up any number of monsters in this way no matter how different:
    name:”giant ant”
    description: “a giant ant. Quick, get a can of bugspray!”
    HP: 1
    exp value: 1
    damage: 1
    message to the player: “I’m a giant red ant. just step on me.”
    and
    name:”big ogre”
    description:”A big mean looking giant with one eye. It is staring directly at you, as though it can see your soul.”
    HP: 150
    exp value: 200
    damage: 100
    message to the player: “ROAR! BIG OGRE CRUSH YOU, PUNY HUMAN!”

    and the game can handle both of those. In this way, you can encounter a wider variety of enemies, and I didn’t have to script each one on it’s own, just fill in a few blank spots.


  6. More on the roguelike project.

    December 24, 2009 by Stone

    I’m excited. I haven’t really had much ambition lately for new stuff, but the idea of getting this roguelike moving is fun. As a (self-identified) super nerd, I had a few ideas. I actually considered a Pokemon Roguelike. It won’t happen though, at least not for a while, since there is a LOT of continuity and a lot of data out there for Pokemon already.

    I considered recreating Mystic Towers in Rogulike format too. This is tempting, since the levels are already designed, and the game was fun enough to warrant playing through it again even though it’s like 20 years old. Mystic Towers was the first game I bought on my own (saved allowance for weeks), and the first game coming close to 3d that I had played. It was fun, some parts of it were scary (I was like 8 the first time I encountered a dark room with a loud monster chomping on me), and it was innovative for it’s time. Yeah, a lot of people will look at it now and think that it’s boring, or unoriginal (hint: it’s not), but it had everything a gamer wanted back in 1994: puzzles, half-assed physics (pull something off a shelf, it falls. flat things like money could be underneath movable things, you could escape a monster by being above it, and firing downward), monsters, a sense of urgency (you had to find a bomb and blow up the monster generator before it repopulated the tower. In the hard towers, you wouldn’t have enough spell ammo to take the monsters out again if you weren’t careful), and a cohesive story.

    So I might make that for my first stab at a roguelike, though I actually have a bigger ambition in mind that I’m going to discuss at a later date.


  7. I am writing a Roguelike.

    December 23, 2009 by Stone

    It’s been a while since I posted. Sorry.

    A roguelike is a computer game based on Rogue, which was one of the first computer games written. These games usually have simple graphics of ASCII characters, an ‘@’ for the player (represents a hero viewed from the top down), and letters representing enemies (such as a ‘D’ for a dragon). These range in complexity up to the likes of ADOM (which is hugely complex, with lots of things to do an explore, lots of skills the player can learn, and several paths through the game). These can also have quite a few themes, rather than just the mythical dungeons and dragons type theme. Notable games in this regard include Gearhead Arena (a roguelike centered around anime-style giant fighting robots, with you the player as an aspiring pilot. Actually, the whole game is even bigger than that, and totally awesome), and DoomRL (Based on Doom. If you’ve never played Doom, you’ve missed out on true gaming legacy. DoomRL is in itself a vast amount of fun).

    Roguelikes, if you can get over the lack of graphics, are really a lot of fun. They can vary in difficulty and complexity, so people of any gaming skill-level can jump into one. Because of some features they share with bigger games (skill points, leveling up, inventory, ect.), creating one is a good way to learn a new language, or test a programmer’s skills. I will be writing this in Java, which I am actually just starting to learn. I understand the concept of Object Oriented Programming, but it is time to see if I can do it (well, that and I have an idea that hasn’t been explored in a roguelike yet).

    More details to come. This isn’t started yet, so don’t expect a mini-site or progress for a while.


  8. Some of the most outrageous tech ads.

    September 28, 2009 by Stone

    Today’s link

    This is a good read for anyone into marketing, ads, commercials, or technology. Microsoft took 3 spots. I seriously have a weak stomach, and was surprised I didn’t get sick at the puking video the first time I watched it. While I have seen about 6 of these before, I have to give some props for the pets.com ad, since sock-puppets will always have a special place in my heart. That reminds me that I do have a video I made in school involving sock-puppets. I’ll upload it some time.

    I am having a contest. If anybody includes a comment that has a link to a bad advertisement on it (that isn’t on the linked list), I’ll enter you into a random drawing to choose the next big technology I should invest in (and I’ll blog about the results). Good luck.


  9. Pool playing robot. When can I get one?

    September 22, 2009 by Stone

    Cnet news article

    This is really cool. While I don’t actually see a practical use for it, I have to say that the idea is really cool. The system uses cameras and math to try to predict how shots will outcome, and the ultimate goal is for it to beat the best human players. Personally, I’m holding off on this until it can match the things in videos like this. Still, the idea that it works like the AI in Midnight Pool on my old cell phone, but uses a real pool table is just too cool.

    Oh, and on a side note, after a rather long hiatus, this blog is back, baby!


  10. You can now try windows 7.

    January 13, 2009 by Stone

    Just go here

    I might try this. I’m not 100% sure yet. I’ll let you all know if I do.