Categories
Game Development Personal Development

You Can Make Games

A lot of people still think that the best way to make it in the game industry is to create a great demo, show it to a large company like EA or Microsoft, and get hired. People have dreams of working on MMORPGs or “teh best game ever!!!!1!” and getting paid for it. Even if they can’t work on the game they’ve been designing since grade school, they can still make a living by making games. What’s not to love?

Almost every article or book you’ll find about breaking into the industry will tell you the same thing. When the video game industry was born, it wasn’t out of the ordinary for a single person to be producer, designer, programmer, artist, and musician. Games were simpler back in the day, and one person could do it all. Today, you need teams of possibly hundreds of people to make a single game over the course of years. And the game might fail to make enough money to pay for itself. It’s a big business, with big money, and you can’t just hack out a small game and hope to compete.

Companies like EA will talk about how next-gen games are going to have to cost more to pay for the bigger budgets. Lots of people agree. The bar for production values just keeps going up, so more and more money is thrown at game development.

I’d like to point out that they’re right. If you want to make big-budget productions with little chance of doing well in the market with the latest technology and high quality graphics for long hours, then you will need to work with a big company in order to get funding for the large team to make your “game”. Good luck being a cog in that wheel.

On the other hand, if you want to make games, there is no law that says you can’t do it yourself. There is no principle of game development that says it is physically impossible to make a game today that is fun, innovative, and even profitable without a large team and millions of dollars. You can make games on your own.

I repeat: You can make games on your own.

Can you make the next Doom 3 or Half-Life 2 on your own? Maybe, if you had a LOT of time on your hands and wouldn’t mind working on it for decades. I refuse to answer no to this question; however, I will suggest that you should scale down the MMO that you have planned, especially if you want to finish it anytime soon.

Big, established companies want to convince you that going on your own is uncertain, scary, and risky. EA wants you to believe that games cost a whole lot more to make today than ever before. Microsoft wants you to believe that the bar for quality has been raised to the point that small developers can’t hope to compete. These big companies want to scare you into either working for them or avoiding the industry altogether. Either way, they get less potential competition for the cost of a PR statement. Good deal.

“Make my own game? How? I don’t even know where to start!” You start at the beginning. The first step is to become aware of the possibility of making games. You can make games. You have the skills, and even if you don’t have a needed skill, you can use the skills of another person to offset your lack. Maybe you won’t be working full-time and getting a steady paycheck. Most likely you won’t. Maybe you can make games all week long, or maybe you can only dedicate 15 minutes here and there. Maybe you can create a game in 24 hours, or maybe you’ll be working on a labor of love for years.

My point is that you don’t have to believe that only major game companies make games. You don’t have to believe that game development has gotten too complex for one person to tackle. You don’t have to believe that you need millions of dollars in venture capital or publisher funding. But you can make games.

Want proof? There is an entire section of the industry comprising indie game developers! Look at Check out Pretty Good Solitaire, made by Thomas Warfield. No, he didn’t write a Quake-killer, but he is doing quite well for himself based on that game alone. I know, it’s “just solitaire”, but people also like vanilla more than any other flavor of ice cream. Still not convinced that indie games are possible? Check out Democracy, “the ultimate political strategy game” by Positech Games. Or the high quality puzzle game Professor Fizzwizzle by Grubby Games. Or Darwinia, the hard-to-describe retro-styled offering from Introversion Software.

There’s even an awards show for indie games! The Independent Games Festival is a showcase of innovation and technical excellence. Clearly, you don’t need millions of dollars to make refreshing games. Examples of past finalists include the following games: Alien Hominid, Best Friends, I of the Enemy, Trash, Reiner Knizia’s Samurai, Bridge Constructor Set, Strange Adventures in Infinite Space and its sequel Weird Worlds: Return to Infinite Space, Savage: The Battle for Newerth, Oasis, Gish, Wik and the Fable of Souls, Dark Horizons: Lore, Lux, The Witch’s Yarn, Tribal Trouble, the MMORPG Dofus, Glow Worm, N, and Legion Arena.

Some of these games cost hundreds of thousands of dollars to make. Some cost no money at all. Some took a few weeks, while others took almost a decade. Some were made for business purposes. Some were made by students. Whatever the case, these games were independently made without a publisher. They were made by indies. And you can be an indie, too. You can make games. You, on your own or with support, with or without money. Once you believe it is possible, you have taken your first step to becoming an indie.

Categories
Game Development Personal Development

Thousander Club Update: March 6th

For this week’s Thousander Club update:

Game Hours: 24.5 / 1000
Game Ideas: 126 / 1000

Target: 126

I failed the challenge of hitting 10 hours in less than a week. I wasted entire evenings. I’ve been beating myself up over it, which isn’t very productive or helpful. I will take specific steps to make sure I don’t squander great opportunities for making progress. It’s definitely more productive to ask what you can do to improve rather than worry about how much time you’ve lost.

I cleaned up some code, corrected possible bugs, and started working on the non-game parts of the game. I’m making slow progress. I am currently focusing on the introduction and menu states. I used to have the game immediately start in the PlayState. Now, the IntroState changes to the MenuState, and the MenuState changes to the PlayState. I’ll add functionality to those two states so that they do more than transition immediately. I’m actually not sure if I want to keep the IntroState. Some developers complain about intro movies, and I’ve played more than a few mainstream games that require about four or five clicks to get to the game menu. I’ve been looking at games like Tribal Trouble and Professor Fizzwizzle to see how they handle their introductions. Grubby Games doesn’t do much before getting to the Fizzwizzle menu, and Tribal Trouble hits it upon loading. Perhaps I can use it to setup the Kyra engine and the game window instead of doing anything fancy to declare, “Yes, this is a game by GBGames!” I can probably use it in the demos of my games to give incentives to buy.

I’m writing down some ideas for what I will want each state to do. For instance, do I just need the ability to load and display images, or should I add the ability to render text? Do I want particle effects? Fades? Do I want to be able to render the game in the intro screen, or should I not worry about how I am going to get the PlayState functionality out to some third class? For that matter, I see that I’ll need an abstraction of the Kyra sprite engine object since a number of game states will need to make use of it. I’m not sure how to do so without making it effectively a global variable. I’m questioning if my design is as solid as it could be.

Categories
Game Development Politics/Government

More Copy Protection Questions

At Joe Indie, Dicto Simpliciter, Narcissism and Piracy warns developers about being overzealous with copy protection. I think it goes well with my DRM post from yesterday.

Regarding the stats some large companies and organizations throw around about “lost sales” due to piracy:

Regardless, the conversion rate demonstrates the basic idea that most of the people who look at a piece of software don’t buy it.

So, with that in mind, making the assumption that every download of a cracked version of your software/game is a lost sale is simply narcissism. Egomania, even. What else would you call the belief that your software/game is so good that everyone everywhere (even if they don’t speak the same native language you do) is going to just love it and spend hours upon hours enjoying it and cheating you out of your money?

Narcissism and egomania sounds about right. It’s a weird trick to know that you need to work on marketing or make a better quality game in order to increase sales while simultaneously convincing yourself that every pirated copy would have otherwise been a sale. A person who makes a copy of every mainstream game doesn’t magically have the hundreds or thousands of dollars to pay for it all, so how can you believe that every illegal copy of your game would have been a sale if you had better copy protection in place?

He essentially argues that you should aim to “keep the honest people honest”. Taking the time to make the copy protection stronger means that you can’t use that time to make your game better. Your game demo will be less effective, people won’t want to talk about your game as much, but hey, those darn pirates won’t “steal your livelihood”, right?

Categories
Game Development Linux Game Development

Oracle’s Eye Development: March Goals

In mid-December, I wrote Oracle’s Eye Development: Gameplay Tweaks, Planning Next Steps. I will summarize the list of next steps below:

  • The Player should not be able to occupy the same space as a Ball.
  • Graphics: the quality of the images and the animations need to be improved greatly.
  • Sound: need to add music and sound effects
  • Levels: Rooms should be able to have different dimensions. The Player should be able to choose levels from a menu, and finishing one level should allow him/her to continue to the next one.

I’ve accomplished the first item. The Ball and the Player feel more solid since they don’t overlap each other.

I have managed to implement level loading using TinyXml. The player can’t choose levels yet. The level to load is hardcoded currently, which means that if I want to test different levels, I will need to recompile each time.

1.5 out of 4 ain’t bad, right?

Since I wrote that original article, I’ve added a few more items to the list:

  • Cross-platform builds: I want to have a Gnu/Linux and Win32 binary built from the same source.
  • Installers: I want Gnu/Linux and Win32 installers.
  • Reintroduce banked walls: otherwise, having to reset the level if the Ball gets into a corner would be annoying.

I want to be able to compile and build packages to provide people a way to try the game. It’s hard to get feedback when the only people who can immediately check out my progress are Gnu/Linux users who don’t mind unpacking a tar.gz file and finding the binary. I’ve improved the Makefile so that it is easier to compile the program, but I’d like to be able to provide an installer. I think providing RPMs and .deb files would be a good start. As for Win32, I’m sure there is some installer setup that I can get scripted to run on my Gnu/Linux system. I just need to find one.

I had eliminated extra items like banked walls and pipes because I thought doing so would help me to focus on making the game. They became nice-to-haves instead of necessary components of my game. Now that I’ve had a chance to play the game, I can see that certain items are going to be a bit more necessary than I originally thought. It is easy to kick the Ball into a corner. The only way to continue is to restart the level. I’d prefer for it to be impossible for the Player to kick the Ball into a dead-end.

I’d be optimistic about finishing the game by the end of March, but I have a feeling that I will push back the date again. We’ll see.

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
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.