Thursday, April 19, 2007

Apples To Apples - Fun Party Game

It's Thursday, time for some fun. When I worked at a game company we used to have Thursday game night every week where we would turn off the computers at 5 and head to the conference room for some old fashioned gaming. We were a small group (about 8) and had two exceptional game designers who also had large collections of board games. I'm going to take a quick diversion from game development each Thursday and talk about some of my favorites.

One of our favorites was a party game called Apples To Apples. It had just come out and is now available everywhere, but I'm sure not everyone has heard about it now? Very very simple to play and a lot of fun and laughes for a group of 4-10.

The basics, one person (let's say my friend Hank) plays a random green card face up. It says "annoying". Everyone else has to play a red card (face down) from their hand that they think Hank will choose for the word 'annoying'. You have a hand of 8 preprinted cards and the choice of card you play would probably be different depending on which person in the group is choosing. The cards in my hand might have things like. "Marilyn Monroe", "My Social Life", "Hockey", "Celine Dion", "Tornados", and "Strawberry Pie". After everyone has played a red card from their hand face down, Hank might end up with cards like: "Craying babies", "The NRA", "My Haircut", "A bar room brawl", and "Celine Dion". (you can see which card I chose. feel free to leave an angry comment. Even though I think the NRA is annoying that person doesn't know Hank is actually a gun lover). Hank turns them up one at a time and reads them out loud. After, he picks the one he think matches "annoying" the best. Now, if Hank thinks the way I think he should think, he'll choose "Celine Dion". If he does, I first give a Homer Simpson Whoooo Hooo, then I get to keep the green card. First one to some number of green cards (typically 4 or 5) wins. See, simple.

Many of the card combinations are hillarious and you'll have a great time with any group. A very fun game and did help build cohesion within our team.

Wednesday, April 18, 2007

Is Torque the best game engine for my project?

I was asked in an e-mail if Torque would be the best engine for a specific project. I wasn't given much information on the project, but this is my opinion on the matter.

For commercial games Unreal is the king and owns about 90% of the market. It is in the $100-200k range to license so it is out of reach for anyone that isn't very very serious. I'm not completely sure on the pricing because it's something that isn't advertised. They price it on a case by case basis and we tried to get a license for Chapman University and that was the range we were given.

The next most popular engine for commercial games is a tie between Quake and Half Life. Both have similar licensing expenses, but rumor has it that the Half Life engine is very hard to understand. I don't know first hand. Of the three I think Unreal is probably the easiest to learn having spent some time with it. Torque has a very strong following, but is mostly seen as a hobbyist engine. That doesn't make it bad by any means, but that is the view. It is well supported and while there is a steep learning curve, it isn't any steeper than the other engines out there. There are a number of commercial games available on it and the company just released a next gen version of the renderer so it is still growing and doing well.

The next thing to keep in mind is the game itself and if the engine supports the type of interface you are designing. Each engine has different specialities and one engine may be best for one design and wrong for another. Torque is best at FPS or third person multiplayer games. There is also a 2D version of the engine which I would also highly recommend.

Torque Game Engine (3D) does not have a good physics engine. I think the others are better, but there are a lot of threads out there on the Torque forums that talk about integrating other physics libraries. The 2D version has a great physics library.

Monday, April 16, 2007

Game Development or Game Playing

Not all game development is without it's fun side. One of the main reasons I'm into game development as a hobby is that I've loved to play games since I was a kid. It all started with that pong game my dad bought when I was about 9. The console wars have been going on ever since.

My current console is a ps2 which I have not played in a while. I was playing a lot of game boy until I gave it away to an orphanage in Africa when we were on a mission trip. I do miss it, but those kids really loved it a lot more that I ever would.

My current game is World Of Warcraft (Character Ironwood, Realm: Duskwood) One of the most addictive games I have played. Probably the most addictive for me since I got to 67% complete on GTA III, Vice City and San Andreas. Anyone who has played those knows 67% complete is too much fun time and not a lot of TV. I'm not sure where I stand in WoW, but I'm sure it's only in the 20% range at level 31. Lately I've slowed my progress and have been working on my Leather Making and Cooking skills. The game is very open ended and has a lot of ways to play. My only complaint is that I'm a bit bored with the same monsters over and over and over with a slightly different skin or model, but it's still a lot of fun.

With 8 million subscribers and still growing don't take my word for it, this is a fun game. Don't start if you don't have some time to waste. I started in January and three months later I'm finally starting to get a little bored with it. I'll probably drop my subscription in June if my usual game life cycle runs it's couse. A very fun game.

Friday, April 13, 2007

Torque - Torsion IDE or Eclipse

I've been trying the Torsion IDE for Torque Game Engine this week. Before I was using TextPad or CodeWright and just managing the projects by hand. It wasn't a big deal before, but I did have to find the error lines by hand.

The biggest difference is that the error output has a clickable interface and keeping the errors red makes it much easier to find the errors in the log. My only gripe so far is that the log window is not searchable which is annoying, but it has really sped up my workflow in so many other ways that I think I'll probably buy it when the 20 day trial is over.

I've seen some mention a that there is an eclipse plugin for Torque. I've been a long time user of NetBeans. I typically find an environment that I like and stick with it until it's either irrelevant or something very compelling gets me to switch. I'm doubting the Eclipse plugin is as closely tied to the Torque engine (it has a built-in debugger I have not yet tried) as the Torsion IDE and wonder if the error logs are hot linked to the source lines?

Has anyone tried the Torque plugin for Eclipse and have any insight? It might save me some time and frustration of learning yet another IDE although that will probably start some sort of flame war with people pitching one IDE against another. My view is that the tool that works for you/me is the best tool and it's just not worth arguing over.

Thursday, April 12, 2007

Torque Script - datablocks - very confusing

It took me quite a while to really understand datablocks in Torque. All the books say exactly the same thing.


Of all the features in TorqueScript, Datablocks are probably the most confusing. To make things worse, they are central to the creation of most objects, which means you need to understand them relatively early.

I think all the books plagiarized this from the official documentation on datablocks.

Datablocks are just shared objects that contain static data that doesn't change from one object to the next. So the engine can send it once over the network and reference it by id from then on. I get this and I think every explanation made this perfectly clear. The problem is that all the callbacks from the engine into the script code comes through these datablocks. For instance:

datablock StaticShapeData(SomethingData)
{
// Basic Item properties
shapeFile = "./mymodel.dts";
};
function SomethingData::onCollision(%this, %obj, %col)
{
// your code here
}
This really confused me and I was trying to create my own object types to no avail. The code above creates a type SomethingData which will show the 3d model contained in the file mymodel.dts. This is fine, but the call to onCollision is done on the datablock object (SomethingData) versus the object itself which in this case ends up being a StaticShape. Since the datablock is static and shared across all instances I couldn't figure out why or how you kept data in individual objects.

I finally had an epiphany when I noted that %obj is always passed into the callbacks and is the actual object instance. Individual changes and values can be made in this object. Seems simple enough now, but this killed some brain cells for me.

So I placed this comment in one of my pieces of sample code for class.

function SomethingData::onCollision(%this, %obj, %col)
{
/* * MANTRA - REPEAT OVER AND OVER UNTIL DATABLOCK UNDERSTANDING SETS IN
* 1. %this is the datablock * 2. %obj is the object instance
*
* of much less importance
* 3. %col is the object colliding

Here is the lecture where I tried to explaing this. I think the notes are still a little jumpy, but the in person version seemed to clear things up for students. Your fuel economy may vary.

Wednesday, April 11, 2007

Torque Script - Behind The Scenes

Torque script is the scripting language behind all of the Torque Engines is a simple, but robust scripting language that is very easy to learn. All game engines include a scripting engine and Torque is no different. For non-game developers, the idea of a scripting language may seem like a negative, but there aren't any commercial games that don't use a scripting language.

Most non-game developers may at first think that this means the source to parts of your game are shipped with the game, but this is not the case. Torque script is compiled into a bytecode format and saved to a separate file (.dso extension). Everytime the game engine runs it does a date comparison between the source (.cs) and the compiled files. If the source is newer, it re-creates the bytecode file. If the source file does not exist, it simply uses the bytecode file. You simply ship your final version without the source files.

This is transparent and very fast. When you are developing games using this system you never see the compile taking place. One drawback of this system with Torque is that it isn't blatent when compile errors happen and you have to go back and look in the logs when you've made a bunch of changes. In most cases I've seen it will simply use the older .dso file and you'll be caught wondering why that echo/printf you just put in the code isn't appearing. As with most tools, once you get used to it, it is not really a problem. There is an editor called Torsion that will check/monitor your syntax, but I have not tried it. Everything I've read says it is highly recommended.

Tuesday, April 10, 2007

Torque Game Builder - TGB

Torque Game Builder (TGB) is another product I used in my game development class. It is a 2D version of the game engine that uses the same scripting language as the Torqe Game Engine (TGE) which is 3D.

Torque Game Builder was much more polished as a product, but it doesn't include source with the indie or edu license which is a disappointment, but not a good reason not to use it. This class was supposed to be a 3D class, but I did use the TGB for two weeks at the beginnning of class to give students an easier introduction to the scripting language. It was a lot easier to deal with the scripting language without the added third dimension. Once you add that third dimension everything gets more complicated.

Another big difference between the two is that TGB has a much better physics enginee. The physics engine in TGE is not as robust, but it does work for most FPS style games. The TGB physics engine has all the bells and whistles you would expect. As with TGE, TGB includes a multiplayer networking engine at it's core. Even single player games would have the networking code attached at the core. It's not a lot of over head, just the design for multiplayer at it's core. If you are going to develop a multiplayer game I do suggest buying the full license ($495) so you have the source and can run multiple clients on the same machine during development.

I think the TGB is very easy to learn and a great platform for building 2D games. For $100 there is no comparison.

Monday, April 9, 2007

Motivating students with a contest

A $100 EB gift card prize goes a long way in motivating a group of students. Sure it costs me a large percentage of the money I make teaching the class, but if I cared about the money I wouldn't teach the class in the first place. Adjunct teaching doesn't pay, at least not for me. I love to teach and the little I do make is just an added bonus.


I've done the contest once before and the work was amazing. This year I've upped the ante and invited a bunch of execs and hiring mangers from local game companies to be the final judges. This will be a great opportunity for the students to show their talent and for these game company folks to hire amazing young talent. It also motivates the students to spend extra time on their projects which is the only way to learn to program. All sides are primed and ready and it seems like the perfect matchup so far.


We still have 6 more weeks of development time left for the students, but after two weeks officially working on their final projects I am throughly impressed with the results. This is going to be much better than last year.


For those that are worried about it, the contest placing has no bearing on the grade for the students' final projects. I'll grade under the same rules as the contest, but that grade is separate from contest placing.

Friday, April 6, 2007

Broader individual knowledge helps the entire team

More thoughts on the 3d game development class I'm teaching.I'm about halfway through the semester and I just stopped giving 'busy work' assignments. Everyone is working on their own projects. The last busy work assignment I gave I introduced them to the installer. My choice of installer is NSIS, since it's free and something I have used on other commercial projects.

What does this have to do with a Game Development class? A ton. From the very first busy work assignment I forced my students to think in terms of a full cycle game. Everything they turned in had to have a splash page, a main menu and a way to cycle back to the main menu. The installer extends this concept of a full cycle game. Isn't this what they are going to deal with in the real world?

Most gaming books seem to only focus on the mechanics of the actual games, but to me that is only about 30% of the overall work that needs to get done. The real work is in the details and those details really matter. As an added bonus, once this class is over each of my students will have an full game with an installer they can give to a potential employer or put on a portfolio website. These students will have a distinct advantage over someone that just says they took a game development class.

To me this has a lot to do with getting a job, but it also has to do with the reality we all face. It is okay to specialize in one area of a project, but you still need to understand a little about the entire process. If everyone has broader knowledge the team will function more efficiently and increase the value of the products you create. Thus increasing the value of the individual to the team. I'm trying to train students I would want to have on my own team.

Thursday, April 5, 2007

Blender. Free 3d modelling tool

As I mentioned in the previous post, I'm using Blender for modelling in my 3D game development class I'm teaching. I think Blender is great and the best value for the price (free!) of any modelling tool available. That said, it isn't for everyone. I did a full lecture on Blender and found that my love of Blender is related to my love of the text editor vi. In fact I used this opportunity to give the students a free introduction to vi. If you hate vi and think it is the worst editor ever, I guarantee you will not like Blender. If you like (or simply accept) vi then you will probably find that once you know about 20 key combos you'll be proficient with all things Blender.

Once I learned those key combinations I found that it is the fastest modelling tool I have ever used. I actually love the interface. I still find some process require a revisit of the documentation (especially for animations), but once I have them down it is fast.

The best way I found to learn Blender is with this set of Blender video tutorials.

The next best piece of documentation is this Blender Wiki book.The third place is the official Blender documentation.

If you have some extra time on a new modelling project give Blender a week and I think you will be hooked.

Tuesday, April 3, 2007

3d game development tools and Torque

The tools we chose for the game development class were driven mostly by the choice of books, but many of them are cheap/free and industrial strength as well and I would use most of them on my own projects even if I had some sort of budget. The engine we are using is Torque, but all these tools would be useful no matter which engine you use.

PaintShopPro is a great paint program. The first edition of the book used this tool, while the second edition uses Gimp. Since I already had a number of students in an earlier class that had used PSP I chose to stick with it. Also, it is my favorite paint program and in my opinion better than Photoshop for everything except CMYK. I've done a ton of image and print work over the years and PSP is an amazing value. Corel bought it from an independent developer a few years ago and I've been expecting a $400 price increase. I'm sure I'll grudgingly switch to Gimp if that happeens.

Milkshape is the tool used in the book and we made sure it was available for the students. It's not the best 3D tool by a long shot. It is missing a lot of features which also makes it a lot easier to learn. A double edged sword, but still a great value for $25.

For texture mapping you have to used a second tool called UVMapper. It's free and easy to use.

QuArk (Quake Army Knife) (free) is the tool we used to create interiors. Interriors are BSP trees that have a lot of properties that speed up rendering and collision detection. The cost is that the tools that do BSP are all very confusing and QuArk is no different. If you use QuArk for Torque, make sure you read the PDF tutorial that comes on the Game Programming All In One CDROM (it's not printed in the book any longer). It is a great tutorial that will take a lot of the guess work out of a confusing UI. Also, make sure you download QuArk from the Garage Games site and not the one main site as it's already configured for Torque. The Unreal editor is a BSP editor and it is just as confusing. Just because you pay more you are not going to find a good BSP editor.

Audacity (free) is not my first choice of audio tools, but my first choice (CoolEdit by Syntrillium) was purchased by Adobe and the price raised by $400. I'm not one to pay hefty fees for software and have found that I can live with Audacity. I'm going to be really mad if Corel does the same thing with PaintShopPro.

Blender (replacement for Milkshape) is my last tool of choice and it is a controversial one. You either love it or hate it. Blender was a commercial 3D editing tool that moved into the open source community driven world and is well updated and supported. It is absolutely free. That's not the controversial part. You either love it or you hate it as the UI takes a little getting used to, but once you have it down it is extremely fast. The commercial equivalent is 3D Studio Max and is used by 98% of the game studios. My only problem with it is the $3500 price tag. I'll do another blog entry just on Blender.

That's my list of (cheap/free) software to use in 3D game development.

Monday, April 2, 2007

Books to use with Torque

In choosing books for the game development class I am teaching we really only had three choices for the class. I don't belive I made the best choice with the limited time I had to choose and would choose differently now.These are the two books I would choose for the class if I had to choose again.

3D Game Programming All In One and Advanced 3D Game Programming All In One.

These two books compliment each other very well. The first book is more oriented towards a general overview and the tools to use and the second one has a much better focus on Torque Script and programming.

The other book that I would leave off the list is:The Game Programmers Guide To Torque

I thought this book would serve as a better reference, but it seems to be a wiki that was turned into a book and isn't detailed enough as a reference, or descriptive enough as a book. It jumps around too much and doesn't help give a clear understanding.