Categories
Marketing/Business Politics/Government

EFF on DRM: Customer Is Always Wrong

Thanks to Blue Sky on Mars, I found The Customer is Always Wrong: A User’s Guide to DRM in Online Music, the EFF guide to Digital Resctrictions Management.

Many digital music services employ digital rights management (DRM) — also known as “copy protection” — that prevents you from doing things like using the portable player of your choice or creating remixes. Forget about breaking the DRM to make traditional uses like CD burning and so forth. Breaking the DRM or distributing the tools to break DRM may expose you to liability under the Digital Millennium Copyright Act (DMCA) even if you’re not making any illegal uses.

In other words, in this brave new world of “authorized music services,” law-abiding music fans often get less for their money than they did in the old world of CDs (or at least, the world before record companies started crippling CDs with DRM, too). Unfortunately, in an effort to attract customers, these music services try to obscure the restrictions they impose on you with clever marketing.

This guide “translates” the marketing messages by the major services, giving you the real deal rather than spin. Understanding how DRM and the DMCA pose a danger to your rights will help you to make fully informed purchasing decisions. Before buying DRM-crippled music from any service, you should consider the following examples and be sure to understand how the service might limit your ability to make lawful use of the music you purchase.

Categories
Games Marketing/Business Politics/Government

Evil Games Or Misunderstood?

1UP reprinted an article from Computer Gaming World titled Pop Culture Pariah: Why Are Videogames The Favorite Demon of the Mainstream Media?

While it was informative, I really don’t like the idea that we just have to wait it out until people who are gamers grow up and take over society from the previous generation. It’s a new form of media, and the previous generation didn’t grow up with it so they don’t know what to make of it except from what they are being fed from the news headlines and pamphlets. In a sidebar, CGW interviewed Steven Johnson, the author of Everything Bad Is Good for You: How Today’s Popular Culture Is Actually Making Us Smarter, and he mentions that games today are so complex that it is hard to get people to discover them in the first place, which is one of the things I think game developers need to work on in order to not only get female gamers but all non-gamers into gaming.

I remember my mother could handle playing Atari 2600 games since all she had to worry about was a joystick and a single button. In fact, her favorite game was actually Breakout which made use of analog paddles with a single button. When I got an NES a few years later and tried to get her to play Super Mario Bros, she looked at the cross pad and four buttons on the controller and immediately decided that it was too complicated for her, yet, using those same buttons, she loved Tetris on the GameBoy.

In high school I remember people complaining that the Super NES had too many buttons and that’s why they liked Sega Genesis better. Funnily enough, some of these same people were first in line for a Playstation when it came out. Anyway, I think it is interesting that controller layouts can do much more to intimidate new players than anything else. I mean, driving a car is a complex activity, even with an automatic. You have three mirrors, four wheels, one steering wheel, and a number of settings such as Reverse, Drive, Neutral, and Park, plus an entire world that you need to pay attention to in order to get to your destination safely. Yet driving a car isn’t that intimidating to so many people as playing video games.

Sit down someone who plays console games in front of a keyboard and mouse and tell them these are their tools for playing a game, and they’ll freak out. I know that I felt weird playing SimCity on the computer after first playing for years on the SNES version. Today I find it difficult to play Goldeneye 64 even though I was awesome on it when it came out. I’ve been playing computer games for so long to the detriment of my consoles. But the controls don’t intimidate me. I’m used to overcoming new controller layouts.

What about the new gamer? Too much effort? Too much frustration? Too much confusion? It’s no wonder that solitaire sells so well compared to most games.

While I think a big part of the problem is that people need a scapegoat, I also think that the complexity of games for non-gamers only furthers to mystify what is great about games and gaming. With games like Bejeweled and Tetris being as popular as they are among otherwise non-gamers, wouldn’t you think that most people would understand that GTA:SA doesn’t necessarily represent video games?

Categories
Geek / Technical General

Cathedral and Bazaar…and Gaming?

In the latest Escapist, The Contrarian: Roll the Dice mentions ESR’s The Cathedral and the Bazaar.

I’m reminded of Eric S. Raymond’s essay The Cathedral and the Bazaar. He wrote about the differences between top-down, monolithic software development and bottom-up, open-source development. But the metaphor applies here too.

People don’t always get what the Cathedral and the Bazaar really represent, and it is weird because it isn’t like Raymond hid the meaning in metaphor and poetry. He says it up front: the cathedral represents software development by project leaders on high while the bazaar represents software development done by everyone. Both ways can be open source, not just the latter. It just depends on if the project moves in a direction on the whim of the few or with the natural developments of the many. That’s all it refers to.

Linux overturned much of what I thought I knew. I had been preaching the Unix gospel of small tools, rapid prototyping and evolutionary programming for years. But I also believed there was a certain critical complexity above which a more centralized, a priori approach was required. I believed that the most important software (operating systems and really large tools like the Emacs programming editor) needed to be built like cathedrals, carefully crafted by individual wizards or small bands of mages working in splendid isolation, with no beta to be released before its time.

Linus Torvalds’s style of development – release early and often, delegate everything you can, be open to the point of promiscuity – came as a surprise. No quiet, reverent cathedral-building here; rather, the Linux community seemed to resemble a great babbling bazaar of differing agendas and approaches (aptly symbolized by the Linux archive sites, who’d take submissions from anyone) out of which a coherent and stable system could seemingly emerge only by a succession of miracles.

Even so, people think the cathedral and the bazaar refers to open source vs proprietary software, Microsoft vs Linux, and all sorts of things. And apparently now it refers shallowness in video games vs the depth provided by tabletop gaming? Or the openness of a game as opposed to the rigidity?

I thought it was a good article, but the link to ESR’s work was a big stretch that doesn’t work.

Categories
Geek / Technical Linux Game Development Politics/Government

Blizzard Wins bnetd Case

Blizzard wins lawsuit on video game hacking. If you are not familiar with this case, basically Ross Combs and Rob Crittenden are two guys were fed up with Battle.net being unresponsive and decide to reverse-engineer their own version of it called bnetd.

My take? Just from the article, it sounds like if it wasn’t for the DMCA, the reverse-engineering wouldn’t have been considered that much of a problem. Of course, when you install Starcraft, you agree not to reverse-engineer anything anyway, so they are in violation of the EULA, but I think it is just another case of the DMCA being abused.

Blizzard obviously has a right to make sure that people aren’t playing with pirated copies, and they obviously have the right to dictate how people play online with their games. Apparently they have the right to tell people that they can’t find better service elsewhere. It wasn’t about piracy. The bnetd project had asked for assistance from Blizzard to make it possible to verify the copies used aren’t being pirated, but they were refused.

Power. Blizzard owns the copyright, and so they have the exclusive power to dictate what can be done with their copyrighted works. That’s fine. They want to control it and have the right to do so. But bnetd was not about allowing people to pirate the games. It was not about creating new games using Blizzard’s copyrighted works. It was about making it possible for people to play the game when they would otherwise have a high amount of lag. It was about a customer taking matters into his own hands to make it possible to enjoy the game he loves to play.

I personally think that bnetd was perfectly fine since it wasn’t software meant to facilitate copyright violations but to “interoperate” with Blizzard’s software. I mean, how is this situation different from the SAMBA project?

Some people have decided to boycott Blizzard games. I haven’t made that decision yet, but they don’t make Gnu/Linux games anyway so I guess I don’t have to worry about anything. I’m just getting tired of copyright owners thinking that they are also “customer owners”.

Related Links:

Categories
Personal Development

Hearing Pavlina is Weird

I remember when Steve Pavlina started his personal development website, stevepavlina.com, and his picture at the top was kind of jarring. It’s like any online personality, I guess. When you read the words of someone online for any length of time, you might have some vague image in your head of what they look like, but when you see a picture of the person its…well, it’s kind of weird sometimes. I remember people on the indie gamer forums poking fun at how much of a nerd Pavlina is, and some noticed he looked a lot like the famous Jeopardy! champion Ken Jennings. Others just treated it like any of us would. “Cool, so that’s what you look like!”

It’s what I thought when hearing Steve Pavlina’s voice in his first podcast. “So that’s what he actually sounds like!” It’s not the voice I had in my head when I read his blog posts and articles!

Now, I’ll say that this is the first podcast I’ve heard. Ever. I don’t have a portable digital audio player so I would have to be in front of my computer to listen to them. I’ve also heard that most aren’t of good quality anyway. I thought it was kind of jarring how he paused mid-sentence a number of times at the beginning. Perhaps he was reading from a script? Idolizing Captain Kirk? Anyway, I am very pleased with it otherwise. I may have to start looking for more personal development podcasts.

It is an introduction to personal development, and he starts it by talking about how he was in jail for three days when he decided that he could grow to “lift the weight in front of him”. He talks about all the things he “went to work” on, such as his physical energy and his skills. In a matter of years he was able to completely rework his life. And he notes that there was no quick fix. It required thousands of hours of effort. And everything he is today is owed to the main in the jail cell years ago who made a decision to grow.

Finishing this blog post, I just heard it a second time. There is something infectious about a person who is enthusiastic and positive. Even if it is weird to hear their voice for the first time. B-)

Categories
General Personal Development

Goals for September

I had made up a plan for the next year or so that gets more vague and indefinite as the year goes on. It makes sense to me to do it this way since I have no idea what things will be like in a year, but I can have some very specific goals for the end of a year, such as having at least one game published and selling on my website. I had some very specific goals in August, but they didn’t all pan out. I will have to update my plans, but I’m not dejected. On the contrary, I am very pleased with my progress, even if it was slower than I wanted. I overestimated the amount of time I would have to dedicate to certain tasks, and now I have more experience when it comes to making plans.

One thing I wanted to do was make an actual website for GBGames. Currently, the main page is very sparse. I don’t actually have any games to put up yet, but I figure it would be nice to have something better than a text file with hyperlinks. I’d just prefer for it not to look so unprofessional and amateur.

Another thing I want to do is finish Oracle’s Eye, but judging from my progress over last month, I wonder if it would be too optimistic to think I can have it completed in a second month. I have to schedule certain days as development days and not deviate from it. Certain days of the week are already taken up by meetings, and some meetups are already scheduled for this month, such as the Chicago Indie Game Developer Club Meeting being held on Tuesday, September 27th, at 7PM at Dave & Buster’s. I’m also attending the Grand Rapids Schmooze on the 15th, 16th, and 17th, and since I don’t have a laptop, those days are definitely not programming days. I can, however, doodle, write up designs, and otherwise do things that require only pen and paper.

I’d also like to incorporate by the end of the month, which I don’t think is too ambitious at all. I’ve been looking into it, and at a recent seminar an entrepreneur I met suggested that I should meet with the SBA to ask for all the information I need since they give it out freely. My university has an entrepreneurship center that can help point me in the right direction for the resources I need. There are even places to go to get free legal advice.

There are other things I would like to do for the month, but the point is that I need to get a plan on paper so that I am not wasting cycles trying to figure out what to do next or what has to be pushed off to next month. By the end of the first week of September I hope to have the month’s goals specified and fleshed out. Set some goals, make a plan to achieve those goals, and then execute the plan.

Categories
Personal Development

The Ocean Is My Limit So It Must Be Yours, Too

After Blog Day introduced me to some new blogs. I started reading through The Master Smiled and found Crossing the Ocean.

In this one, the Master points out that those who sailed the oceans first had to ignore the warnings of those who told them they couldn’t do so. He then wonders what it is that the naysayers actually were really saying.

The Master thought for a while, than he continued: They were saying: The ocean is my limit, and so it has to be yours too.

How many times has a person been told, “No, you can’t do it. No one has every done it before” and then listened? How many people wanted to become artists or poets but were convinced that they should take business courses? How many people wanted to start their own businesses but were warned away by how “insecure” and “hard” it would be?

Fewer responded to “You can’t do that!” with “The hell I can’t!”

Categories
General Marketing/Business

A Business Practice I’m Not Liking

I was on a student health insurance plan up until July. Since I am no longer in school, I can’t take advantage of it anymore. I started to look for a new insurance plan earlier that month, and I figured I would cancel my plan once I knew I had a replacement. Unfortunately the search and application process took a bit longer than I expected and so I was forced to cancel it before I had anything.

No big deal. I just sent an email to eHealthInsurance.com, my “agent”, and asked them to cancel my Fortis Health Insurance plan. Simple.

I did end up sending it a bit later than the expiration date, but I made an assumption that I had a grace period. You know, because good companies don’t terminate your plans without saying, “Hey, we haven’t received your payment, so we’re letting you know that your plan is danger of being terminated.” In fact, they did send me such letters.

So I was surprised to find a letter yesterday telling me that they cancelled my plan on July 27th, 2005. Um, it’s frickin’ September, and you are telling me this fact NOW?!? A whole month later you decide to inform me of this decision? The letter’s purpose was to inform me that they cancelled it because of non-payment. Huh?! I CANCELLED it, and obviously they should have received the cancellation since they didn’t send this letter until a couple of days ago. I cancelled weeks ago.

The best part? The letter informs me that this reason can be used when I finally do apply for new insurance from any company.

Why not inform me that the plan was cancelled, oh, I don’t know, when you cancelled it?

Recently I had a similar problem with my cell phone bills not getting paid. I received a bill that didn’t mention that my last month’s payment was received, but I assumed this bill might have been sent a bit earlier. After all, my payments were handled by the phone company since I had a payment plan that allowed them to take what I owed them out of my account every month. Up until the situation I describe below, I was very happy with their customer service.

I forgot that I received a new debit card from my bank and didn’t think to update the expiration date on record with the company. When I noticed that my bank statement didn’t match what I thought I should have paid out, I called them and found out about this situation.

You know what would have been frickin’ useful? Getting notice in some form saying, “We tried to collect payment, but your expiration date on your card is not correct.” Or if they don’t have that information, how about just, “There was a problem trying to get payment. Please call us.”

But no. I had to find out myself. I didn’t get charged a late fee, but I was wondering if I would have been if I had waited longer to call them.

Both of these situations are my fault in the end. I made bad assumptions. I forgot to update my information. I admit that these were my problems.

But what kind of a business forgets that its customers might be human and make mistakes? These two companies aren’t the only ones either. In the past few months, I’ve been getting the feeling that companies don’t WANT to do business with me. Seriously, why do I have be the one who finds out what the situation is? Why can’t the business be proactive and inform me about what I need to do if I need to do anything?

Imagine if I would have been sent a letter the day that they cancelled the plan. I would have been better prepared to do something about it, especially if it potentially has such a huge effect on my application to other insurance providers. Imagine if T-Mobile would have told me that they had a problem collecting payment THE DAY THEY TRIED TO DO SO. The problem would have been resolved then and there. Instead a month went by before I knew about it.

I’m 24 and haven’t been working with services and businesses for too long. Up until a number of years ago, I wasn’t in charge of my finances. I’m disgusted with the level of service I receive at some places. Has this been the status quo, or is it a new trend with businesses? Why do businesses think that they are better for upsetting me about completely preventable things? After all, wouldn’t they get paid sooner? Wouldn’t they keep business from going to their competitors?

Categories
Marketing/Business

Steps to Online Business Success

10 Steps to a Hugely Successful Web 2.0 Company has some of the same points I’ve read in many different places distilled into a single list. It touches on topics that have been covered in greater detail on blogs like Creating Passionate Users, such as the idea that people like to tell friends about cool things to show that they are in the know.

Categories
Game Development

Oracle’s Eye Development: Frame Rate Independence

Last time I mentioned that I had made a stick figure to move around. I implemented four degrees of movement for it, but I still don’t have a timer to make it move at a sane rate. Since this project is late anyway, I figured I might as well learn about implementing frame rate independent movement.

I actually looked at my GiD entry and found that it was handling the timer code badly. Basically, the game would update every time an SDL Event occurred. Normally the event would just be the timer callback and would run fairly regularly. But if you pressed a key or released a key, an extra update and draw would occur. Now, I programmed it to allow you to hold the key down to move so it only speeds up when changing directions and may not be as noticeable; however, if you press keys multiple times, it becomes very obvious. For my first GiD, I suppose it isn’t that big of a deal.

For Oracle’s Eye, I decided to create frame rate independence. It basically means that the rendering happens independent of the game world updates. The game can go from 30 frames per second to 100 frames per second to 15 frames per second, but the game world will still update once every 10 milliseconds or whatever I want to set it to. It should result in smoother animation and movement.

When I started this project I didn’t think that I would be working on such an “advanced” topic. It sounded a bit complex and beyond my abilities. Well, screw that thinking. It can’t be THAT far beyond what I can currently do. In fact, when I think about it, making games in general is still a challenge I haven’t decisively overcome yet, so I’m charging forth. Screw you, Pessimism!

Luckily someone just posted about this topic on the SDL mailing list and so now I have a link: Game Physics: Fix Your Timestep!. Reading it gave me some idea about what needs to be done, but variable names like t and dt and functons that come out of nowhere make it hard to follow. I was able to find another article on gamedev.net called Achieiving Frame Rate Independent Game Movement. It is a bit shorter, more to the point, and easier to follow.

Problem # 1: It is a good thing that I haven’t gotten too far with my game project because implementing this feature is going to require a redesign. I originally envisioned moving my characters about by telling them to move so many pixels directly. For example,

player->moveX( moveSpeed );

should move the player sprite to the right by moveSpeed distance. If moveSpeed is 5, then the sprite will move to the right five pixels.

It would have been fine, but with FRI movement, I would need to do something different. As I understand it, I would have to know where the sprite started and where it will end up. Then I have to calculate at any given moment where it is along that path. Whereas before I would have moved the player sprite an arbitrary number of pixels, now I will need to determine how many pixels it moves each second then calculate how far to move it per frame. If a player should move 60 pixels per second, then the total movement of the sprite in all frames in that second should add up to 60 pixels. The trick is figuring out the movement each frame.

Problem #2: FRI movement works much better in 3D than in 2D. In 3D, the actual 3D model is just math. You can interpolate the animation of the model, and it will look smooth no matter how slow or fast you run it. I’m using sprites, and sprites have only as many frames of animation as I created. Let’s say I have three frames of animation for a walking sprite. Normally, I would just update every so often and make the animation step forward each time, but with FRI movement, how do I handle the partial movements AND animate at a normal pace? I can’t update each movement because then it looks like the player sprite is running way too fast. Do I have to figure out how far it should move before each frame gets updated? Does it even make sense to have FRI movement in a 2D game?

Starting this, I felt a bit overwhelmed. That’s a lot of things to take in, and all I wanted to do with Oracle’s Eye is make a simple game. Still, I forged ahead. I figured it is better to learn about it sooner rather than later.

I found a few more articles: Main Loop with Fixed Time Steps on Flipcode and Frame Rate Independent Movement on Gamedev.net. I also found a few threads on gamedev.net that discuss “time based movement”.

It actually doesn’t seem so bad now, at least for Problem #1. In fact, I don’t have to change my existing code all that much. I changed the moveX() and moveY() functions to take floats as arguments instead of ints. I added some timer variables: one for the delta, one for the current time, and one for the last time.

In my PlayState::update() function:

gTemp_currentTime = SDL_GetTicks();
gTemp_deltaTime = (gTemp_currentTime - gTemp_lastTime) / 50.0f;
gTemp_lastTime = gTemp_currentTime;

Then for each of the directions, I just change the code from:

gTemp_player->moveX( -gTemp_speed );

to

gTemp_player->moveX( -gTemp_speed * gTemp_deltaTime );

The 50.0f is fairly arbitrary. The code I got it from used 1000.0f to convert from milliseconds to seconds, but I found that the delta almost never became anything greater than 0, which meant that nothing moved. Using 50.0f seems to be fairly fast and smooth on my system. Of course, it depended on gTemp_speed which is in pixels per second. If I set it to 50, it ran quickly. Setting it to 25 slowed it down quite a bit, but it was also jerky, and setting it to 100 made it too fast.

It also didn’t take me too long to implement it, so I got suspicious that I did something wrong. After all, it shouldn’t matter how fast the sprite is moving. I will likely have sprites moving at different speeds, so what gives?

I found yet another tutorial, and this one actually made use of SDL. It turns out that I don’t do much differently. I ended up having to add SDL_Delay( 10) to the draw() function to get it to slow down enough, but I think that is a bad kludge. I believe that the reason it won’t move the sprites between each frame is because there isn’t enough to do between frames. The time between frames looks like 0.0 and so nothing happens. The delay allows changes to happen, but there is still the ugly jerkiness every once in awhile.

The next day, I tried again. I changed it so that it will constantly loop until deltaTime is something other than 0. It worked and looked great, but I found out that I forgot to remove the SDL_Delay() line. When I removed it, it ran incredibly slowly again.

So I changed the loop. I basically checked to see if the start and end times were 1/30th of a second apart since I wanted the game to update game logic at 30 frames a second. If the difference was less than that time, I delayed. It seems to work out well. 1/60th of a second looks even nicer, but I’ll have to do more testing to verify.

Unfortunately the use of floats/doubles means that when movement gets converted to ints for Kyra’s sprite movement the precision gets lopped off. I think this loss of precision is the reason why some of the movement might look a bit jerky. Of course, Problem #2 might be a tougher issue, but I’ll have to tackle both of them another time.

I am fairly pleased with what I have done in a few hours over the course of a couple of days. To think that I originally believed that I wasn’t up to the task and would have skipped it. I win.