Thursday, January 27, 2005

Sinus Infections

Sinus infections suck. Ick. And the meds I'm taking made things worse. Ick.

So... I've been ripping (is that what you kids call it?) my home videos since I don't have the mental capacity to do much else. I've been using kino to pull the video in from Super8 and MiniDV via FireWire in Linux. I encoded the raw DV into MPEG2 and will hopefully use that format to archive it all.

Ugh. Can't think. Tried to do model design and can't... focus... my... eyes...

Friday, January 21, 2005

Master List of Articles

I'm keeping a master list of articles up on my IU Computer Science alumni page. If you are curious about the stuff I write, it's all linked from there.

Thursday, January 20, 2005

Queensbury Rules

Queensberry rules of boxing:

  1. To be a fair stand-up boxing match in a 24-foot ring, or as near that size as practicable.
  2. No wrestling or hugging allowed.
  3. The rounds to be of three minutes' duration, and one minute's time between rounds.
  4. If either man falls through weakness or otherwise, he must get up unassisted, 10 seconds to be allowed him to do so, the other man meanwhile to return to his corner, and when the fallen man is on his legs the round is to be resumed and continued until the three minutes have expired. If one man fails to come to the scratch in the 10 seconds allowed, it shall be in the power of the referee to give his award in favour of the other man.
  5. A man hanging on the ropes in a helpless state, with his toes off the ground, shall be considered down.
  6. No seconds or any other person to be allowed in the ring during the rounds.
  7. Should the contest be stopped by any unavoidable interference, the referee to name the time and place as soon as possible for finishing the contest; so that the match must be won and lost, unless the backers of both men agree to draw the stakes.
  8. The gloves to be fair-sized boxing gloves of the best quality and new.
  9. Should a glove burst, or come off, it must be replaced to the referee's satisfaction.
  10. A man on one knee is considered down and if struck is entitled to the stakes.
  11. No shoes or boots with springs allowed.
  12. The contest in all other respects to be governed by revised rules of the London Prize Ring.


Evidentially the Acme company was busy selling spring-loaded shoes to boxers. Rockets were okay, however. Or giant rubber bands that slingshotted boxers into the ring.

"No hugging allowed." Please, leave your problems at the door.

Wednesday, January 19, 2005

(Don't) MakeHuman?

MakeHuman is a nifty little project. It's basically a human mesh that's automagically deformable based on a set of targets. Considering how hard it is to create a believable human mesh when your software budget is... oh... nothing it's a fantastic way to develop hi-res or low-poly figures

One really interesting discussion isn't about the tool itself, however, but its licensing. Reading through the forum threads, content creators and developers have been trying to sort through what MakeHuman's GPL license means to content created by the tool. The developers seem to have intended content created by MakeHuman to not have an inferred license, but instead be usable by whomever. But the Free Software Foundation seems to think otherwise.

>> THE QUESTION IS:
>> The output of MakeHuman (models, images) must be forced GPL'd?

Yes.


This is an interesting contrast to Blender itself, which states:

So I own the copyright to all output?

In almost every circumstance for blender, only the code and other GPL'd files themselves are covered. Any output of such material is copyright the person who produced the output, in this case, the artist.


It seems that the difference is with how MakeHuman defines the mesh you're working with. Targets are modifications on top of a base mesh, both of which are GPL'd. And since both are GPL'd, changes to the targets and base mesh are also GPL'd. If it had all been done in code, I would imagine the resulting mesh would not be GPL'd.

I can understand now why commercial software vendors are scared of touching open source software. It gives me the willies to just post these legal mumblings to a blog nobody will even read. The thought of being sued is too harsh for any small business or independent developer to consider. GPL can be weird... usually free software "acts" like commercial software, but in instances like this it doesn't. For example, you'd expect to be able to use meshes created with Poser in whatever darn way you like, but with a license that extends onto derivative works it's not so clear cut.

Sunday, January 16, 2005

The Next Thing

IGN posted an article about the Future of Game Design - something which doesn't focus on the technology evolution of gaming but the evolution of features in gaming.

The article's emphasis on what a totally immersive game should "feel like" is important - it's not about how many textures or render passes you throw at an engine, it's about how you should be able to interact with your environment. One idea I particularly liked was the concept of being able to transfer your player characters into sequals of a title... something done in ye olden days but not seen too often as of late. It's a great idea, especially with RPG's, and fosters an attachment to your character that actually makes you care about the series.

It also made me think about the old King's Quest series. It's what inspired me to get into gaming in the first place... figuring out how to make a custom boot disk to manage my @#$!$#% 640K of base memory and still load MSCDEX.EXE took a lot of research. But in the end, hearing my lovely 16-bit Sound Blaster belt out all the speach from my characters in King's Quest V was worth it. And when VI actually ran in Windows 3.11 with amazing 16 bit color depth... I was just the mac of all boot-loading h4x0r skillz. I lived in the kingdom of Daventry until DooM quaked everyone's world.

Speaking of Quake... I remember looking at the alpha of Quake that John Carmack released, prewarning the world that everyone would now need the new Pentium's floating-point unit. Unfortunately I had a 486DX2/66... with while it had a math co-processor didn't quite give the framerates it needed. In fact, that's the first time I ever worried about frame rates... in a room with two floors (both were visable at the same time and had entities over top of each other), a few crates and a nailgun in the center.

I upgraded two semesters later. But it wasn't until six months later, in a fit of self-loathing and depression, that I made one of the most evolutionary purchases of all: the 3dfx Voodoo 3D OpenGL accelerator. While it couldn't do 2D content (you had to use a pass-thru cable which would use your standard video card for desktop stuff) it was the first card dedicated to blitting ploygons as fast as you could handle.

Suddenly QuakeGL kicked the door open. Textures were smooth and no longer pixelated. Water was transparent. Windows were tinted and see-thru. Explosions launched particles everywhere. The revolution had begun.

Next up, believe it or not, was Tomb Raider. It's 3rd person camera angles and OpenGL rendering engine made everything look damn pretty. Not only that, but she could climb, scale, roll and dive like an acrobat. The CPU didn't need to be dedicated to rendering - it could handle larger character animations as well.

Say want you want, but progress has been incremental ever since. Yes, now we have volumetric shadows, per-pixel lighting, glistening texture shaders and refractive water. System Shock and Deus Ex represented another step in "gaming-as-cinema," where you feel like you're the lead role, director and writer of your own action flic. Your character evolved, your choices weren't predetermined, and your actions required forethought. Storytelling again took center stage - and while gameplay became increasingly nonlinear it was still largely reminicent of King's Quest and 7th Guest.

Half Life 2 seems to be the greatest example of all the incremental advances being coalesced into a single release: lighing is pretty, eyeballs are shiny, water is watery, NPCs react in intelligent ways and the storyline is engaging. It's the fruit of our cooperative looms.

So what's next? I think it's not going to do with technology per se, but instead who is going to create new genres for the gamescape out there. The MMORPG genre is a new one that has shaken up conventional ideas about gaming and social interactions, and has made player networking a central part of the gaming experience. This type of virtual society has definitely split games into two ranks - the massive multiplayers and the single players. While consoles are just now jumping onto the multiplayer bandwagon, computer gamers have lived there since QuakeWorld. People (such as myself) who don't have the time to dedicate their lives to 24/7 character advancement often live in the single player or quick competition multiplayer world... ye olde frontier. Some people like to leave a game then come back two weeks later to find it exactly how it was. And some interact with enough difficult people during the day that the last thing on their mind is dealing with some dufus player-killer.

I'd like to think that the next genre of single player gaming will be driven by small developers willing to take a risk. Look at Uplink - it was small, involved, engaging, brilliant. The user interface was the game, and you really were a hacker. How freakin' genius is that?!?! Uplink, in my eyes anyway, set the standard of what hacking should feel like in a game. And that kind of genre-eluding creativity is what will lead to the next... thing.

Wednesday, January 12, 2005

Tutorial Authoring

I've been trying to decide the best format to write my tutorials in lately. The Wiki site at http://community.crystalspace3d.org is nice now that I have editing rights - people can offer feedback and the HTML/CSS layout seems fairly sane. I was also looking at Texinfo, which is what the Crystal Space documentation is written in.

I've authored pretty much everything in OpenOffice, which I've been very happy with. Recently I've just been doing straight HTML exports (which are freakin' HUGE) and PDF exports which I post to my old IU Computer Science account. I don't want to leave them with that burden permanently, tho.

Monday, January 10, 2005

Sure Ways For a Project to Fail

There are several good ways to guarantee a project will fail:

1. Announce It
If you announce a project before you actually have a working version, it will fail. The lil' boxing game I mentioned previously isn't really a project per se, more of a means to create more tutorials - so hopefully I haven't cursed it. It may never see the light of day, aside from whatever knowledge I glean from it and put inside of my articles.

I can't tell you how many people I've seen announcing "I need developers to make a totally huge project of amazing proportions." And everyone ignores them. Why? No one cares. You can't pretend to be the manager of some huge project unless you know what you're doing. And you don't know what you're doing unless you've done it.

If I made two ugly stick figures headbutt each other until you hit ^C I'd get way more interest than by claiming I'm creating a virtual universe unlike one that has ever been seen by Sony, Lucas Arts or Blizzard.

2. Name It
If you think of a name for your project before you actually have a working version, you're in it for the wrong reasons. A project doesn't need a name until you want to communicate regularly about it, and it doesn't need to come up in that many conversations unless you've announced it. And if you've announced it, you've violated point 1.

3. Promise It
This is the biggest one. If you ever, ever promise something will be released it never will be. Have you ever noticed that the best game development companies keep everything under tight wraps until they go into beta testing?

Hype kills a project. You have a split second to get people interested in your project, and if you don't have enough stuff to fuel there interests then they'll move on. Projects promised on concept art and a five-person development team might generate interest for five seconds, but
unless you have a demo, a beta or at least a smattering of screen shots everything will quickly turn to vapor.


Low expectations! That's what I'm all about!

Damn. Do I sound cynical or what?

Thursday, January 06, 2005

Modeling for the Camera

My previous contributions to the Crystal Space community have been my tutorials on map creation and character modeling. It got me a brief stint as a contributor working with the PlaneShift development team, but evidentially I've fell out of their good graces when I took time to look for a new job last summer. Since then I've been working on revising my tutorials, this time concentrating on Blender 2.35 as the sole design suite. I've been happy with the changes so far, and have posted the older and currently-being-revised versions on my IU CS site. I've also taken time to Wikify them (but alas, lost the witty footnotes) and place them as articles on the Crystal Space community site. They've received a fairly good response thus far.

I tried to start writing code tutorials, but then I realized how incredibly unorganized my brain is when it comes to writing clean C++. I deleted about 10+ pages from the tutorial because it made no damn sense, and thus decided to actually code for a while so I can organize my thoughts before I try to organize someone else's.

Then comes the chicken and the egg paradox: do you start writing code before you have any content, or do you create content before you actually have anything to place it in? I tried just creating half-assed content so I can get hackin', but I ended up with half-assed code. But if you're going to create nice content, why not have it accomplish something purposeful? Otherwise you're just wasting your time.

So I decided to start writing my first full-sized game. I didn't want to make anything grandiose... not a sprawling landscape for an RPG, but not as simple as a logic game. Not too many animated models... I'd like to keep framerates up and keep things simple to debug. Plus they take forever to design. How about...

Boxing!

I'm working on building a ring first, then a couple of character models with quick left hook animations. Thanks to the lovely MakeHuman project this shouldn't be too bad. I'm not sure how I'm going to render the crowd... that might be my first trial with mass-sprite animations. Or maybe I'll make it a two-state bitmap that flips back and forth like the old Nintendo days. Heh.

After I get one ring and one boxer, I'll work on the code... getting a third-person camera working intelligently promises to be interesting.

Cross your fingers folks... I'm hoping to have the artwork done by February...

Wednesday, January 05, 2005

In The Beginning... There Was WEIRD...

I decided to create this webspace specifically because I expect zero people to read it. I have a stupid dream. And I figured I'd document it in case the stupid dream became a brilliant reality.

I remember trying to invent video games as a kid, in lieu of whatever kids my age did then (I never did figure it out). I remember the DoomEd tools when DooM came out and creating ugly levels with custom textures and nothing but secret rooms. I remember playtesting an awful educational RPG for my teacher in fourth grade. I remember spending 16 hours a day for four weeks trying to create a version of minesweeper using Motorola 6800 assembly using a frankensteined-from-1971 workstation and a 80x24 character display.

I remember having fun.

Now I'm a programmer. Sort of. Not really. My title says "Web Architect" but I've neither mutated into the spider nor built any interesting web applications. Real jobs aren't fun... you spend the time trying not to incite trouble and avoid the work that sucks the most. In truth, I'd be happy if I could just code away. But when you work for a company it's more about social engineering than hacking.

Which is why I'm here.

My job is 9-5, and I'm putting aside my heavy volunteer work for now. I've been working on learning and writing tutorials for Crystal Space, learning 3d modelling and prepping my C++ skillz. I'm hoping to start hacking again.

Most likely this will be one of my stupid pipe dreams that never becomes realized. However, unlike my previous pipe dreams, this one has actually persisted for several years. So who knows... maybe I'll get back to the same level of inspiration I had with my Apple IIe.

It never hurts to try.