Tag: games

Pixel Art

Over the last two years, my primary focus in becoming a game developer has been on programming. I’ve made a lot of progress with my programming in the last two years, and I’m very happy with that, but I’m starting to feel like it’s time to balance that out by leveling up in other areas.

As a “game developer” I have to be proficient in a lot of different skill sets. My greatest strength, and how I see myself primarily, is as a designer. I am a designer who can program, draw, and to a very limited extend, do audio. No matter what I do, the more time I spend on doing it, the better I get.

Lately, I’ve been feeling like getting back into graphics. I find that when it comes to 2d video games, the stuff I have always loved the best has been low-res bitmap graphics, what has come to be known as “pixel art”. Pixel art is deceptively simple. It’s not easy to do well, and it requires a deep understanding of how shape and color work when the constraints are turned up almost as high as they can go.

I’ve been reading a lot of tutorials on how to do pixel art better, and I’m starting to try my hand at it. Now that I have a better understanding of what goes into good pixel art, I’m starting to feel less frustrated while working and enjoying the results more.

I’m at a point now where I feel like I won’t be embarrassing myself by sharing my work, and I really am interested in getting feedback from people who appreciate this kind of stuff, so I’ll be posting completed works and maybe some works-in-progress, along with my comments about it all.

 

GameMaker Position and Motion Tutorial

Motion is critical to just about any video game. Nearly every game has moving things in it, and how they move is a vital part of the game. Learning how to program motion and control it effectively is one of the most important parts of a successful game. There are a number of possible approaches to handling position and movement. Learning how these work will help you make better games.

This isn’t absolutely everything there is to know about motion, but it’s a great overview to start with, and covers everything I’ve learned with respect to motion in GameMaker Studio.  (more…)

Games and stories

Humans are storytellers, and we do it more or less instinctively, but many of us are not great storytellers. Humans are also game players, and we also do that instinctively, and most of us are at least decent in some game or other.

The use of Story in videogames is a rather deep topic, but suffice it to say that games have done well with minimal story, with trite and clichéd story, and often with just plain bad story. Games do have the potential to deliver great story, and some have.

This article at Ars Technica raises some points that I mostly agree with, in that a game doesn’t need a story to be a great game. But I disagree with it insofar as great stories should only be told through established, proper forms. Reading it prompted the following thoughts in reaction:

Even Chess has an element of story to it: Two kingdoms at war. It’s abstract, but it does have meaning. It’s not really the point of Chess, and it’s easy enough to re-theme the story a particular chess set tells. Understanding the course of a game of chess through the metaphor implied by the significance imparted on the various pieces doesn’t really add any insight to winning strategy, though. Chess is loosely coupled to its story. It’s there for flavor, and there’s some symbolic meaning there, but it’s not very important.

A game like Tic-Tac-Toe has no story at all, right? It’s just an absolutely abstract conflict based in the geometric realities of the grid and the arbitrary significance of orthogonal lines. Well, suppose we take the British name for the game, Noughts and Crosses, and then let’s to a tiny bit further to modify the Noughts so that they’re Crescents. Instantly, we’ve created story: a retelling of the age-old, pointless clash that nobody can win between Christianity and Islam. It’s so slight, it’s almost stupid that this change is all that is needed to convey a story with a moral, yet it’s strangely powerful. And that’s how ingrained story is to games. It’s there because we can’t help ourselves putting it there.

Some attempts at telling a story that is the equal of our finest books, plays, and films through the medium of videogames game end up being a failure, and this ends up hurting both the game and the story. This much is true. I think “So don’t ever do that” is the wrong lesson to take from that. Game design is a rapidly developing art form and it’s entirely likely that new ways of integrating story and game are possible, many of them still over the horizon. We can imagine a lot, but we can’t imagine everything the future will bring. Which is why the future is so fascinating. Closing off an entire branch of game design because it was a bad idea in the past or because past attempts failed is just shortsighted.

If you’re making a game, the first goal is make sure that the game is good. There are a lot of ways to do this, likely infinite.

If you support the game with story elements, it can enhance the game. Game developers should try to make those good, of course, as they should make any element in the game as good as they are able. But they don’t have to be concerned about telling great, serious stories. Stories told through games can be great, though, and it’s fine to aspire and experiment to find what works and what doesn’t, but clearly most games do not require a level of storytelling the equal of a classic novel in order to be great as games. It’s OK for them to aspire to do so, though.

speed = s/invaders_count;

Another Space Invaders HTML5 update. The only thing I did with this build was fix the speed increase. It dawned on my after watching video of the original that the speed increase was gradual, not that it picked up at specific numbers of Invaders remaining. Reading about it on Wikipedia, I learned that the original Invaders were actually constrained in speed by the hardware, and that as you destroyed more of them, the CPU had fewer things to do so took care of updating the remaining ones in the phalanx faster and faster.

I still have yet to implement the bunkers; it’s not straightforward to do destructible sprites, and I haven’t yet looked into methods for accomplishing it yet, but apart from fixing the high score glitch that’s all that’s left.

Oh, I suppose I could give extra lives after a certain number of points scored, if you insist.

Play Space Invaders HTML5

Notacon 8

I’ve received word of when my talk at Notacon 8 will be: Friday, April 15 @ 4:00PM-5:00PM in the Edison I conference room.

Schedule is subject to change, I’m sure, but if it does change I’ll post an update.

These are the cards I'll be handing out at the event

2D Targeting for AI in Game Maker 8

After several weeks of effort, I have finally nailed an effective set of 2D targeting scripts for AI in Game Maker 8.

The story for this is worth telling sometime, but for now I’ll just be posting a video demo:

Source .gmk is available on Releases.

I’ll be refactoring this into a Game Maker Extension (.gex) soon as well, which will also be available along with full source.

Boobie Teeth 0.17, CBNA SmartLight, and Google Translation

I’ve spent the last few days getting back into the Boobie Teeth project, trying to figure out how to do a couple things that have had me stuck for longer than I’d care to admit. I’m far from giving up, but I have come to the conclusion that hacking away at the problem isn’t going to be as fruitful as reading up on the problem.

At any rate, here’s a video of what I managed to pack in to today’s release, 0.17:

The major accomplishment for this release was the addition of a transparent gradient in the foreground, which enhances the background gradient that gives the illusion of diminishing sunlight at depth. For now this is just a cosmetic feature, although I already have ideas for tying it into the gameplay.

The other thing I worked with in this release, but dropped for now, is to implement some basic AI. I want the fish to get hungry and start chasing down prey. This is a lot harder than I thought it would be, owing to limitations of GameMaker’s instance handling. My usual approach of coding a little bit and seeing what I get, then coding a bit more once I’m sure what I already have done is working hasn’t gotten me very far. I’ll be researching and studying until I figure out an approach that works.

While researching, I came across a beautiful video of some lighting effects done in GameMaker which blow my simple foreground gradient away completely:

I noticed of course that the video appeared to come from French-speaking authors, but that didn’t dissuade me from tracking down the package that enables these effects and downloading it.

Let me just take a moment to say that I am absolutely amazed by the quality of google’s translation service from French to English. Seriously, click this link and you’d hardly even know that you’re on a French site. This impresses me even more than the lighting effects. If you happen to spot a mistake in translation you can hover over text and see the original, and provide feedback to google directly through the site that they’re translating for you. The translation is extremely fast, almost real-time, too.

It’s going to take me some time to work my way through the examples and tutorials and translating the documentation, but if I can get this SmartLight to work with my game project, it’s going to be well worth it, and make the game look way better than I had originally planned. I really want to get some AI going in my game though, so it’ll probably be a while before I get into re-doing the lighting effects.