Whaaa?
Written on 12 May 2008 by NebsWhen I think about how primitive human communication skills are I really begin to feel alone in the universe. You can never really know what somebody is saying to you. It is always filtered by your own experiences. When someone tells you something you try to imagine where they are coming from. And this is impossible because all you really know is where you are coming from. The other persons different life experiences are unique to them and you can never fully have access to the meaning behind their words. Of course you can get a pretty good idea but in reality its still just a guess. You hear couples saying that they know what their partner is thinking and that they can finish each others sentences. Now that may be true to some extent but they say they can do that based on the fact that the partner is probably showing some form of consistent reaction to some stimulus. So you can predict with relative accuracy what they are attempting to communicate. But because there is never a total understanding in the first place the data that the partners have stored about each other is never perfect data. Now of course when I saw this I’m talking about minutia here. Our forms of communication is good enough to have gotten us to where we are today. (If you call the current state of things a good thing). IM sure people will tell me I just haven’t met the person that can tap into my psyche yet. But I don’t believe I can ever fully understand another person. Our minds are alone with no-one to talk to but themselves. And no the magic old white guy in the sky does not play into my thoughts on this.
Snakes in Motion
Written on 10 May 2008 by Nebshttp://www.ryane.com/Downloads/RattleSnakes.wmv
Here is a little bit of the HD video I got of the snakes… No sound. Will get that later.
The new project.
Written on 10 May 2008 by NebsI am super excited about our next project. We are currently in the process of upgrading our engine and laying out the initial design and characters. There is a ton to do but I am super stoked.
Snake Pit
Written on 9 May 2008 by NebsMy brother and I found a rattlesnake den about 200 yards from the house… We counted well over 50 snakes scattered around. I also got some really nice HD footage that I will post later.
Plotting a Spiral in .mel
Written on 6 May 2008 by NebsThis script creates a spiral. Play with the settings to get a bunch of different effects.
global proc makeOpenSpiral()
{
//tweakables
int $points = 180;
float $startRadius = 0;
float $endRadius = 2;
float $xOrigin = 0;
float $zOrigin = 0;
float $yOrigin = 0;
float $degrees = 1800;
//
float $increment = ($degrees/$points);
float $radiusIncrement = (($endRadius-$startRadius)/$points);
float $step;
float $radialStep;
string $cmd = “curve -d 3 “;
for ($i = 0; ($points+1) > $i; ++$i)
{
$step = $increment * $i;
$step = `deg_to_rad $step`;
$radialStep = ($startRadius + ($radiusIncrement * $i));
float $xPos = ($xOrigin + ($radialStep * `cos $step`));
float $zPos = ($zOrigin + ($radialStep * `sin $step`));
// float $yPos = `sin $i`;
// float $yPos = ($points / ($i+1));
// float $yPos = (($i+.01)*.01);
float $yPos = $yOrigin;
$cmd = ($cmd + ” -p ” + $xPos + ” ” + $yPos + ” ” + $zPos);
}
eval $cmd;
}
Plotting a circle in .mel
Written on 4 May 2008 by NebsI am trying to refresh my geometry knowledge… So I decided to start by making a script to generate a polygon circle.
global proc makePolyCircle()
{
//Tweakables
int $points = 20;
float $radius = 1;
float $xOrigin = 0;
float $zOrigin = 0;
//
float $increment = (360/$points);
float $step;
string $cmd = “polyCreateFacet -ch on -tx 1 -s 1 “;
for ($i = 0; ($points+1) > $i; ++$i)
{
$step = $increment * $i;
$step = `deg_to_rad $step`;
float $xPos = ($xOrigin + ($radius * `cos $step`));
float $zPos = ($zOrigin + ($radius * `sin $step`));
$cmd = ($cmd + ” -p ” + $xPos + ” 0 ” + $zPos);
}
eval $cmd;
}
Maya as a level editor (OVERVIEW)
Written on 3 May 2008 by NebsI realised in my last post about this I just jumped into creating a material system in Maya. Lets take a step back and list all the major components that are required to really do the job right.
Maya has some strengths and weaknesses as a world editor. A major strength is that its pretty flexible and using mostly .mel scripting you can make it do most things you need. A major weakness is that is meant for working on individual models and it takes some work to make it effective at creating worlds.
OK onto the components you need.
Geometry Exporter:
This needs to be done as a plugin. Typically I like to separate the geometry export (or model export) process from a level export. The reason being is that when you use Maya as an editor it really has two functions. 1. creating and exporting of models or instances. 2. the layout and design of levels. They are really two different things. The layout mode is merely a placement mode where you are creating terrain and placing the models you have already created and exported.
I always make the geometry exporter an automatic process. meaning that the system should handle the data management as well as checking in/out of perforce. You can also generate a openGL preview of the model for use later in the design/layout phase.
Level Exporter:
This is also a plugin. It exports all the design layout and tagging in a usable level file. Depending on what the programmers want to do this can be the exact same export as the geometry exporter. But from the Maya tool side its good to treat this process differently so that your system can handle all the data automatically.
Instancing : Maya’s instancing sucks rocks. It can easily break and causes a ton of clutter in your level. In the past my solution has been to have the modelers create a special “Icon” of their model that gets tagged as the instance icon. This is merely a single mesh with a special attribute on it to signify that it is an icon. So then when it comes time to import the model into your level the system imports the object and throws out anything that is not an “Icon”. So what you are left with is one single mesh that is representing the whole model. This mesh can now be duplicated around your level. Then when it comes time to export the level exporter can see from the special attribute that it is an instance and it can then take the proper steps to handle it.
Material System: I already covered this in an early post HERE
Tagging: Tagging is what designers and artists add to levels an models trigger game functions. These can be volumes, splines, material properties, etc… Typically a plug in gets created to handle this case. The reason being is that you want special openGL icons for these functions. They show up better in the level and the exporter can easily handle them. Then you can create a series of .mel editors to handle the filling out of their properties.
Decorators : is the term I use to describe things such as grass, garbage, pebbles, etc… Anything that needs a special render pass to handle their sheer multitudes. There are a few ways to handle them, You can have spawners that you place in your level that have attributes on them which direct the “growing” of decorators, you can designate them using materials, or you can paint them directly onto the surfaces using your instancing pipeline. The last option is a bit troublesome bit is also very powerful because your artists and designers have explicit control over where the objects render. You will have to create a system to merge them into large groups tho because Maya begins to choke when there are too many objects in the scene.
Portaling: If your game requires portaling you need to support in the editor. Now I have found that because of the sheer size of today’s levels, they need to be broken up into their individual portals. A typical process would be to lay out the level as basic geometry. Decide that you like the layout then break the level up into its portals and export each piece into a separate file. Then you can work on these separate files without having to load them all into Maya. Then have your level exporter stitch them back together for your engine to read.
Game Design Philosophy
Written on 2 May 2008 by NebsMy philosophy is very simple. All tasks/actions in a game need to be rewarding in some sense. From the most broad game play design down to the highlighting of the menu options. A reward can be many different things but they mostly boil down to a neat visual and or a neat sound. Developers tend to forget this rule when they are making menus and inventory screens. If your game is fun and rewarding as soon as it boots up it has an effect on how people perceive the game. So starting out the experience on the right foot is very important. It conditions players to be in a better mood to enjoy the core game play when they actually get to it. Frustrating or boring menus do not get people in a good state of mind to enjoy your game. And you have created an uphill battle for yourself from the onset.
Texture Of The Day
Written on 27 April 2008 by NebsHacking Lawnmower Safety Features
Written on 27 April 2008 by NebsWe purchased a new riding lawnmower recently. I have been out of the loop as far as new lawnmower features as of late. Imagine that. But we found there is a particularly annoying new safety feature. You can no-longer have the PTO (Spinning Blades) going while moving in reverse without holding down a button. Man that’s frustrating. Thankfully there is an easy way around it. All you need is…
*** This is how I did it on our mower. Your mower could be very different. Check under the hood first to see if its compatible. ***
**** I would not recommend doing this if you have small children or pets that could potentially get behind your mower. The feature is there to make people pay more attention to what they are doing whilst they reverse. ****
***** Do this at your own risk. I am not responsible for any damage or accidents you cause by attempting this. *****
2 male connectors
1 length of wire
1 pair of wire strippers/cutters
1 roll electrician’s tape.
Electricians tape not shown.
Step 1. Cut a small length of wire. 2-3 inches.
Step 2: Strip a small amount of insulation from each end.
Step 3: Thread each end of the stripped wire into each of the connectors.
Step 4: Crimp each end and check the connection by giving a small tug to each connector. make sure its tight.
Step 5: Bend the wire so that it forms a U shape. You now have a completed jumper.
Step 6: Locate the offending switch and unplug the connector from the back. Of course each mower is going to have a different connector so make sure it is compatible with the male ends before you purchase.
Step 7: Connect the jumper you made by sliding the male ends into the female slots on the button connector.
Step 8: Cover the new connections with electricians tape. This is always a good idea to keep moisture and debris out of your connections.
Step 9: Tape the now loose wire to the other wire bundles. This will keep the wire from getting someplace it shouldn’t.
Congrats you have now hacked your mower. If everything is done correctly the mower should be able to mow in reverse without have to press the button. Happy Mowing.
Damn You COD4
Written on 24 April 2008 by NebsI can’t quit you!
Maya as a level editor (2)
Written on 23 April 2008 by NebsSo in the last post about this I talked about some of the philosophy behind making a good editor. Now I will start into the more specific things that you have to do to Maya to make it a proficient level/game editor.
Material system. You have to decide what this is going to look like. What shaders your game is going to use, etc. There are a few ways to approach it.
Using a .fx plug in Maya: This is nice in that your model will use your shaders in the viewport. Gets you a very close approximation of the final output. This would seem like the way to go but there are a few issues.
1: Maya and mental ray renders wont like it at all. They will not render correctly using these. That means that for doing PR shots you have to re-create all your stuff as Maya shaders. Gets to be a royal pain.
2: Texture baking does not play nice. So it can make that step much more frustrating.
3: Using mental ray to create lightmaps also gets angry when you use .fx shaders.
Using maya’s materials: This method basically means that you use the maya materials and you create custom string attributes on each material that house the textures that are used by your shaders. Then you plug the output of those attributes into the standard material attributes. The nice thing about this method is that you can now use all of maya’s render features as well as the texture and lightmap baking commands. The downsides are…
1: The viewport does not really reflect how the final ingame model will look. This means that that you are not seeing teh effects of your ingame shaders.
2: If your shaders use multiple UV sets for differnt texture effects, those will not show up in the viewport.
So what should you do? Well that really depends I have create both pipelines for different projects and I am kinda on the fence about it. But my current thinking has me using maya materials because of the issues the .fx method has. The fact that the object does not really reflect the ingame look in the viewport does not bother me much because its a quick export from maya into our game.
In both cases I created a custom material editor that has a bunch of nice features in it. The reason for this is that you can have really tight integration with your data structure and your file management system. In both cases for me it was perforce.
Hacking Maya UV Window
Written on 23 April 2008 by Nebs*** Backup your .mel files before you edit them!!! ***
So I wanted to hack into the Maya UV window and change some things. The first thing I wanted to change was the marking menu.
After hunting around I found the texturePanel.mel file in …Maya8.5\scripts\others\
Around line 2095 you will find
global proc textureWindowCreatePopupMenubar( string $editor, string $editorCmd )
This is the command used to generate the popup menu under the standard marking menu.
I tore this out and put in my own menu items. If you tear it all out you will get an error on line 109. There are a few ways to deal with it but the shitty brute force method is to change line 108.
change: if ( $reason == 101 )
to: if ( $reason == 999 )
Now this may cause some later issues I’m not sure yet. But I am exploring as a go.
More on this as a discover things.
Goodbye COD 4
Written on 23 April 2008 by NebsI think I am done with ye! Time for a new game.
New Keyboard and Mouse
Written on 23 April 2008 by NebsI am really really particular about my work setup. As far as keyboards go they have to be square with the normal arrow keys and the normal (old style) insert and page key group. Also the keys have to have a snappiness to them. No mush for me.
The best part about my taste in keyboards is that those style of keyboards are usually the cheapest ones you can find. Huzzah!
The first thing I do when I get a keyboard is to remove the Caps-lock and left Windows key. Why you ask? Cause both of those are a terrible nuisance if you hit them while working in Maya. And really the Caps-lock key is stupid anyway. Who needs to have caps all the time? I MEAN C’MON! Since the majority of the Maya hotkeys I use are situated right around those two it makes sense to axe em.
Mice are an even bigger task for me to find. I hate all the weird shapes and spheres and whatever wacky shit people do to make their mice different or ergonomic. The original Microsoft Intellimouse is the best thing ever in my option. The newer ones are OK but somewhere along the line some flimsiness was introduced into the buttons… yuck! Also no stupid ass tilting scroll wheel. And the scroll wheel must, I repeat, must have a good tactile click when you roll it. no mushy shit allowed here either.
Helium_2.exe
Written on 16 April 2008 by NebsI made some tweaks to it.
Now the Y value of the atom changes the sound it makes.
Fixed the mouse focus issue.
Added a little animation when an atom plays its sound.
Hit ESC to quit.
Slow my roll
Written on 15 April 2008 by NebsMy gamerscore has become quite stagnant lately… I blame two things. COD4 multi-player and spring.
helium.exe
Written on 15 April 2008 by NebsHere is a simple little app I made. There is no real goal, or game to it. All you do is click on the screen and place helium atoms… enjoy!
*note… I just noticed a bad bug where if the mouse cursor is not over the app when it starts you can’t place any atoms… crud.

The Dig
Written on 12 April 2008 by NebsOh man this is one of my favorite games ever… And I just found a site with a bunch of mp3s. soo good.
http://dig.mixnmojo.com/downloads/index.html
Top Of The World
Written on 9 April 2008 by NebsWe found a secret trail that goes to a neat open patch above where we normally snowmobile…











