My Linguistic Niche

You know how some people seem to have a knack for languages? They effortlessly learn new terms, nail pronunciations, and possess a seemingly limitless memory. I am definitely not one of those people. My first language was Mandarin. I’m told I was quite the talker when I was little, telling stories to strangers left and right. I could read and write over 500 Chinese characters by age three. Of course, most of that was lost when I moved to the U.S. at the age of four. Nowadays, I can barely guess my way through a simple newspaper article. I went on to study Latin all four years of high school, progressing through advanced classical texts and nabbing prizes in Latin exams and competitions. Now? I can barely remember what carpe diem means. In college, I decided to give Mandarin another shot. I was still fluent in speaking and listening but struggled with reading and writing. A few courses later, I was writing essays and reading short novels. But as with before, as soon as those courses ended, my memory of the vocabulary quickly dissipated. So how does all this relate to games? As a game designer, I’m constantly learning new languages, not only in terms of new game mechanics terms and design vocabulary, but also in terms of different scripting languages. I am by no means a great programmer, but I can say unequivocally that I love learning scripting. I find an unexplainable beauty in the process of breaking down the most complex events and actions into simple if/then statement building blocks. While world languages may be based on verb...
Chromattack (Part 2 of 3): Exposed

Chromattack (Part 2 of 3): Exposed

Most of us play countless games every day, but rarely do we get to see the bones behind a game, the gears that make a game run. UDK predominantly uses visual scripting in the form of kismet to trigger events in game. For example, you can use an actor factory node to spawn enemies in your level or a teleport node to instantaneously move things around. Chromattack consists of hundreds of such nodes responsible for spawning enemies, attaching objects to them, having them move on various paths, and enabling them to take different types of damage at different times. Then there’s additional scripting for random floor tile colors, camera movement, and player abilities like shooting and speed. Here’s a closer look at some of the simpler pieces of kismet behind Chromattack: To create each enemy, I pass several objects into a sequence called “CreatePawn.” Inside the CreatePawn sequence, I use the external variables to execute a variety of events, including attaching objects to the enemy, checking when they get hit, and playing sounds and particle effects. Here’s a close-up of the section that checks for when the enemy takes damage. When the enemy takes a certain amount of damage, check if the enemy is on a floor tile that matches its color. If so, kill all the enemies on screen. If not, kill just the enemy itself. In addition, each enemy needs to move to random locations at different times. The movement sequence is triggered immediately after each enemy is created. The enemy chooses one of three possible speeds, then picks a random destination and repeats the process. After...
Enemy AI

Enemy AI

The first time I heard of a game designer working on enemy AI, I thought, pfft, how hard could it be? Throw some enemies in, make them go places, and have them shoot things. However, in reality, the process is turning out to be much more complex than I’d originally anticipated. It turns out that enemies are pretty dumb. Essentially, they’re pieces of furniture in a game that can move around and do stuff. Only, they don’t inherently know how to do anything. Without a brain, they need every action, every behavior, every simulated choice to be explicitly programmed into them. Want an enemy to move around? Well, where should they start? Where exactly should they go? How fast should they move? What if they run into something or someone along the way? Should they continue running in the same loop, or should some action cause them to change their movement? The more questions that are asked and answered about an enemy, the more seemingly sophisticated he’ll be. Here are some of the enemy AI components I’ve been fiddling around with in my latest level: Movement This involves placing specific path nodes to tell each enemy exactly where to go, when to go there, how quickly to get there, in what order to move to the path nodes, and how long to continue in this pattern. Basically, path nodes serve as enemy bait, meaning each enemy needs several path nodes to keep them busy and make them appear like they have half a brain. Firing patterns Each enemy needs a weapon and specific directions on how to use it....