Categories
Games

Halo 4 – First Impressions

I’m waiting to play the campaign with friends, but tonight I tried out the some of Halo 4’s multiplayer options – mostly the co-op “Spartan Ops” episodes.

The Spartan Ops missions are short and felt very poorly organized. There’s an objective in each mission, but indicators are often hard to miss or don’t show up at all, leaving players confused and disoriented. In most of the missions, the game just throws multiple waves of enemies at you and tells you to kill them. It would probably be fine if they weren’t presented as missions, since they have a lot in common with Reach’s Firefight mode – they’re just not as fun or frantic.

One thing a friend and I both noticed is that many of the weapons don’t have the right feel. The battle rifle’s new effects are great, but the Wraith’s plasma mortar has a quiet launch and a pitiful “poof” when it hits the ground. Gone are the screen-shaking explosions, booming audio, and huge blast. Most of the “big” weapons (rocket launchers, fuel rod guns, etc) are similarly disappointing.

I also played a single round of the “Dominion” mode, where players fight to capture and defend several points. It was fun, but I was vastly under-leveled and was frequently killed by players with weapons I didn’t have access to. The maps usually have weapons lying around, but they were difficult to find if you didn’t know the map. I suppose that’s normal for competitive multiplayer games, however.

Player customization is nice, but there was an anemic selection of foregrounds for player badges. I was extremely disappointed to find my usual “Valkyrie” (sword with wings) badge was gone entirely. Hopefully more badges will unlock as I level my multiplayer character. The leveling system itself is nice, but even after unlocking items by reaching a certain rank, you still have to spend “Spartan Points” on the items to use them. These points appear to be non-refundable and are only awarded by leveling up, so they’re hard to gain and cause the whole leveling system to feel oddly restrictive.

Overall, I was unimpressed by the multiplayer modes. It feels like it’s been done before and better by other games, and I think Reach had a far better array of options. I want to like the multiplayer and maybe I’ll find something I missed, but I’m not getting my hopes up. And hopefully the campaign story is fantastic enough to balance out my multiplayer disappointment.

Categories
Projects

BattleGrid Update – October

Goals for October
Effects and bug hunting – same as September.

What Got Done?
Like last month, this month has been slow. I continued my work on effects and tried out a few new things to make the UI a bit more dynamic and interesting.

I also expanded the AI a bit to make it more intelligent about structure placement, which worked out nicely – so well that the AI was placing structures in the same places I would have. Right now, it’s a little too precise (it can get stuck trying to place a structure in the same place as an existing structure), but that will be fixed by adding a little randomness to it.

What’s Left?
At this point, I’m mainly focused on cleaning out remaining bugs so I can get something that’s complete and playable. My biggest bugs (and some of the heaviest load) comes from my factories and mobile units, so I may scrap them (at least temporarily), and replace them with more interesting turrets.

There’s still the music to worry about as well as loading and saving, which is kind of important.

Goals for November
I want to finish some of the changes to the AI to make it work better, and maybe even get around to implementing the loading and saving.

Categories
Projects

BattleGrid Update – September

Goals for September
Effects and bug hunting.

What Got Done?
This month was pretty slow. I did fix some bugs and add or modify a few effects, but I didn’t get as much done as I’d have liked. However, I did start work on a level intro sequence, which should be nice once it’s finished. (I also added in code so the intro sequence can be skipped if players are impatient)

What’s Left?
Basically the same as last month:

Bug Hunting
I fixed a few annoying and game-breaking bugs in September, but there are still many more to take care of.

Music
While I’ve still got some ideas for creating music myself, I think I may have more success using the Unity Asset Store for some nice music. It’s pretty affordable, so I might try a few things, anyway.

Polish
I’m working on some effects to really get the “hologram” effect I want in the UI, and thanks to a few recent/upcoming games (Borderlands 2 and XCOM), there are some good examples of the effect to use as a reference.

Implement Loading and Saving
Still needs doing, and I still think it’s going to be difficult.

Goals for October
More effect work and cleaning out bugs.

Categories
Development

BattleGrid Music

I’ve written in many posts about how much I’ve been dreading working on the music for BattleGrid. It’s something I’d like to learn, but I simply have no skill when it comes to music. Unity has been running an “Asset Store Madness” sale this month, and I picked up a “Retro SFX” pack for half price. Some of the sounds in the pack are similar to some I had created using a simple, free tool I found, but were a better quality, so I’ve started using them where they’re better than what I had.

After using the sound effects, I thought, “Hey, maybe there’s music available, too.” So I did some searching and it turns out there’s some very good music on the asset store. I had to wade through tons of music that wasn’t great or didn’t fit the style of BattleGrid, but a few things I found are perfect – almost exactly what I had in my head but could never reproduce in reality.

Even better, as this is an asset store for a game development platform, several of the tracks are designed to be looped or have sections that can be looped, making it easy to make use of the tracks within a game. And the licenses are appropriately flexible, as well: royalty-free use in practically anything as long as the tracks aren’t able to be redistributed.

Categories
Projects

BattleGrid Update – August

Goals for August
AI and effects, the theme from the past few months.

What Got Done?
A lot, actually:

Effects Updates
I updated how I handle effects to make things easier for future development. I also added some new effects and updated old ones. Specifically:

There’s now a build animation when structures are built. It started out pretty lame (structures rising through the ground), but now there’s a new particle effect that looks pretty good. Either way, it still adds a lot to the game and gives you an indication of when structures will complete.

I added a map border, Supreme Commander-style, that caps off the map nicely and hides anything under the grid (like structures being built). I’ve got some plans for a level intro that will make use of the map borders.

I added a quick effect when a player captures new grid cells that looks fantastic. I liked it so much that I modified the map generation to use the same effect. This is easily one of my favorite effects so far – it’s very simple, but looks nice in-game.

I added some new UI effects that make it clear when you acquire and spend resources. This wasn’t really necessary, but I’ve been wanting to show something when your resources change. The effect right now is pretty simple and has some potential problems (like never going away if your income is ticking at the right intervals), so it will likely see a few updates.

AI Updates
As described in my AI post, I rewrote the “strategic” AI. After that success, I decided to rewrite the other AIs (turrets and pathfinding for units). The result is a greatly improved and simplified AI across the board, so it performs better and is less error prone. It was a good month for the AI.

I also found the source of some problems I’ve been having with turret targeting, and I’m working on an interesting solution to solve it (basically, everything will “talk” to each other – “Hey shield, I’m targeting you!”). When the changes are finished, targeting should run faster since I won’t have to validate the target list when scanning for targets – it will be managed automatically as the state of units changes.

What’s Left?
I’ve decided to scrap the map sharing features until after launch, depending on user feedback and success of BattleGrid (or a Kickstarter, if that happens), so my to-do list is getting slightly shorter.

Bug Hunting
There are some odd bugs that crop up from time to time that need taking care of, and the easiest way to find them is to play the game. Hopefully I don’t get bored.

Music
Yes, still. However, I finally have some ideas about how to go about the music, which I’ll eventually detail in another post, once I actually have some results.

Polish
I’d have put “Effects” again, but that was getting boring. The effects already present need polish, and new effects might come in to replace them. The AI might need a little tweaking, or at least some of the numbers it relies on, but the AI itself is pretty satisfactory right now. Aside from making some minor improvements to make it a bit more intelligent about placement, I probably won’t touch it much more.

Implement Loading and Saving
It’s harder than it sounds. I have a storage mechanism for the maps themselves, but storing where every structure and unit is, plus their firing state (how long until they can fire again) is difficult. I’m thinking about simply storing where everything is and treating a reload like a challenge map – just load everything and start the fire cycles from there. It would just suck if you had the game-winning artillery shell in flight when you save and it doesn’t reload that way. Then again, if you were that close to winning, you’ll probably still win.

Goals for September
Mostly effects and bug hunting. I’ll also do some cleanup on the code to get rid of things I’m not using so I can hopefully pick out the code with the bugs easier. And, if I get around to it, work on the music.

Categories
Projects

BattleGrid Update – AI

One of the biggest hurdles I’ve had to face with BattleGrid is the AI. How do you teach a computer to play a strategy game? It’s obviously been done plenty of times, but I don’t have the expertise or experience that developers behind big-name RTS games have.

In general, I try to go simple when developing. The simpler the code, the less error-prone it is, and the easier it is to fix problems or add new functionality. I thought my first attempts at AI for BattleGrid were pretty simple. I had narrowed the number of things an AI might do to 5 categories: attack, defend, capture, expand, or extract (claim bitstreams). There was a lot of overlap between the 5 categories, but implementing each one was difficult, and they could conflict with each other easily.

I recently decided to try simplifying the AI further. I trimmed the 5 categories to 3 (expand, extract, and build), and then further to a single goal: build. Once I made the switch, the AI worked almost flawlessly – it never broke and even seemed to be playing intelligently at times. With this single objective – build – I could focus the AI on the important parts – selecting what and where to build. When something goes wrong (can’t build in the desired location, can’t afford the desired structure), it’s easy to abort and start over, letting the AI pick something new to build.

The AI’s thinking goes something like this:

  1. Pick a structure to build.
  2. Pick a location to build the structure.
  3. Wait until I can afford to build the structure.
  4. Build the structure.

It’s a simple process, and the first two steps are the important ones.

When selecting a structure, the AI uses several factors. First, if there are bitstreams in their territory that don’t have extractors, they choose to build an extractor (as any player should). If not, they look at all the structures they can build and choose one based on their aggression and the effectiveness of the unit against their enemies. If the AI’s aggression is low, they’re more likely to select a defensive structure like shields, factories, or artillery – structures effective when turtling. If it’s high, they’re more likely to choose missile turrets, blaster turrets, or outposts – structures effective for quick expansion and harassment. The second factor – effectiveness – makes an AI more likely to choose the best structure to counter an enemy. If you have shields, they’re more likely to pick factories (units can enter the shield) or blasters (bonus vs shields). If you have artillery, they’re more likely to build a shield. Between the two, the AI can make a fair decision on what would be best to build.

When placing a structure, the AI uses one factor primarily – fragility. This is a new value I added that tells the AI how “fragile” the unit is, which basically translates to whether the structure should be placed on the “inside” of their territory (closer to outposts) or on the edge. It’s probably not the most accurate term, since it’s different from the structure’s health or strength – the blaster, for instance, has low health but a fragility of 0, telling the AI to build it close to the edge of their territory. Shields, factories, and artillery have a higher fragility, telling the AI to put it closer to their outposts or core.

Between the two, I’ve seen some interesting habits. The AI is pretty good about placement of outposts – they usually go on the edge of their territory to provide maximum expansion. Turrets are placed in about the right ranges to counter effectively – missiles are usually placed outside the range of blasters, for example. They’re also more likely to use shields or factories, which is great. Overall, I’m extremely pleased that such a small change – and more importantly a change to a simpler design – has resulted in a fairly dynamic AI that behaves well and is easy to tweak.

More importantly, I’ve started to lose against my own AI. The harder AI cheats a bit (it gets more money than the player), but I’m having a hard time out-maneuvering it. Sometimes the AI is downright brutal, using outposts to box me in and restrict my resource capacity, limiting what I can build and leaving me to build blasters on the edge of my territory in a feeble attempt to fight back. And then the AI builds a new outpost, neutralizing my blasters and leaving me powerless, waiting for my inevitable defeat. Which is a wonderful thing when I’m trying to develop a decent AI to play against. Of course, that means I need to tweak some settings so a come-from-behind victory is possible – especially now that I’m finding myself in that position.

Categories
Projects

BattleGrid Update – July

There wasn’t much progress in July. Between the July 4th holiday, the Steam summer sale, and buying a new home, I didn’t have as much free time as I’d have liked.

Goals for July
My goals for July were to get some work done on the AI and effects.

What got done?
Toward the end of the month, I finally got down to business and worked on ironing out some AI bugs. The AI won’t wait for you to claim any bitstreams in your territory anymore (though they still seem to think a while before deciding to do something else), and they’re slightly less likely to go totally brain-dead later in the game. I also fixed an annoying bug with structure placement.

I also started running into a bug where my UI texture atlas is being sent to the web player at a really low resolution, causing the entire UI to look blurry. For the time being, I’ve been testing using a Windows executable deployment, which is great because the game runs at 150 – 200 FPS as a native executable. And BattleGrid looks pretty good when it’s running silky smooth.

I also started thinking about some new ideas for the graphics, and while I doubt I’ll use them for this game, I might use the ideas in a future project. Here’s a shot of what I was working on:

Voxelized blaster turret
The blaster turret from BattleGrid rebuilt using voxels.

What’s left?
AI Rewrite and Updates
I need to improve the AI a bit further, and there’s still the rewrite option open. I’m still not sure if I want to move to something else. Either way, the strategic AI is still pretty weak.

Effects
Same as before, I want to give some more life to everything.

Map Sharing
Still to-do, and tempted to scrap it entirely. I may just postpone it until post-release, since the editor is already working and players can make their own maps – they just won’t be able to share them.

Music
I’m starting to get some general ideas for the music, but I’m still stuck on the actual creation part.

Goals for August
Last month’s goals carry over into August – AI and effects. It’s going to take some epiphanies to figure out exactly how to handle the AI. I could make the AI smarter about picking and placing structures, but I’m not yet sure how to do that efficiently. Right now, structure placement is mostly random, aside from outposts.

The effects are a bit easier to get done, but they don’t feel final, so they’ll still need work until I find something I really like.

Categories
Projects

BattleGrid Update – June

Time for the June update, a little late because the end of June was busy… In June, I managed to clean up a few things, fix some annoying bugs, and do some general housekeeping. I didn’t get as much done as I would have liked, but that’s what I expected.

Goals for June
My goals for June were to add some extra effects, fix some bugs with the editor and defense modes, and look into some new options for my AI.

What got done?
New Effects
I added in a few new effects, but not as many as I’d like. Nearly every unit has a sound effect now, but they will likely need to be improved. I switched back to a few better-but-higher-draw-call effects (projectile trails) because of rendering improvements with the map and units.

Defense Mode Testing
I tested the defense mode, fixed a few bugs with it, and added some new UI elements for it. I think defense mode is about done – the only bugs left are general bugs not limited to defense mode.

New Resource Storage Concept
I had a new idea for how to handle resource storage to make it a bit more dynamic, so I implemented it. I’m happy with how it turned out, and I think it adds a lot to the game. I’m planning on describing the changes in a later post.

UI Update
I cleaned up my UI textures so it’s easy to create new pieces of the UI and should lower texture memory usage overall. I also updated the map previews to load from disk rather than being generated at runtime. While the runtime generation was neat, it was a huge processor hog. Finally, I added a new loading screen that features a progress bar so I can start to track loading times (and hopefully reduce them).

What’s left?
AI Rewrite and Updates
Same as last month, the AI still needs to be rewritten in a new system (if I choose to go that way), and I need to improve it overall.

Effects
There are still a few effects left to add. Mostly sound effects, but also some particle effects and maybe some miscellaneous environmental effects.

Map Sharing
Same as last month. I still need to create the website for BattleGrid map submissions. Along with this, I’ll need to update the UI in-game and think of an elegant way to let the player browse through possibly hundreds of maps.

Music
I’m still terrible at creating music. Even if I think I have a good idea, I don’t have the skills to make good-sounding music from it.

Goals for July
I’ll likely focus on the effects and AI for July, since they’re the biggest “gamey” parts left to implement. Once those are done, I’m down to the ancillary stuff like the map sharing site and the music, which I still expect to take several months while I try to build some music-making skills.

Categories
Life

Weight Loss

I just achieved my goal weight loss of 25 pounds since January. I’ve been pretty happy with the results, and figured I’d write a long post summing up what I’ve done and what I’ve learned.

My Goals
I started in January at a weight of about 225lb. I’ve weighed in the 220s for a while – at least since college. I picked 200 because it seemed like a good weight to strive for. I didn’t want to try any specific diet – I just wanted something simple and sustainable so I could develop some good habits. And mostly, I just didn’t want to work very hard at it.

How I Did It
I don’t expect this to work for everyone, but these are the major things that worked for me.

LoseIt!
Easily the most important tool that helped me was LoseIt! on my iPhone. LoseIt tracks your weight and what you eat. You can set up a goal, and LoseIt will adjust your daily calorie budget to meet that goal. It has a giant library of foods already in it, so adding new foods was always easy – usually scanning a barcode brought up exactly what I was eating.

Tracking what I ate had a few important side effects. I learned what I could eat that was “cheap” (calorie-wise), and how much I could eat. This meant going hungry a few times, but I quickly got used to the lower calorie consumption.

Measure your food
I bought a digital scale, got out my measuring cups and spoons, and measured everything I ate. After doing this for a month or two, I started to learn how large serving sizes were and could better estimate my consumption.

I didn’t change what I ate, just how much I ate. I still eat plenty of cereal, pizza, french fries, and tacos. I just eat them in moderation and I’m acutely aware of how much I can eat before going overboard.

Lean Cuisine is cheap
Lean Cuisine, Healthy Choice, and Smart Ones made up the bulk of my meals because I’d eat them at work for lunch. They’re pretty cheap, both dollar- and calorie-wise. When I can feel satisfied from a 300-calorie Lean Cuisine meal, there’s a lot more calories I can spend elsewhere.

Don’t be strict
I occasionally took a break from my diet. During my trip to PAX, I left the diet behind entirely and ate what I wanted (and what was available). Occasionally I’d go out and eat a giant cheeseburger or pizza. This reduced any stress of trying to stay on a diet, and was a bit of a reward for my progress. Granted, I had to immediately get back on the diet the next day.

Don’t get discouraged
When I got back from PAX, I had gained 11 pounds. That’s a pretty big blow, but I didn’t let that discourage me, and I got back on my diet the next day. Those 11 pounds quickly bled back off. I was fortunate that I was never terribly serious about the diet – it was just something I wanted to try – so setbacks like this didn’t phase me.

Side Effects
There have been some interesting side effects I didn’t expect starting out. For one, a lot less food will fill me up. I guess my stomach got used to the smaller amount of food and shrunk a bit, which made the whole diet easier. I also have a lot more energy, I sleep better, and I feel better in general. I assume this is all because I’m carrying around 25 fewer pounds, which makes a pretty huge difference over the course of the day.

People have apparently noticed, too, which feels odd. It’s rare when people ask me if I’ve lost weight, but coworkers have been asking about it and congratulating me when I tell them how much I’ve lost. It’s a nice boost when someone notices your progress.

Stats
Some miscellaneous statistics:
Total weight lost: 25 lbs.
Time: 164 days (January 11, 2012 – June 23, 2012)
Average weight loss per week: 1.05 lbs (0.15 lbs/day)
Average calories consumed per day: 1478

Weight loss graph from LoseIt.com
Weight Loss Progress from January 11 – June 23

In Summary
I told people several times during this diet, “If I had known it was this easy, I’d have done it a long time ago.” I want to stress that I got this weight loss simply by monitoring what I ate. I didn’t add any exercise (because I’m lazy), and I didn’t change what I ate (because I like what I eat). The result has been a simple, sustainable diet that I can continue with for as long as I’d like.

I know I still need to add some exercise and probably eat a bit healthier overall (more green stuff, probably), but I’ve been pretty pleased with how a few simple changes have resulted in a pretty dramatic shift.

And maybe someone will come along, read this, and say to themselves, “I’m lazy and cheap, maybe I’ll give this a try, too!” And maybe it’ll work for them. And maybe I can write a dieting book and become filthy rich. And if not, I’ve at least got my own success to be proud of.

Categories
Projects

BattleGrid – New Gameplay Concepts

I’ve been considering some new gameplay concepts and decided to implement a few and see how they pan out. This post is about a new resource storage concept.

Currently, each player starts with a resource storage limit (“cache”) that is determined by how many outposts they control. The player’s base (“core”) provides storage for 100 bits. Each outpost adds storage for 10 bits. A player can keep building outposts to increase their storage capacity.

The new concept moves the storage to the grid cells you control. This means outposts are still the structure that provides more storage, but only because they expand your area of control. Grid cells started off as simply being the area you can build in, but now they’re much more important. Each grid cell you control can store 1 bit or power a structure. If you build on a cell, you lose the storage capacity for that cell, but gain whatever benefits come along with the structure (like being able to kill things).

This change has several side effects. Placement of outposts becomes a bit more important. Building an outpost on the edge of your territory is best, since it provides the biggest increase in storage capacity. However, overlapping outposts are still fine since it means losing one won’t cause a big dip in your storage capacity.

Another side effect, and the one I like best, is that building outposts to contest enemy control areas is an effective way of cutting off their storage – it’s like attacking their supply lines.

In the past, I found myself building several outposts around my base just to be able to build bigger structures (artillery and shields). It’s not a strategy that I intended, and it would be difficult to teach the AI the same strategy. However, the AI is already decent at expanding its control, so this change should put the AI on more equal footing with the player.