Categories
Uncategorized

Newegg sucks

Newegg sucks. I just spent $920 on computer parts that I ordered on Monday and got on Friday despite the fact that it was shipped with 1 day shipping. The $120 motherboard arrived DOA. Now to get my money back, I have to accept a $20 “Restocking Fee” although I don’t know why you’d restock a defective motherboard. On top of that, I had to pay $10 to ship it back, plus my gas and time to get to the post office.

In my opinion, a retailer should be responsible for the parts they sell and if a part is defective the retailer should absorb the cost to correct the situation. What right do they have to charge people for defective goods? It would be like if I went to Fry’s and they told me “If this part is broken, you can have your money back, but we get to keep 15% to put it back on the shelf.” As it is, they put the defective parts back on the shelf for free 🙂

The cost of buying from NewEgg was about $200 less than if I had bought the same parts from Fry’s. But if you consider all the time and money I spent because of the defective parts, plus the headache of waiting for the parts, I would have been better off just paying the $200.

Categories
Uncategorized

My first game job or The world’s most incompetent producer

The very first job I got in the game industry was a 2 month contract at a small 20 or so person company in San Francisco. This company was hired by a major publisher to remake something in the ballpark of 8 arcade classics for the Palm OS and Windows CE. I had no idea how much a game programmer should make at the time so only asked for $16 an hour, prepared to fight not to go lower. The owner replied something to the effect of “Wow that’s really cheap, I’ll give you $20!” Oops. As it later turns out the guy sitting next to me with no degree was getting $60 an hour + $20 an hour for the recruiter. Double, oops. Anyway, the job was nice because the owner agreed to let me telecommute once classes started the next week, so I didn’t mind so much.

I started on a Tuesday… with nothing to do. Past the initial 20 minute briefing I and 5 other programmers just sat there until late Thursday. It wasn’t that we didn’t theoretically have anything to do – they just didn’t get around assigning the games to the 6 programmers yet. 18 hours lost * 6 programmers * 50 bucks an hour on average = $5,400 lost by a company so small just weeks before they moved out of an apartment complex. Worse, it wasn’t like it was a complex process assigning games to programmers either. No thought was even given to the process until our 10 minute meeting late Thursday, at which point arbitrary assignments were made. I wind up with a job to remake Robotron. Fortunately, they give me a design document and the original source to Robotron during the meeting, which I look at when I come in on Friday.

Fresh and eager to make my name in the industry, I come in on Friday and get to work. I look at the design document… or what I was told was a design document. Actually, it was a stack of PR sheets of bullet points. I look at the source code… It was a corrupted file with some recovered assembly for a machine no longer in use. I put that aside and go to work… or actually I try to go to work. But it’s time for a meeting. Then lunch, more meetings, waiting a few hours for the producer to give me useless documents, then installed software on the computers they bought, etc. At the end of the day I get 20 minutes of work done by downloading Mame and writing down some notes about Robotron. The day was a loss, the meetings were an utter waste of everyone’s time. It was just a way for the producer to feel important by having a bunch of people sit around listening to him talk about unrelated subjects.

Friday night I get home and start my REAL work day. I download the Robotron emulator, play for a while, and write up a design doc for my framework. Over the weekend I program the framework – to some extent I have a running game for the first level. I email a request for artwork and wait for a response.

Tuesday morning I get a call from the producer. “Hello Kevin, where are you?” Apparently, no one told the producer I’d be working at home. We argue about it. He thinks it’s not possible for a programmer to telecommute because face to face communication is necessary to get anything done. I tell him I’m not spending 3 hours a day on the road through San Francisco traffic when I can work perfectly well from home without disrupting my college schedule. I add that the owner already agreed I could telecommute, I couldn’t come in and go to college at the same time, and that was final.

I continue to work hard over the first week and achieve the first milestone, due in one month, in about 20 hours of work.

It’s time to integrate the real art. I sent yet another email to the producer for art (my last email was ignored). One week later he sends me a 20×20 bmp for ONE of the monsters. On top of that, the BMP has errors: the filename is wrong, it’s cropped wrong, and the palette order is wrong. I fix it myself.

This goes on over the two month project:

I email the producer a list of assets I need to achieve the milestone they give me.
The producer doesn’t bother reading the whole email and I get one asset a week later.
Another week goes by and I get an email from the producer asking why the other two assets are not in the game. I reply that they are, you just can’t see them because I don’t have the art I repeatedly asked for and was repeatedly ignored on. In one case I asked him for the same art 4 times in a row and didn’t get it. So when he emailed me wondering what’s up I cut and paste all 4 email requests along with the dates I sent them. If I were him I’d apologize and feel rather stupid about it, but somehow I don’t think he did.

On top of that, I wind up doing the artist’s jobs for them. The art that I do get invariably has errors – wrong palette order, wrong filename, wrong sizes, shifting tile centers, etc. The level design specifications I get are ambiguous and incomplete.

Some significant milestones:

Three weeks:
I come in and look around at the other programmer’s computers. What did they accomplish? Nothing! They are still working on frameworks, the same thing I accomplished the first weekend.

Four weeks:
I come in again and find out who the artist is supplying me the art. I was hoping I could explain things to him about what I need, since the producer obviously wasn’t cutting it. I look at the artist’s computer and HE ALREADY HAS ALL THE ART! I the artist had been creating original art for the game which is why it would take a week to get me a 20×20 bitmap. Nope, all the art was already there courtesy of the publisher in a giant BMP. All the artist had been doing was cutting and pasting out individual images and fucking up every possible step that could have gone wrong in the process. WTF? At that point I tell the producer “Look, just give me that BMP and I’ll make the images myself. I will have the game 100% done by the end of the week.” He didn’t agree to send me the BMP.

Five weeks:
They start getting late about sending me checks. I found out later this is because the producer wasn’t sending the checks on time. Of course I call every day for two weeks asking when the check would be sent, and was told every day “Today”. I eventually have to take the 3 hour drive there to get it in person.

Seven weeks (out of an eight week project):
Sounds still aren’t ready. I send three emails to the producer and the lead programmer that my contract ends in one week, so I either need the sounds or an interface to the sound wrapper so I can implement that before I stop working.

Eight weeks:
My emails are ignored. No sounds, no interface, my contract duration is over. My final email thanks them for the job, asks when my last check will finally arrive, and I tell the lead programmer where my sound interface is so he can add the sounds himself.

Nine weeks:
Out of the blue I get an email from the producer asking why the sounds weren’t done.

As it turns out, for this particular producer:
– He insisted on being the go-between between myself and the artist, rather than just let me get the stuff myself even if it means the project will take 4X longer.
– He can’t understand more than one topic per email. If I include more than one topic per email, all other topics get ignored. It took me a while to realize this but the end-result is certain milestones were late because he didn’t address issues I needed to proceed.
– The producer can’t understand even vaguely technical issues, such as a wrong palette order in the images. Rather than admit it, he ignores the emails no matter how many times I tell him. As a result, I had to spend a significant part of my time fixing silly art issues.
– The producer never did any actual work that I could determine.
– Because (in part) of the producer forcing everyone else to work at the office and be subjected to meetings, etc. everyone else took two months to get done what I got done in two weeks. I worked a total of 150 hours. Everyone else 320. My game was done in two weeks of work and six weeks of waiting for art. Some other people weren’t done in those two months, when I came in for the last time.

Categories
Uncategorized

Recording ITunes

My wife said to me one of her friends was asking about “that site where you can get the free music.” So I told her about Magnatune, wiki, and some other places where you can do so. Obviously that wasn’t what her friend wanted though, which reminded me back in the mid-90’s about how I used to record the audio-out from my computer. It occured to me that there isn’t really any way that online radio can stop you from reading the audio-out from your sound card and recording it. So as a quick test I downloaded Audio Record Wizard and it worked…

Audio Record Wizard

Of course I only recorded a song I legally owned already, deleted it immediately, and am not condoning others doing this. As we all know, piracy is wrong.

Categories
Uncategorized

Ubuntu seems alright

I downloaded the free version of VMWare server and installed Ubutnu onto it, figuring I’d end up deleting it 20 minutes later. As it turned out, Ubuntu is the least sucky version of Linux I’ve seen so far. I even connected to the internet without creating 4 partitions, making a make file, and recompiling the kernel from a console window!

It seems like Google has the right idea. If and when they make a desktop version of Linux based on Ubuntu I’ll buy it.

Categories
Uncategorized

I do my best thinking when sleeping

For the last year, working on the AI, I was never bothered by the workplace enviroment (two people chatting next to me, the vacuum cleaners from the janitors, somebody opening the door) because I rarely had any significant problems to think about. However, now that I’m doing network programming, which sometimes requires deep thought to solve asynchronous problems, it’s a different issue. Sometimes I can’t solve a bug all morning, but solve it 30 seconds during my walk get lunch.

I’m a shitty driver sometimes because that’s one of the few times during the day when I’m alone and can really solve the deep problems to the point where I take a wrong turn on the way home… I use to solve math problems in my head on the way home from college that way.

I think the main reason why I’m so productive at home as compared to work is that I have a door I can close and in the early mornings nobody to distract me. For thought workers, not giving them a place to work with a door is like throwing away half their salary just so you can save a little money on office space.

Categories
Uncategorized

True convergence of games and movies

I have a premonition that the convergence of games and movies is going to be more real than people think.

Consider these points:

  1. Budgets and graphical realism for games keep increasing.
  2. Hollywood is increasingly adverse to investment risks
  3. Game and movie tie-ins are increasing, with many major movies being released at the same time as the game.
  4. Computer animated movies are increasingly popular and make a lot of money

Right now it costs $30-$50 million for an AAA game and from $50 to $200 million for a movie. Lets say 10 years from now games are truly photorealistic and cost twice what they do now. What’s the next logical step?

Rather than make a game for $100 million and a movie for $100 million, make a movie using the game’s graphics engine The movie is in fact just the scripted portions of the game tied together.

Does this sound reasonable?

Categories
Uncategorized

Genius or idiot?

About a year and a half ago, before I got my current job, I had been applying around the industry. While I don’t usually do so, I went through a recruiter and indirectly spoke to Flagship Studios. After they looked at my network library, the recruiter called back and said they didn’t want me because I had UDP experience instead of TCP experience. They wanted to use TCP for their game because WoW does so, and the founders originally came from Blizzard.

If you are familiar with game network programming, you are probably thinking how strange that is. It’s like saying you don’t want someone to drive your automatic because they usually drive a manual. If I wanted change RakNet to use TCP there wouldn’t be much more to it than changing SOCK_DGRAM to SOCK_STREAM, disabling the nagle algorithm, and bypassing my reliable communications layer. Of course RakNet would then suck, losing efficiency, speed, and some features but my point isn’t that but that there’s little substantial programmatical difference between the two THAT I KNOW OF.

And that’s the key point, one I’ve been wondering for a year and a half about. Is the guy who spoke to the recruiter a genius or an idiot?

Idiot:
This guy wrote a UDP network library and we want TCP experience.

Genius:
There are many complex lessons from TCP game programming that only come from experience, and only he and a select few (excluding myself) know what they are.

An idiot would think there is some huge difference when there isn’t one while a genius would know of some huge difference that nobody else does.

I can’t figure it out. What do you think?

Categories
Uncategorized

Library packaging

Wow, it’s been since Oct. since I’ve updated? Time really flies.

So lately some Linux users have been going after me for including dependency libraries in the RakNet download, rather than telling them to go download it themselves after downloading RakNet. They make the argument that this is the only way to use up-to-date dependencies and that it also cuts down on the download size.

About a year ago I was trying to make a game using SDL. Since that’s a Linux oriented library, it had many dependencies, and some of those dependencies had dependencies. At one point I downloaded this library that had SIX different dependencies. Of those six libraries, how many do you think

A. Were still available for download?
B. Were still supported?
C. Worked with the library I was trying to use, as well as each other?

The answer is two. So like a dependency graph with a broken node, that ultimately affected my ability to use SDL and I had to find something else.

This is why I include all dependencies with RakNet. And with good cause: when I last went to upgrade speex, RakVoice no longer worked. I’m fixing that now, but in the meantime nobody would have been able to use RakVoice.

Just to drive the argument home, even if all dependent libraries were available and functional, who wants to spend the next 30 minutes downloading other libraries and figuring out where or how to unpackage or install them? When people download RakNet, they want to use RakNet, not necessarily Speex or zLib.