Thursday, July 06, 2006

Basic journey of a packet

" The purpose of this introductory article is to take a basic look at the journey of a packet across the Internet, from packet creation to switches, routers, NAT, and the packet's traverse across the Internet. This topic is recommended for those who are new to the networking and security field."

read more | digg story

Tuesday, July 04, 2006

How To: Create your own game company, Part One

Posted Nov 28th 2005 4:40PM by Victor Agreda, Jr.

While it's a little cost prohibitive to start developing Xbox 360 or PS3 games from your bedroom, let's not forget games like Roller Coaster Tycoon and Alien Hominid went from humble beginnings to financially successful franchises. Although you'd have to spend hundreds of hours developing AAA titles, there are some ways to get slick games up and running quickly. I'm going to show you a few ways to do just that.

In this installation we're going to look at the beginnings of your company. Starting with a great idea, creating all the necessary assets, and developing the prototype. Next time, we'll look at further development, building your team, and expanding your empire... And wherever possible, we're going to use free or shareware tools. If you're interested in the business end of things, and a good overall setup to the crazy business of games, read Gregg Man's article here. A little dated, but still topical.

Of course, nothing beats a great idea. Unfortunately, good ideas are everywhere. What you need to do is make sure your amazing idea is developed properly. My suggestion is to read Chris Crawford's classic "The Art of Computer Game Design" (it's a PDF link at the bottom of the page). Honing a great story into amazing gameplay is step one. Crawford's book is only the beginning, and you'd do well to rad some informative articles at Gamasutra for more insider tips. A great story with lousy gameplay will get you nowhere, while a great game with minimal story could be the next Marble Madness. Now let's get to making our fantasy reality by creating our graphics and wiring the game engine together... Big list of apps for developing your game after the jump...


The choices in platforms for a game makes a big difference in the tools you'll need to create everything. Using Flash, for instance, often means never having to touch a 3D modeling application. Something like Java could draw images on-screen in realtime, all through code.

But if you're a hobbyist game creator, I'm assuming you're going to need graphics for your game, and a somewhat simplified game engine. The tools I've selected won't do what months of time in C++ and 3ds max will do for you, but they're perfect for creating a usable game in a decent amount of time.

The general workflow I'm assuming here is 1) create graphics and models, 2) create game code, 3) distribute. This is a gross oversimplification of the process, as you often will be testing small bits of code while creating visual assets, and game-testing constantly. I also take for granted your idea for game story and game play has been developed. Check out the VRML narrative storytelling page for ideas on interactive storytelling if you need more inspiration.

Graphics
You'll need to create two-dimensional graphics for textures on 3D models, and to paint a background world. A quick rundown of image editors usually pits the free Gimp versus the industry-standard Photoshop. I'll agree those are the top of the game (you can make Gimp look like Photoshop using GimpShop). But when working in small teams you sometimes have to just grab pre-made textures for scenery and levels. Check out the collection of links to textures at 3DLinks and the tons of excellent freebies at Mayang's.

I wrapped up a boatload of free 3D apps here earlier, but for my money Blender is still the best. There's a huge online user group with tons of help, and a script for creating humanoids (one of the most laborious parts of the process). Blender has it's own game engine inside, and uses Python for scripting. Technically you could create an entire game in Blender, but with the web plug-in in developer limbo, and no real documentation for the game engine any more, it's a little risky... Still, looks like CrystalBlend, a combo of Crystal Space 3D (an open-source 3d game engine) and Blender could be promising...
gameco

Engines
If you want to get started really quickly, there are tons of options out there. Obviously you want a step up from just modding a game (although some mods almost qualify as totally new games). Some apps are an in-between of a real engine and a mod. Case in point: FPSCreator. It's a pretty simple FPS engine, with scripting support for more customization. Most everything can be done using drag-and-drop, and it comes with an assortment of pre-made models and characters. It's like Poser for games, really.

What I tend to think of for prototyping games are the BASIC-derived engines, like DarkBASIC and BlitzBASIC. Both are geared towards beginning game programmers, and both languages are geared towards rapid game development. Dark comes in regular and Pro versions (Pro adds more developer-friendly tools and better mapping). Blitz comes in a number of varieties, with one geared for 2D games, and another for 3D. Blitz also offers a free app called Maplet, designed to help build game levels quickly.

I know discussions of tools like this can get religious very quickly, so I want to point out I'm pretty neutral when it comes to these things. I have a particular way of programming, as do others. I recommend anyone sit down and look at the documentation and support communities before picking any pony... You're going to have to ride this one decision for a while, so choose carefully.

Some other tools include: GLBasic, and excellent choice for those with programming skills; Unity is Mac-only for development, but will export Windows games; and Cube looks cool, but I haven't had a chance to tinker with it. There's also Adventure Game Studio, Coldstone, and RealBASIC out there.

For those of you way ahead of the game, and willing to tinker with C++ you can check out Crystal Space 3D, Genesis 3D (both are open source), or industry veteran Torque. Project managers like Torque because it's a known quantity. GarageGames provides an indie license for $100 (and a free demo download), which is pretty reasonable for what you're getting... For a thorough list of realtime 3D engines (not necessarily suited to gaming) check out this list.

What tends to distinguish the game engines versus a simple graphics engine is the inclusion of interactivity wiring (like triggers for actions) and a physics system. Unity has an excellent physics engine, as does Torque. As I said, you'll want to test these or read the forums for each product to see if it fits the type of game you're making. Who knows, you might just need Flash. That's not a bad idea, considering you can desploy swf's to a broad audience (PC's, cell phones, PDA's).

And speaking of distribution, next time we'll look at finishing up your game and deploying it to the world. Most often this is online (especially for server-based games), but I'll take a peek at some physical means of distribution too. We'll also examine methods of payment for your hard work. If anyone uses a tool that can't live without, be sure to post in the comments below.