Friday, October 18, 2013

Game Difficulty

As a byproduct of Steam trading cards, I have been playing a number of games to get the free trading cards and to make myself eligible for free card drops. As I  have a bad habit of buying lots of bundles due to the cheap price, there are a lot of games I haven't played. Some of them are games that I am not particularly interested in but as there was a game I wanted in the bundle the other games in  the bundle are "free" games. Getting trading cards have motivated me to at least try the game long enough to get the cards. I have heard that you don't even have to play the game but simply need to have the game running to get cards but I really don't see the point in doing that.

This has resulted in me realizing how poor a lot of game tutorials are. It also reminded me that if you can't quickly capture a player's interest in a game, you will probably lose that player as there are lots of games to play. The biggest obstacle to keeping a player playing is the difficulty of the game. I am not talking about how hard a game is, though that certainly is a factor, but how hard it is to figure out how to play a game. Far too often I have seen potentially great games overwhelm the player with far too many things all at once.  In some cases, such as 4X space games (eXplore, eXpand, eXploit, eXterminate) it is understandable that there is so much complexity as there are so many elements to the game. Even then, however, it should be possible to create a tutorial campaign that automatically handles the bulk of things for the player and slowly gives control of them back to the player as they work their way through the campaign.

This leads to the game-too-hard issue. It seems that far too many games seem to expect the player to have played similar games. The person who doesn't play these games all the time, or have never played that type of game before, are not going to have the skills or knowledge that a regular player of a genre has. Not allowing non-hardcore players into a game due to reliance on skills learned in other similar games only results in a genre shrinking and eventually dying. It is important to make a game accessible to newbies. The trick is figuring out a way to do this without boring the hardcore players.

Difficulty levels are one way, but far too often a easy level only gives the player  more health, it does nothing to ease players into the more complex game mechanics. Foe example, in a platformer have extra blocks that only appear on easy difficulty that prevent players from falling all the way to the beginning if they fail a more complex jump. If you have a section with a time-limit, perhaps the easy level should have a longer limit as people playing on easy probably aren't good at the precise jumping needed to reach the target in time. And any game with boss fights should probably give the player a way of bypassing the fight after the boss has trounced them a dozen or so times. I am sure some people are looking at my suggestions and saying "but games are too easy" without also noting that I am talking about games set to an easy difficulty level. People playing on an easy difficulty level are probably not that good at that type of game otherwise they would be playing the game on a harder difficulty level.

Of course there are cases of the opposite. Too much handholding is annoying, but I personally have never given up on a game because it has a tutorial that goes overboard. That said, if I am playing a game on a hard difficulty level, I probably don't need hints. Creating a tutorial that eases new players into a game while not being overly handholding for vetran players is a hard challenge that few games manage to do. Still, games like "Plants vs Zombies" and "Portal" prove that it is possible.

Friday, October 4, 2013

Treasure Run postmortem

As I mentioned the Mini-Ludum Dare last post, it should be no surprise that this fortnight is the postmortem of my efforts.

What Went Right

I love 65xx assembly language. It has been decades (damn, that makes me feel old) since I last used it yet the instruction set is so simple that I was back to programming it with very little effort. This would very likely not be the case for the Pentium line of processors in use today. I have yet to try writing ARM assembly language so that might be nicer. Still, I would recommend that anybody who wants to learn assembly language should probably start with the 6502 so they can learn the core concepts before going on to more modern processors. I know from experience that while the instruction set may not transfer, once you know one assembly language it is very easy to pick up other ones. I suppose one could argue that the Z80 is also fairly easy to learn and it has an instruction set that is closer to the Pentium one but my point would be to learn on a simple chip so you get the core concepts down before trying to take on modern behemoths.

Mixed Blessings

As those of you who read my previous post already know, I discovered that the NES worked quite different from the Commodore 64. The C64 shared memory with the VIC-II and the SID chips. You would simply write to a chunk of memory that the graphic chip accessed (this was flexible allowing you to place screen and tileset memory in which bank you wanted). The downside to this was that the more advanced graphics mode would eat up a lot of your available RAM. With the NES, the PPU has it's own memory which has to be set by going through a small number of port addresses. This is not overly difficult to work with, just different. Instead of copying data from one memory address to another, you simply set the high-low address in the port and then continually write data to another port as the address is automatically incremented for you. The lesson here is simply that different hardware is different.

What Went Wrong

My original game was going to be one large map that would take advantage of the NES scrolling hardware. The problem is that without using a memory manager, the scrolling is limited to only two pages aligned horizontally or vertically. I didn't want to get into memory managers for my first NES game so opted instead for single page maps. I am not sure this is that big of a loss, but I may have to experiment with memory managers in the future and create a larger map. I suppose what I could have done was keep my larger map idea and simply switch screens when the player walked off the edge of the screen but I never thought of that at the time.

Overall, I think learning a new platform and writing a game in assembly language in under a week is not that bad. I actually kind of like the NES so may play around some more with it taking advantage of Memory Managers for proper 4-screen scrolling and learning to use the sound chips. Of course, with so many other things I want to do, this may never happen but we will see.