Saturday, October 29, 2011

a roguelike update?

So after weeks of doing nothing with it and playing with other Tkinter components I present.

It's an update. Not the best one and actually glitchy. There are quite a few things I don't like about it but following the ideas for making a roguelike I shouldn't be so hard on myself.

First is that it's hard coded, the 5 lines you see there are positioned there, I'd like it to be at the bottom of the viewable screen. This could possibly be easy to do but I was tired when I finally finished this up so it got hard coded to see it. Not something I should beat myself up over but I like dynamic structures, it helps for changing layouts later.

Second Tkinter canvas centers blocks of text. I do not like this at all. I may have to write my own code to properly justify things to the left. Not sure why Tkinter would think this is a good way to do things considering it works on standard top left coordinate scheme but it's the reality, maybe there is an option to do it that way.

Third it doesn't work. It fills out fine until the sixth item is hit, in which it should "push" all the ones before it up once and the topmost one into nothing. Right now it doesn't do that and I didn't get into the guts to find out why.

Fourth odd glitch. Players will hit themselves after moving on their first spawn. I do not know why but only noticed this with output.

Now for the nice things.

I got it done. It's progress. More than that I discovered a nice feature, with the way I have things move and attack each other enemies moving into each other will attack. This lead to some very confused minutes when I noticed this but it works exactly as it should. I would just need to add in some triggers to count allies as walls for movement purposes to avoid friendly fire, for now it's funny.

Sunday, October 23, 2011

pretending to be a game bloger

It's been a while but today I have some things to talk about. A little indie game I've come to like called the Binding of Isaac.

Do you really want me to die?
Bad MSPaint fanart aside it's a game made by some of the people involved in super meat boy. What this can tell you it carries some pedigree for difficulty and odd humor. For one it's a very gross game by a lot of peoples standards. but we'll get into that in a second first an over view.

You play as Isaac, a little boy who's trapped under his house escaping his mother who hears voices from god telling him to kill her son. For those who don't care about the fluff it's a Zelda like game with a a smashing of roguelike qualities. Controls are simple and I'm told it's reminiscent of smash tv or from my understanding berserk. You move around with one set of controls in carnal direction sand fire independently with other set. You have your main weapon which starts out as tears and upgrades to other things. Your secondary item is something you can pick up through the dungeon and has differnt effects, when used it has to "recharge" which is done by clearing rooms. After that you have bombs and "pick up" items. Pick up items are tarot cards which have unique effects you can learn via name and pills which are unknown at the start but you can find out what they do through experimentation. One last thing I haven't gotten yet is unlockable characters, which as far as I know are just stat and sprite changes for Isaac. You get them through doing some requirements in the game such as getting X amount of hearts or pennies.

So that over with onto why this is roguelike. First all maps are randomly generated. You can't just run through rooms though, you enter a room and you fight to the death with the monsters inside. The pills are the equivalent of other games scrolls, they are random at teh start but you learn what they do through the game through experimentation. Beyond that is one of the neat features in the games, the "items". Items you pick up in a few ways, by defeating a boss,by finding an item room, or sometimes through luck a drop off a special enemy. Items come in two flavors passive upgrades and secondary items which you can only have one of. The passive upgrades modify the look of Isaac while giving bonuses. For instance if you find the mushroom Isaac gets bigger as well as gains more speed and damage. Find the pentagram Isaac gets horns and does more damage, find that with growth hormones and Isaac gets a bit bigger and a lot uglier with even more damage. It gets some very strange combinations. Some are not just statistical, the "bloody Maggie" (I believe name may be wrong) is an option that follows you around while attacking at the same time you do with all your modifiers. No item is preset in this game so the combinations you get may make the game easier, harder, or just plain against your playstyle as you go.

With these items you kill demons, and this is where the game gets a bit gross. The fact that you attack with tears is one thing. Enemies (and maybe even Isaac later items willing) attack with crap, pee, blood, and other such things. You find breakable piles of crap littering the game that may drop items such as keys, bombs, or money. While somewhat Juvenal it gives the game a bit of a weird quirk and that is almost biblical if you read some of the obscure references about demons which fits into the games ideas. Beyond standard enemies you have upgraded palette swaps which drop some items, special enemies, mini boss versions of boss enemies, and of course bosses. All of them are once again randomly generated at the start of the game from a list of them. You won't be fighting Gemmini every time on the first boss room nor will you be fighting loki on the 6th. This adds a lot to replability as sometimes you don't have optimum gear for the boss you're fighting. Though I do believe you can beat the game with tears only if you're insane.

Though while I like this game I have some complaints about it. It took a twist on the zelda idea of attackign in cardinal direction and added movement physics to it. You move up and shoot right, your shot hooks up. So to shoot straight you have to be standing still, moving towards or away from your target. There are a lot of room layouts that do not like you doing anything but shooting staight. On top of that I feel the hit box for Isaacs projectiles are a bit off. I've seen the tears clip through targets on some sides but not other, this gets more confusing when you get things such as "laser tears" which go in a line eminating form a differnt spot on Isaac. Not sure if this is feature or bug but I find it very annoying to not know exactly how my shot is going to leave my charcter and how it's going to hit the target. Overal for 5 bucks it's a fun game. I've dropped a good 5 to 8 hours into it over the past few weeks in half hour binges but still haven't beaten the first time thought. Which brings me to my last thign to say about it.

This is a "roguelike" with multiple endings. The first time through gives you a default ending and after that there is I believe 3 more. This is amusing to me as I've never quite seen this done. I know through some friend beating it once that the floors of the dungeon are increased on more throughways so it may have something to deal with that. Either way I look forward to figuring out how to get them all.

With that I point you up to my bad MSPaint drawings caption. It's the question that the game asks you every time you want to quit. Twisted little feature don't you think?

Wednesday, October 12, 2011

Pythonic and work

Work has been intersting. First the whole new environment and people to interact with. Second is the work itself which is a lot of python. So I'll rant on a little bit about it while I try to get the urge to figure out something more entertaining hopefully for this weekend.

I was left with a lot of code to "roll back" to an earlier version of a program that runs python script. Some clients get sick of updating you see and getting one of these clients caused the entire library of the person I was replacing to break. It seems he was sent to actually get trained from people who made the program we patch and make our own scripts for behind the scenes instead of fumbling through documentation.

Using some old cold snippets and newer code that works with a lot of guessing has lead to some finally functioning programs. Somewhat slow large and cumbersome programs but workings ones none the less. All this somewhat ugly and done as fast as I could work got me looking into efficiency and good writing style for python and I come across something called "pythonic".

Pythonic is deemed "what experienced python programers expect to see" which sounds snobish, but it seems under that surface is some good things. Though first lets show off a "pythonic" philosophy that's so used in development most programs in Idle will show it jsut by executing the line "import this". The little bit is as follows.

The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

A lot of pythons implementation and development follows a lot of this if you look through it. The entire idea of white space indenting is defiantly for readability and some other things can easily be seen in there. Other things such as list comprehension and other advanced programing techniques you don't really discover till you look for them and those were the sort of things that were hitting me over the head. For the past two weeks I've learned a lot about programing in python and got more than a few tricks to use. Mostly called Idioms. While I feel it's bad style to link out of the website if you got a grasp of python heading over to here will show a good amount of them.

It also seems a lot of their techniques are a bit faster than my C/java learnings tend to get me to create. Hopefuly I'll put more of the idioms to use in teh future though for right now I'd settle for being able to import my own modules under the program I work with. You don't miss functions until you have to cut and paste while updating the same functions over and over again.

Friday, October 7, 2011

Worker bee

I really need to update this more. Getting used to a very early morning shift is proving to be difficult and leaving me a bit lazy in the afternoon. On the plus side I've learned quite a few tricks with python.

But enough with that. I have been minorly tinkering with some things. A few more lines in the roguelike mostly for door use and some musing over how to do text messages. Though much hasn't been done with that, though I did however go through to what point in my favorite list is.

Bout at step 5 though I'm trying to add doors as those seem like a challenge in my schema. Saving will be interesting though I've been playing with saving files on the job.  While this may be over your heads and I haven't touched it at all in playing with snakes I'll go on about it. Python actually has an object tokenizer (I belive it's called this) so long story short it can write large chunks of data to a file in some internal format. It's neat, though I may be skiping it with how my code works, maybe for a later project I'll use it whole sale but I don't know how deep or shallow it goes with objects inside objects.

Speaking of playing with snakes it's almost time to get to it's goal of a simple "fighter" system. I think roughly 4 more topics and it could start being put together. Though I'm still unsure how well I'm getting the concepts across. Scope for instance is really hard for me to explain but I understand it decently well through usage, the nomenclature and reasoning it out with others is beyond me though. While not entirely spoilers I have loops, classes, I/O, and actually using a file planed. How well I'll execute it remains to be seen. Either way that's my poor attempt at an update, I'll rest a bit less this weekend and actually try and get some stuff done in my free time. Been getting a little lax with rewarding myself for the job.