• ### Blog Entries

• entries
44
44
• views
36888

c#, xna, and stuff

## I'm back! && firefight pic

It's been just over a year. There's no good explanation for my absence, but I seem to remember something about gallons of beer and moving from Wisconsin to Arizona.

project explanation on my website:

Firefight!!

New stuff that can be seen in the above picture:
-shell casing particle system was replaced with 3d models of shell casings.
At the end of the pictured firefight, there were over 1200 casings on the ground (I think there were some hit detection problems.. lol!). Once a casing lands on the ground it is deleted and replaced by a static model so that the game doesn't have to do any collision detection or physics processing on it. I was experiencing some minor slowdowns at the end of the fight, so I will have to implement a system to remove old casings if the number gets excessive. Maybe I could use a sprite system to replace the casings on the ground.

-I decided to go with a technically unrealistic tracer effect for bullets. What's the point of modeling each bullet if I can't see them zipping around. :)
It looks kind of silly in a still shot, but it looks great moving.

## I'm back and I brought a video!

Q. Where have I been?
A. Most of my free time recently has been spent working on a small economics game for a contract. I'm not making much on it, but it will help put beer on the table.

Q. So.. what were you working on again?
A. project summary

This video focuses on some of the work that I have been doing with vehicles and soldier AI.

I've encountered an issue where vehicles will continue moving after everyone exits the vehicle. I think it is related to the strange behavior of the AI bots at the end of the video, as they share some of the same movement code. It looks like the bots are overshooting their target positions, or maybe their target positions are constantly changing. I'm sure it will be an interesting one to troubleshoot.

Cheers

## Its a bird, no its a plane, no its a Fieseler 156

Project explanation

I love military aviation, and I think my modeling skills have just about reached the point where I can make something that at least looks ok.

I wanted a small rugged aircraft, so I decided to try my hand at making a Fieseler Fi156 "Storch". It took me 5 hours, including creating the simple night intruder camo texture (skin).

Unfortunately my engine doesn't currently support transparency. The real Storch has extensive cockpit glazing.

The Storch was built for making hard landing on improvised landing areas, and will be right at home in my little slice of the Eastern Front. At some point in the future I plan on going back and creating a proper green and brown break-up camo skin for the model. I know the cockpit looks kinda ugly, but it does follow the lines of the real one (lack of transparency doesn't help).

## Brief focus on terrain

Graphics have never been my primary interest, however they can only be put off for so long. I've spent the last two weeks trying out a variety of XNA terrain tutorials to find a style that seemed like it would fit nice with my current design philosophy. I tried an example that used a complex geometry morphing system to minimize the amount of terrain that has to be drawn, but I couldn't get over seeing the terrain move. I also tried a fairly complex shader that blended different textures together based on heights.

I came to these conclusions:
1. I am currently brute forcing terrain (single model, no speed optimizations) and am having no problem getting 60 FPS, so a fancy terrain model isn't neccesary.

2. I'm simulating Russian plains, not the alps. Ground cover isn't going to change drastically through the map. Multitexturing always ended up looking silly.

I started with a multitexturing shader that Nemo Krad had adapted from one of Riemer's tutorials, and scraping out all of the fancy bits to leave a fast one textured bump-mapping shader. It works and its fast, which were my two main goals.

Did you see the Kubelwagon next to the bunker? I was really happy to see that the camo was pretty effective.

## Untitled

Recently I've had a fair amount of down-time away from home, so I've begun to work on some 2d projects on my netbook

PigSim2 is the first XNA 2d project that I've worked on. The original idea for the project was to create a simplistic guinea pig AI that was able to exhibit some emergent behaviors. My guinea pig AI currently has four states: "think", "eat", "sleep", and "move".

"think" decides whether the pig would rather sleep or eat, based on a preference for eating, and how long its been since the pig did either activity. If there is nothing to eat, and the pig doesn't want to sleep it will move to a random location.

"eat" and "sleep" determine if the pig's current location is proper for the current activity. If it is it kicks off a timer and the correct animation. If not it "moves" to a better location.

"move" moves to a location. Once the location is reached, "think" is kicked off again.

All in all this is a pretty simple system, but it makes for a fairly interesting and logical simulation. The next step would be to assign weights to various foods and shelters, so the guinea pig can display a preference for certain objects.

Zoompig (star of pigsim2). I miss the little guy. guinea pigs are some of the friendliest creatures I have ever met.

I haven't abandoned my main project either, I'll talk about that next time

## the skin-o-flage isn't effective in winter

this is an older image, showing a squad hunting down some indivdual units. the code has since been optimized so that I can have two squads fight while keeping a smooth 60 fps.

Not to long ago I tweaked the hitboxes for bullets a bit so that I could have the bullets move about twice as fast as they used to (currently 30 meters/second). In response to this I changed a variable in the class for the MP40 submachine gun so that its bullets moved at 30 me/s. However I forgot to update the other main weapon, the Kar98k battle rifle.

One of the first things I did today was change the definition for the basic german squad to include 4 soldiers with kar98k rifles and 1 soldier with a Mp40. To keep things competitive, I upped the russian squad size to 4 soldiers carrying Mp40s (no russian weapons in game yet). I was expecting the german squad to win, because their rifles have approximately twice the range of the submachine guns, so the russian squad will have to advance under fire before they can shoot back. However, I was suprised to find that the russian squad was consistently decimating the german squad.

After a bit of debugging, I realized that the problem was the Kar98k's were still using the old 15 meter/second bullet speed, and as all bullets die after 4 seconds of flight time, they could not shoot as far as the mp40's, and therefore the germans had a range disadvantage, as well as a damage per second disadvantage (a rifle can put far less lead in the air then a mp40).

After updating the Kar98k file, I also changed bullet lifetime to 10 seconds to allow a bullet to travel the full engagement range for the kar, which is currently set at 300 meters. Although a real life kar98k has an effective range upwards of 800 meters, 300 meters is probably the most common range that a target could be accurately engaged with iron sights. I set the mp40 at 100 meters, because I can't imagine those tiny 9mm bullets being lethal anywhere past that range.

## that time again?

Ever since gamedev.net started posting interesting journal entries on the front page on fridays, I've been making an effort to make weekly journal entries worthy of the front page.. and have failed miserably. Who would have thought producing enough content for a once a week post would be this hard :)

The hard thing is finding something that I've done that can be shown in a screenshot.

screenshotty developments:
Here's a shot of the T34-85 that I've been working on. I'm pretty happy for it, except for the turret. I have no experience with making curves, and the soviets have this silly habit of making curved turrets, so I will have to redo it when I'm better with 3d modelling.

It will probably be awhile before you see the T34-85 in game, because I first need to finish developing my tank animation system, and then develop a tank weapons and AI system. These three classes are about 30% done currently.

non-screenshotty developments:
1)finished writing a basic group AI
2)watched a squad of soldiers stalk and kill four poor soldiers who didn't have the AI neccesary to defend themselves.
3) was kind of creeped out by watching my violent AI kill my idiot AI.

## project update

project explanation

(pics below the wall-o-text)

In my project each map represents a square area (currently 6000 square meters)of space on the "world" map. I am designing my game with the concept of infinite scalability in mind, so that I could theoretically model the whole eastern front if I wanted to.

This is accomplished by a complex save/load mechanism that I will detail below:

tactical simulation
-----------------------------------------------------------------------------
1.) soldiers and vehicles are organized into command groups (like squads)
2.) each group is responsible for handing down orders to the units in the group
3.) each tactical AI (ie: soviets, germans) is aware of the groups that are present in the current map. The tactical AI is responsible for making top level tactical decisions, which it will then pass down to the individual groups.

4.) A tactical simulation ends when the player is killed, or the player leaves the map.
-------------------------------------------------------------------------------

strategic simulation
-----------------------------------------------------------------------------
1.) the strategic simulation occurs after the previous tactical sim has ended, and before the next tactical sim/new map is loaded.
2.) The command groups from the previous tactical simulation save the types of units that they contain, and the units themselves are cleared from memory. In this state, the groups are considered "packed" because they have records of their units, but the units themselves aren't loaded.
3.) All of the command groups in the entire simulation are loaded into memory. This is not too memory intensive because they are all in the packed form, and the strategic stage does not include any kind of graphics.
4.)combat is resolved using simple formulas on every map except for the one that the player was just on (if the battle finished there).
5.) The strategic AI for each side is made aware of every group that it has available in the entire simulation. The strategic AI's issue move orders to the groups, or have them defend territory. At this point they can also order reinforcements and place new units
6.) Groups that will be present on the next map (the map that the player moved to) will be loaded (their units will be created/loaded) and moved to the tactical AI
7.) All groups that aren't present on the next map are saved back to text files, and cleared from memory
8.) the new tactical simulation is loaded
-------------------------------------------------------------------------------

This process is now functional, although the AI's are very simplistic. Since the framework is in place now, I can go back and flesh out each part.

Since this engine work can drive me nuts, I've also been doing a bit of modeling.

To the best of my knowledge, The Fiesler Fi103 flying bombs were never deployed to the Eastern Front, but come on its the first ever cruise missle. These babies will be one of several forms of off map artillery available.

This luger isn't exactly one of my proudest modeling moments, but from the distant third person perspective of the game, it would be almost invisible anyways.

Here's the Wespe (mobile 105 howitzer) in the final stages of modeling. I'm currently using XSI's ModTool, which is free for hobbyist use. I've used Truespace, and briefly tried blender, but I've found XSI easiest to work with.

Here's the Wespe sans howitzer. Several vehicles were built in this way to serve as ammo carriers.

cheers
andrew

## (first?) project update

As it has been over a year since I first conceived of my current project, I suppose it is time to lay out a proper description here.

TITLE:
To Whatever End: Combat on the Eastern Front 43-45

CONCEPT:
In a brief moment of insanity, I came up with the term T.P.R.P.R.T.T.S.G. (third-person-role-playing-real-time-tactical-strategy-game), which does a nice job of describing my idea for the project.
It will be a WW2 tactical combat game in which the player is one soldier caught up in a dynamic campaign fought between two unique strategic AIs.

GOALS:
1. Use accurate weapon ranges, penetration, and damage modeling to provide a realistic WW2 combined arms combat experience.
2. battles will be fought in real-time on large maps, with strategic decisions being made in between map transitions .
4. Include a large number of historically accurate weapons and units
5. Use historical data to create proper unit listings, historically accurate markings.

PROGRESS:
The "game board" currently consists of 200 maps. Each map is 5 square miles. There is no real limit to how many maps are used, as most will be terrain and will be generated when a campaign is started.

I have created some low-detail models so that I can work on AI, and map placement.

This is a "Wespe" mobile howitzer that will probably be fairly common in German battlegroups. The model is about 60% finished, I applied the camo to get some practice with texturing.

This Kubelwagon is one of the first models that I made for the project.

Here's a Kar98k model. It's fairly low-poly, but the game is generally played at a perspective similar to Company of Heroes, and high levels of detail really aren't neccesary.

I am currently working on several things at once:
1. low level decision making for both the German and Soviet strategic AI
2. low level tactical AI for German soldiers
3. particle systems that show bullet impact (blood, sparks, splinters)

Several older videos can been seen on my website:
website

I have also been working on explosion effects, so stay tuned for more!

## panzerfaust video

Panzerfaust launch video

Thanks to the new gameobject system that I have created, it's fairly easy to add new weapons and other object. All I had to do was copy the code that was already in place for projectiles, and reference a new physics file.

Anybody ever have Bushmill's "Black"? Irish whiskey+game stuff+music==good times

## new video

game webpage

In a lot of ways I miss working on a space-themed project. Space was so much easier is a number of ways:
1. You don't have to worry about terrain
2. spaceships don't have to be animated to look good
3. I loved the size differences between say a star destroyer and a little fighter. Real life doesn't have anything that approaches that scale.

Currently my map is about 5 square miles. I wrote a simple method to remove all objects that move outside of the bounds of the map, and put them in a departing que so they can be transferred to the next area. Unfortunately I have run into the rather silly problem of not having the patience to sit through the rather long car ride to the end of the map in order to test this functionality.

I guess I will either have to increase the speed of my kubelwagon, or build a plane. I'm opting for the plane! (I'm sure I could just change the starting position of my avatar to shorten the walk, but that would be cheating!)

## an update!

I've been a little to busy to do much game programming lately, but I have managed to throw about 10 hours into it over the last two weeks.

New since last update:
(almost) object orientated bounding boxes
projectiles
particle engine (blood and bullet casings)
bounding box collision detection
collision models (low-poly version of model used for collision detection)

the screen shot is from a test that I just ran of my collision detection. I shot a bunch of bullets at a bot, then paused the game and swung the camera around to take the screen shot from behind the bot.

It appears that my bullets might be out-running their bounding boxes. odd

## includes amazing video experience!!!

first off, here's a video for all the people who only read the journals for the pretty pictures and videos (heh, I'm one of them)

old project video!

thats the last video that I made of my old project. It is pretty much dead now, because it was xna 1.0, and it isn't worth the bother to convert it to xna 2.0. It had a lot of cool concepts, but the underlying code really showed my inexperience (re: not very advanced. think spaghetti bowl)

--back to my current project---
I've been fiddling with control schemes for 3rd person gun aiming. I came up with some rather crappy ideas, which I will showcase at a later date. In the process of working on gun related stuff, I managed to create several very nice classes to handle guns. Guns operate similar to real guns and include several states like "reloading, firing, bolting.."

Anyways I've been looking at physics a lot latey. I've considered a couple options:
1. use a outside physics engine with a .net wrapper (these already exist)
2. use bounding spheres
3. use object orientated bounding boxes
4. use bounding boxes in conjunction with collision meshes (polygon level collision detection).

So far the most useful solution seems to be incorporating collision meshes and bounding boxes. This will be fairly complicated, but luckily I've found a rather nice tutorial for xna on the subject.

I decided against using a third-party physics system because they tend to be way to complicated. At this point I really don't need realistic physics, just decent collision. Not to mention my framerate is already hovering at 60, I don't need it to get any lower

## christmas is over

well I had to take the christmas hat off my avatar so...

I declare the new theme to be "Dress like your Mr. Questy" (Ravuya's avatar.)

with any luck this will create a cascade of new avatars much like when I mentioned the christmas theme in my journal.

To keep with the new theme, my avatar has donned a trendy top hat, monacle, and cane.

(I have also been doing a lot of programming, but nothing that yields neat screenshots yet)

## productive week of producing

hmm well I sure have been programming a lot lately..

since I last talked to you, I added:
1. a chase camera, bringing me up to 3 camera types available
2. a octree that can handle dynamic objects
3. a new movement system for the player

I have also:
1. provided some useful help on the gamedev forums (i admit that I usually only respond to threads that I'm interested in, and not neccesarily just ones that I could help with)
2. umm other stuff.

I'm beginning to think about tossing out a tech demo in the next month or so, so I can get some reactions to my weapons and movement system. However I've gotta write in a weapons system first, so it might be a bit

heres my uber-octree

## productive week of producing

hmm well I sure have been programming a lot lately..

since I last talked to you, I added:
1. a chase camera, bringing me up to 3 camera types available
2. a octree that can handle dynamic objects
3. a new movement system for the player

I have also:
1. provided some useful help on the gamedev forums (i admit that I usually only respond to threads that I'm interested in, and not neccesarily just ones that I could help with)
2. umm other stuff.

I'm beginning to think about tossing out a tech demo in the next month or so, so I can get some reactions to my weapons and movement system. However I've gotta write in a weapons system first, so it might be a bit

https://www.gamedev.net/community/forums/topic.asp?topic_id=479398
heres my uber-octree

## productive week of producing

hmm well I sure have been programming a lot lately..

since I last talked to you, I added:
1. a chase camera, bringing me up to 3 camera types available
2. a octree that can handle dynamic objects
3. a new movement system for the player

I have also:
1. provided some useful help on the gamedev forums (i admit that I usually only respond to threads that I'm interested in, and not neccesarily just ones that I could help with)
2. umm other stuff.

I'm beginning to think about tossing out a tech demo in the next month or so, so I can get some reactions to my weapons and movement system. However I've gotta write in a weapons system first, so it might be a bit

## Orange pants man likes weird control schemes

In my head it seemed like a good idea to have the player face and move forward with [W], face and move right with [D] and so on. This is the basic control scheme of most standard 2D games.

It turns out this a absolutely foolish move in 3d. It is impossibly difficult to predict how WSAD will effect the player is the perspective is 3rd person (3d). Of course I only discovered this after spending 3 hours writing some very very very nice movement code. It's a work of art! The player rotates to face the direction of movement, and can decide whether it would be faster to rotate clockwise or counter-clockwise. but its a dumb and useless control scheme

(cries) :(

code (it deserves at least this much, I'm so proud of it)
abstract class physics_player: animation_none    {        #region fields        private Vector3 friction = new Vector3(-1f, -1f, -1f);        private Vector3 acceleration = Vector3.Zero;        private Vector3 accelerationRate = new Vector3(.001f);        private Vector3 deccelerationRate = new Vector3(.001f);        private Vector3 maximumAcceleration = new Vector3(.5f);        private float maxSpeed = .1f;        private float maxReverseSpeed = .1f;        private float walkSpeed = 1.5f;        private float newFacingDirection = 0f;        private float turnRate=3f;               public enum WalkState        {            neutral,            forward,            backward,            left,            right        }        public WalkState walkState = WalkState.neutral;        private WalkState previousWalkState = WalkState.neutral;        public enum Posture        {            neutral,            crouch,            jump,            prone,        }        #endregion        //--------------------------------------------------------------------        //applyAcceleration.         //--------------------------------------------------------------------        private void applyAcceleration(float elapsedTime)        {            if (acceleration.X > maximumAcceleration.X)                acceleration = maximumAcceleration;            if (acceleration.X < (maximumAcceleration.X * -1))                acceleration = (maximumAcceleration * -1);            if (velocity.X > maxSpeed)                velocity.X = maxSpeed;            if (velocity.X < -maxReverseSpeed)                velocity.X = -maxReverseSpeed;        }        //-------------------------------------------------------------------        //-------------------------------------------------------------------        //applyGravityAndNormals        private void applyGravityAndNormals(float elapsedTime)        {            float height;            Vector3 normals;            terrainManager.heightMapInfo.GetHeightAndNormal(position, out height, out normals);            //handles gravity            if (position.Y > height)            {               // acceleration.Y -= (accelerationRate.Y * elapsedTime);            }            else            {                acceleration.Y = 0;                position.Y = height;            }            orientation = Matrix.CreateRotationY(facingDirection);            //if object is near ground, orient it towards the ground            if (position.Y > height - .05 && position.Y < height + 0.5)                orientation.Up = normals;            orientation.Right = Vector3.Cross(orientation.Forward, orientation.Up);            orientation.Right = Vector3.Normalize(orientation.Right);            orientation.Forward = Vector3.Cross(orientation.Up, orientation.Right);            orientation.Forward = Vector3.Normalize(orientation.Forward);        }        //-------------------------------------------------------------------        //--------------------------------------------------------------------        //applyFriction        //--------------------------------------------------------------------        private void applyFriction(float elapsedTime)        {            velocity *= .9995f;            if (velocity.X > -.01 && velocity.X < .01)                velocity.X = 0;        }        //---------------------------------------------------------------------        //---------------------------------------------------------------------        //applyTurn        //---------------------------------------------------------------------        private void applyTurn(float elapsedTime)        {            if (facingDirection > newFacingDirection + .05)            {                facingDirection -= (turnRate * elapsedTime);            }            else if (facingDirection < newFacingDirection - .05)            {                facingDirection += (turnRate * elapsedTime);            }            else            {                //facingDirection is close to newFacingDirection                facingDirection = newFacingDirection;            }        }        //--------------------------------------------------------------------        //---------------------------------------------------------------------        //applyWalkState  unique player movement        //---------------------------------------------------------------------        private void applyWalkState(float elapsedTime)        {            if (walkState == WalkState.neutral)            {                velocity.X = 0;                velocity.Z = 0;               // newFacingDirection = 0f; better if facing direction isn't reset            }            else if (walkState == WalkState.forward && previousWalkState!=WalkState.forward)            {                velocity.Z = walkSpeed;                velocity.X = 0;                newFacingDirection = 0f;            }            else if (walkState == WalkState.backward && previousWalkState != WalkState.backward)            {                velocity.Z = -walkSpeed; //model rotates counterclockwise                velocity.X = 0;                newFacingDirection = 3.14f;                if (utility.near(facingDirection, -1.57f, .5f))                    newFacingDirection = -3.14f;            }            else if (walkState == WalkState.left && previousWalkState != WalkState.left)            {                velocity.X = walkSpeed;                velocity.Z = 0;                newFacingDirection = 1.57f;                            }            else if (walkState == WalkState.right && previousWalkState != WalkState.right)            {                velocity.X = -walkSpeed;                velocity.Z = 0;                newFacingDirection = -1.57f;                if (utility.near(facingDirection, 3.14f, .5f))                    newFacingDirection = 4.71f;            }                previousWalkState = walkState;        }        //---------------------------------------------------------------------        public void updatePhysics(float elapsedTime)        {            applyWalkState(elapsedTime);            applyTurn(elapsedTime);            //applyAcceleration(elapsedTime);//gets the new acceleration and applys it to the velocity            applyGravityAndNormals(elapsedTime);            velocity += acceleration;            applyFriction(elapsedTime);//applys friction            position += (velocity * elapsedTime);        }        }

edit: heh my "//applys friction" comment at the end there is embarrassing. I'm not sure why I felt a method named "applyFriction" needed clarification. I must have been drunk

edit 2: and no, I don't think that friction is one dimensional, I just haven't gotten around to applying it to Z (Y will probably never get it, as I'm not simulating the friction of air).

## pretty picture and a little talk

whoohoo! check out the pretty terrain! The texture is actually slightly blue to give it that nice "snow" color. This isn't the final terrain obviously, but is more of a placeholder until I feel like working on terrain. For some reason the combination of the snow terrain and the blue gradient skybox is really relaxing. I love just wandering around in the scene and thinking about how cool its going to be after I add some other stuff.

**long boring rant warning**

the problems with using someone else's code..
So, awhile ago I mentioned that I added an octree to my project. What I really meant was that I added a octree pretty much straight from somebodys octree tutorial. The problem is it sucks big robotic monkey balls.

Its biggest problem is that it can't handle dynamic objects. By this I mean that the octree doesn't do anything if an object moves out of the node that it is currently in. This defeats the purpose of having an octree.

I was poking around today and found out that anything in a node that has been culled isn't updated. WTF is the point of that???? So just because I'm not looking at the enemy tank means that it can't move or think or do anything??

What the hell is the point of making such a broken half-assed tutorial? Well whatever, I'm pretty sure I can write my own know (with a little help from teh internets).

edit:
the jokes on me. The octree no longer even culls nodes! I have no idea when that stopped working, and it has me completely puzzled, as I didn't change any of the octree code and it was working yesterday. huh

## There's a video in this post!! neat-o!!!

so XNA 2.0...
I had animation all figured out. But then Microsoft was like "BAM update!" and XNA 2.0 came out. Now animation doesn't work at all. For anybody. ever. (Actually I'm sure it still works quite nice if you have 3dsMax and can easily make nice .fbx models, but for all of us that don't have shit-tons of cash life isn't so easy).

so here's my problem
video

basically my animated .x file has his crotch glued to the screen and won't move away from it no matter how much the camera turns. The annoying thing is that this code worked fine under XNA 1.0

To be nice the problem here is that the Animation Library team appears to have abandoned the project, even though it is incompatible with the new version of XNA, and everybody and their mom was using it. (in other words its not Microsofts fault).

------------------------------------
game update
------------------------------------
well in between working on animation I've done a bit of coding on the new game.
I've decided to name it "To Whatever End", that seemed fitting for some reason.
I had to start a whole new project because of the release of XNA 2.0, but rebuilding my framework turned out to be fairly easy, as most of the classes could be copied directly over.
I have decided to add an absurdly complex system for handling game objects:
1. abstract class gameobject
2. animation:gameobject (animation_man)
3. physics:animation (physics_man)
4. penetration:physics (penetration_unarmored)
5. armament:penetration (armament_handheld)
6. ai:armament (ai_man)
7. toplevel:ai (nordwindranger)

This will almost certainly be a bad decision in the long run (I bet components would be better, but then you have to give everything access to the whole, and its a big mess). In any case I'm just doing this as a hobby, so who cares.

## Untitled

Haha well the santa avatar contest is on. I'm really amused how many people have made one already.

So the Microsoft-Santa gave me my present early this year-- XNA 2.0.
While I'm not entirely sure if any of the changes will directly affect what I'm doing right now, it's nice to know that I'm working with a stable product that probably won't change for a bit.

Ok now onto a little design work/ day dreaming.
One of the things that I want to do with my new project is add some rpg-lite elements like a whole bunch of gear that you can pick up. Even if some weapon models are fairly redundant, I'm adding them anyways because--who the hell doesn't want more weapons?? That being said I'm going to try and stay fairly realistic, and therefore you can only carry one side arm and one main weapon, and rare weapons will be rare.

dream list of what will hopefully make it into the game

--guns--
p38: german pistol
luger: stylish german pistol
tt33: (spelling?) russian pistol
magnant revolver: russian revolver
gweher 43: late german semi-auto rifle
gweher 43 scoped:
gweher 41: early germam semi-auto rifle
stg44: german assault rifle
stg44 with scope
stg44 vampire: stg44 with night sight (very very rare)
kar98k : german bolt action rifle
kar98k scoped:
mp40 : german submachine gun
mp38: predecessor to mp40
panzerfaust: german antitank weapon.
panzerfaust 60 and 100: better range
panzershreck: heavier german antitank
colt 45: lend lease american pistol
various russian bolt rifles --i don't remember their names
russian semi-auto rifle-- i don't remember the name at the moment
3 varieties of russian ppsh submachine gun
Mg 34: german machine gun
Mg 42: german machine gun
russian machine gun
Fg 42: german light machine gun--im not sure there is any proof that these were
ever on the eastern front, so if they are in game they will be ultra rare.

The game is going to be third person, and I'm not going to win any awards for my modeling skills, so I see no reason not to include as many weapons as I can historically justify.

well I should have a good bit of coding time over christmas break, so lets see what I can do

## current progress multipled by -1

so one of the problems with using technology that isn't mature is that it's still developing.

I realized today that I didn't update my engine to use XNA 2.0 yet (its currently using 1.1). So I looked into it, and it turns out that 2.0 isn't out yet. The beta is out, but that was supposed to end on the 7th, and when I tried it download it, it wouldn't install.

I read up on XNA 2.0, and it looks like theres gonna be a fair bit of changes that I will have to make. specifically my gui, bloom, and what I was using for animation will no longer work. The first two are fixable, and I hope that the people behind the animation library are working on their end.

In the mean time I have discovered that the quad tree that I ganked from the hazy mind engine needs some major work. Specifically it doesn't work, and has some weird problems where it doesn't always render what its supposed to. (google "the hazy mind" if you want to find out, but personally I don't reccomend it as he is way behind on tutorials).

so what all this really means is I'm back to having pretty much nothing. I will start from scratch rather than try and update my current engine to XNA 2.0 because so many things have changed.

so now the real question is will Microsoft release XNA 2.0 before I go back home for the holidays (my parents dont have internet).

hurrah life

## jingle bells

yay for the GDNET+ Christmas Theme.
I forgot just how nice this theme looks. It gives me this warm glowing feeling every time I browse over to gamedev.

I have so much new stuff to work on, I don't know where to start.

currently working on:
animation
3d-modeling and animation with xsi mod tool
misc. game engine work

will soon be working on (hopefully):
terrain (again)
physics
heavy duty game engine organization and work stuff
heavy duty shader stuff (different materials and other eye candy)
heavy duty optimization (more quad-tree stuff, geo mip-mapping, lod, lod physics)
3d particle systems for smoke, bullet hits, gun fire, blood

plus i've been lusting after some new programming books. my birthdays coming up dec. 18th, so maybe I'll buy myself a shader book or something.

seasons greetings and all that

## das kubelwagon

well I started working on models for my current game project (a ww2 tactical game). Unlike previous 3d art, I'm really trying to produce some decent stuff this time. Even so, I'm not concerned with things being perfect. The game will be third person perspective, so things don't have to stand up to modern fps standards.

I'm pretty happy with where I've gotten so far on this model. There's just a couple details (like the collapsible roof) that I have to add yet.

In other news I would like to register my opinion that the chinese government can go **** themselves.
story
So basically, A U.S. carrier group was going to land in Hong Kong to meet with family for thanksgiving. The sailor's family members had flown to China to meet the sailors for thanksgiving (a U.S. holiday usually celebrated with family), and China didn't allow the ships in at the last minute. So all the families that flew to Hong Kong and prepared thanksgiving meals did it all for nothing. What a retarded and petty thing to do. I can't believe China is our biggest trading partner. thats shameful