- bash: gcc: command not found

February 28th, 2010 shyam No comments

I was recently trying to use gcc from Terminal on my Mac. My path was set up properly, and I had used gcc before without any problems.

When I upgraded to Snow Leopard, apparently the upgraded developer tools were not installed. To solve the problem, I had to run Xcode.mpkg in the “Optional Installs” folder on the Snow Leopard installation cd.

Thanks to the following link for providing the solution: “Snow Leopards Ate My C Compiler”.

Categories: General Tags:

EverQuest – 10 Years Later

October 1st, 2009 shyam No comments

I stumbled upon an interesting journal at GameStudies.org. The current issue is titled Special Issue – EQ: 10 Years Later. (EQ aka EverQuest).

The article entitled Towards a Critical Aesthetic of Virtual-World Geographies, focuses on the first few years of EverQuest, when it was still a game very much oriented towards the hard-core player. It was an extremely dangerous world, with harsh and unforgiving penalties (corpse runs!). Without many of the forms of instant travel that appeared later in the development of EverQuest, the continuity and spatial layout of the world was preserved. It took a long time to get from point A to point B. Because of this, there were secluded areas that were hard to get to, and there was a real sense of a large, dynamic, and truly epic world. This brought rise to trade and economic systems that closely mimicked the real world.

In EverQuest and other online worlds, the game designer and the player indirectly work together to shape the geography of these virtual playgrounds. Geography, as described by Wikipedia, is split into two main branches: Physical Geography and Human Geography. In the case of EverQuest, the designers physically create the world, and are therefore responsible for the physical geography (walls, terrain, building placement, etc). The players are the inhabits of the world, and are responsible for the human geography (social, cultural, and economic aspects).

Through the course of the article’s analysis, I came to understand why players often established their own trading outposts in areas such as the East Commonlands Tunnel, Greater Faydark, and North Freeport. Although these locations may be very different from where the designers intended them to occur, they have a root cause that ties back to the original game design.

East Commonlands and Greater Faydark are both easily accessible via druid and wizard low level teleport spells. North Freeport is a little farther from it’s closest teleport location (West Commonlands), but it has a bank, and is easily accessible by both good and evil races (via the sewer system).

Although I am only pointing out a very specific example (ad-hoc market creation and trading in EverQuest), it sheds light on much broader concepts of migration and human interaction in the real world.

There is never any explicit consent or agreement from the players as to where to create these ‘hubs’ of interaction. Creation is driven unknowingly by the player and the player’s necessity. This creation process is guided (also sometimes unknowingly) by the rules that the game designer has created, and which are governing the world. These ingredients serve to create a truly living and dynamic virtual world.

* * * * *

I will end, in tribute, with an extremely nostalgic video – the original EverQuest intro video.

Categories: General Tags: ,

FreeMind

September 30th, 2009 shyam No comments

I learned of a new program today, called FreeMind. FreeMind is a cross-platform, open source, mind-mapping application. It looks like a great tool for both brainstorming and conceptually solidifying ideas. It also can be used as a convincing presentation tool, visually showing the flow of data and information to the audience.

Categories: General Tags: ,

Artemis Chronicle Tools

August 15th, 2009 shyam No comments

During the first semester of working on NitroX and Artemis Chronicle, our design and content pipeline was very slow. Simple things like creating a level and placing a box were arduous tasks. Placing an item involved flying the camera around the level, writing down it’s rough coordinates, hard coding the coordinates, and then tweak these values until the box is in the desired position. (Thankfully, we were using C# which pretty much eliminated any compile time. Doing this in C++ would have been impossible).

This created a situation where we were unable to prototype levels quickly, and time that could be better used somewhere else was being wasted.

Because of this, I devoted the first few weeks of the second semester to full-time tool development. Two of the more useful tools created are described below. These tools, once created, were continuously used and refined throughout the entire life of the project.

Level Editor:

Artemis Chronicle and the NitroX engine have a completely integrated level editor. The editor allows 3D navigation through the world (using Maya camera controls), object placement (translation, rotation, scale), object property exposure (including physics volumes), trigger volumes (used for scripted events), and interactive camera sequencing (allows us to create cut-scenes and cinematics in a point-and-click fashion instead of in code).

The editor runs on Windows and is written in C#, allowing for close integration into the XNA content pipeline. The editor data is serialized out to an XML format (which is later compressed for application deployment), sent through the content pipeline, and imported directly into the NitroX engine for use on both Windows and Xbox 360.

Mesh Viewer:

The Mesh Viewer is a tool that lets our artists quickly preview their work before sending it off to be integrated into the latest build of the game. As anyone who’s used the FBX exporter knows, exporting from Maya does not always go smoothly, so this tool allows the artist to catch any errors early, thus saving time for the entire team.

Animations can be chained together to create sequences, and then previewed in a real-time manner. Playback speed, blending parameters, and looping can also be adjusted via the user interface.

Categories: Code, General Tags: , , , ,

Ray-Sphere Intersection

August 6th, 2009 shyam No comments

A ray, \mathbf{r}(t), where \mathbf{o} is the origin of the ray, \mathbf{d} is the direction of the ray, and t is the distance along the ray:

\mathbf{r}(t) = \mathbf{o} + \mathbf{d} t

Equation of a sphere:

x^2 + y^2 + z^2 = \mathbf{p} \cdot \mathbf{p} = r^2

A point on the surface of the sphere, \mathbf{p}, and the center of the sphere, \mathbf{p_c}:

(\mathbf{p - p_c}) \cdot (\mathbf{p - p_c}) - r^2 = 0

Plug in the ray and solve for t:

(\mathbf{r}(t) - \mathbf{p_c}) \cdot (\mathbf{r}(t) - \mathbf{p_c}) - r^2 = 0

(t \mathbf{d} + \mathbf{o - p_c}) \cdot (t \mathbf{d} + \mathbf{o - p_c}) - r^2 = 0

\mathbf{d} \cdot \mathbf{d} t^2 + \mathbf{d} \cdot (\mathbf{o - p_c})t + \mathbf{d} \cdot (\mathbf{o - p_c})t + (\mathbf{o - p_c}) \cdot (\mathbf{o - p_c}) - r^2 = 0

\mathbf{d} \cdot \mathbf{d} t^2 + 2\mathbf{d} \cdot (\mathbf{o - p_c})t + (\mathbf{o - p_c}) \cdot (\mathbf{o - p_c}) - r^2 = 0

We now have a quadratic equation of the form At^2 + Bt + C = 0, where:

A = \mathbf{d \cdot d}

B = 2\mathbf{d \cdot (o - p_c)}

C = \mathbf{(o - p_c) \cdot (o - p_c)} - r^2

This can be plugged into the quadratic formula:

\frac{{ - B \pm \sqrt {B^2  - 4AC} }} {{2A}}

  • If the determinant, B^2 - 4AC, is negative, there exist no real roots and therefore there is no intersection.
  • If the determinant is 0, there is exactly one intersection; the ray is tangent to the sphere at this single point.
  • If the determinant is positive, there are two intersections. The ray penetrates the sphere: one point in, one point out.
  • If t < 0, the intersection is 'behind' the ray starting point.
Categories: General Tags: ,

Clear Firefox Download History

August 3rd, 2009 shyam No comments

I like to have Firefox automatically clear my download history whenever a download finishes. It seems the location for this changed slightly in FF 3.0.

  1. Go to: Tools -> Options
  2. Click on the Privacy Tab
  3. From the pull-down menu (“Firefox will:”), selected: Use custom settings for history
  4. Uncheck: Remember Download History

FirefoxDownloadHistory

Categories: General Tags: ,

Some iPhone Grievances

August 1st, 2009 shyam No comments

Overall, the iPhone is the best existing device for my needs, but of course it has it’s own faults. Below are a couple of the most irritating things (for me) about the iPhone. I have other unlisted issues with the device, but most of them are common complaints that you’ve probably read about somewhere else already.

  • Screen Rotation Toggle – When trying to read something on my iPhone while lying at an odd angle in bed, it would be great to be able to disable the screen rotation. I wish there was a global option to disable this somewhere.
  • Touch Screen Toggle – One case is when I am trying to read a long Wikipedia entry, or a long article in Safari. When scrolling [touch + drag] through a long page in Safari, such as a long Wikipedia entry, it is too easy to accidentally click on a link [touch]. This re-directs you to another page, or even opens a new browser window. This could easily be fixed in Safari by adding another button to the bottom (near the bookmarks) to toggle the tap gesture. It still doesn’t fix the problem on an application-wide level (I have the same issue when reading from the AP News app, or even Mail).
Categories: General Tags: , ,

Kojima’s GDC 09 Keynote

April 1st, 2009 shyam No comments
Categories: General Tags: , ,

Antec 900 – front audio jack issue

January 3rd, 2009 shyam 1 comment

I recently just built a new PC using the Antec 900 gaming case, and a Gigabyte EP45-UD3P motherboard. Audio was configured to utilize HD audio (as opposed to AC 97). After the build was complete, I noticed that the front audio jack on the case was not working. The audio jack on the back of the case works fine. This seems to be a common issue with this case.

Here are the steps I took to get this working properly:

  • Open the Realtek HD Audio Manager, which was probably installed at the same time the motherboard drivers were installed.
  • Navigate to the Audio I/O tab.
  • Click the “Connector Settings” button (a small circular button with a wrench icon).
  • Put a check mark next to the option “Disable front panel jack detection”.

Other than this small issue, the case was a breeze to work with.

Here are some pictures from the building process:

Categories: General Tags: , ,

Permission denied to get property Element.childNodes

September 18th, 2008 shyam No comments

I was recently doing a small JavaScript/XML project. Everything was working fine locally, but when I tried to test it out on my server, I got a “Permission denied to get property Element.childNodes” error in Firefox. Internet Explorer had no problems.

Turns out I had the Firebug add-on installed in Firefox. I had to disable this, and everything worked.

You will also have a problem on the w3schools site, if you try to use their “Tryit Editor” to view any code. You will need to disable the add-on in order to get the output of the right-side box to display correctly.