Categories
General

Get Health Insurance

Over a year ago, I had asked on the Dexterity forums, now the Indie Gamer forums, about health insurance. I was planning on researching the topic, but getting feedback from people who actually deal with the issue would be valuable. What coverage should I expect to need? How much should I expect to pay? What type should I get? I got a number of responses, and someone suggested I go to eHealth Insurance. It’s a great site, and I found my current insurance through it.

Some of the comments were about not getting insurance at all. The thinking was that if I was young, fairly healthy, and almost never go to the doctor’s office, the cost of health insurance would be too much. Others argued that emergencies can cost a lot more, and having to pay a few thousand dollars is preferrable to paying $10,000.

I haven’t had to worry about medical expenses before, but shortly after I was approved for my current insurance plan, I started getting a pain under my jaw. I didn’t know if it was a lymph node or salivary gland, but I did what I always did: drink plenty of water and try to get a good night’s sleep. It didn’t get better, and by the third day the pain was on my right side as well.

I made an appointment with my doctor, went through some hassle to get my insurance ID number as I had not received my insurance cards yet, and discovered I had an infection of some sort involving my tonsils. The doctor prescribed some medicine, and I only had to pay $30 for the visit.

The drug store didn’t take so kindly to the lack of insurance cards and so I had to pay full price. A small bottle of generic brand medicine cost me almost $90. Ouch! It’s a one-time purchase, and so I don’t have to worry about it much afterwards, but I can’t begin to comprehend the costs for people who need regular refills on their prescriptions and don’t have insurance.

If you are contemplating the benefits of health insurance or think that it costs too much with little benefit, I would strongly urge you to reconsider. I’m paying about $65 per month. $780 per year might sound like a lot of money, and people with families can expect to pay a bit less than that amount per month, but it is definitely worth it. Best case scenario is I pay almost $800. Worst-case: $5,000. Still a lot of money, but it is definitely a lot better than having to pay the full cost of emergency rooms, surgery, or doctor visits. Even the healthy people can get into car accidents.

Categories
General

The Reading Habit

In January I started to keep track of the books that I read. I have been keeping a simple text file with the books I am currently reading and a list of books that I have finished reading. I even started to track the number of weeks that have gone by and also how many books I would have to read to keep on track for reading a book per week.

I am placing a few new links at the top of my blog. One will be the general explanation of my book tracking, and the other will be the current year’s list of books. Eventually the former will also act as my list of archives as it will link to former years.

I started reading more often last year, but it was only this year that I started to keep track of it. Previously I would read only if something very interesting came along, such as the Harry Potter books or The Lord of the Rings. The last time I read on my own regularly was probably grade school. In just one short year I know that I am much better for reading as often as I now do.

Categories
Game Development

Oracle’s Eye Development: The Room 2

Last night’s Oracle’s Eye programming session was still productive, although not as much as I would have liked. I last had a Room that would get created, and the Player would be able to walk over it.

I wanted the Player and the Walls to be on the same hiearchical level, and the Floors should be underneath. That way, Floors can be added to Kyra‘s KrImageTree as much as I want without the Player getting covered.

I already knew that I could setup the Tree by creating KrImNodes to act as the root of subtrees. Normally if you just add nodes to the tree, the later nodes will cover the earlier ones. I could instead add nodes to the child nodes instead to control the hiearchy. For instance, I could create a background and a foreground by adding background and foreground KrImNodes:

KrImNode* background = new KrImNode;
KrImNode* foreground = new KrImNode;
engine_->Tree()->AddNode( 0, background );
engine_->Tree()->AddNode( 0, foreground );

AddNode() takes as arguments the parent node and the node you want to add. In the above example, I am adding two new nodes to the root node. Now I can put as many items in the background as I want, and I won’t have to worry about covering up anything in the foreground tree. I already used this technique before with my Game in a Day in June.

What I learned was that I could also name a node. Kyra doesn’t care about the name, but I found that I could name a node and than search for a node with that name.

KrImNode* background = new KrImNode;
KrImNode* foreground = new KrImNode;
background->SetNodeName( "background" );
foreground->SetNodeName( "foreground" );
engine_->Tree()->AddNode( 0, background );
engine_->Tree()->AddNode( 0, foreground );

Now if another section of my code doesn’t know the specific pointers to the nodes in question, I can still do a search and get the information I need. For instance, in my GameWorldFactory’s createRoom() function:

engine_->Tree()->AddNode(
engine_->Tree()->FindNodeByName( "background" ),
floor->getSprite()
);

The result is that the Player can walk over the FloorTiles and gets covered by the WallTiles if the Player sprite was added to the foreground before the Room’s Tiles were.

The cool thing is that the separation of the Tiles into the hierarchy also makes it a lot easier to do collision detection. My previous code to move the player:

void GameWorld::moveY( const double distance )
{
player_->moveY( distance );
}

My current code to move the player:

void GameWorld::moveY( const double distance )
{
engine_->Tree()->Walk();
//! Check if moving Player sprite would intersect a wall.
//! If so, do not move the Player.
player_->moveY( distance );
if ( engine_->Tree()->CheckSiblingCollision (
player_->getSprite(),
&spritesHit,
0
) )
{
//! Reverse direction to restore position.
player_->moveY( -distance );
}
}

Since the Player’s sprite and the WallTiles’ sprites are siblings, and the FloorTiles’ sprites aren’t, I can simply check for collision with the siblings. CheckSiblingCollision() returns true if there was a collision, and so what I do is move the Player back the same distance, which should place it where it was before the move.

Unfortunately, it doesn’t quite seem to work. The Player does obey the WallTiles, but it then gets stuck. I think the problem is the double precision used for the distance. The sprite makes use of integers to move, and so I am probably losing precision. When I move the player back, it might be just short of where it should be.

Before this week, I was looking at a single Tile and a Player that moved around it. Now I have an actual Room and simple, although flawed, collision detection to keep the Player in the Room.

I’m also wondering if PlayState should still own the Kyra engine. I think that maybe GameWorld should own it instead since it makes use of it more, but for now I at least know that the project is working. I can always optimize later, and in the meantime I am making steady progress.

Categories
Game Development Personal Development

Oracle’s Eye Development: The Room

I believe I already mentioned how unproductive it is when I try to design the code to Oracle’s Eye. When I was last working on the project, I was able to move some functionality from one class to another. It basically cleaned up my code and made it easier to work on additional functionality.

Still, it didn’t really seem like a lot of progress. I want to make it possible to load a complete Room. When I started this most recent programming session, I had hardcoded some Tiles and had the Player moving about. They didn’t interact, which was fine. I’ll work on that functionality later.

In the last few weeks, I found that I was spinning my wheels trying to figure out which class should own what objects. At one point, I realized that I don’t have anywhere near the experience required to make the decision about how the game hierarchy should be designed. As much as I didn’t want to do so, I think hacking out a solution would be better than not implementing one at all. Once I have something, I can always fix it or refactor it. Nothing has to be permanent, and I don’t need to worry about destroying my progress so far because Subversion has all of my changes. So, I dove in.

I actually decided to create a GameWorldFactory class. I’m not terribly familiar with design patterns, but I wanted a class that would be responsible for creating objects of different types and make them ready-to-use. Well, to do so I figured that I would need the GameWorldFactory to know about the current Kyra Engine. PlayState currently owns the instance of it in a private pointer called engine_, and I decided that I would just have the GameWorldFactory constructor take the engine pointer as an argument. Maybe later I’ll decide that the GameWorld should own the KrEngine, but for now, I just want to get something accomplished. I don’t know enough at this point in time whether it results in a bad design. I have a feeling it is wrong and that there is a better way, but I can fix it later.

It wasn’t that hard to create the factory. The code to create the Player wasn’t too different from what I already had in PlayState. Since I didn’t really have much in the way of a Room, I had to do a bit more work, but again it was fairly simple to implement.

In the end, I managed to accomplish my goal for the evening and make a Room. GameWorldFactory hardcodes the default 10 x 4 Room, but I also plan to make a createRoom() that takes a file as an argument. Naturally it would be used to load levels of some sort. Perhaps I’ll also make one take a vector as an argument so that levels can be loaded from memory instead of from the hard drive. I’ll deal with that issue when I need to do so.

Here’s a scaled down image of the stick figure Player in a portion of the Room.

In reality, the Player is on top of the Tile sprites, and they currently know nothing about each other. I’ll work on putting the Tiles and Player in the right hierarchy so it is easier to do hit detection. For instance, the game should keep the Player from walking outside of the Room by making sure that the Player can’t walk through Walls.

Now for admitting something: I came home not wanting to work on this project even though I dedicated the evening to doing so. I was really tempted to play a game or watch television. I don’t know if it just seemed overwhelming to start or if it was just that I didn’t anticipate it to be enjoyable. Something was nagging at me not to work on Oracle’s Eye, but I decided not to listen to it.

I told myself that if I could just start and work on it for an hour, I’ll give myself permission to play Empire Earth or do whatever else I may decide to do.

Hours later, I was putting the finishing touches on the hardcoded createRoom() function so that I could get a nice 10 x 4 Room lined with Walls and filled with Floor tiles. It’s almost midnight as I write this post. I love being productive, even if it is weird that I could trick myself into doing it. B-)

Categories
General

The Recent (and Current) Downtime

If you’re lucky enough to see this message, it is because you finally managed to connect to the site’s server for the random few seconds it allows me to do so throughout the day.

Basically, my webhost moved my site to a new server, but had issues moving their DNS servers. The old ones expired, but the new ones aren’t yet setup. I don’t understand why it is still possible for me to access the site at all, but hopefully the site will become stable soon.

I apologize for the delay, and I thank you for your patience.

Categories
Geek / Technical Politics/Government

Digital Restrictions Management

I’ve talked about so-called “Digital Rights Management” before, but I’ve noticed that it is coming up a lot on ZDNet. For instance, Sun is trying to come up with an open DRM, but I don’t care how open a system is if the purpose of the system is to restrict what I can do with music and movies. “I’ll bind your arms and legs to a chair, but I’ll tell you where I got the rope, how much it cost, and how much pressure I applied to tie the knot.” Thanks, but no thanks.

The latest I’ve read is We the Sheeple (and other tales of DRM woe). Basically, another ZDNet blogger didn’t think that DRM was that big of a deal, and so the author tried to make better arguments.

People will readily point out the dangers and health risks of smoking. It’s fairly straightforward and easy to understand. Smoke, and you get cancer. Smoke, and your family and friends will get sick. It’s easy to fight against companies that make so much money off of a product that is so dangerous to the public.

Copyright law, on the other hand, is confusing enough as it is. People in general don’t know an operating system from the company that produces it, and since DRM is tied so intimately with technology, most people won’t care enough to be up in arms about it.

There are some serious concerns, of course. DRM puts a lot of control into the hands of the copyright holders, which isn’t so bad in and of itself. What is bad is how overreaching it is. Fair use is still fair use, but just owning the means to circumvent DRM in order to do something protected under fair use is a felony in the United States under the Digital Millenium Copyright Act (DMCA). Very clever. “Yes, you are allowed to play your music on any player you want. Yes, you are allowed to use a few seconds of audio for your class project. Yes, you are allowed to make a mix CD. No, you can’t copy the music from the original CD to do so.” Absurdly lovely.

Or how about when TiVo automatically deletes episodes of shows you haven’t had a chance to watch yet? Or when your new VCR isn’t allowed to tape certain shows because the television broadcast contains a no-copy bit?

Be a good little consumer and roll over.

Digital Restrictions Management: just one of the reasons I prefer to use a Free operating system.

Categories
Game Development Games Geek / Technical

My Thoughts on the Revolution Controller

Nintendo announced their new controller for Project Revolution some time ago. It’s old news, but I thought I would comment on it now that people have had a chance to present their thoughts.

I personally thought it looked like Yet Another Hoax when I first saw it. The idea that the new game system would use a controller that looked like a regular television remote was just too silly to be true. It turned out that it wasn’t a hoax, that Nintendo was doing something way out there, and I just didn’t know what to think at first. I seriously thought I saw the foretelling of the death of Nintendo.

Then I read the articles that went with the pictures, remembered Nintendo’s goal of making innovative games rather than The Same Games with More, and felt a bit better. I saw the video and can see some real potential in this console, even though the people in it were being way more animated than I believe they would have been in reality.

Time will tell whether it will actually be a hit, but I can see that this system will be either be a complete failure or an amazing success. Games tailored for the controller will really only be possible on this system. Talk about exclusivity. Real time strategy games that actually play well will be possible on a console! Non-gamers, a hugely untapped market, might actually play games! And if it will be easier for indie developers to make games for it, all the better. Of course, if game developers would rather save money by making games for the systems that are most like each other, that could be a problem. Darn double-edged swords.

People have expressed concerns about tired arms, carpal tunnel, and game play errors when you talk to someone in the room and inadvertently move your hands an inch to the side. I’m sure they are valid concerns, but I’m also sure that Nintendo has them in mind. Other people note that the failed CD-I controller was also a remote, and if the Revolution controller was just a regular wireless remote control with buttons for input I would agree that it’s been done before, isn’t that impressive, and has failed. Of course, this controller is not just a bunch of buttons on a television remote. It’s sounds more like having a television remote crossed with a computer mouse crossed with an EyeToy. I can see the Revolution being marketed like the old consoles used to be: as family entertainment systems. My mother might actually play a Mario game without freaking out about the controller first.

In the end, I think that Nintendo will do really well. It’s making a profit from games in the first place, unlike some companies, and so can afford to be innovative. They may fail, but I appreciate the willingness to be different, not just better. And the idea of wielding a sword or swinging a bat by actually doing the motions instead of simply pressing buttons just sounds too cool. B-)

I look forward to the Revolution, if only because the older games will be available to play. I’m also interested in seeing what games will be possible with the system. As far as I know, no one is wondering the same with the other consoles. We already know what we can play on the PS3 and XBox 360 (totally 357 more than the PS3), and of course nothing is wrong with wanting to play good games. It’s just really great to see a company respond to “More speed” and “More graphical power” with “More possibilities”.

If you haven’t seen any reports on this controller, having been under the proverbial rock all this time, check out the following links:

Categories
Game Design Game Development

GameGame 1.0 Released

GameGame announced the release of GameGame 1.0, a brainstorming tool to help with game design. It’s a card game that you can play to make a game.

Each card represents game design elements, such as a Goal or Theme. When you want to have something for the player to do, add a Game Mechanic card. When you want a place, add an Environment card.

Using a game to come up with a game is a cool idea. I printed out the cards and instructions myself since I figured they would be fun to try out, although it would be weird to use the Publisher card to put the kibosh on my own ideas.

Categories
Game Development Games Geek / Technical Marketing/Business

Manifesto Games

I remember when I first read The Scratchware Manifesto detailing the problems with the game industry’s economic and development models. I thought that it was a nice read but probably written by someone who might not actually know about the game industry.

Then Greg Costikyan reveals that he was the author of the piece, shocking many in the game industry who also thought it was written by some wannabe game developer. He wrote a few articles for The Escapist about the topic as well. They all boil down to rants against the current model which stifles innovation and creativity and will not be sustainable for long. Of course, everyone knows that there are problems, but not quite so many people are doing much about them.

Now, he decided to quit his job at Nokia and startup a company to help make his dreams for a better game industry a reality.

From his recent blog post announcement:

The new company will be called Manifesto Games; its motto is “PC Gamers of the World Unite! You Have Nothing to Lose but Your Retail Chains!” And its purpose, of course, will be to build what I’ve been talking about: a viable path to market for independent developers, and a more effective way of marketing and distributing niche PC game styles to gamers.

It sounds exciting. Heck, it’s exciting anytime someone starts up their own business venture. Indie game developers seem to have issues with marketing their products. Not everyone can make a Bejeweled or Snood. And those that make something like Darwinia struggle to get noticed. I can see Manifesto Games being an Amazon-like one-stop shop not only for indie games but also for those niche hardcore titles that retailers won’t carry.

I’m not sure if I’ll like how it will get implemented. I’m mainly afraid that game developers will insist on Digital Restrictions Management everywhere. That would quickly make Manifesto Games really crappy for the customer, and I wouldn’t want my games to have any part of it.

But Greg will be blogging about the startup, and so he’ll likely be looking for feedback. I wish him luck.

Categories
Geek / Technical

More Collective Knowledge: Wikibooks

I found this news item on ZDNet: As the Wikibooks website says, it is a collection of open-content textbooks that anyone can edit.

Wikipedia already has a huge amount of up-to-date content, and so I wasn’t sure what the difference would be. After all, they both use MediaWiki as the server software, so wouldn’t it just be a duplication of effort?

Of course, Wikipedia covers topics as an encyclopedia would. Wikibooks will have books on the various topics. While the former would have an entry giving a broad overview of a topic, the latter might have entire books that go deep into the subject matter. For example, Wikipedia’s entry for the Ada Programming Language talks about the history of the language and its main features. It provides plenty of links to tutorials and other sites of interest, but the entry doesn’t provide any useful information to the student programmer. Wikibook’s entry for Ada Programming, however, teaches you how to program using Ada. It even has a link to the Wikipedia article!

People are getting excited about Wikibooks. For one, expensive textbooks that are outdated by the time they reach the classroom might be a thing of the past. Publishers might need to adapt, although I personally think that nothing can really replace solid hardcopy that you can read away from the computer. Another possibility is that classroom research might involve working with Wikibooks. Assignments might look like, “Go to the Wikibook entry on Set Theory and add any missing information to the Axioms section.”

It’s also scary. For example, Joe Schmoe might think he is an authority on usability and edit the appropriate page. If he has it all wrong, how will you know when you go to learn about it?

Of course, that same possibility exists for Wikipedia or the Game Programming Wiki, and those seem to work out pretty well. At the moment there are over 11,000 books in the database, and more will likely be on the way. They will likely get updated in a timely manner and will be superior to regular textbooks in terms of accuracy. Typos and errors will be fixed IN the book instead of on the publisher’s website under an Errata section. Perhaps most importantly, it is also freely and easily available knowledge! I’m sure Wikibooks will make a lovely addition to collective knowledge of the world wide web.