Archive for the ‘Uncategorized’ Category

PyWeek 6

Thursday, April 17th, 2008

Collin and I participated in PyWeek6 (week long challenge to make a game with Python) with a mutual friend who has a Python game project he is working on in his spare time. He actually went to PyCon with us, so that was where this idea came up. It was interesting and we put in a lot of time on it. Unfortunately, I had a test and two projects due for school that week too, so I didn’t end up sleeping much… We did come up with a game (you can see it here), although I think we all wish we could have had another day or two. We are getting together this weekend to have a post-mortem. I think a lot of stuff went well (and we actually got something done in a week!), and of course I think a lot of stuff could have gone better. For example, I spent a good chunk of the week working on a quadtree for culling the world. The world ended up being much smaller than we originally planned so the overhead of the quadtree (implemented in Python) killed any potential performance gains. It also turns out we also unwittingly used some 3rd party libs that were released after the library deadline (a month before the start of the competition), so we technically could be disqualified. Oh well. I don’t think any of us really cares about winning the competition, we were more in it for the challenge. However, I am looking forward to hearing some feedback from the other contestants.

That was by far the largest Python project that I have worked on, so it was a real learning experience for me. Python has some great stuff and some really frustrating stuff. I learned that this is not the correct way to use assert:

assert(False, 'error')

That will never be triggered because assert is actually a statement, not a built in function. This is the correct way to use assert:

assert False, 'error'

Note the lack of parentheses. With the parentheses, it evaluates the tuple “(False, ‘error’)” as True since it is not an empty tuple, so it effectively becomes “assert True”. I’ve heard Python 3000 will change “print” to a function instead of a statement, but I haven’t heard anything about “assert”. Ugh. We also encountered some issues with performance doing “engine-level” stuff in Python. However, for a lot of what we required to make a game, Python let us do it quickly and easily. Integrating the different stuff we all worked on went well. Duck typing makes development much easier than having to use interfaces/templates/inheritance/whatever (although it seems like it really requires good automated testing to be safe).

Perhaps I’ll post more after our post-mortem, but try out our entry if you want. There are installation instructions included with the tar.gz file (also read the errata since there are a few errors in the readme). You will need Python 2.5, but beyond that setuputil will install the other dependencies automatically. If you try it, give us some feedback!

Wiki Update

Thursday, January 10th, 2008

As you may have noticed, we recently had some issues with our wiki.  We were using a wiki system that we could install from the web host’s control panel.  However, it did not get automatically updated.  I guess someone exploited a security flaw in the wiki software and the host noticed unusual load on the server machine from our account.  Rather than continue to mess around with our own wiki, we decided to just transition over to a new Crown and Cutlass wiki hosted by SF.net.

The other day I got the content from the old site running on a local linux box so I started transitioning content to the new wiki.  I also wrote a PHP script to forward links from the old wiki to the new wiki pages.  I don’t have all the content there yet, but I think it will be fairly painless to move it over.  This is also a good opportunity for us to flush out some old stuff from the wiki and update the content.  If you notice a missing page or have questions about the wiki, leave a comment here or email me.

Comment Spam

Wednesday, January 9th, 2008

When we originally set up this blog, we had all comments go into the moderation queue so that we could catch spam or inappropriate comments.  After a few weeks, we started getting dozens of spam comments a day, so Collin installed the reCAPTCHA plugin.  We both liked the idea of helping to digitize books and get rid of our spam at the same time.  However, the spam comments kept appearing in our moderation queue so ever few months one of us would have to go clear out hundreds of spam comments (it even broke a thousand at least once).  That was annoying but not bad enough that either of us cared enough to figure it out.

The other day, I finally got tired of the spam and read some of the reCAPTCHA support forum posts and think we got the problem figured out.  It sounds like reCAPTCHA allows comments to go through that fail the CAPTCHA but it will mark the comment as spam automatically.  I guess WordPress was putting the comments into the moderation queue before reCAPTCHA could mark them as spam though.  Anyway, I hope I really got it right and we won’t all of a sudden get flooded with spam comments.  So far so good…

New Computer

Wednesday, August 15th, 2007

*Warning* Gloating post ahead!

Over the past 4 years or so, I’ve had some computer drama. I bought a Dell laptop 4 years ago. It was about as good as you could get at the time. Pentium 4, GeForce 4200, 15.4 inch wide screen. It was pretty slick. Unfortunately, almost immediately I started experiencing problems with it. It would be running along happily and suddenly shut down for no apparent reason. No error message, no nothing. I shipped the computer back to Dell and a few weeks later I got it back.

It worked happily for 2 more years, when the video card went bad. It was still under warranty (and I thought it was a waste of money to get the extended warranty) so Dell replaced the video card. Apparently they didn’t have a 4200 any more so it was replaced with a GeForce 5600. Pretty sweet! Except that it ran too hot and my computer would again just shut down when it got too hot. After sending my computer back to Dell 4 or 5 times over 6 months (sometimes they wouldn’t actually change anything), they agreed to replace the laptop with a refurbished machine. Sweet! So again I had a really nice laptop, Core Duo, 17″ screen, GeForce 6800, life was good.

Then, 3 months ago, while playing Winning 11, the video card went bad (weird that its been the video card more than once). At this point it wasn’t under warranty any longer so I was stuck. A new video card from Dell was $300 (not including installation) and if I installed it myself, there would be no returns for a defective product. It wasn’t worth the risk or price.

Which leads us to the new machine. I decided I didn’t want to totally break the bank, but I wanted something I could upgrade later. So I got a pretty sweet processor, a Core 2 Quad. I decided most of the other pieces of a computer are easy to upgrade, but I wanted my processor to last. I don’t think I realized what a difference it made until I compiled Ogre. On David’s machine (which is the exact same laptop I had originally) Ogre takes 25-30 minutes. On my core 2 laptop, it took in the 15 minute range. On my new machine, Ogre compiled in 3 minutes!

All that to say I’m really excited about my new machine.

Games as art?

Thursday, April 12th, 2007

Collin and I have been reading and talking about the several stories lately discussing whether games are art. As a game player and someone who spends a good chunk of my free time making a game, I find that discussion very interesting.

I think I can sum up my thoughts pretty quickly. I think Collin agrees with this, but I’ll let him chime in if he wants. I see two issues: 1) Can games be art? and 2) Are the games we see on the market now art?

#1 seems easy to answer. Sure, games can be art. I guess Ebert may disagree with me, but whatever. I’m not sure how to really define “art” but Wikipedia says art is creating something “with the intention to create an experience for others.” I’d say that is very much what creating a game is all about.

#2 is trickier. I would say that most games we have now share about the same artistic value as the movie Independence Day. Maybe it was fun and maybe it was worth seeing, but I’m certainly not going to watch it again. It didn’t change my world or shed any new perspective on life or whatever. Playing the latest FPS might be fun and I might recommend the game to a friend, but I usually play those once. They don’t make me think, they don’t change my view of the world. However, as many people in the articles linked to above point out, it’s silly to judge the potential of the medium based on a few examples. One of the links says we shouldn’t judge movies as art based on “Wild Hogs”…

I have seen little glimmers of “art” in games though. For example, I remember just being speechless the first time I saw the D-Day level of the first Medal of Honor game. While now the graphics look a little dated, it still has the same feel as the D-Day scene in Saving Private Ryan but it was interactive. Perhaps reading about it in books and seeing a very realistic depiction in Saving Private Ryan helped make it what it was, but that was definitely an impressive level.

I am also almost ashamed to say that I found the ending to Unreal 2 to be very impressive. I’m not sure if I should just say what happens or not. It was really just another shooter. The gameplay wasn’t great. I seem to remember the graphics were impressive at times, but at least on my machine it didn’t run well at all. However, of all the games I’ve ever played, that might be the only one that I actually remember the ending. As I recall, it actually made me feel something for the characters. Of course, that was like 4 years ago and I haven’t played it since.

Several of the stories above talk about games as a medium being in their infancy, and they compare games now to early movies. I find that really exciting. Imagine a game with the power and capability of a good movie. Of course, just there is still a place for a good action movie or funny comedy, I don’t expect “just for fun” games will ever go away. However, I am excited to see how game evolve. Even though we are by no means doing anything groundbreaking in Crown and Cutlass, I’m excited to be involved in this process in some way.

On a side note, the Gamasutra article linked to from that /. story includes a quote by someone from Silicon Knights about what they call “Engagement Theory”. I was interested in hearing more about that idea, so I tried to google it. I finally found them talking about it a little more in this blog post. First off, I’m not too impressed by the Silicon Knights “guiding principle”. I mean, is that really a breakthrough? It seems obvious that the better all the parts of a game are, the better overall experience the player will have. That is to say, even though a player can have a good experience with poor sound, all else being equal if the game had better sound it would be a better game. Brilliant! Beyond just the cheesiness of expressing that in a formula, it seems like that does nothing to address things like what “better” gameplay or graphics means. Does Wind Waker or Gears of War have “better” graphics? I’m not sure, they are going for different ideas.

Anyway, beyond frustration with their “theory”, I found about a million more links to the already established (but totally unrelated) “Engagement Theory”. I find it frustrating when people hijack phrases that are already in use. I try hard not to do that, so if you notice we are using a phrase that is already in use somewhere else please let me know…

More History

Tuesday, January 16th, 2007

This is a followup to David’s earlier post.

David and I were roommates in college so during his initial development of Crown and Cutlass, I was often the first tester of his new code. Generally that consisted of me sailing around and saying things like, “Where are the pirates? Why does the ship look so crappy? Why does your game suck so much?” Clearly very helpful.

Early on, I did a Windows port from David’s code because I wasn’t running Linux at the time. That was the beginning of any ideas about cross platform concerns. That has since become something that we’ve valued, although it’s often a hassle. I didn’t do any coding in those early days.

Once David setup the Sourceforge project, I became more involved. My initial interest was in the GUI system. At first, I wrote something of a custom solution, which for how simple it was, worked remarkably well. The problem was that it wasn’t reusable, so there ended up being lots of duplicate code, and it basically looked like crap. So we moved to Guichan, which did a nice job for the small things we asked of it. Since we’re doing a rewrite, and OGRE works so nicely with CEGUI, and Guichan is still in beta, we’re moving away from it.

David and I are often motivated by different things when it comes to C and C. David does things because it’s cool, and he’ll work for lots of hours to get the waves to look the way he’d like. I, on the other hand, want to have something to show for my work. I often focus on what will result from the work. I want a finished game that you can play, and while that’s David’s ultimate goal, he looks at the project as more of a sandbox where he can try out new ideas.

Because of the nature of a project like this, there may never be any final or finished version of Crown and Cutlass. And while in some ways, that’s disappointing, it also leaves room for lots of growth and experimentation, which is really exciting. As we go forward, it would be great if more people were able to become more involved in the project. We’ve setup a wiki (which is in disarray right now) to show our design decisions as well as what we’re working on. It’s a good way to see how the game and the new engine are setup. Since we’re doing a rewrite, the code is very new and not tested very well. Also there are many items on our to do list. So there is no better time to get into the code. If you’re interested check out the wiki and see if something interests you. Or check the Protocce code out of Sourceforge and build it. Run the unit tests and read the code to see how different systems work. If there’s something you’d like to work on, send David or me a note letting us know what your plan is. Then submit a patch.

I’m excited about the future of Crown and Cutlass. I hope lots of people become involved beyond just trying the game out. If you’re interested, or just want to chat, drop us a line: collin AT This Domain, or dthulson AT This Domain. Hope to hear from you soon.

MySQL AB and the GPL

Monday, January 15th, 2007

One of my coworkers recently brought up some questions about MySQL AB and its dual-licensing with the GPL. I am not a lawyer, but I consider myself something of a free-software nerd so I dug around a little to get an answer for him. As a result of looking around at what MySQL AB says about their licensing and the GPL, I have some concerns. I found what I believe is a misuse of the GPL, and I have decided that MySQL’s support is inadequate at best and perhaps even intentionally confusing in order to drive more people to the commercial version.

First off, I found this document describing the internal protocols used to talk to the MySQL server. They claim that because that doc is part of the GPL’d MySQL system, any project that uses the document to implement the MySQL protocol must be released under the GPL. Again, I am not a lawyer. However, I do not believe that is not a valid use of the GPL. I would say the document itself could be copyrighted. However, ideas can not be copyrighted, so I would argue that projects that use the ideas and information in the document (the protocol description) can not be forced to be released under the GPL. If I read a chemistry book, could the author attempt to tell me how I could license any products I produce using his description of the chemical reactions? Unless he has patented the content of the book, I don’t think he could. Why should MySQL AB be able to restrict how its description of the protocol is used?

I also have concerns about the support the MySQL team gave its users. A lot of developers using MySQL are unclear about whether they need to purchase a commercial license or if they can use it under the GPL. That’s understandable since licensing is a fairly complicated issue. MySQL AB set up a licensing forum for people to make inquiries and get answers about MySQL licenses. However, the answers there rarely seem to consist of more than “I don’t know, buy a license just to be safe”.

Here is one such response. A user is asking for MySQL AB to clarify their interpretation of the GPL, which seems reasonable to me. The “Community Relations Manager” tells the user that the only interpretation of the license that matters is the judges in a court case. While that is true, it is MySQL AB’s interpretation that would land the user in court. He concludes with this gem: “All I can say is that MySQL AB is not a litiguous company. We produce software, not court cases.” Perhaps some one finds that comforting, but if I had questions about how I was using MySQL I would not feel comforted by that. I might feel more comforted by some kind of guidance to the license though!

I also found this response. While this “Support Engineer” is more helpful, he tells this user that it is “Best not to wonder though. Just call sales, describe what you want to do and find out for certain.” Perhaps I am just cynical about sales people, but somehow I suspect that even if the sales team is adequately prepared to answer licensing issues, they would not give an entirely balanced view of whether a user should purchase their product or not. I might think that perhaps the “licensing” forum would be a better place for that question!

Finally, there are a whole slew of replies by the same guy along the lines of this forum sticky. I’m not entirely sure who Edwin DeSouza is, but it looks like he was the senior director of product management at some point. If I had posted a question in the licensing forum, I would find a response like that very frustrating. Why have a licensing forum at all if all you do is tell everyone to read your website, and call your sales team?

All in all, I am not impressed with MySQL AB. I have never had serious technical issues with MySQL. However, when there are plenty of alternatives with more straightforward licenses and, more importantly, stronger feature sets (e.g. PostgreSQL and Firebird), why bother with MySQL at all?

Annotated Commercial Game Contract

Friday, January 12th, 2007

Gamasutra has an article looking at a commercial game contract.  The contract is between Spark and Activision for the development of Call Of Duty: Finest Hour and it has been made public in a court case.

That is a really interesting article.  While $8.5 million sounds pretty good, I sure am glad we don’t have to deal with weekly progress reports and non-compete clauses for Crown and Cutlass!

Do we need an “Open Source Second Life”?

Monday, January 8th, 2007

Updated
Glyn Moody has an interesting post over on Linux Journal about Second Life. To which Techdirt responds.

The idea of an open source implementation of an MMO style world presents some interesting problems. One of the great things about the web is its decentralized nature. Why not an MMO-application in the same fashion (this is something that Moody gets into, as well as being discussed in the comments)? The users would host their characters, any sort of in world object they created, or even perhaps the land they own.

This is something that David and I have discussed in the past and while this isn’t a new idea, it does present some interesting problems. What appeals to us about the idea of a distributed MMO-application is that we don’t have to create content. To be honest, it’s not something we’re very good at (as is evidenced in most of our artwork…if the artwork is any good, we had nothing to do with it). This way, the users could create whatever experience they wanted and not be confined by our limited imaginations.

But what happens when someone is offline? Does that “land” disappear from the map? This could be handled in a very similar way to the way the web handles this kind of issue now. If the website you’re looking for is offline, that’s too bad. What about security? Once again, I think the web has a good system in place. The browser runs in something of a sandbox (as does the webserver). Also, you avoid shady e-commerce sites, and while these kind of places could exist in the virtual world, it would be easy enough to avoid. But what other security issues are there? I’m sure I’ve overlooked something.

What about currency? To be honest I’m not much of an online game player. I have never gotten into any sort of persistent online world so I’m not sure how it works in current implementations. But I assume you have a credit to your account which “The Company” tracks. When you spend money, the money is debited from your account, and if you mine gold, that is credited to your account. All you inventory would work the same way (if my imaginary scenario is correct). So let’s say we have a fully implemented distributed virtual world but with no standard currency. Ideally, “banks” would be created by users. These banks could create their own currency, or simply use real currency. When you visited an establishment (reputable, of course), they would need an account with the bank, and through an API supplied by the bank, you could transfer the appropriate funds to the owner of said reputable establishment. So essentially, instead of one company providing all the currency for the game, you could have a free market which anyone could enter with their own “banking” product. The same could be done for security/law enforcement. Who knows if that would work, but it’s interesting to think about.

If we ever finish with Crown and Cutlass, this may be a future project for us. This clearly shows how our motivation works. We do stuff if we don’t know how it works, or if it’s cool, or it peaks our interest.

Collin

Update (1/8/2007):

Linden Labs has announced that the client portion of Second Life has been released under the GPL. They liken the move to the release of the Mosaic browser in 1993. It’s great that Linden made this move, but it by no means fulfills what I describe above. Open sourcing the server software would go much further towards that goal. I certainly understand why this decision was made and don’t slight Linden for protecting their business model, but this is not the open source victory it may seem at first glance. Perhaps there will be some work done to create a compatible open source server for the viewer.

I am excited to look at the source code to see how things are structured. Going through our rewrite, we’ve often wondered how commercial games are setup, and this affords us the chance to see another example.

Some Quality Wii Time

Friday, January 5th, 2007

I’ve been delinquent in my Crown and Cutlass duties lately. David and I did get together earlier this week to flush out some issues with some new ideas we’ve been batting around.

But since then, I’ve become the proud owner of a Nintendo Wii. Lots has been written about people’s experience with the new console, so I won’t spend too much time going over my experience, but needless to say, I find the whole experience quite compelling. David and I can get carried away with our grandiose visions for Crown and Cutlass, so you can probably put the following into that category. I think that Crown and Cutlass could benefit from the Wii control system. Sword fighting would be the obvious immediate connection, but ship navigation could have an interesting implementation as well.

All that to say, I’m off to play more Wii, and dream about finishing Crown and Cutlass.