Categories
Game Development Geek / Technical Politics/Government

Why DRM?

Charlie “Flayra” Cleveland wrote Want to Make a Game? Here’s How. He notes that making a mod of an existing game isn’t as easy as it was years ago. To break into game development, he suggests the PopCap Games Framework or Torque. Both make game development much easier than having to learn how to program the low-level bits yourself for years.

But then he says the following:

One vital feature that both of these engines are missing is some sort of digital rights management (DRM) and/or e-commerce system.

Now, there are two problems I have with this statement. The first is that this post was supposed to be about making games, not selling them. A person trying to learn how to create his/her first game shouldn’t worry about marketing and sales. You’ll find that deciding between Plimus or Regnow is less important than figuring out how the standard game loop works. This issue is a minor one, so I won’t spend too much time on it.

The second problem, the one that I think is more important, is that I don’t think DRM is a “vital” feature. It’s weird how it keeps popping up. DRM & Unlock Codes at Greg Costikyan’s blog asks about DRM solutions. People are debating whether DRM should even be addressed by GPLv3. PC Gamer’s latest issue has an entire article on how to deal with Starforce and other stupid copyprotection schemes. Maybe it is a vital feature if your goal is to make playing your game a nuisance to potential and current customers. Maybe it is important if you intend to say to your customers, “I don’t trust you” while simultaneously claiming, “Our customers are incredibly important to us”. Maybe you can’t live without it if you have enough time to stop making games and to start playing with the trust of your customers.

I believe that so-called digital rights management is more about restricting the rights of customers and end-users than guaranteeing the rights of authors and artists. If new game developers are supposed to learn how to make the customer’s life difficult, then by all means consider DRM to be a “vital” aspect of a game development curriculum. I will continue to question why we’re supposed to assume that the customer is untrustworthy without any real evidence to suggest it.

Categories
Game Development Geek / Technical

How Can I Design Code Better?

In Getter Eradicator, Martin Fowler argues that there are cases when using getters and setters is entirely appropriate. There is the argument that using getters violates encapsulation, but Fowler argues that you shouldn’t think about hiding data so much as design decisions. The real case for avoiding getters is to discourage procedural design in object-oriented languages. Pulling data out of an object to decide what to do is just procedural programming, whereas telling the object to do something and letting it figure out for itself how to do so would be more appropriate. He referenced a few other articles, among them Tell, Don’t Ask which describes the principle above.

It made for great reading, but it made me a bit concerned. I know and have known beyond a doubt that I must be doing something wrong; there is no way that I can claim 100% accuracy and correctness with the code I write. What I don’t know is what exactly would be wrong. I might write some code that seems perfectly fine to me but would make someone more experienced roll his/her eyes.

Now, if I write code, and it works, and I manage to finish whatever project I am working on, someone might argue, “Hey! Who cares how ‘correct’ it is? It works, so it is good enough!” If my goal was to just finish a project and be done with it, yes, I would agree. If it works, it is correct enough.

But one of my goals is to improve my ability to create, and that includes improving my coding as well as my designing skills. It isn’t enough to be able to get something working, although doing so would be a great first step. I want to be able to write great code and know it. It may take years of practice, and the Thousander Club will certainly help, but I want to design and write better code.

Of course, practice doesn’t help when there is no one to look over your work except yourself. I might be doing something that works well enough that I don’t realize that I’ve done it completely backwards. It may be the source of some trouble, but if I am not aware that the trouble is optional, how can I do anything about it?

In the past, I’ve asked other game programmers to look over my work and provide some feedback. It is definitely enlightening to get an analysis on a real project and not just a grade in class for writing a function. I’ve asked questions on forums and IRC, but it usually depends on who is around to answer and if they feel the question is good enough. Otherwise, I’m on my own.

I’m sure I am not the only lone wolf out there, so please let me know: how do you improve your own abilities when you’re basically the only one to provide a “peer review”?

Categories
Game Development

Putting Off Procrastination

Fighting Procrastination: The Local Maxima Problem describes how procrastination might be a symptom of a project that has hit a standstill and can’t easily move forward without taking a few steps back. The Local Maxima is best illustrated by the example of the robot that wanted to go to the moon:

The Moon is way up there. That tree is higher than the ground. I must climb to the top of the tree to get to the Moon.

So the robot climbs up the tree and sits. Yes, it may be closer to the moon than it was when it was standing on the ground, but it won’t actually reach the moon. To actually reach the moon, it would need to climb down the tree and get inside a space shuttle or rocket ship; however, the robot might not want to go down the tree. After all, if the moon is higher, why would going back down the tree, going lower, help?

Jay Barnson experienced this same problem with his own project. He had created a working prototype, but to make progress he would need to tear out functionality and replace it with something else. I’ve experienced this same problem myself, and the fear he refers to is real. Who wants to work productively only to have to say, “Ok, those results were nice, but now they don’t matter, and I’ll need to do it over”? So procrastination becomes a real problem.

I use Subversion for my projects, and I think that it has helped alleviate this problem quite a bit. I could experiment with code, go in different directions, delete and change functionality, and if I fall into despair with no hope of returning with a better product, I can essentially hit the reset button. My last working build is returned to me in pristine condition, and I can start again, only now I know what not to do. The worst case is that I am back where I started with more knowledge of the problem domain. The best case is that I now have an improved code base.

It is probably easy to think that a project’s progress is simply a linear series of accomplishments. Maybe people who have tons of experience can do it based off of a perfect design document, but I can’t. For instance, I had hardcoded variables to get certain functionality up and running in Oracle’s Eye. Originally those variables helped move the project forward. Otherwise, I would be writing abstractions before I know what abstractions are needed. Trying to write code that works in more than just your specific case is great and all, but it is also a great way to stall what you are specifically trying to do. And in my case, I didn’t even know what I was specifically trying to do, so how could I hope to write code that will work for all cases as well as mine?

Later, as I gained an understanding of what I was doing, I had to tear out the old hardcoded variables and analogous functions to replace them with something better. Essentially, I would need to break my project to make a better project. It isn’t so bad when you can change a small function or change a variable, but if your change impacts three classes and fifteen functions, you might be a bit wary. I was. There was the temptation to think, “But why should I go lower when I need to go higher?” Even with the safety net that Subversion provides, it was scary to dive into my code and change it so fundamentally. Even scarier was not being able to compile it for hours.

I did go through it, however, and came out the other side with great progress on Oracle’s Eye. When I hit the next local maximum, I hope I can remember Barnson’s post.

Categories
Game Development Personal Development

Thousander Club Update: February 27th

For this week’s Thousander Club update:

Game Hours: 23 / 1000
Game Ideas: 111/ 1000

Target: 105

Last Monday was President’s Day, and it helped a lot with regards to providing me with some coding time since I had the day off from my job. That day I managed to get some huge bugs fixed and created the ability to load levels from a file. I also added six hours of work. I just had to do four hours of work to add up to the 10 I hoped to do for the week. While I was able to work a few mornings before going to my day job, I found that I was not able to accomplish as much as I thought I could. During the week there were any number of things that came up. A friend of mine was leaving the state, and so we threw a party on Friday evening. I was at an all-day event on Saturday. Sunday was a day for errands.

It is clear to me that I am not doing as good a job as I could be doing regarding my game development schedule. This coming weekend I will be leaving town, so any work I do will have to take place between today and Friday morning. I would need to work two hours a day in order to get to 10 hours. Since I couldn’t do 10 hours in a full week, I am not sure if I can expect to do so with a few days missing.

Of course, it sounds like a challenge to me. B-)

Categories
Linux Game Development Personal Development

Motivation Threshold

This week I was coding for hours on end while also doing laundry. It was great because I had 45 minutes within which I was trying to be productive before I had to do another load. If I had 5 hours to sit still in front of the computer, I would probably get maybe an hour or two of work done. During some sessions, I only did 15 minutes of work, and usually towards the end. The thinking was “Oh, geez! The timer is going to go off soon! I better get some productive time in!” Other times, I managed to use between 30 minutes to the entire 45 minutes.

After the laundry, I was still in a productive mood, so I kept going past the time I would otherwise eat lunch. My sandwich was especially delicious afterwards. I worked for a few hours, and then I felt I needed a break. I decided to play a game that I needed to review for Game Tunnel. I t would be fun as well as productive. I played for an hour or so, then tried out a different game since I was in the gaming mood.

It took me hours before I returned to programming that evening. I wasn’t exactly in The Zone earlier, so it isn’t that I fell out. I just wasn’t too motivated. Maybe I was too tired? No, I felt fine. It took some effort on my part to convince me to continue programming. Steve Pavlina, as he uncannily and usually does, wrote about exactly what I was experiencing in What’s Your Motivation Threshold?

He describes how certain tasks might not require too much motivation while others require a great deal of it. Checking email or getting a snack might not require a lot of motivation. I think it is partly because it is so easy to do some tasks that it isn’t like you are thinking about the effort you need to exert. Some people can easily play games, but for most games, I have to reboot a machine so that it shuts down Debian Gnu/Linux and starts up Windows. I can’t just play a game for a few minutes like some people can. Maybe some people would consider it a good way to keep productive, but that’s besides the point. As for email, I have Thunderbird up and running at all times, so it is a few seconds of my time to check if I have new messages, and with RSS feeds, another few seconds to check on blogs and news items. It is so easy, in fact, that I can find myself checking email what must be hundreds of times a day. Those seconds can quickly add up.

Programming, however, involves work. I have to think about what I am doing, and the nature of what I am doing is such that it is uncertain and unexplored territory for me. I noticed that whenever I think about programming, I am either thinking about finishing something that I started the last session, which doesn’t require a lot of motivation to do, or I am thinking about starting or designing a new task, which requires a lot of motivation. In the first case, I am basically on rails. I might have already written some stub functions, so it is just a matter of creating the implementation. What algorithm would work best here? What variables would I need? I’ve done similar things before, so it is easy. It’s almost as easy as checking email at that point, although if you would have asked me to do so a year or two ago, I might have felt that the task was still daunting. In the latter case, I need to think a lot more. I don’t have a lot of experience with design or project management. I have to really want to do it before I will do it.

So I think that the motivation threshold is partly a function of experience and partly a function of urgency. I’m sure someone who doesn’t know much about computers would feel that checking email is still a strange and foreign task (present maternal figures excluded, of course) and would really have to need to check email before trying to do so. It is why students will wait to the last minute to do papers. It may be important, but it isn’t urgent…until it is the night before the due date!

I don’t have a strong and urgent need to finish Oracle’s Eye. My income doesn’t depend on it as I have a day job. So what helps motivate me to work on it? What acts as my motivation modifier? I remind myself that I want to depend on it. I want to finish the game so that I can have something to sell. The sooner I can get to selling, the sooner I can work towards getting GBGames to provide financial independence from any normal day job. I don’t always roll 20s, but it usually puts things in perspective and gives me the boost I need.

No, I’ve never played D&D.

Categories
Marketing/Business

Casual Game State of the Industry Summary

In So…Did You Read It?, David “RM” Michael asks a few questions. Did anyone read State of the Industry: Casual Games in the latest Game Developer magazine, and if so, could you provide a summary?

Sure! James Gwertzman, director of business development at PopCap says that he expects the casual game market to grow very rapidly. Some research predicts that downloadable games will have $1.7 billion in revenue by 2009 compared to $241 million in 2005. It talks about how PopCap works. It talks about PlayFirst, the supposed-first publisher for casual games. Budgets for casual games have apparently gone from $50,000 to $150,000 due to high quality games raising standards. Then there was talk about how important portals are since they have such a high volume of potential customers. Microsoft’s MSN Games and XBox Live Arcade also are supposed to usher in diversity in casual games.

Nothing, however, about going it alone. Nothing about being an indie. Just Big Money going after big money. Not that there is anything wrong with big money, of course. I think that it is good news that casual games are shown to be more than a passing fad. I just think that it would be terrible if it became a subset of hit-driven, big-production, mainstream game development.

The second question was about the relevancy of Game Developer magazine. I don’t have enough information to be able to try to answer that question, but I will say that I think I get more quality information from blogs and websites, and such information comes to me much quicker.

Categories
Marketing/Business

Free Ebook: Go It Alone!

David “RM” Michael of Joe Indie wrote about a free Ebook available from Bruce Judson in Free EBook about Starting a Solo Business

I’m a bit disappointed that it isn’t available in an easily-downloadable PDF, but you can read Go It Alone! The Secret to Building a Successful Business on Your Own in standard HTML format. With chapter titles like “Principles of Success”, “When to Quit Your Day Job”, and “Conclusion: Fear is the Enemy”, it seems like a great read.

Categories
Game Development Marketing/Business

Advice for IGF Finalists

Dustin Sacks of Sillysoft Games and creator of the amazingly expandable and cross-platform Risk-clone called Lux wrote an article entitled Advice for Independent Games Festival Finalists. Lux made it to the IGF finals last year, and Dustin basically felt unprepared. He’s decided to write up his experiences to help out developers who made it to the finals this year.

It is a quick read and should be helpful for anyone who wants to network with other people involved in game development or to get more publicity.

Categories
Game Development Personal Development

Thousander Club Update: February 20th

For this week’s Thousander Club update:

Game Hours: 15.5 / 1000
Game Ideas: 85 / 1000

I should have 84 for the year so far. I’ve caught up with my game ideas target, but I am still fairly short of my game development target. I doubt I’ll be able to catch up.

I think it is clear that I am falling way short of the 21 hours per week I should be dedicating to development hours. If I can’t do 21 hours, I should be able to try for 10. This past week I did five hours, so doubling that productivity should be a viable goal.

Categories
Geek / Technical Politics/Government

Broadcast Flag is Back and Worse Than Before

No Broadcast Policy Without Representation! is something I am still reading through, but it seemed important enough to merit mention here.

In summary, apparently international treaties are forcing the United States to agree to allow distributors of works to own an exclusive right to distribution. The “broadcaster’s right” is recognized in a number of other countries, but not in the United States. It’s not unheard of for a television channel to get exclusive rights to broadcast a program for decades. Now they want to expand the law to cover broadcasts over the World Wide Web.

What does it mean? Right now if you create a copyrightable work, you own the exclusive right to that work. No one else can legally distribute it unless they get permission from you. With this law, as pointed out by James Love:

The proposed treaty concerns a system of ownership for
material transmitted over wireless means such as television, radio and
satellite, as well as wired communications over cable networks, and also
over Internet computer networks.

This proposal expands or gives new rights to transmitters of information,
even if they are not the creators of that information. Rights that are
normally reserved to creators and performers would be afforded to
organizations that merely transmit creations and performances — even if
those works are in the public domain, even if those works’ authors wish to
have the works distributed without restriction.

The possible consequences?

The casting entities fundamentally want a layer of ownership over materials
that they did not create or previously own. They want the treaty to
declare they “own” what they transmit, even when the materials are in the
public domain (government works, older works, materials donated to the
public domain, etc), when they cannot be copyrighted (facts, data, other
non-copyrightable materials), or when owned by third parties, including
those who have no interest in suppressing distribution of works (speeches
by government officials, Al Qaeda tapes, listserves, newsgroups, etc).

More links to the topic: