Categories
Geek / Technical

November IGDA Meeting

Tonight is the IGDA:Chicago chapter’s meeting for November. Alex Seropian of Wideload Games (and Bungie fame) will be giving a post mortem on Stubbs the Zombie.

I’ll be volunteering again, so if you show up, I’ll take your money. I don’t know if they will be selling shirts again.

Categories
Geek / Technical Politics/Government

I Would Like My Digital Rights Back

Rant Mode Equals One: Score: Digital Privacy 0, Digital Piracy 1 is an interesting article talking about the problem with digital piracy.

But not the kind everyone thinks about. It isn’t trying to defend the movie, computer, and recording industries with their draconian copyprotection and laws. It’s an article arguing that individual rights are being compromised.

How does Sony get away with putting a root-kit on your system? Why is any company allowed to compromise the security of your computer just so they can determine that you haven’t made a copy, whether legally or not? And why are laws being passed to allow it?

Yeah, thanks, but no thanks. I’ll just keep control of my own computer.

Categories
Geek / Technical

Girls Don’t Exist on The Internet

I’ve commented on girls and gaming before, but the latest Escapist was focused on the topic. OMG Girlz Don’t Exist on teh Intarweb!!!!1 was written from the point of view of a female having to deal with the strange way males react when they discover who she is.

Throughout the article, the author had her sex revealed in various ways, and each way seemed to get the same result:

“OMG!!!one! ur a gurl?! SHOW PIC!”

And when she refused to show a picture of herself, the other people would conclude that she wasn’t really a girl. You know, because all girls show their pictures on the Internet, so she couldn’t have been one. If the pic was acknowledged as real, it was dismissed as the obviously male player’s sister or girlfriend.

It’s weird how the existence of a female online will cause almost all males in the vicinity to think about unbridled white horses running past a field…

She also mentions the other extreme. Imagine that you meet some of your online friends in person, and you get completely ignored. Are they just shy, even if they swear like sailors when the Zergling rush is destroying their defenses?

As a male, I’ve been guilty of trying not to be the amorous jerk but ending up the guy who doesn’t even acknowledge the girl’s presence. Whether it is for gaming, software development, or Gnu/Linux user groups, either reaction results in females being uncomfortable.

I distinctly remember playing a game of Quake 3 Arena online a few years back, and there were two other people on the map. We were playing 1v1 instagib, and suffice it to say that I was getting killed soundly. One of the other players informed me that the deliverer of pain was a female. I actually don’t remember how it came up, but I do remember that I was actually trying to strike up a conversation. She remained silent, and I didn’t think much of it.

I did think about it later. I rarely try to talk with my opponents online. Why was this case different? Why did the fact that she was a girl make me want to talk to her? I’ve had conversations with males online, but the idea that I was playing against one of those rare female players was just…well it was just rare, which made it interesting.

When there is a group of male gamers, no one makes much of it. Hey, want to join my group? Nice shot. GG!!

But when there is a female involved, I think I get more conscious about it. Trash talking isn’t carefree anymore. Now I worry if calling an opponent a “bitch” will be taken badly by the Female, even if she is on my team and not the recipient. If I say “good job” will it be construed as making a pass? Am I aiming at her because I am trying not to avoid aiming at her, or am I just playing the game? I don’t want her to feel uncomfortable, and so maybe shutting up will be best. Which, of course, isn’t.

Why can’t she just be another Gamer? Why is the fact that she’s female so intriguing?

The author of the article talked about the instant message conversation, showing her picture, and getting WTFs and the like. I know that there are female gamers so I don’t think I would lose all manner of speech except for TLAs. Still, what DO you say? Would it be inappropriate to say that she’s pretty? I know I wouldn’t tell a guy that he looked handsome or cute or something, but then again, I don’t think I’ve ever sent a pic to someone online. I mean, my orange juice pose seems to get enough comments. B-) In any case, somehow I don’t think “Oh, a pic. c001” would suffice.

Maybe what happens online is the same thing that happens in real life. People don’t know how to act in front of the opposite sex, especially when they show up in a place that they didn’t usually. It’s common for people to assist newbies when starting out, but females seem to get this overwhelming help throughout their gaming career, as in the case of City of Heroes. People will steal kills because they think they are “helping” her out. Apparently in World of Warcraft it isn’t uncommon for female players to be given gifts, usually in exchange for dancing.

Why do men either give women trouble for playing games or insult their abilities by assuming they can’t do well if they aren’t helped? And why does my interaction with females online become calculated and conscious compared to my interactions with males?

Categories
Marketing/Business

Incorporating GBGames: Overkill?

I finally managed to talk to a CPA about incorporating GBGames. I had done a bit of research, but it seems odd that there wasn’t a simple bullet list of items to look at regarding incorporation. I mean, if the government knows what I need to do, why can’t I find a simple list? File articles of incorporation, send in a check, send a form to the IRS, and then…what? I found that I would need a Federal Tax ID, which I could request, but I also learned that there are certain responsibilities such as recording minutes for meetings and paying for the privilege of filing annual reports. I also didn’t realize that even though I don’t plan on hiring anyone, I would be considered an employee of the corporation. The descriptions of the employment laws that I’ve been ignoring up until now will need to be looked over in more detail. I’m sure there is one or two things I’m leaving out, but suffice it to say that it would cost me money and time to maintain the corporation.

And so the CPA suggested that a corporation would be too much effort and cost for very little gain. I had originally decided not to go for a Limited Liability Company, but he advised that while it cost more up front, the maintence of the company would be a lot simpler in this form.

I am planning on running this business part-time initially with no outside investment. I don’t want to hire employees, although I will contract out certain work. I also don’t believe I’ll be able to make any income for some time (I’ll need a game to sell first), and even then I won’t be able to live off of it for maybe a year or four. For now, an LLC sounds a bit more appealing. I can always form an S Corporation later, specifically when I start looking at much more serious income and/or start running it full-time.

Categories
Game Development

Oracle’s Eye Development: Another Month

It’s the start of the fourth month of my one month project. B-) On the one hand, I’m getting impatient. On the other hand, I am learning quite a bit, both about game development in general and about scheduling specifically.

I had a few items I wanted to tackle for the next few sessions. When I last left off on Oracle’s Eye, I had a Ball spinning around in a Room, and the Player could walk around. I had also updated the Kyra Sprite Engine. The new version doesn’t use a certain class anymore when it comes to hit detection, but it mimicked the std::vector class and my code didn’t do too much with it. It was easy to just change the type of the object. I had collision detection with a change on one line of code. Pretty sweet.

Now on to the new stuff! I eventually want the Player to be able to kick the Ball around the Room. Of course, if the Ball can’t move in the first place, I’m stuck. I already have the code available to move the Player, and I already used the same code in the Ball class. All that was left to do was provide a way for the game to tell the Ball to move.

I cheated. I just wanted it to move around, and so I used the same function that moves the Player. In GameWorld, I have moveX() and moveY() functions which normally move the Player if he isn’t hitting a WallTile. I simply did a similar test. Now, the Ball isn’t in the same subtree as the Player and WallTiles. With the Player, I can do the test with the following function:

bool CheckSiblingCollision (KrImNode *checkThis, std::vector < KrImage * > *outputArray, int window=0)

The Player and the WallTiles are siblings, and so if this function returns true, then I shouldn’t move the Player. It works for what I need so far, although I can foresee some difficulties if I keep them on the same subtree. The Ball is on a different subtree, and so it needs to use this function:

bool CheckChildCollision (KrImNode *checkThis, KrImNode *parent, std::vector< KrImage * > *outputArray, int window=0)

I basically pass the pointer of the Ball’s KrSprite and the root node of the subtree that the Walls are in. I actually uncovered a bug in my program here. Since I didn’t want to keep pointers everywhere, I named the parent KrImNode when I originally created it. I can then search for it by the constant string I supplied it. In this case, I used “foreground”. What was weird was that the Ball wasn’t able to detect the Walls and would pass right through them. It turned out that the code that creates the node was being run twice, meaning that the node was being added to the Kyra Tree twice, and so when I named it a second time, the first one was basically lost. Unfortunately it already had the information for the WallTiles and the Player, and so the Ball was looking at the wrong node whenever I searched by the name. It actually didn’t take me too long to find the source of the problem, and the fix was even easier. In the end, I had a Ball that not only moved but also obeyed the Wall boundaries.

Even cooler was that it would not run through the Player, but the Player can still go through it. I’ll eventually have to write code that makes the Player and the Ball respect each other’s positions. For now, I will need to address a different problem.

The Ball starts out in the center of the Room, near the top Wall. My animation images aren’t that high quality, and the Ball seems to jump slightly at certain frames. Apparently it is hitting the Wall as it moves, which means that every so many frames, it will actually stop moving to the side. It gives the impression that the Ball is grinding along the Wall. I think I would like to make my Player and Ball images smaller anyway. Right now they fill up the entire Floor tile, and I think they should be able to maneuver better if they had a bit more leeway when walking around.

It’s not bad for a few hours of work. Still, I think I’ll schedule an entire Saturday this month to working on this project. Having a day dedicated to development with (hopefully!) no distractions should provide a big boost in productivity.

Categories
Games Geek / Technical General Linux Game Development

Why I Want to Make Games for Gnu/Linux

LinuxGames posts about the possibility of porting the sequel to Savage to Gnu/Linux. Basically, the Savage 2 engine is heavily utilizing DirectX, and the developers are going to try to work with Transgaming to get it working with Cedega instead of providing native binaries. Apparently Never Winter Nights 2 is also having these issues.

I really don’t like the idea that I have to buy games and then pay recurring fees for the right to play them on my preferred operating system. But if you read through the threads, apparently people are also upset at the level of support they received for the first Savage.

It is already bad enough that I have to keep Windows around to play most games, and there aren’t very many natively Gnu/Linux games of great quality, but why develop half-ass “ports” and make it worse?

I want to make great games natively for Gnu/Linux because I am tired of waiting for someone else to step up and do it.

Categories
Linux Game Development

Learning Kyra: Installing the New Version

I decided to install the latest version of the Kyra Sprite Engine since I am still so early in the Oracle’s Eye project. Historically, Kyra allowed you to dynamically link to the library, and so I had it installed on my system as any other library.

I wanted to install the latest version similarly. I found that the latest version doesn’t have a working configure file; I was expecting to be able to use the standard ./configure; make; make install. It still worked for the most part without the ./configure part. In fact I took advantage of checkinstall to create a nice Debian package for me so I can uninstall and install easily.

So it builds, but I found that there are a few differences. For one, kyra-config doesn’t exist. I normally used it to get the cflags and the lib arguments for my Makefile, similar to the way you would use sdl-config. So, how do you build a project now?

I asked on the Kyra forums, and the maintainer was actually just sitting in front of it waiting for my posts. He was that quick! Eventually I found that the way I wanted to use Kyra wasn’t the way it was supposed to be used anymore.

Kyra isn’t currently capable of being backwards compatible, meaning that different versions of the same library can’t be installed at the same time. So basically statically linking is easier and less likely to cause problems. My only concern is the fact that the LGPL license requires different things for code that statically links to it, but I was planning on releasing my code under the GPL anyway so it isn’t a huge problem.

To make one of my famously long stories short, I ended up working on my Makefile and the library until I found out how to get it to work dynamically…just in time to read that I shouldn’t use it that way. I managed to get my project to build with the new library only to find out that I should use it a different way. I spent some more time until I finally managed to get it to build the preferred way. I have a source directory with all of my source files as well as a subdirectory with the Kyra library source.

It was definitely a good learning experience, as I learned more about linking and libraries on my Gnu/Linux system. I actually built my project successfully three different times: once with the old dynamic library, once with the new library fixed up to be dynamic, and once with the code statically linked. The last option is actually cool because I can actually add the Kyra library directory to my Subversion repository for Oracle’s Eye.

Still, I would have liked to schedule my learning experiences better. I was supposed to be working on my game project instead of the supporting library. I really wanted to try to work on what William Willing mentioned on his blog about Composition vs Inheritance. I’ll probably be able to work on it this Friday though. At least the new library seems to be working great now.

Categories
Games Geek / Technical General

Carnival of Gamers

I saw that Aeropause was hosting this year’s Carnival of Gamers, which has its “headquarters” at Buttonmashing.com.

Carnivals are basically traveling blog shows. There is a Carnival of Capitalists that I’ve heard about, but when I found that there was a Carnival of Gamers, I had to look into it. Essentially, people submit posts on the topic or theme to the carnival host, and the host, which is Aeropause for this month, provides links to the other blogs involved. It’s like normal blogging but much more organized.

Categories
Game Development

Oracle’s Eye Development: Thanks for the Save, Subversion!

I spent the evening working on the project, and I was going to try to get the Ball to move in four directions. I thought that I should probably start by laying the groundwork and having Player and Ball inherit from a class called Entity.

My thinking was that Entity would control the movement of the object in question. It would set the position, move in a certain direction, and also control the KrSprite pointer. Then Player and Ball could inherit from Entity and have all of the functionality available, and I would be able to handle the code in one place instead of two or three.

My gosh, what a mess!

When I finally decided to give up and revert the changes, I realized that I might not want to inherit Entity. Perhaps it would be better if the Player and the Ball each own an Entity object. After all, each owns the KrSprite pointer currently, and essentially Entity acts as a wrapper. It will still require some reworking, but it might be easier than what I was trying to do.

Entity had pure virtual functions, and after Player inherited it and defined the functions, I was getting linking errors that I couldn’t figure out. The messages insisted that there were undefined references to the Kyra Sprite Engine’s functions, and that made no sense to me because they were defined nicely before I did anything to the code. I kept at it for some time, and by the time I gave up I have to admit that I still don’t understand what was wrong. Of course, I don’t exactly have the greatest grasp of the C++ language, and so I more than likely wasn’t using pure virtual functions correctly. I decided that I should think about it.

Reverting it was fairly easy with Subversion, so I am very thankful that I’m using this tool. I feel bad that I haven’t made any progress on the code, but I’m chalking it up to experience.

Never write code when you have no idea what you’re doing with it. I started to hack away and tried to do something without knowing how I was going to handle it beforehand. Now I’m backing away from the code and trying to write down some design ideas before progressing. If I take the functionality from Ball and Player and put it into its own class, I already know that aggregation is probably going to be better than inheritance. Of course, I should really try to write it down and figure out if that is the case before making the same mistake the other way. I don’t want to assume that if I was wrong with one choice that another choice is automatically correct. After all, Ball and Player are both going to be classes that provide the functionality to move the objects around. Why shouldn’t they inherit the implementation to do so?

I’ve already found one resource that suggests composition is the way to go: Game Object Structure: Inheritance vs. Aggregation.

In any case, I didn’t fail. I just found a way that doesn’t work. Or at the very least I found that there is a limit to the “just get something, anything, working” method of game development. B-\

Categories
Marketing/Business

Incorporating GBGames: Business Plan Resources

I’ve read through the SCORE information on writing a business plan, but now I need to start making one.

Unfortunately, I’ve found that the resources provided by SCORE were very general. Parts of it were not relevant to an online software company, let alone to an indie game development company. Also, most indie game companies are privately owned; there isn’t a lot of publicly available information on them. For the most part, actual developers don’t feel comfortable giving out real stats and numbers, and some would argue that the information is worthless anyway. So now what?

I did what any good technical-minded person would do: I searched online for information. I found this post from the Dexterity archives on Indie Gamer. It’s cool because it has the words of Steve Pavlina along with Thomas Warfield. They liken indie game development to turning a flywheel: the more you work at it, the easier it becomes to stick with it. Both were making a few hundred dollars per month at first, but when they are working consistently at it, the sales just keep increasing. It isn’t a get rich quick method, and I never thought it would be, but it is good to know how long it took to make significant and regular sales. Pavlina also touches on the need to stop thinking like a hobbyist if you expect to actually make money from the business. Definitely good advice, especially since I catch myself thinking too small sometimes. While it does provide some information, it doesn’t delve too deeply in what it takes to create a business plan.

I also thought to check out Steve Pavlina’s articles on Dexterity. I credit those articles and the Dexterity forums with the inspiration that got me thinking about starting up my own game company, and I like to read through them every few months. To Plan or Not to Plan is especially relevant. When I first read it, I thought it was good, but I am seeing it in a new light now. “Failing to plan is planning to fail” was a nice saying a year ago, but I now see how effectively it reiterates the importance of planning for my business. The article also goes into what should be covered, such as sales, cashflow, product development, marketing, and customer service among other items. There’s more to it, but suffice it to say that I’ve found the first solid resource on forming an indie game development company in this article.

The article mentions that the business plan should be two to five pages long, which goes with my feeling that it shouldn’t be a monstrous, formal document. I should be able to write a rough outline and draft within the week. Well, I should be able to dedicate an afternoon or two to the task, but I’ll need to schedule the time when I can.

EDIT: Thanks to Troy Hepfner on the ASP newsgroups, I remembered that I own the book Game Development Business and Legal Guide and that I would probably do well to pull it off the shelf, dust it off, and read it now that it applies to my situation a lot better.