blog.raydenuni.com

Philosophical Ranting of an Engineer

Canada is a strange place.

The first trouble my friend Josh and I had was traversing the border crossing. The road split several times with no signs indicating which way to go. Fortunately we passed this test with flying colors. We later theorized that this was all part of an elaborate ruse by the Canadians to keep idiots out of their country. This theory has been supported through several further experiences.

This land has trolley. Trolleys are trains that drive on the road. Or you could call them buses that run on rails. They are big and scary and obey street lights. Cue foreshadowing.

Shortly after we arrived at the hotel. We both agreed this was a sketchy part of town. The hotel employee could not believe my friend’s name was “Josh? As in J.O.S.H.? As in Joshua?” He was astounded. Apparently no one in Canada is named Josh. This employee informed us that parking was two blocks away in an underground garage. Thus begins our adventure. We immediately drove down the wrong road and found a hospital parking garage. We drove some more and did not find any underground garage. We circled around again and drove into an area filled with trolleys. We turned down the alley and were greeted with traffic signs unintended for motor vehicles. It was not until the “TTL Personnel Only” sign that we realized we were not where we should be. Unable to turn around due to the incoming trolleys, we continued on. Employees gave us strange looks, we were unfazed. We would escape this trolley land.

We did and then circled the area a couple more times before returning to the hotel for a map. Armed with directions to the parking garage we made it to a nearby apartment complex with an underground garage. We drove down into the garage and parked the car. As we began walking out a man sitting in a van a couple parking spots down from us beckoned us over. He asked us if we were staying at the hotel. He then told us that we should take any valuables out of the car because a vehicle had been broken into the night before. He then elaborated saying cars had been broken into several nights in a row and he was sitting down there to catch people. Josh and I quickly decided we didn’t want to park in that garage and took the man’s advice that parking on the main street was safer.

Due to all this excitement, Josh and I plan on finding a different hotel to stay in tomorrow and Friday night.

Pictures of the hotel room will be coming shortly, but for now a checklist of features:

  • missing light bulb
  • old computer
  • no walking space
  • very loose bathroom doorknob
  • air conditioning unit covered in plastic
  • electrical cord duct taped to the floor
  • and free wireless internet (which we are using to find a different hotel)
  • broken deadbolt (edit)

Zone with a purpose

August 1st, 2007

In World of Warcraft (WoW), there are many different zones or geographical regions. Each zone has a variety of monsters to fight and quests to complete. Zones are designed for characters of a certain level range. Some zones are places where low level characters can fight, quest, and level while some are for high level characters. I think zones could be organized better than they are now.

When playing in a zone, a player has the option of taking on quests. These quests might have the player talk to or deliver an item to an NPC. Or he might be asked to kill a number of monster or kill a single powerful monster or retrieve an item that is guarded. Whatever the quest is, the player receives experience and gold and sometimes an item for their work.

Some quests have follow up quests. A player might get a quest that asks them to kill 10 small monsters, then 5 big monsters, then kill the boss monster. Some quests are elite, that is they ask you to do something very difficult and are for groups of people to accomplish. Some of these elite quests are dungeon quests. That means you must go into a specific dungeon, filled with elite monsters, in order to complete the quest. Elite quests and elite dungeon quests generally give the greatest rewards in terms of money and items.

Quest lines are a great way to give players continuity to what they are doing and give them more of a purpose than simply being given a smattering of unrelated quests. I believe that more can be done to give players more of a purpose and a direction and make the quests and the zones more compelling.

I propose that quests in zones should be related and should guide the player along a mini-story. After finishing with quests in a region, a player will have completed a variety of quests leading up to defeating the overarching evil boss in the zone’s dungeon. While some quests will be unrelated to this path, most will progress the player along a branching series of quests. To give you an idea of how I imagine the quests to work, here is a graph.

In this image you can see several nodes with direction lines connecting them. The square nodes are normal quests, the hexogonal ones are elite. The line signifies what quests unlock another quest. In order to start the “Kill 10 Blobs” quest you have to have completed “Talk to Quest Giver.” However the lines are not requirements in that all must be completed, the line only means it unlocks a quest. The “Kill Mini Boss” quest doesn’t require you to complete all 3 prerequisite quests, only one. This means that if you loathe collecting quests, you can avoid those and focus on the killing path. Or maybe you want to complete all of them, you are free to do that. I think the number of quests in the area and the experience given should be such that a player need not complete all quests in order to level past a zone, letting him pick and choose.

I would expect a real quest graph for a zone would be much more complex with some dead ends, unconnected branches, but this would be the general shape. The idea is that all of the quests leading up to the dungeon quests, are preparing you to face the end boss. As you work your way through the quests you learn more about the evil boss and all the horrible things he has done to this zone and why you must defeat him.

This method of organizing quests and displaying a quest graph to player (information to be filled in as players discover each quest) means that players know they are working towards something as they play through a zone. The best rewards come from finishing the elite quests and running the dungeon. They have choices on which quests they want to do on the path to the elite quests. By requiring players to finish a series of quests to get the elite dungeon quests, players will feel more of an accomplishment and purpose to running the dungeon. I feel that dungeons right now are rather unattached to the rest of the zone.

In my final quarter at Rose, I took a class entitled Game Design & Development. This was a 10 week course where we were taught about a variety of topics about game development. The core of the class was the game that we wrote. My team consisted of five people and we spent six weeks working on our game.

Wombat is a top down 2D shooter, similar to games like Alien Swarm and Smash TV. My team wrote the game from scratch. I was responsible for basic architecture, rendering engine, collision detection, particle effects, and numerous other small features.

Considering the scope of the project, a class project where none of us had any real game development experience, the time, six weeks, and team size, I consider our game to be a smashing success. By the end of the class we had a stable engine, working weapons and magic, an interface with a map editor, a working menu system, and AI. The game is nowhere close to being publishable, nor would it win any awards, but it is an excellent working prototype. Given a couple more months, I think our team could have turned the game into something really fun.

Read the rest of this entry

I’m sure you were all holding your breath. I just heard back from my recruiter today and I didn’t get the job.

Considering my goals of wanting to work in the game industry and weighing working at Microsoft on something unrelated to games for two years versus going to grad school learning how to make games for two years, I’m not sure I would have accepted a job at Microsoft. But, I was a little excited about it and disappointed I didn’t get it.

Also, I would have very disappointed if I couldn’t be friends with Tim anymore

So now I’m waiting on RIT to see if I get a graduate assistantship position. I should hear within a week hopefully.

Fun With Tiles

April 6th, 2007

This blog may or may not turn into “fun and exciting experiences Matthew had while writing his game.”

My engine is coming along nicely. It loads and draws a map and can draw units. I was doing some refactoring because the TileEngine class was responsible for loading the Map and I thought the World class should be doing that. So changed some code so it was the World that created the map and then passed it to the TileEngine for rendering. Lo and behold once I got it compiled and ran it I was displayed a beautiful blue screen, which is the background color. No tiles! I was very distraught as there were no exceptions to trace and no null variables I could locate. I had no idea why it was no longer drawing my game.

And then I remembered two little lines of code that I had deleted and forgotten to replace.

myWorld.Map.TileHeight = 48; myWorld.Map.TileWidth = 48;

These numbers specify the number of pixels in every tile of the map. These variables are used everywhere in my rendering engine. It uses it to specify the size of the tiles; it uses it to determine where to draw units. I had forgotten to set these values and thus they were the default C# value: 0.

Behold, my rendering engine was working properly! Only it was drawing all the tiles with 0 height and 0 width. It was drawing and infinitely small map. I added the lines back in and everything worked.

Programming Tip of the Day

April 5th, 2007

And now for the Programming Tip of the Day. The first piece of code is not equal to the second piece of code. Can you spot the difference? It took me about a half hour to realize that this was the reason my units were jumping around and not moving smoothly.

Good

(int)((myUnit.PosX - myCamera.TileX) * Map.TileWidth)

Bad

((int)(myUnit.PosX - myCamera.TileX) * Map.TileWidth)


Graduate School & RIT

February 23rd, 2007

I got accepted to RIT!

Rochester Institute of Technology (RIT) has a brand new graduate program entitled Master’s in Game Design & Development. I applied there and a couple days ago was informed that I was accepted! Right now I haven’t applied to any other schools, such as USC, so I need to figure out if I would even consider those if they accepted me.

Among other things, I’m on quarter break right now which means I have exactly one more quarter to go!

Dice Wars & kdice

December 23rd, 2006

I’ve been holding back as best I could, but it is finally time for me to post! I’m sitting around waiting for my laundry to finish and contemplating taking a shower before I fly home for Christmas break and I am playing kdice. What is kdice you may ask? It is an ingenious little multiplayer game you can play in your browser! But what is it? First, we must discuss Dice Wars.

Dice Wars is a Flash game similar to Risk. There are many territories and you must conquer the entire board. Your armies are little dice. When you attack another territory, all of your dice are rolled and all of their dice are rolled and whoever has the greatest sum wins! It is an addicting little game and you should go play it now. The beauty is in its simplicity and speed of play.

Once you have the hang of that and are ready for more, then you can move onto kdice. kdice is a multiplayer clone of Dice Wars. For more information, check out its Wikipedia page.

I’ve been playing kdice quite a bit and my score has climbed. Yes, it keeps track of points using a system similar to that of Chess. You can view my profile here. Go sign up now!

Capture the Flag AI

November 15th, 2006

This last quarter I was taking an AI (artificial intelligence) class. Our final project was to create an AI player for a simple capture the flag game. At the end of the quarter all the teams would compete in a tournament. Whoever won the tournament got an A on their AI and bragging rights!

My friend Jonathan, the same one who went to Florida with my roommate Eric and I, was my partner and we put in many hours on it. Unfortunately we were unable to polish it up completely. We had no idea how well we would do in this tournament as there are a lot of really smart people in the class who spent a lot of time on it.

We found out the standings today. We got 4th place! Check it out

To read a paper we wrote about our player, you can read the rest of this post.

Read the rest of this entry

Halo Evolution

October 8th, 2006

I recently discovered a video made by some of the developers of Halo where they comment on a video of Halo at different stages of development. It starts way back when Halo was going to be an RTS. Its really cool to see how it progressed as well as humorous to hear the developers joking with each other.

View the full article to watch the video.

Read the rest of this entry

Summer Update 2

July 22nd, 2006

Work

So I found work since I last posted. I’m writing a Rails app for a guy in Van Nuys. Its fun and challenging. Hopefully it won’t take me much longer. Once It gets close to production state I’ll let you guys know more about it.

Since I began working on this new project I haven’t touched Showcase. This isn’t to say I have forgotten about it, I just feel that I’m learning more by working on this new project. It is similar in many ways and I’ll be able to use the more sophisticated methods I’m learning from it to make a better Showcase.

Speaking of learning new Rails stuff, I watched David Heinemeier Hansson’s keynote address at RailsConf 2006. DHH is th e creator of Ruby on Rails. He had a lot of ineresting things to say, mostly concerning CRUD and using it to design your software, but he also spoke of some new Rails stuff that would be revolutionary, as well as some bleeding edge stuff he had only been working on a few days. If you have an hour to spare and want to learn about programming, not only Rails, I suggest you watch it. Follow along with a pdf of his slideshow.

I was able to directly use some of his CRUD ideas in my project. Approaching design from a CRUD point of view made my many-to-many relationship more manageable and more elegant.

All this thinking about CRUD has got me thinking.

Creating an Engine on Rails

I still want to write a 3D engine, although it is put on hold while I am doing a lot of Rails. It has always struck me that writing an engine seems like a sloppy thing. There is no agreen on organization, no framework for how an engine should be organized. Of course this means that I get to do all that for my engine, but why is this? Perhaps it is because all 3D engines have to be very specific and thus not much can be generalized. Or so few engines are written that putting forth the effort of writing a framework is pointless. I think neither of those is true. I look forward to really thinking about building a framework for my engine. Most likely I will be basing a lot of it off of Rails, as it is what I know, and I think it is organized very well. I can’t wait.

Sailboat

My dad and his good friend Scott bought a Coronado 15. This is a 15ft dinghy with a mainsail and a jib. It is designed for two people. My dad used to own one a long time ago and one of his favorite stories is of when he and a friend found the “ultimate wave” for a C15. The boat isn’t dog slow, nor is it as quick as something like a laser. I have not yet been out on the water, Scott took it out for the first time today, but I hope to sail it a lot before I go back to school.

Summer Update

June 28th, 2006

So I’ve been home for a while now and haven’t posted much here. After my blog broke and I was unable to post for so long, I got in the habit of not posting. So here is a post in my traditional style, half schizophrenic, half update, half philosophy, and half bad math.

Job

I still don’t have a job. After a week of relaxing and goofing off I began looking for remote Ruby on Rails work and despite receiving several responses telling me they were very impressed with my resume, and my well written cover-letter, I only had one company interested in me. Unfortunately the man I spoke to was supposed to get back to me a week ago and has not. I have been doing a little bit of part-time work at Haverly, the company I worked last summer. The application I developed needed a few upgrades, but I want to do something more substatial this summer. Looking for work is depressing. It is much more fun to learn about stuff and work on my own projects!

Subversion

During my time at Rose, I have used CVS and Subversion on various projects. Most prominently SVN was used on the CMS I wrote winter quarter. Now it seems stupid to work on any significant project without some sort of version control and SVN is what everyone is using these days. Dreamhost, my web host, recently installed SVN but I was busy with school and never got around to installing it, thinking it would be difficult to administrate. I finally decided to play with it, bought a book, and have been learning a lot. If things go well, I will be giving some employees at Haverly a demo of SVN and trying to convince them they need to jump on the version control bandwagon. Fun stuff.

ShowCase

After mentioning working on my own project, I can’t forget to mention it. I finally found a Ruby on Rails project that is both interesting, not too large, yet challenging. Well, I don’t know about challenging. Mostly I just want a project I can work on and finish and have to show people. And that is what this project is, a web application for displaying your work. You could say it is a portfolio app. I don’t have anything to show yet, but I’m working on it. Probably the most difficult part of it would be creating a nice layout, but I managed to find a decent theme off OSWD.

Game Development

I can’t remember if I had written on here about a game I wanted to start developing. Well, I started learning some DirectX at the end of winter quarter and did a little at the beginning of spring quarter, but PLC took over my programming life and I stopped. I did buy a book with a couple of tutorial projects and I’m partway through the first one. I haven’t forgotten about this; I really need to get on the ball and start making games. It drives me crazy that I haven’t, but I never end up getting started. Once I finish working on ShowCase I hope I will begin working on this again. I’ll keep you posted.

Guild Wars

Speaking of games, I’ve been playing a few with friends now that I’m back home. Last summer we played Guild Wars and beat it. Guild Wars: Factions came out around the same time this year and we decided to play it again. Unfortunately this means it came out about two weeks before I finished finals and came home, so again, every bought the game before me. That’s ok, I don’t hate you guys for doing that to me TWICE.

Factions is very different from Prophecies, the name that everyone is calling the original. The campaign itself is shorter, by about half I think, and you level much faster. By the time I did the third mission I was level 20, the cap. At first we all thought this was a lot better than prophecies where you don’t usually hit level 20 until you reach the area where you ascend. But as we played I think we began to realize that the plot is pretty stupid. I don’t like it as much as the first one. And without the incentive to level up, we have began losing interest. From what I hear there are a bunch of new PvP options, including a 16v16 Alliance vs Alliance mode. This sounds like a LOT of fun, but you can’t ally with anyone until you’ve beaten the campaign I believe. Also, the campaign is very difficult. The last couple missions, as in the 3rd and 4th, have taken us several attempts to beat. Where has the magic gone? The missions in Factions are much more linear. You can’t get past certain places until you’ve complete your primary quests or beaten the next mission. This means that you can’t jump again and grab the elite skill you want and elite skills seem to be the only reason to complete the campaign I think. Like I said, the plot is boring, the cutscenes are terrible, and there is little reason to care about it.

I still feel that Guild Wars is a great game. I love the variety of skills available to you. Choosing skills from both professions and trying to come up with an effective build is a lot of fun. Doing everything as a party of 8 is great. The interaction between players is good. Factions just doesn’t seem to present well, in my opinion.

Hockey

I’m playing hockey again! Woot! Unfortunately its at an outdoor rink on unfinished cement. The floor is more slippery than… um… (insert imagined slippery object here). I can barely accelerate hard without losing grip and a hockey-stop is out of the question. This is really frustrating because the whole game slows down as people don’t bother to skate a little harder and grab the puck that is behind them. Instead they circle around and let someone else grab it. It is still a lot of fun to play though, even if I was terribly out of shape when I began to play. I’m doing better now after 5 weeks. I scored last game! Playing once a week is not enough though. I won’t say that I had forgotten how much I enjoy the game, but now that I’m playing again I am throughly enjoying myself and wish I could be playing more. There need to be more rinks close by.

Camping

I went hiking and camping with Todd, Lem, and Daniel up at the Punch Bowls last week for two days. It was a lot of fun. It was hot, sunny, there were bugs, and we were all very tired. But we had fun hiking and swiming in the pools. We followed the river all the way up climbing over rocks most of the way, and then climbing UP rocks at the very end. On the way back, we followed the trail the whole way and it took us less than 3 hours instead of the 7 we took going up. Understand that we had a long lunch and took a lot more breaks going up, but it was still impressive. It took us two hours to climb the last stretch going over large rocks and it took us 15 minutes to get back on the trail.

Pandora

Just this last week I began listening to Pandora. My roommate introduced me to it while at school but I never really listened to it. It is a web radio station built on top of the Music Genome Project. Some experts tag songs with certain attributes. When you create a station you pick some songs, or artists, and Pandora tries to pick songs with similar attributes. This is different than other web radio stations that try to pair what other people like to what you have said you like. Pandora shows no preference for more popular bands, it is simply based on what songs sound like. It is really quite excellent and its free to listen to. Supposedly by subscribing you can get rid of advertisements, but I haven’t seen or heard any ads yet. Go check it out.

Conclusion

That’s about all I have to say right now. Todd and Daniel are in South America on a mission trip so its a little lonely here right now. They will be gone for another two and a half weeks. This will give me time to work on my projects though.

P.S. I left my razor in Indiana so I haven’t really shaved since I got back. I think I must look pretty wild, but I keep getting positive comments about my beard. Odd.

I have been depressed for the last few days. While I can’t pinpoint this to any single event, or even a series of events, I believe I may have come across some ideas why.

Saturday was really my first “free” day since the beginning of the quarter. Until then I have had multiple projects going on at all times. So Saturday, Sunday, Monday, Tuesday, and today I have been doing very little work and generally slacking off. However instead of enjoying this time, I have been depressed and have not felt like doing anything.

Sure I’ve played some video games, played some ping pong, hung out with friends and laughed, but life has been fairly unsatisfying these last few days. And I haven’t played video games because I really want to play them; I don’t. I play them because its something to do. Like I said, nothing that has happened to me has been a primary contribution to this. I think the lack of accomplishing anything I care about is the primary reason. I find great satisfaction in accomplishing things and ever since the quarter started, I have been unable to do any of these things. School, while very important, does not give me this satisfaction.

I want to work on my computer game I have begun developing. Unfortunately due to my school work I haven’t had time to work on it since the quarter started. I need to find a job. Working for a computer game company would be ideal, but what can I show them? My computer game I haven’t finished?

So I have been doing too much schoolwork and that has prevented me from doing anything I consider “worthwhile.” It is getting to the point where I feel that I could be accomplishing more by not being in school. What if I dropped my cryptography class? The stress of it being difficult would be gone. I would have four hours a week I am not in class that I could be working on my game as well as the numerous hours working on homework.

So often it seems as though I could be accomplishing a lot more if I didn’t have any classes. I feel as though I am only taking one really worthwhile class right now, PLC. Technical communications is a bogus class where we learn exceedingly stupid stuff that should be common sense. Computer Architecture II would be a useful class if I were ever to work with hardware, which I never will. I hate the material; I don’t understand it; it is boring and wasting my time.

So what do I do? This weekend I will have two papers due, homework for cryptography, and a PLC assignment due. This means I will have little free time between now and Sunday night. After that? I will be too drained from all the work and stress to accomplish anything fun, like working on my game. I will again spend my time doing nothing and feeling depressed because of it.

Mutation Game

February 7th, 2006

In swarm intelligence class today, two guys gave a presentation on a simulation of HIV. They mentioned that the major result from the simulation was that the problem with HIV is not its robustness, but its ability to mutate faster than the body can adapt.

Is there a way to build a game around this idea? Consider two teams competing for resources or survival. One team has great advantages when it comes to changing their play style in such a way to catch the other team by surprise. This other team is fairly good at adapting and once it has adapted, is superior to the other team. So the mutating team must constantly change their strategy and play style in order to stay one step ahead of the other team.

Because I like to give myself a scenario to work with, picture this:

It is several centuries from now and humans have pushed towards the edges of space. The military, Spatial Corps, might of the current government is monolithic and unstoppable. There are few rebellions, despite the lack of peace. Recently humans have come into contact with their first intelligent humanoid alien. Due to some unfortunate misunderstandings, the Spatial Core opened fire on these aliens and decimated them. The few remaining have grouped and are waging war against the humans using guerilla tactics. These aliens, while they have advanced technology, cannot match the brute force of the Corps. Their advantage is their ability to change forms and tactics on the fly. This has caused problems with the Spatial Core who is currently attempting to eradicate the aliens.

Now that I have set up a mildly interesting scenario, let’s look at some details. The Spatial Core is a serious army and their equipment reflects that. Weapons include close range shotgun/machine guns, medium to long distance automatic rifles, rocket launchers, grenade launchers. The aliens are capable of morphing although this requires some resources and time. Their primary form is humanoid and they have a slow firing, but fairly powerful projectile weapon. They are faster than the Corps soldiers but slightly weaker. Their secondary form looks like a dog and they are quick and agile but fairly weak. They can also morph into a larger, slower, and heavier “tank” soldier with lots of armor and a fairly powerful short range weapon. Despite this beast’s speed, he can still run down a squad of Corps soldiers.

So this is fun, but what does it mean? This has set up a simple rock-paper-scissors scenario. The humanoid form of the alien is good at hit and run tactics. Their dog-form is good against explosive weaponry like rocket launchers and grenades because they are good at dodging, however against shotguns and rifles they do poorly. The large beast is good against machine guns due to his armor, but poor against rockets.

This alone may create an interesting set of counters, but alone it does not make for good game play. I mentioned that the aliens require resources to morph. They must travel the map and find resource nodes, gather resources (by standing there maybe) before they can morph. This gives the Spatial Core a reason to defend the resource locations. Also different alien forms are better for assaulting and defending. It should be clear that the tactics used for each type of alien are completely different.

So the alien team must constantly switch between mutations in order to stay ahead of the Corps. This requires that the entire team synchronizes their changes so that they don’t end up playing different forms at the same time.

I may not have convinced you of anything, but I hope that you get a glimpse of how a game could revolve around mutation and adaptation. I will do some more thinking and will hopefully be struck by brilliance.

7 Goals

January 26th, 2006

... I have for my future.

Today I was thinking about things I want to do in the future. These are perhaps things I cannot accomplish here at school due to the location, the circumstance, or the time. This is a short list of a few of those things.

Read the rest of this entry