Wednesday, March 30, 2011

More about the 3ds

So I recently had someone ask me how the 3D images work on my 3ds. I explained something about the little slots in the screen that direct different pixels to each of your eyes to make things appear to have depth to them. Today I found an interesting article with microscope pictures of the 3ds screen: The 3DS Under a Microscope - Nukezilla. It pretty interesting to me that the bars dividing the slots are that big (in relation to the size of the pixels).

Another thing I noticed about the 3ds is that the aliasing of the 3D shapes seems to be even more exaggerated when the 3D is on. I think that comes from the way that the image is rendered twice from slightly different angles, so there are 2 chances for jaggies on the edges. Where a normal rasterized image only has the chance for aliasing once, the 3ds has aliasing for both eyes, and, in particular, the jaggies don't line up and cause an extra level of visual confusion that isn't there for movie images (because of very aggressive anti-aliasing for computer generated images).

Monday, March 28, 2011

First impressions of the 3ds

So I went and got a 3ds today from Toys R Us. Who knew they were still in business? Anyway, I spent a few minutes playing around with it and I though I could share some of my impressions with you.

The first thing I noticed when I turned it on was that the 3d screen was almost too much, but that was probably because I was moving at the time. After I sat down and adjusted the 3d slider, I felt much better about my 3d experience. For it to work right, you have to hold it kinda close to your face, which may be part of why they recommend taking a break every 30 minutes from the 3d experience.

As far as software goes, the first game I played on it is built in and called Face Raiders. What you do is take a picture of your face first, then you proceed to fire balls to knock floating heads out of the sky. And by that I mean, you turn the device around the world, and it augments reality to show flying heads attacking you. I felt kinda awkward doing this in a public place as I had to get up off my chair to defeat the boss that was behind me. The game worked very well and was very impressive I thought. Augmented reality gaming is probably at its best (for now) in Face Raiders.

Then I tried out AR Games after returning to my car to get the AR cards that I hadn't realized I'd need. AR Games is another set of games that augments reality, but it all based around the card you place on a flat surface. Similar to Face Raiders, you shoot balls at targets, but this time they are objects that seem to spawn from the card that you placed down. It was a really fun game, but again, I felt awkward performing in front of a group of people when I was the only one that could actually see the dragon emerging from the card and trying to scratch my face off. I eventually won and moved on to make myself a Mii.

Similar to the software on the Wii, the 3ds allows you to customize your Miis however you wish, but with a few additional parts. I however chose the other option, to have the Mii be based on a picture. I moved myself to a good location, and took the picture of myself. The generated Mii was acceptable, and as I was told, was a pretty good representation of myself. All in all I've had fun with my 3ds so far and I would recommend it to anyone who has $250 that they don't have anything else to do with.

Sunday, March 27, 2011

Vs. AI is fun

I just wanted to show off how fun it is to play vs. AI in League of Legends with this picture. The character selection screen had no discussion.

Random Steam Game

I just found a great website to help me when I'm in an indecisive mood but want to play something on Steam. If you have steam and are ever faced with this situation, I recommend checking it out. I just tried it out and got Alien Swarm.

Thursday, March 24, 2011

Parkour Parkour!

Tharesan spent a long time building this city environment in which he could do parkour. I helped a little bit and Lilei also helped with decorating the interiors of the apartments. Here's a short video of Tharesan doing a quick lap around the city.

Sunday, March 20, 2011

Minecraft's Appeal

I've been playing a lot of Minecraft lately and there are reasons for it. A big part of why I play video games is for the social interaction. While the social tools in Minecraft aren't nearly as good as they could be, playing on a server is very much a social activity. I made a server so that I can hang out and play with all my friends that are interested in exploring, gathering materials, and building awesome stuff. And before you ask, no you cannot have access to my server unless you actually know me.

I have heard some complaints that Minecraft has bad graphics and just doesn't have enough of a point to make it an interesting game. Those complaints come from a lack of understanding of what Minecraft is. You, as the player, can come up with the point of the game for yourself, or you can depend on the other players if you have a multiplayer server to inspire your actions. And if you think about it, the collection of parts and construction of objects is very much like playing with Legos. The blocks in Minecraft are restricted to cubes (and occasionally half cubes), which is slightly different than the Lego restrictions, but similar enough to the basic building blocks from a set of Legos. Of course there are custom blocks made for specific types of building projects, such as light sabers for Lego men to hold in the Star Wars sets. I argue that those pieces are similar to a player holding a sword.

It is also for this reason that I do not want to install the iConomy server mod to my minecraft server. I think that adding a currency to the game is perhaps a little bit of overkill. There are already tons of resources to collect and use for various things. Depending which projects you are working on, you might want to trade the cobblestone you've collected to someone else that has surplus iron. On my server, however, the barter system has almost entirely been done away with in favor of community drive building projects. A couple people get an idea, and everyone that hears about it wants to contribute. It's really a good feeling to have a game that is almost entirely cooperative to contrast with all of the other popular games that tend to thrive on being competitive.

Saturday, March 19, 2011

Tutorial video for Spawner Trap

Thanks to Salamislacks and his incredible research and engineering efforts we have this wonderful monster spawner building with a trap floor to kill the monsters. We get lots of monster drops from it. Here's a video explaining how the trap floor works.

Friday, March 18, 2011

Minecraft Lava Pyramid

We just made a lava pyramid on our minecraft server live on the stream. Here is the recording of that event.

What I think makes League of Legends good. Part 2

Last time I covered some of the design decisions that went into League of Legends and why I think those decisions were good ones. Today I continue my analysis with the following topics.

Learning Curve:

The first thing I noticed when I played League of Legends was how easy it was to get into the game. I was a new player to the genre, although I had played RTS games as well as games like Diablo 2, so the control scheme was familiar. The game got me right into the action after a short tutorial (which I will talk about next). I was surprised that I was able to just play the game without really having a clue what I was doing or what any of the terminology meant. For instance, there is a list of recommended items for each character which isn't terrible. If a new player just sticks to that list, they won't be at a huge disadvantage, to many of the other players with more experience.

Speaking of experience, League of Legends uses it as a representation of how much a player has played the game. That means that as you play more, they advance your experience level. With that level advancement come additional gameplay mechanics, such as more summoner spells, additional rune slots, and more masteries to pick from. A beginner has little to worry about besides picking his or her character, while the more experienced user can spend the time customizing his masteries and selecting a rune page to match. There is however a side effect of this system, and that is that more experienced players have a noticeable advantage by having these additional features unlocked.

Match Making:

The way League of Legends gets around the experience advantage is by using their matchmaking system. When a new player decides to play a game, the system attempts to match that player with other new players, thereby keeping the overall balance of runes and masteries even between the teams. Even when a new player queues with a more experienced friend, the matchmaking system does its best to find players that will keep the teams balanced. The result is a game that is generally more evenly matched and enjoyable for everyone involved.

Tutorials:

Even before a player begins their first game in League of Legends, the client suggests that the player go through a short tutorial. This tutorial is well designed and teaches the player some of the basics of the game on a simple map with only one lane and scripted events that walk the player through the required steps to win a match. A voice guides the player and provides positive reinforcement that is very welcoming, and encouraging. After the tutorial, the player is offered a choice to play a practice game against some bots. This practice game provides quests and optional advice that teaches the new player a lot of the terminology that is regularly used in the game. The result is a player that is at least partly familiar with the things he or she will hear from other players in normal games.

Map Design:

I'm going to focus on Summoner's Rift, the standard 5v5 map that I spend most of my time on in League of Legends, for this discussion, but I believe the general design applies to all of the maps that Riot has made for their game. In warcraft 3 one of the main resources that players would collect is lumber. This meant that trees were easy to add to the map as obstacles for DotA, and that it was easy to add ways for those trees to be destroyed for gameplay purposes. The main downside of this is that the map ends up with a lot of small features that allow a short cut to happen that aren't readily apparent to the new player. League of Legends takes the approach of making the impassable terrain immediately discernable to even an inexperienced player. There are still some "short cuts" that cater to the players looking for a bit more of depth in game play, but the spell that gives all characters the ability to jump over certain spots in the terrain isn't available until level 12, after the player has time to complete quite a few games.

Persistant Rewards:

All most of the hero-based games like League of Legends are role playing games (RPGs), and involve the development of skills and abilities for the hero. League of Legends has an extra level of character progression that extends beyond the progression of an individual battle. The summoner is the term for the persistant character who summons the champions to battle each time, and has the ability to prepare two spells for use in assisting the hero with his or her combat against the enemy. The summoner is the one that gains experience and levels. The summoner is able to unlock new champions and skins permanently. The summoner gathers runes into run pages that heros can use to improve their fighting abilities.

The idea of RPG-like persistant character progression is not unique to League of Legends and has been a good reason why games such as Call of Duty and World of Warcraft have a tendency to really draw in their customers to keep playing. In all honesty, it could be seen as a negative feature for a game to use this technique to draw in players for more and more time as they accumulate the various rewards available to them in the game. I think there is still a good amount of enjoyment that a player can get from the sense of accomplishment that these little checkpoints provide.

Thursday, March 17, 2011

What does Spleef mean?

Spleefing is a game inside minecraft where you try to dig out the ground underneath your opponent to make him or her fall. When you do this in a controlled environment then no one gets hurt and it can turn out to be a lot of fun. Here's a video I recorded last night of Azmyth and Tharesan spleefing in the spleef arena I built.



Wednesday, March 16, 2011

What I think makes League of Legends good. Part 1

Currently, League of Legends (LoL) is one of the games I play the most. It is a game in a category of games that they call MOBA and I like to call Hero Arena (HA) games. Basically, each game of this type has a set of heros (or champions) that are placed on teams. Each hero has some abilities that can typically be improved as a match progresses and the objective can be a few different things. The most popular objective, and the one used in LoL, is the destruction of the enemy base after the progressive destruction of a series of defensive structures. In a standard 5 vs. 5 game of LoL, there are 3 "lanes" each with 3 turrets defending an inhibitor (a building that prevents the enemy from spawning "super minions") and then 2 more turrets defending the main base building (called a nexus). Periodically, minions are spawned that follow a set path down the lanes towards the enemy base and it is the job of the heros (controlled by players) to influence the battle of the minions to cause the destruction of the enemy defensive structures.

There are a few things that attract me to the game including the accessibility of the game, the transparency of the developer, the colorful, stylized graphics, and the enjoyable voice acting. Today I want to write about the things I like about League of Legends in terms of game design, and particularly what is good about their decisions and how they generally make the game easier to get into for the new player. I'm going to do my best to focus on the decisions they made in designing League of Legends, and try my best to avoid talking too much about other games competing with League of Legends in the same genre. To some extent this is unavoidable because they are all based on DotA and some of the decisions are in direct contrast to the decisions their competitors have made.

Denying:

While on the subject of differences from the competition it is important to bring up the concept of denying. To discuss what it means to deny, we must first look at DotA, a game built on the Warcraft 3 engine. (Disclaimer: I have barely played any games of DotA because I didn't find it fun so I could be way off in my description here). In Warcraft 3, a Real-time Strategy Game, the player controls a group of units at a time and gives those units commands. Warcraft 3 made heavy use of heros in its basic gameplay and they functioned similarly to heros in LoL, except that the player also had the control of standard army units, and worker units. All units could be given the command to attack specific targets. As a convenience for when your own units or buildings got in the way, it was possible to order your units to destroy your own allied units. There was rarely a benefit to this practice, but it was allowed for the rare circumstances when pathing wouldn't work, or when you needed food that was being used by a weak unit to train a more powerful unit.

In Dota, a map was set up just like I described for League of Legends. The default behavior built in to Warcraft 3 was used for hero experience and gold, and that is that the hero that lands the killing blow on a unit gets gold for that kill, and every unit that dies in range of the hero grants some amount of experience to the hero, increasing its level and power. Gold is a powerful resource because it is what is required to purchase items for your hero that greatly increase his or her effectiveness in battle. It was quickly discovered that a player could attack the minions on his own side when they were almost dead to prevent the enemy heros from being able to get the gold from those kills. Additionally, gold is granted for killing towers, and once again, you could kill your own tower to prevent the enemy from getting gold for the kill.

Riot Games (the makers of LoL) decided that denying should not be a part of League of Legends. First they say that killing your own units just feels weird, and I have to agree with them on that. Second, I think that it is non-intuitive to a new player that he should kill his own units. As a new player coming to the game, you see the two waring factions locked in battle and so in order to help your team gain an advantage you kill your own troops? That's just silly. Riot made the decision to not allow the player to kill his own units, and instead increase the importance of harassing early in the game.

Harassing:

Early in the game, heros tend to distribute themselves to a couple of different lanes to gather gold from the enemy minions (as well as some from the neutral minions in the jungle, but I'll get to the jungle another time). In DotA, resources for using abilities were relatively scares, especially early in the game. In contrast, League of Legends is designed with slightly higher base resources, and a regeneration of resources that is high enough to be useful. Mana still can run out, but players are encouraged to attempt to deal damage to weaken their enemies to the point that they can either force them to retreat to heal, or maybe even kill their enemies, forcing them to wait a short time to respawn. The higher focus on harassing makes the game feel more like a battle and less like a game to see who can kill minions better than their enemy.

Punishment vs. Rewards:

This is perhaps the most important thing that I think Riot has done in their design of LoL. The entire design of the game seems to be of the mentality that players should be rewarded for playing the game and punishment should be kept to a minimum. One prime example can be seen in the way League of Legends deals with killed heros. When a hero kills another hero, the killing hero gains a good amount of gold and any assisting heros on the same team gain a smaller amount of gold as a reward for doing something good. The hero that has died is taken out of the fight for a short time, but has no equipment, experience or gold taken from him. Other games punish players for death much more harshly, by removing the things they have obtained. Harsh punishments can be depressing to a player, and even more so to a player that is new and has to deal with deaths perhaps a little more frequently than the more experienced players.

Free to Play:

League of Legends is a "free" game. That means that the game is free for anyone to download, install and play as much as they want, with one catch. That is that it is supported by micro-transactions. Each week, Riot sets 10 of the heros in the game to be free for anyone to use. This set of 10 heros changes from week to week. Each hero can be unlocked by playing the game for a certain amount of time, or by paying a small fee to the company to buy permanent access to a particular hero. Also, alternate looks for heros can be unlocked by similar small payments of approximately $4-$14. I'll probably talk more about this topic in a future post, but the important part for my current discussion is that it is easy for people to play the game since there is no cost upfront, which means that you can play with friends whenever you want. For me, gaming is much more fun when it becomes a social experience.

This post is getting kind of long so I'm going to stop here for now. Topics for next time: Persistant Rewards, Tutorials, Map Design and Learning Curve.

Monday, March 14, 2011

First Stream

I figured it would be nice to show some results of my first attempt at streaming. I just uploaded the video of the game we won in League of Legends to youtube, so here it is:

Slime Time!


So I was wandering around my server today and I found something interesting in a door. There were a bunch of slimes hanging out so I thought I'd take some screenshots. Here are the pictures for you to experience some of the fun I had with my new friends.




To comment or not to comment

When I learned to program in college, the instructor taught us that comments are a very important part of writing code. I for one believe this to be true. However, today I read a blog post that claims that commenting should be a lower priority concern for programmers. Riyad Mammadov said, "If the choice is between a well-designed program without comments and a thoroughly commented but poorly architected one, I will choose the former any day of the week." I can get on board with him on this to some extent. I do believe that well-designed code is a very important aspect of programming. Things should be modular and easy to extend, and writing unit tests can be a very good way of making sure things are working write. However, I believe that even with the most verbose programming possible, there are times where you just can't figure out what a single line of code is actually doing, and why it's written the way it is.

Obviously anyone would prefer a well-designed program, however, I think in most cases it is not impossible to have both good design, and good comments in the code. Maybe it's just the academic in me speaking, but I believe technical writing skills are very important to the successfulness of a programmer in contributing to a team working on a project. This is even more true when the project is something like a video game, where the team is a more diverse group than just a bunch of programmers. Even immigrants that might know programming languages better than English should make their best effort to at least be able to communicate efficiently to help the team be successful.

Sunday, March 13, 2011

Setting Up Game Streaming

For a while I've wanted to figure out how to stream the games I play so that other people could watch if they wanted. I know I enjoy watching other people play games from time to time, so I thought it could be fun to have other people watch me. I've tried to get stuff set up for streaming before, but the sound didn't work right, or the video would end up choppy, or something would just go wrong. But yesterday, I was successful.

The key for me was a program called XSplit. I've watched a lot of other people stream League of Legends on own3d.tv and so I decided to make a channel there. They suggest using XSplit so I downloaded it and installed it. After setting up XSplit, I clicked broadcast to my own3d channel, and nothing showed up. It seemed like I was broadcasting, but even my friends couldn't see anything on my channel for some reason. The only time video would show up is when I'd turn off the broadcast. A brief amount of video would get through right at the end of the broadcast. I still haven't figured out why XSplit didn't work for me with own3d (I might need to open ports or something).

So I decided to try out my ustream.tv account that I'd already set up in my previous attempt at streaming since XSplit has an option to use a ustream account. Magically, it just worked. I did spend some time playing around with the settings in XSplit to get the sound to work right, but I was able to broadcast 2 hours of minecraft just fine. Then I decided to play a couple games of League of Legends, and they also worked just fine. One thing I'd noticed other streamers using to get LoL to work in windowed fullscreen mode, was a program to shift the window slightly. This thread on the LoL forums tells you where to get the program and how to set it up.

I also tried streaming a Starcraft 2 game, but the stream was kinda choppy, probably because I had the graphics a little too high. In the end, I'm glad to have streaming set up on my computer and I hope my experience with setting it up can help other people in the future