This morning I sent in today’s column, clicked over to Penny Arcade, and saw they have a comic about this very same issue.
Project Octant Part 3: Using Qt
Qt is a cross-platform application and UI framework with APIs for C++ programming. In English, that means it’s a bunch of software that you can add to your project to make programs with a GUI that will run on Windows, Linux, or Mac. This is actually a big deal. There’s a reason that so few programs are cross-platform: It’s hard to write code that will run anywhere.
I know I keep sending you back to the Object-Disoriented Programming post so often it sort of feels like a Rickroll at this point, but this is a really important problem. C++ itself is very barebones. It doesn’t load fonts. It doesn’t understand images. It doesn’t understand windowed environments. To do these things you need an SDK. You’ll need one for each new thing you want to do. Each one might tie you to a particular operating system, and they’re very likely to conflict with each other in annoying ways. By the time you get all the stuff you need for GUI, images, sound, graphics, threading, and input, your project will be this Frankenstein’s Monster of sewn-together systems. And you haven’t even started coding yet!
Continue reading 〉〉 “Project Octant Part 3: Using Qt”
Alan Wake EP7:Bears & Flares
Link (YouTube) |
When you meet the kidnapper, it shows him drop a flare and seem to wipe out a bunch of Taken at once. This led me to the incorrect conclusion that flares = grenades. This came back to bite me when you’re supposed to hold them off. I was using them all wrong. I kept throwing them down, trying to figure out why the flares weren’t killing my foes like I expected. Do I need to be closer? Do I need them to cluster up more? Then when the guy told me to hold them off, I’d already run out. Oops.
Project Frontier: Source
![]() |
The source for Project Frontier is now available on BitBucket. I’m really hoping you find it to be useful. I’m very sorry to see I left the codebase in such shabby shape.
The program defaults to re-loading the last save you played. If you’re running it for the first time, then it doesn’t do anything. Bring down the console with ~ and type:
game new 1
You can replace the 1 with any number you like. That’s the seed number used to create the world. Different numbers will lead to different worlds. (The screenshot above is from right near the spawn point in world #1.)
Looks like it also defaults to wireframe on, textures off, shaders off. That’s dumb. Sorry. In the console:
render.shaders=1
render.wireframe=0
render.textured=1
That should put you in a good place. Also use:
mouse.invert=1
If you’re a mouse-inverter. Use
flying=1
Or:
flying=0
To turn flying on and off. The WASD keys move you around. Right-click enters and exits mouselook.
Missing textures are represented with a checkerboard pattern.
Please let me know if you have any other problems.
Github
I look, and sure enough I see Mercurial files in the Project Frontier directory. Hm. So I guess all I need to do is create an account on BitBucket?
I do so, but it turns out I already have an account. I log in, and I find weeks and weeks of meticulously tracked changes. Apparently I not only used Mercurial, but I used BitBucket, and I used both extensively. I can read through hundreds of changes. All written by me.
It is really, really creepy realizing that I did all this stuff and no longer remember it. It’s like looking at someone else’s work. Or like someone else is reading my work. Or something. I don’t know.
I’m worried there’s something wrong with my brain that makes me forget things. Also… what if there’s something wrong with my brain that makes me forget things?
Okay, I’ll be making the repository public, but I need to go freak out for a little while.
So I’m trying to add Project Frontier to GitHub. This is not going well.
Created an account. Created a repository. Installed Git locally. Followed the directions to set up git locally, which includes typing stuff into a Linux shell, which is trivial if you know what you’re doing and utterly, utterly mysterious if you don’t. Created ssh key. Set up a local repository. Added files meticulously one at a time from a list of hundreds of files because the Git GUI just lists all files and I don’t see how to filter for JUST source files. I hit commit and… nothing showed up.
Okay. This was supposed to be a quick & easy thing, and I’m now 40 mins in, I’ve got Git infrastructure spewed all over my computer and I can’t get it to do this very simple thing. I’ve used source code control before, and it was always pretty straightforward. Even thirteen years ago, I never had to type crap into a console window to perform simple tasks. Is Git only for people who understand Linux? (The front end is all friendly and Windows-like, which is what led me to believe I’d be able to do this. If it started with a console window I would have realized this was for someone with a different skill set and looked elsewhere.)
I see to get it to ignore the hundreds of unwanted files I just need to create a file called… .gitignore. Damn it. Stupid Windows will allow filenames starting with a period to EXIST, but it won’t let you CREATE them. (Minecraft has this same problem: the install directory is called .minecraft, which means if you want to backup & restore, you have to COPY files in and out of it, instead of renaming the directory.) You can blame Windows (I do) but the upshot is that I can’t use this feature on this operating system.
I have no idea what Git wants or how it works. I don’t see ANYTHING that tells me how to push changes to the remote repository. If doing simple things like “submit changes” means using a terminal window, then… damn. What year is it? I know you Linux coders have a high tolerance for this sort of thing, but damn – there are better ways of using a computer these days. Case in point: If I had a menu, I would be able to work this out for myself.
So, I’m willing to put time into this if it means it will be done right. But if Git is useless to a non-Linux person on a Windows machine, then it’s time to uninstall this mess and look elsewhere. So how about it? Is it possible to use GitHub with this GUI front end? Can Git work without using a terminal? If Git works on Windows, can someone explain how to go about getting files from here to there?
Sorry to use the community as a search tool, but Google isn’t helping and I’d like to know if I’m wasting my time before I do any more of this.
EDIT: Based on the comments, looks like GitHub is the wrong way to go for me. I’m going to try out BitBucket.
Alan Wake EP6: The Taken Are Filled With Bullets!
Link (YouTube) |
It’s going to be really embarrassing if Rutskarn, Chris and I are the only ones who ran out of ammo here. But let’s talk about this: The game is entirely gunfight focused. If you lose the ability to shoot, you lose the means to progress through the game.
In most games I’d suggest some sort of Valve-style adaptive bullet supply where the game will give you more if you have less and vice-versa. (In Half-Life 2, health kits heal more if you have less health.) But I can see why you wouldn’t want that in some quasi-spooky game. But any game where ammo scarcity is an issue (survival or not) needs to have some kind of fallback system. Like I said, these mooks overshadowed the bosses in this part of the game, simply because I didn’t have the resources to proceed.
A running system might be dangerous to add. Given the overabundance of combat, it might feel like the game was encouraging you to run away from all fights, no matter how many bullets you had.
Adding melee weapons would have required adding new game mechanics. You’d need to make allowances in the AI so they didn’t just swarm you. (Their current brainless frontal charge AI makes melee completely impractical.) But having enemies stand around and take turns Assassin’s Creed style would really kill what little spookyness they have. I mean, you’re already just fighting guys in ballcaps. The darkness particle effect is all that separates these fights from a bar brawl. Having these guys line up and wait for their turn to axe you a question would cross the line from “not very scary” to “absurd farce”.
To sum up:
- Most games solve this by having foes drop bullets. I’m sure we can all see why that solution wouldn’t make any sense here.
- Melee would add to the expense of making the game, and would undercut the foes by letting you see the taken up close and forcing them to fight all sportsmen-like.
- Making bullets plentiful would remove the need to manage your resources.
- A running mechanic would encourage you to skip most of the game.
- Having players run out of ammo and get stuck on simple mooks, then blast their way through bosses will invert the intended tension levels and lead to frustration. (Which is what the three of us experienced.) Mixing ammo scarcity with checkpoint-based saves is a volatile combination that can result in the player losing hours of progress, which is often a game-killer. Playing the same sequence again and again destroys the tension, pacing, and flow of the game. Unless the player is in it for pure challenge, “stuck” is a failure state for both the player and the game.
- Adaptive supply might help reduce the chances of encountering an impossible situation, but it wouldn’t completely prevent it. And adaptive supply would nudge the game away from “survival” and more towards “shooter”.
I suppose I might suggest having minimum ammo counts at checkpoints. If you die, it restores you to the most recent checkpoint with whatever the intended ammo count is. That way complete ammo depletion results in replaying a section instead of a chapter.
This is a tough problem. I’m not saying you can’t solve it, but I can see how we ended up with what we have.
Project Octant Part 2: Octree
Step one of this project is to bootstrap myself up to the point where I can start doing some 3D programming. If I was working in my familiar environment this would be about ten minutes, but now that I’m using Qt it takes me a couple of hours to get a sense of what I need and how I get it working. (Incidentally, Qt is pronounced “cute”, if you’re one of those people who likes to read my blog aloud.) There are example programs, but they’re usually demos of “OpenGL and some other concepts” and it’s not clear what parts of the code are the demo, what parts are infrastructure, and what parts are cruft.
Eventually I get a bare-bones application working that creates a simple scene with a checkerboard ground. Something like this is always step 1 for me. I learned a long time ago that you should have a simple, reliable, non-textured, orient-able object in the scene at all times.
![]() |
The reason for this is that early in a project, you can often find yourself in a situation where you’re looking at a blank scene and you don’t know why. I start up the program and I’m looking at a solid color. Did I accidentally type a wrong number and move all the scenery 1,000Km to the right, instead of one meter? Or maybe the scenery is where it’s supposed to be, but the camera has been placed far off? Did I mistakenly apply a transparent texture to the scene, thus making everything invisible? Is it even drawing the world at all? Or is everything fine, I’m just looking straight up at the sky? Actually, is the camera moving? Maybe the scenery is just off to one side but I’ve broken the controls so that I can’t move? After a few minutes of waving the mouse around and staring at a blank screen, the wise programmer will see the value of having a handy marker nearby. If something goes wrong, the checkerboard can help me know where to look for the problem.
Continue reading 〉〉 “Project Octant Part 2: Octree”
The Best of 2015
My picks for what was important, awesome, or worth talking about in 2015.
Programming Language for Games
Game developer Jon Blow is making a programming language just for games. Why is he doing this, and what will it mean for game development?
Netscape 1997
What did web browsers look like 20 years ago, and what kind of crazy features did they have?
Hardware Review
So what happens when a SOFTWARE engineer tries to review hardware? This. This happens.
Overused Words in Game Titles
I scoured the Steam database to figure out what words were the most commonly used in game titles.
Blistering Stupidity of Fallout 3
Yeah, this game is a classic. But the story is idiotic, incoherent, thematically confused, and patronizing.
Ludonarrative Dissonance
What is this silly word, why did some people get so irritated by it, and why did it fall out of use?
What is Vulkan?
What is this Vulkan stuff? A graphics engine? A game engine? A new flavor of breakfast cereal? And how is it supposed to make PC games better?
Games and the Fear of Death
Why killing you might be the least scary thing a game can do.
Steam Summer Blues
This mess of dross, confusion, and terrible UI design is the storefront the big publishers couldn't beat? Amazing.
T w e n t y S i d e d

