Categories
Games Geek / Technical

My Moving Giveaway

Yesterday I signed a lease and will be moving into my new apartment at the end of the week. I have some hardware that has been collecting dust, and so I figure it is time to give them to someone who can provide a good home.

– HP Deskjet 612c
– HP Deskjet 840c
– Micron CRT monitor (Model RM07R11) (has a visible line running down
the front, but otherwise works well) (also, I obtained it from CTI when
they were getting rid of it. It still has the CTI barcode on the top.
You can carry the torch!)
– 2 x AVerTV Go 007 FM Plus video capture cards. One of them worked
flawlessly in my MythTV box, the other seemingly didn’t. I presume it
likely works fine in Windows, though. Both are not hardware-accelerated
capture cards, and so I replaced them.
– One of those Hauppauge Windows Media Remote controls

I also have an old PC that was getting finicky towards the end of its
usage. The finicky part of the machine could have been the hard drive,
or it could have been the mobo itself. It was too much work to figure
out and new computers were cheap, so I ended up replacing it. The
following parts are probably worth more than the whole.

You can probably still make use of the processor. The mobo is an Abit
BE6-II. The processor is an Intel Celeron (or at least that is what I
can read below the fan on the processor itself. I can’t find out what
speed it is, but I do recall it being overclocked to 800MHz.

1 x 128MB SDRAM 133Mhz memory stick
The power supply and case
An ethernet card
Possibly a Soundblaster Live! sound card (if not, a regular sound card
with multiple inputs)
Nvidia Vanta 16MB video card? I’m not actually sure, but I think that
is what I see. My first video card. It has served me well in the past.

There is a CDROM drive in the machine as well, but it doesn’t say what
speed it is on the front.

I sent the above to the mailing list of the DePaul Linux Community. Separate from it, you get a special treat! I have a few old Sega Genesis-related materials! Since I do not own a Sega Genesis, they aren’t doing me any good, so maybe you would love to own the following:

Empty case: Centurion: Defender of Rome
Instructions in case: Sonic the Hedgehog 2, Super Monaco GP
Game in case: Star Control, NHL 94, NFL Football 94
Games and Instructions in case: LHX Attack Chopper, Joe Montana 2: Sports Talk Football, Hard Ball 3, Super Hydlide, Flashback (has strategy guide instead of instruction book), NHL Hockey, RBI Baseball 93, Bill Walsh College Football 95

I also have a Game Genie Manual and Codebook…but no Game Genie.

If you are interested, feel free to email me or leave a comment. I’d prefer not to ship it, so if you could pick it up yourself here in Chicago (obviously easier for some people than for others), you can get it for free.

Categories
Game Development Personal Development

Thousander Club Update: August 6th

For this week’s Thousander Club update:

Game Hours: 262.25 (previous year) + 146 (current year) = 409.25 / 1000
Game Ideas: 616 (previous year) + 92 (current year) = 699 / 1000

I’m moving within the next month. Between traveling to different states for weddings and visiting friends, crunch time at the day job, and an annoying need to sleep and eat, finding a new apartment has been incredibly time-consuming. I need to move out of the apartment by August 31st, but I can’t wait that long since I’ll be in Ohio again that weekend. I’ve seen a number of places, and some seem nice, but none have jumped out at me as a new home. My current apartment has become too expensive to live in, and so I am looking for something that can let me save money.

And when have I found time to work on Killer Kittens? Frankly, I haven’t. Occasionally I squeeze in some work, but it is usually during the downtime when I am out of town. Then I get back and it is right into day job crunch again. I haven’t even had much time to write entries for this blog, and there were plenty of interesting things going on in July. I’m also behind in my POTM entries. Heck, I missed last week’s Thousander entry, which is the first time I missed a week since I joined the club.

I suppose I can’t be too harsh on myself. Moving into a new apartment is important and urgent. Other things in my life have to take a backseat. Perhaps when crunch is over (when IS crunch over?) I’ll have some more breathing room, too.

Categories
Games Geek / Technical Marketing/Business Politics/Government

So-Called DRM is Fundamentally Flawed

PlayNoEvil Game Security News and Analysis wrote an interesting post regarding DRM as a broken system. Microsoft’s Digital Restrictions Management for Windows has been defeated. Again. Nothing too newsworthy about it.

What’s interesting is the following statement:

In fact, as I’ve noted before (repeatedly), DRM is built on a flawed model.

Traditional cryptographic security systems are designed to heal themselves to protect new data. This is completely inconsistent with the underlying model that content protection is built on – the protection of existing data.

This article isn’t bashing Microsoft specifically. It’s pointing out the flaws in a system that is not well designed to do what it is supposed to do. Food for thought if you are one of those people who still believe that copy protection is a “vital” part of game development. If DRM isn’t actually doing a good job of preventing copyright infringement, and it frustrates your paying customers, why use it?

It seems that using regular copy protection techniques will be much more effective than anything that resembles DRM.

Categories
Game Development Geek / Technical

Learning Random Things

I sometimes find potentially useful video game knowledge in the strangest places. After reading Joel Spolsky’s post on the difference between Microsoft’s implementation of font rendering and Apple’s implementation, I followed the link to Texts Rasterization Exposures which goes into great detail on the topic.

The article is about font rendering. What does it have to do with games?

Maybe nothing too much, but I already learned one thing I didn’t already know.

The visual response is approximately proportional to the square root of the physical luminosity. In other words, if there are two white pixels on black, and one of them emits exactly two times more photons per second, it won’t look two times brighter. It will be about 1.4 times brighter.

The accompanying picture shows two white dots on a black background. In order to make something look two times brighter, you would need to add more than two times as many pixels. 4 pixels == 2x as bright as 1 pixel.

The article discusses anti-aliasing techniques, gamma correction, and the problems of font rendering on a Linux-based system. Still, I now know how to make lights appear brighter as well as why it works. If I need a lighthouse to rotate, or a car to turn a corner towards the camera, I have a better idea about what I need to accomplish the effect.

Sometimes I wonder about people who don’t expose themselves to multiple ideas. I occasionally like to read about the history of a place or an idea. I enjoy researching many different topics. Once again, I am glad that my university didn’t have a game development degree available when I started. I would have cut myself off from a lot of information if I had focused so much of my efforts on a degree in a specific field.

Will Wright came up with Spore while thinking about astronomy and education. Shigeru Miyamoto created the universe of Zelda after exploring the fields of Kyoto. What can you create if you only know about existing video games? I think that exposing yourself to multiple thoughts and a wide variety of topics can only help to spur creativity. People invent life-changing things and ideas by finding connections between one field and another. Velcro is a famous example.

Have you ever come across a random piece of information in a seemingly irrelevant piece of text? Has a talk on economics inspired your FPS?

Categories
Game Design Game Development Games Personal Development

Video Games as High Art

If you’ve been paying attention in the past few weeks, Roger Ebert is back in the video game news again. I have talked about his position on games as art, but apparently he has amended his statement. Now instead of saying that games can’t be art, he says that games can’t be high art.

N’Gai Croal dissected Ebert’s arguments way better than I could.

If Ebert had done a bit more research–well, any research–he could have bolstered his argument by citing some notable game designers–e.g. Hideo Kojima, Shigeru Miyamoto and Keiji Inafune, each of whom has gone on record as saying that they don’t believe that videogames are art–and engaged what game creators themselves have said. Or he could have elaborated on the distinction that he’s drawn between high art and low art. No such luck. Instead, he’d rather dismiss videogames with the sarcastic magnanimousness of “Anything can be art. Even a can of Campbell’s soup,” as long as we vidigoths don’t attempt to desecrate the Temple of High Art, where presumably the gods of Cinema stand comfortably next to those of Theater, Dance, Painting, Sculpture, Opera and Literature.

As you read, you’ll find that Ebert’s writing is meant to persuade without letting the reader think too much about the topic. Ebert isn’t trying to engage anyone in a discussion about video games as art. When headlines are run as “EBERT VS THE GAMERS” for articles featuring everyone’s favorite film critic arguing against the sometimes incoherent arguments of 12-year-old Halo fans, how can a reader who isn’t familiar with video games not believe that “the things that make it a game” are “scoring, pointing and shooting, winning and losing, shallow characterizations, and action that is valued above motivation and ethical considerations.” Never mind that there are many counterexamples of games that are not about scoring, shooting, or winning.

My favorite part about the article was Croal’s well-researched point that I had guessed was the case in a previous post: when film was only thirty years old, there were plenty of critics who considered it a base form of entertainment for the lowest common denominator. There was no way that film could possibly aspire to anything greater.

And yet, here we are.

Ignoring Ebert’s opinion on video games (again), what are developers doing to create art out of games?

Last month, Warren Spector wrote about his frustration-driven creativity. After finishing Paper Mario for the Wii, he felt that it was fun but left him with nothing afterwards. What frustrates me is that Paper Mario is typical of so many platform games–nearly all games, when you get right down to it.

As developers, we almost never think about what games can do to enrich our players and, as players, we almost never encounter anything that informs us about the human condition. The audience certainly doesn’t seem to be clamoring for anything more than diversion. … There’s no other medium that routinely and without much self-reflection offers consumers so little.


For the most part, games are all surface, no subtext. They’re about doing–they have to be about doing–but rarely about the WHY that drives the doing and even more rarely about the consequences of doing whatever it is you’re doing in the game.

You know, he has a lot of the same arguments as Ebert…except when Spector talks about it, he’s analyzing. He’s thinking. He’s not dismissing the entire medium. He’s talking about the problem of games not being more than they currently are as something that can be solved.

It took about 60 years for “Citizen Kane” to arrive. I can see Spector wondering what the video game equivalent would be. When he talks about what games can be, I’m thinking about it, too. Ebert’s arguments only serve to shut down the thinking process. Thanks, but I get enough of that kind of talk in politics. Give us more thoughts like Spector’s, and we can figure things out for ourselves. We can’t help but actually think about the issue when the option is presented.

Categories
General

What is Artificial Intelligence?

When I was in college, I asked a coworker of mine what his major was. He replied that he was studying artificial intelligence. The conversation kind of went like the following:

Me: Oh, cool!
Him: Well, actually, it’s probably not what you think…
Me: So are you studying neural nets and expert systems?
Him, visibly surprised: …Uh, yeah, actually.
Me: Cool!

I think he expected me to believe that artificial intelligence was just as it is in science fiction movies and books. He probably thought I was excited that he was learning about making sentient robots or something. The fact that I knew the term “expert systems” and that it was related to AI research seemed surprising. No one writes books about exciting expert systems in science fiction, right?

I suppose the reason why I knew about what courses in AI would be like is because I originally expected them to be about making computers reason and think. Then I looked into it, and I found that it wasn’t always that sexy. Some research is about computer reasoning, but a large chunk of the research is really just a series of if-statements, when you get down to it: IF this object is a mammal THEN XYZ. IF this object is a reptile THEN ABC. When you look at knowledge bases, such as Microsoft’s, it’s the result of AI research. If you are expecting to encounter romanticized science fiction in college AI studies, you’ll likely be disappointed. A lot of the AI you’ll study is about developing better ways to answer questions for an automated tech support call center.

I was hoping to take a course in AI and learn how to write autonomous agents in a video game. Expert systems aren’t quite what I had in mind. Instead of taking such a course, I read articles online and bought books. Kids today are lucky as GameDev.net has way more articles on AI than I had access to when I was in school. I do own O’Reilly’s “AI For Game Developers”, which has the sub-heading “Creating Intelligent Behavior in Games”.

Why would I care about expert systems? Would an expert system help me with making the computer opponent in platformer look intelligent? Finite state machines, fuzzy logic, pathfinding, obstacle avoidance, chasing and evading…these are things I wanted to learn. They seemed to be the most practical for a game developer.

According to the Wikipedia entry on AI, you can identify two types of AI applications: classifiers and controllers. Classifiers identify entities as fitting a pattern or set of objects. Controllers basically use classifiers before deciding on an action. The latter seems closer to “IF player is nearby, then send wave of enemies in delta formation”.

Still, there isn’t really a need to study too deeply into these details if you want to make games. Don’t think that the AI in Quake was very intelligent. The model had a number of assumptions about the nature of the level layouts and information about player locations. Someone made a 2D volleyball mod using a Quake engine and found that the movement was strange because the AI assumed it would have room to turn around. The computer-controlled players weren’t moving in a very smart way at all. I remember reading one player’s comment as he talked about how moronic they acted.

And I suppose that reaction is all we have to worry about. You can try to make your AI as smart as you can, but if it does things that aren’t very smart, people will notice, and your AI will be considered weak. Perception of intelligence is more important than actual intelligence. Just like in real life. B-)

When people played my Space Invaders clone Killer Kittens, one of the common reactions I heard was someone cursing the last alien. Just like in the original Space Invaders, the last alien moves much faster than it did when there were still other aliens around it. People were getting mad at it, but in a good way. To these players, it wasn’t an algorithm I wrote that sped up the alien’s movement. It was the alien getting tricky, or becoming afraid, or doing something intelligent. It sometimes seemed to drop a bomb right on top of the player’s shot, which seemed to be an intelligent way of shielding itself. In reality, the bomb being dropped was random, just like any of the other drops. But hey, if the players think it seems intelligent, then I don’t need to spend time trying to get it to drop the bomb more intelligently.

I remember when Goldeneye 64 was released. The enemy seemed intelligent…until you came across two guards with their backs to you. You could run past them with your guns a-blazin’, but you could also take them out quietly. Unfortunately, you’ve run out of bullets for your silent pistol, so you pull out the rifle you took from one of the other enemies. You have to be quick. You aim at one guard, shoot him, aim at the other guard, but then realize that he isn’t moving. His colleague just dropped dead in front of him, but he didn’t even blink. Wha-? It was very weird the first time I realized that the AI isn’t that intelligent at all.

Game AI is getting more intelligent these days, but in the end, the only thing that seems to matter is how players perceive it. In this way, it is similar to the importance of story in games.

Categories
Game Development Personal Development

Thousander Club Update: July 23rd

For this week’s Thousander Club update:

Game Hours: 262.25 (previous year) + 143.75 (current year) = 406 / 1000
Game Ideas: 616 (previous year) + 83 (current year) = 691 / 1000

I tore through “Harry Potter and the Deathly Hollows” in order to get it completely out of the way. I read it in three sessions (darn a need to clean and sleep getting in the way!). Now I don’t have to worry about deciding between working on my game and reading a book. B-)

I managed to fix my build. I can now check it out into an arbitrary directory and build it. Previous it assumed I had a certain directory structure in my home directory. It was similar to having hard-coded constants in my code, only I couldn’t figure out why turning them into variables still resulted in the same constants being used some of the time.

With the build fixed, I spent the rest of my time figuring out how to incorporate Guichan into my code. I already have a separate MenuManager class, so the rest of my game might be untouched as I add and change code.

Categories
Game Development

Immediate Mode GUI

Anthony Salter has created another update to Planitia, his sorta-Populous non-clone. I can’t wait to try it out.

In the comments following the article, I found this exchange:

sol_hsa: I wonder if you used the IMGUI paradigm =)
Viridian: Why…yes! Yes, I did!

IMGUI paradigm, eh? I think I had heard about it (it’s not very new), but since I wasn’t dealing with GUIs at the time, I didn’t feel compelled to learn about it. Now that I’m focused on the GUI for Killer Kittens, it sounds like something to research!

One thing I found was a tutorial on the same site that explained how to do framerate independent movement to me. Sol on Immediate Mode GUIs (IMGUI) on Sol Tutorials offers a somewhat detailed tutorial. Casey Muratori or Molly Rocket created a video presentation on IMGUI back in 2005. And of course, I can command Google to bring me more information as I desire.

So rather than using the standard decoupled, event-driven GUI development model, IMGUI seems to promise ease of development without many disadvantages. Anyone else get good mileage out of IMGUI practices? I’m not so sure if I want to abandon Guichan just yet, but if IMGUI is as nice as people say, perhaps I might have to change my mind.

Categories
Geek / Technical General

Upgrading from Ubuntu Edgy to Ubuntu Feisty

As I mentioned before, I tried to upgrade my laptop from Edgy to Feisty. I had read about upgrades from Dapper to Edgy being a problem, but I also read that upgrading to Feisty shouldn’t be.

I was wrong. After the upgrade, I couldn’t boot into Ubuntu. I would instead see the following:

Check root= bootarg cat /proc/cmdline
or missing modules, devices: cat /proc/modules ls /dev
ALERT! /dev/disk/by-uuid/38ede6ac-6b2f-44d7-a635-deab88ae9381 does not exist. Dropping to a shell!

I had to switch to the earliest kernel I had out of the four or five available before I could boot, and even then it was without a GUI. At least I could edit config files, and with network access, I could check in the changes I made to my project.

After trying a number of solutions I found online, I decided that I didn’t have time for figuring it out and will simply install Feisty over the existing borked-up install. I know Feisty will work on my Dell Precision M90…it’s the same machine that Michael Dell uses Feisty on!

I downloaded a Feisty install ISO, burned it to a CD, and popped it into the laptop. When I ran the install, it asked me about partitions. I told it to leave my /home partition alone. I had backed up the important things on there just in case. It formatted the other partitions (I only had /, swap, and /home), installed, and before I knew it, I had the familiar Ubuntu desktop in front of me.

Why the upgrade didn’t work for me, I don’t know. I couldn’t figure out exactly what was wrong, and it turned out to be easier to just do a fresh install. The downside to doing so is that I need to redownload any applications and tools I had, such as multimedia codecs, Zim, g++, and autotools. Beryl doesn’t work quite right, but I’m sure I missed something when I set it up. The eye-candy is only useful for showing off at events anyway, so it can wait. B-)

Now that I have it installed, I’m taking it through its paces. Hardware accelerated video is working well, and I haven’t encountered any hardware that isn’t working, so at least there were no regressions there. Wait…Ok, I just checked, and my USB mouse was automatically detected. I had read that people had issues with USB in Feisty, so at least I’m fine. I found that it is mounting my Windows partition, too, which can be useful if I have to access data on that side.

I’m a bit disappointed that the upgrade didn’t work cleanly, and I’m worried about the reports that Feisty is a buggy regression from Edgy. Still, after the install, I’m back to working with my laptop.

Categories
Game Development Linux Game Development Personal Development

Thousander Club Update: July 16th

For this week’s Thousander Club update:

Game Hours: 262.25 (previous year) + 141.25 (current year) = 403.5 / 1000
Game Ideas: 616 (previous year) + 60 (current year) = 676 / 1000

Ok, so there wasn’t as much productivity as I would have liked. I was using my laptop when I realized that I needed a newer version of a piece of software and so decided to upgrade. I had heard that upgrading to Ubuntu Edgy was fraught with peril and that Feisty was safe.

Yeah, apparently not. After the upgrade, I rebooted the machine, and at the Ubuntu splash, the progress bar didn’t move. After some time, I get the following:

Check root= bootarg cat /proc/cmdline
or missing modules, devices: cat /proc/modules ls /dev
ALERT! /dev/disk/by-uuid/38ede6ac-6b2f-44d7-a635-deab88ae9381 does not exist. Dropping to a shell!

I am thrown into Busybox, and then I have to depend on Google and bug reports to figure out why I am not looking at a new Feisty install.

I learned that instead of having nice device names such as /dev/sda5, I now have a unique UUID for each partition. It sounds cool because apparently IDE drives and SCSI drives won’t be handled separately. Unfortunately, my kernel doesn’t seem to know what the heck any of the devices are. I even tried using my older kernel, and I still had the same error.

Also unfortunately, I’ve been so busy that I haven’t had much time to troubleshoot the laptop, and I definitely didn’t have much time to work on Killer Kittens. The work I did do? It’s stuck on the laptop because I was a bone-head and didn’t think that checking in my changes would be needed before doing a major upgrade from one version of Ubuntu to another.

Oh, and it’s crunch at the day job. B-(