Areca: The Open Sourced Backup Solution

Posted: January 19th, 2009 | Author: | Filed under: Software | Tags: , , , , , , , , , , , , , | 1 Comment »

Readers will recall the issues that I’d had some time ago in trying to force Windows Backup to play ball with an external hard drive encrypted by TrueCrypt. For some reason or another, Windows Backup refused to recognize the mounted drive as a valid backup location. One reader recommended that I try Acronis True Image out. Seeing as I like free stuff, I’ve found a free solution that solves the problem entirely.

Now it should be said from the outset that this process is a little bit ugly and a tad long winded, but that it does a really swell job and is full of opportunities to improve upon and to customize it for your particular situation.

Read on for the full tutorial – now with pretty pictures!
Read the rest of this entry »


Sea Kittens? Honestly?

Posted: January 10th, 2009 | Author: | Filed under: Nonsense | Tags: , , | 1 Comment »

This isn’t normally what I do, but a colleague linked me to this nonsense this morning, and I figured it’s worth a few cheap laughs.

PETA (People for the Ethical Treatment of Animals) has started a campaign to re-brand the image of the lowly fish. From their own campaign website:

People don’t seem to like fish. They’re slithery and slimy, and they have eyes on either side of their pointy little heads—which is weird, to say the least. Plus, the small ones nibble at your feet when you’re swimming, and the big ones—well, the big ones will bite your face off if Jaws is anything to go by.

And so they have decided to rename fish to ‘Sea Kittens,’ in an attempt to convince the kind of people who are only in favour of protection for the cute and cuddly animals to give fish some respect. These are the same reasons that preteen girls cite when deciding to become vegetarians, (a phase that usually lasts for a week at most) and not the reasons for which a concious responsible organization should be promoting the salvation of our fishy friends.

To be fair, the campaign is being run by Peta2, the arm of the organization dedicated to indoctrinating teenagers who are only really interested in saving the cuddly animals anyway. May I take a moment to ask just how many of their target audience have ever even seen Jaws?


Rethinking the Issue of DRM

Posted: January 10th, 2009 | Author: | Filed under: Software | Tags: , , , , , , , , , , , | 4 Comments »

This morning I found an excellent article called PC Game Piracy Examined written by Koroush Ghazi over at TweakGuides.com that addresses the current state of PC video game piracy, and the so called “death of PC gaming” theory that has been circulating the internet as of late. Readers will recall my DRM essay uploaded some months ago that concluded among other things that

The basic flaws inherent in every DRM system, the rampant destruction of customers right to first sale and fair use, and the fear of device lock-in and market stagnation lead this author to believe that a better solution need be proposed to protect the intellectual properties of media producers.

Upon reading through Ghazi’s lengthy ten page article, I have to admit that I’ve been forced to take a hesitant step backward and re-evaluate some of the opinions that I’ve long held regarding DRM technologies. While I still agree and stand by many of the points made in my essay, his writing has cleverly challenged some of my conclusions.

The concept of Zero-Day Piracy is one that I did not research when writing my essay, and deals with the idea that hype for any product is at its height on launch day. Many expectant fans will rush to obtain the product by whatever means possible as soon as they can, and if a pirated version of that product is available on or before launch day, the first spike of revenue (often what ensures that the studio breaks even and continues to release subsequent products) is lost. In this regard, producers realize that their products will eventually be pirated, and use DRM to ensure that their products stand available only in legitimately purchased form for at least a week after launch. While it sounds hopeless, this week of legitimate sales is instrumental in ensuring the economic success of the product.

Another part of the article that really resonated with me was the discussion of how game developers and publishers are changing their business models to adapt to the problem of mass piracy. Some are choosing DRM, while others are moving toward MMORPG’s with a subscription model, and some are moving away from the PC entirely. As a portion of this section, the author discussed things that developers and publishers can do to try and reduce the number of pirated copies of their games. One of these suggestions called strongly for more demos. I especially appreciate this, as for some reason graphics-heavy games tend to crash my video card drivers on a regular basis (I blame Vista and/or Ultramon), and I like to try a game out to ensure that it will in fact run stable on my system before putting my money down. I had this problem after purchasing Left 4 Dead the other day ($50 later, it’s almost unplayable), and thought twice about buying Far Cry 2 this morning, realizing that it would probably push my machine too far, even though my video card is listed as supported. A demo of that game would have eased my choice along considerably.

While I still believe that DRM is bad for the system in the long run, Ghazi successfully pounds the point home that publishers turn to DRM systems in an effort to offset the damage done to their business by piracy. To excuse piracy on the basis of clever DRM systems that are hard to bypass is to turn a blind eye to the destruction reaped upon the digital marketplace by that same act of piracy and to in effect lend oneself to the continued downfall of beloved products, including music, movies, and video games.

I would recommend that any person who has in the past participated in the piracy of software, movies, or music take the time to read through this article, lengthy though it may be. Entertainment distribution is in a tough place across the board these days, but PC game development in particular is a sector that many inspired artists are dropping out of all together because they can no longer afford the risks involved. These same risks can make it nearly impossible to break into the business as an independent developer, as evidenced by the piracy rate documented by 2D Boy, developers of the incredible title World of Goo. In effect, by continuing to pirate products that we know and love, gamers are contributing to the downfall of this valued form of entertainment, and whether we agree with DRM or not, I think that it is important that we all take a moment to consider the real entertainment value of these products that we take for granted, and consider the true implications of our actions.


MAX: A Half-Baked 3D Engine

Posted: January 5th, 2009 | Author: | Filed under: Education, Software | Tags: , , , , , , , , , , , , | No Comments »

Last term, I took the CP411 Computer Graphics course at Wilfrid Laurier from Professor Hongbing Fan. It was an introductory course to creating computer graphics systems using standard C++ and OpenGL technologies. All in all, it was probably the best course I’ve taken yet at WLU, and I learned an awful lot. As a final project, we were asked to create some 3D application, and I chose (without really considering the ramifications of such a commitment) to attempt a 3D graphics engine.

The result was MAX; a highly extensible, working 3D graphics engine that I would say is about par with an N64 in terms of graphics capabilities, and leaves enough room for improvement that I could probably spend another full year working solely on it. However, for 2 weeks development time, I think that what I came up with represents an excellent baseline for what is necessary of a 3D engine, and that it was a worthwhile project and a great learning experience.

Following are a number of screen shots from the project:

The engine itself, while simplistic, is robust. It relies on OpenGL for its lighting and backface removal functions, supports mouse and keyboard input, texturing, models (although I haven’t written any adapters for importing complex model formats yet – all of the models are hard-coded for now), collision detection, and basic physics such as gravity.

By and large, I had problems with the amount of work. When I decided to create a 3D engine, I made the mistake of not setting out some boundaries for what I wanted to get out of it. I had 2 weeks to work on the project, and just started throwing whatever I had at the project. This of course led to feature creep, poor organization, and a continuous reduction in expectations for the final product. That said, I really am proud of the result of the experiment, although I would definetly change my work habits next time around.

Finally, here is a quick list of improvements that I feel need to be made to the engine before it is ready to host any kind of game:

  • Improved Collision Detection: Current algorithms utilize a simplified object-aligned bounding box algorithm that simply checks whether any two bounding boxes intersect with each other. Pros of the method are that multiple bounding boxes are supported for any model, and that moving model collisions (colliders) are abstracted from non-moving model collisions (colidees), meaning that no two inanimate objects will ever be checked for a collision with each other. A better method is to project the model onto each of the axes, and check for collisions between the resulting 2D shapes. If the 2D shapes collide on every axis, then the two objects are colliding. For an awesome tutorial (albeit in flash script and for a 2D engine, but easily extensible, check out N Tutorials)
  • Object Collision Events: Currently, when any two objects in the game collide, they both stop in their tracks. This works, but it would be better to assign some scriptable action to this event, and to implement semi-complex interactions like friction and force and the ability for one object to push another. The engine already supports gravity on all moveable objects, as well as collision detection with the outer walls of the world area, so a little bit more physics would be nice.
  • Complex Model Support: This is a seriously trying thing to do. Models of more than about 50 polygons quickly become unwieldy to handle quickly in memory and require some fast code to display at a decent frame rate. At least that’s what I’ve read. Since I needed an engine fast, and didn’t want to waste my time modeling (heck, I can’t draw anyway), I created my models as hard-coded in-engine entities comprised of simplistic geometry and this did not become a concern. However, I would like to improve my model class to support a greater number of polygons and textures, and enable reading in from common model formats.
  • Texture and Lighting Class Wrappers: Currently these items are exposed right in the main class of the application. It would be nice to have some sort of abstraction around them that allows for simple palette and lighting switches, as well as for improved resource management. Also, dynamic shadows are cool, and require only one additional rendering pass that should be easy enough to implement.
  • Particle Engine and Visual Effects: An easy way to do really cool visual effects is with a simple, sturdy particle engine that supports textures, anti-aliasing, and swarm-like movement of the particles. This can be used for bugs, birds, magic spells, weather effects, leaves in the wind, tornadoes, or really most any other simple effect you can think of. NeHe has an interesting tutorial on the matter here.

Overall, I’m proud of what I accomplished in such a short period of time. As always, the code is available for download for those who wish to play with it or just check it out.

Enjoy,

Jon

Edit: Resized the images so that they aren’t all gross and stretched out. Also, my apologies to any non-programmers attempting to download the engine – all you’ll get is Dev C++ source code. I’ll compile it and up an *.exe file tonight for those who aren’t interested in the pain and anguish involved in attempting to use Dev.