Friday, March 30, 2012

What?! Menu fiddling is evolving!?

So haven't updated much. Been trying to fix a few things (and succeeded actualy), but otherwise haven't gotten much farther on Legend. Though in other news...

Yeah, just as blog post says menu fiddling has sorta taken on a life of it's own. Long story short, I farm out a lot of my practice to other files in order not to bloat Legend and work on various aspects there. Right now legend purely has movement and the dungeon generation system as well as the skeleton I've developed to use that. Another file has some enemy AI and playing with more room randomization. Both Legend and this other system have hit a programing wall where the thing I'm working on just takes far too long to work on breaks at work. While I have taken time to work on weekends it's a lot of work and very few things get sorted out. So I started working on some menu work and learned a lot of things.

For one TKinter is not z axis friendly and two animation is a stuff of nightmares mostly as TKinter key binds is threaded. The general idea was to make generic old JRPG where I have keybindings work differently based on screen and started at the "combat" screen. Hit a wall very quickly and realized I needed to get all these ironed out if Legend is going to work like I wanted. So quite a bit of work (that ate up standard legend time) on teh weekend and I think I have the key binding and seperate screen system knowledge that could facilitate a few things. Though this brings up a decision. As it stands I don't have a complete working system for such items.

That brings me to taking on this secondary "rpg roguelike" to get the knowledge down for legends. As a coding basis beyond the horrible problems I ran into so far it's simpler than anything Legend would be doing so it will serve as a stepping stone in actually figuring out more about TKinter before it bites me on the ass again. So legend isn't getting as much work as I want, but I'm hopefully not going to find more frustrating pitfalls in it after I get them all out making something rather simple in comparison.

So far I have random encounters. A somewhat robust loading system for entities invovled, and the ability to select entities. Lots of problems to get to this point but it's been a learning experience. Goals is to use my roguelike room generator to make a "dungeon" to think on some legend problems but this will be ultimately easier as it's just one string of rooms.

With that said I ironed out the moving between room bug I found in Legend. It turns out my efficiency improvement in code had unforeseen consequences. Now to work on getting the doors to other "hallways" to work correctly. To think I was going to start working on tools to get me out of the "no part to work on" spell and realized I needed to figure out how to make an inventory screen which got me here.

Tuesday, March 20, 2012

slow progress update.

Some progress that don't seem like progress is the standard at the moment. Legends and my other half played with testing grounds for things have hit some programing roadblocks. I have an idea of what's wrong with both but just not the time to sit down and really work it.

That said I am making progress on it. Legend has the very basic dungeon generation down, it's just the changing rooms that is odd at the moment. Best described as walking into the next corridor telports you back to starting room and the doorways aren't refreshing right. It took a while to figure that out as nothing made sense in my debug map and I couldn't walk through some doorways which were in reality walls. Still progress, I have hopes yet. If all else fails I'll just have to work on the items a bit to get them down.

Sunday, March 11, 2012

Enemy design : No one wants to design the newest kobold

And you would feel bad but he's carrying a poisoned blow gun and poisoned darts.

Work has been interesting the past week so little progress has been gotten. Hopefully today I'll change that though it's not the focus of this little post. Today I'll rant a bit about enemy design and more specifically enemy variation. Why this has kobolds in the tittle that will get to in a bit. For now I've been playing a bit of other roguelikes and just thinking about enemy design in general and noticing two types of trends.

One the linear variety where you have Some roles are always filled out on each new level with the exception of bosses. Older games used this a lot with color or sprite swaps like the enemy that runs at you, the enemy that fires a ball of energy and the jumping enemy. Maybe they get more health and damage between levels and maybe a gimmick enemy to change the pace and earlier enemies just to have more variety but more often than not different levels have different enemies which is a good thing.

The other is more of a growing amount of enemies. In the beginning you see a few then as you go along a few more types are added, than latter even more types are added, till the end of the game you have a lot of unique enemies and possibly bosses that just show up in the last area or even just rooms of the game. This isn't a bad thing either, it's a save the best for last approach that only fails if the player doesn't get here which seemingly is a common occurrence.

Now for what I bring up. Roguelikes are somewhat unique that it's rare for people to finish the game, or even to get to mid game. Playing a roguelike people want a somewhat new experience and to see what the game generates as a level and what items they pick up along with what they encounter along the way. With both the previous design patterns the player isn't really seeing much variety. Under the linear enemy addition they see a percentage of the game and may see all the enemy movements but they wouldn't even know that. The constantly growing about of new enemies added shows roguelike players even less of the game. Some players can get frustrated only seeing the first three enemy types and dieing to the first or second goblin or kobold they see as they haven't figured out how the game works yet which can be very frustrating to a player.

Now I can think of a few reasons why this sort of design happens. Linear is basic requirement meeting for a level that came from a time where the technology was limited and wanted to avoid repetition in the players minds even if the mechanics were minimally modified. There was even an article on 1UP I saw a long time ago that reminded just how little variation there was in early games. I hate to say this isn't a bad thing again but it isn't at times. Some predictably allows for game mastery. I digress though, the tradition holds over for seemingly no reason other than it is legitimately hard to to not follow a formula that guarantees the levels will be filled out with enemies that the player will at the very least think are brand new for a few minutes if they actually think about how they work, a more frantic game may increase the period it takes to realize what it is.

The growing type is a bit of a different problem that actually may come from someone with too much thought into it. When creating a game the first few levels are more or less introductions and you want to build from there. So a natural trap to fall into is to keep piling on all the great ideas you have for enemies as the game goes on, leaving all the good bizarre stuff at the end under the assumption the players can take anything or at least put up with it. The other reason being that people would rather make interesting things than just another kobold. Interesting often goes to favoritism which often equates to "this thing will kill you!" design wise. MMOs commonly suffer this  for another reason. This is because they want to keep older players who reach level cap around. Low level zones are rarely upgraded with new interesting content while increasingly complex or gimmicky areas are added to end game. Design wise MMOs are striving for something different but I figured I should note it.

Now a seaway to kobolds. Kobolds have a long standing in D&D as the low level creature new adventures cut their teeth on and generally their traps are more to be feared than an actual room full of kobolds. Now as I said before people don't want to design kobolds, as people don't want to put much work into things they'll be stomped repeatedly. This is also true of D&D where you have entire books devoted to levels most people will rarely reach in normally gameplay unless they started there.

Playing a few roguelikes recently I've been beat over the head a few times with it. Seeing giant rats and various low level kobolds and dieing to them annoys me a bit. Playing crawl, which is the only general roguelike I've gotten far on , I know late game has a lot of enemies. While the start has bats, giant roaches, the first real threat of goblins, and everyone favorite dog to kick kobolds. This is fine except you'll have to go through these same enemies quite  a few times with no real variety (beyond a killer kobold who's picked up a wand of death/blowgun with poison needles) . A thing I have come to appreciate is enemies picking up gear and using it as it's a natural way to add variety when you can see it happening.

So a solution to this? No real solution truth be told. This is a hard problem to tackle if we don't want to overwhelm a player with things to understand in the first few minutes. Desktop dungeon which I have talked about in the past had an interesting approach. It had a relatively easy and simple enemy pool at the start and every class you beat the game with unlocked new types of enemies to be added to the pool. This keeps it interesting every time you play while not overwhelming you. It is somewhat artificial though which leaves me a bit annoyed about it but in practice it's good. For me it would just be more honest to have a larger pool at the start and let only a few of each type be used in the first few floors. Just something to keep it a bit interesting enemy wise would be worth it. For legend I haven't even started working on enemies so I should keep this in mind as I develop things.

Friday, March 2, 2012

Slain hydra

Short update for this. In my last post I mentioned the problem I had with Legends preliminary generation. Now that problem is gone, small little bug as I expected and should have avoided but how it goes. So now that that's solved I have to figure out how to translate the layout into the actual room data which will be interesting.

In other news I'm reading through a copy of Programing AI by Example by Mat Buckland. It's getting me some AI techniques and such though I'm having to look into dreaded math. We'll see how this pans out. I've been playing with a more old style roguelike set up just to cut teeth that won't have any impact on Legend but it helps get the bad practice out.