Project Good Robot 13: How Do We Leg?

By Shamus Posted Friday Sep 13, 2013

Filed under: Good Robot 110 comments

I’ve been reading back over this series, and I have to say I’m pretty happy at how far we’ve come in such a short time. But I have to admit the one thing we need more of in this write-up is crappy MS-Paint level illustrations. So let’s fix that.

We start with our flying robot:

gr13_leg1.jpg

Pfft. I have no idea why people waste money on artists making concept sketches. I think this looks awesome already! In fact, we could throw a little lens flare on that thing and we’d be ready to start taking pre-orders.

As cool as this is, I think it would look even more amazing with a leg. Maybe even more than one leg. But we’ll start with one. The first step is to pick a horizontal offset from the body. Let’s say we draw a line that extends one unit to the left of the body. This creates a point which we will call the knee. The knee can move up and down, but it always has to stay the same distance from the body horizontally. (Yes, I could have the knee pivot instead of moving up and down, which would be more “correct”. But I’m going for an effect here.)

Continue reading ⟩⟩ “Project Good Robot 13: How Do We Leg?”

 


 

Project Good Robot 12: Feedback Channels

By Shamus Posted Wednesday Sep 11, 2013

Filed under: Good Robot 117 comments

Games are a young medium, and we’re still inventing (or appropriating) nomenclature for it. Ludonarrative Dissonance, Kinesthetics, skinner box, gamification, consolification, boss fight, quicktime event, RPG, difficulty curve, level scaling, HOTs and DOTs, raid, crowd control, pay-to-win, force feedback. Twenty years ago these terms either didn’t exist, or they meant something else to the average person. Some of these terms came from the audience, and some of them came from game designers, but they all arose out of a need to talk about a thing that didn’t have a name yet.

One concept I’ve needed a word for is the way games use multiple audio / visual cues to let you know that a thing happened. The term I’ve settled into was “feedback channels”. But lots of people have run into this concept long before I showed up, and they already had their own terms. These two guys call it “juice” or making a game “juicy”:

Continue reading ⟩⟩ “Project Good Robot 12: Feedback Channels”

 


 

Diecast #29: Happiness is Mandatory

By Shamus Posted Tuesday Sep 10, 2013

Filed under: Diecast 74 comments

As Rutskarn declares at the start of the episode, this week Happiness Is Mandatory. This requirement extends to the audience. You will be required to appreciate this episode cheerfully and without pointing out our numerous mistakes, omissions, errors, and war crimes. Thank you for your cooperation.

Download MP3 File
Download Ogg Vorbis File

Hosts: Rutskarn, Josh, Chris, and Shamus.

Show notes:

Continue reading ⟩⟩ “Diecast #29: Happiness is Mandatory”

 


 

Project Good Robot 11: When Stuff Collides

By Shamus Posted Monday Sep 9, 2013

Filed under: Good Robot 101 comments

A running theme of this project is that 2D game development is like programming in Easy Mode. Everything takes less code, requires fewer steps, uses less CPU / memory, and has a larger margin for error. It’s amazing to be able to just make something without constantly getting snagged on annoying tech issues, performance trade-offs, and gameplay compromises.

Take collision detection, for example.

Early in the project I used rectangle-based collision. If I shot at a bad robot, the game would check for a collision between the bullet and the square region where it was drawing the enemy.

Okay, pixels don’t suffer zooming nearly as gracefully as polygons. Then again, you can fix this by just not letting the player zoom in too far. Good luck keeping the player from looking at the walls too closely in your FPS.
Okay, pixels don’t suffer zooming nearly as gracefully as polygons. Then again, you can fix this by just not letting the player zoom in too far. Good luck keeping the player from looking at the walls too closely in your FPS.

But this is a crappy solution. Basically every enemy is shaped like a box for the purposes of collision. That’s good enough when shots hit center-mass, but it’s really unsatisfying to have bullets score a hit when they pass through the (usually empty) corners of the rectangle. Unless I’m going to make all the foes square, this isn’t a viable technique.

So I change it to check using distance calculations:

Continue reading ⟩⟩ “Project Good Robot 11: When Stuff Collides”

 


 

Project Good Robot 10: Software Engineering

By Shamus Posted Friday Sep 6, 2013

Filed under: Good Robot 58 comments

Sometimes people ask me what the difference is between a programmer and a software engineer, and my usual flippant answer is that software engineers are what programmers call themselves when they want to sound important. But that’s not entirely fair and often the distinction is worth making.

Metaphorically, software engineering is designing a bridge that won’t fall over, and programming is the act of rolling up your sleeves and laying bricks or nailing boards together to make the bridge a reality. It’s easy to see the difference between the two disciplines when we talk about it in terms of construction, because you’ve usually got two very different kinds of people doing those jobs. The designer does her thing, then the builder does his, and the next thing you know you’ve got a bridge. But when you’re building software the same person is most likely doing both jobs, and they’re most likely doing them at the same time.

Perhaps it sounds foolhardy to design a bridge while you build it. Joel Spolsky will tell you that you should design the bridge before anyone starts putting bricks on top of each other. And for the most part that’s true. Without good engineering you’ll either end up with ungainly code, or you end up doing lots of rewrites.

But you can’t write a spec if you don’t know what what you want to build or how you want to build it. This isn’t a bridge-building project, this is a skunkworks. We’re looking for fun gameplay and you can’t really appraise the fun of something until you’ve got a working prototype.

So we’re coding with no spec. This leads to interesting problems.

Continue reading ⟩⟩ “Project Good Robot 10: Software Engineering”

 


 

Bioshock EP14: Who’s Your Daddy?

By Shamus Posted Thursday Sep 5, 2013

Filed under: Spoiler Warning 52 comments


Link (YouTube)

And so it ends. Again. I guess. After two trips through this game I think we’re finally going to let this dead horse have some peace. Here is what Josh had to say about this episode when it originally went live:

Continue reading ⟩⟩ “Bioshock EP14: Who’s Your Daddy?”

 


 

Project Good Robot Part 9: Under The Hood

By Shamus Posted Wednesday Sep 4, 2013

Filed under: Good Robot 104 comments

My project depends on a number of external libraries. It wouldn’t be possible to get this much done without offloading some of the drudgery to a few low-level packages written by others. I can make windows without getting married to Microsoft, render polygons without worrying myself with the arcane details of the driver layer, and make sound effects while knowing not a blessed thing about audio hardware.

The downside of not writing your code yourself is that you’re dependent on other teams, who might not be all that dependable. A few people have asked what libraries I’m using. So here it is:

Image unrelated. Addendum: pew pew pew!

Continue reading ⟩⟩ “Project Good Robot Part 9: Under The Hood”