OasisGames

Title: Chaos First Person Shooter Game Engine for XNA
Objective: To design and write a first person shooter engine for the XNA that utilizes advanced shaders, shadows, and poly-based collision detection and to meet or exceed the capabilities of the engine used in "Halo"
Website: [here]
Time Frame: 4-5 Months (Expected completion in late April to early May, 2007)
Description: The Chaos First Person Shooter Game Engine for the XNA will allow anyone to create high-quality first person shooters that will rival Halo. Chaos will be a library available for both Windows and the XBox 360. The library will include all the basic, and advanced functions of the game, you just need to add in your custom elements and add the content. Chaos will not only be easy-to-use, but will be extremely fast, utilizing portalled geometries for collision and rendering. Chaos will also include some more advanced rendering elements, including bump maps and shadows. By supporting up to 4 players and having built-in screen division and HUD control, you can easily make your game multiplayer. The Class-based scene objects make it even easier to create your game using built-in object types. No FPS is complete without vehicles, and Chaos would be nothing without them. Four different vehicle types will be included in Chaos: Cars, Planes, Hovercraft and Turrets. Chaos' physics engine will make your dynamic scenery, vehicles, and projectiles even more realistic by giving them believable movements and reactions to other scene elements. With scripted campaign maps, mission objects are a breeze, allowing you to create levels where players must collect items, unlock doors, and defeat enemies before continuing on to the next level. With built-in main-menu and pause screen functions, you're game will play like the top-of-the-market shooters.
Expected features:
Poly-Based Collision detection
Multiplayer support (1-4 players)
Scripted campaign scenarios
Artificially intelligent characters
Basic physics
Vehicles (including cars, planes, turrets, etc)
Weapons
Multiplayer gametypes (CTF, etc)
Real-time Shadows
Higher Level Shaders (including bump/normal maps and detail maps)
Model animation
Background music
Sounds
Effects (sparks, contrails, explosions, etc)
Possible Features:
Online/ Network multiplayer (Windows only unless networking is added to the XBox 360)
Cooperative Campaign
Online cooperative play (would require both of the above)
Vehicle damage (which would only involve having multiple models and switching them based on "health")
Help requested:
Many questions have already been answered including multiple screens and poly-based collision detection (in another post). However, we (or more correctly, I, seeing as I'm the only person making the engine, the rest of my team is working on making game content for the "release" game that Chaos is being designed for) still need help with some things. These include:
Shadows
Using HLSL shader files
How to save settings to a file
How to load settings from a file
How to load XML files to import content (like "tags" in Halo)
Mouse / Keyboard control
How to use WinSock or the C# equivalent (on Windows)

Post Script:
Thank you for reading this, and for those who have helped answer my questions or provided me with sample code, I'll like to add you to my credits list so that you will be properly thanked and your help will be made known to all who use the engine and play my upcoming game.

Updates:
1/5/07 - Found a tutorial for implementing parallax mapping, so we'll probably use that instead of normal maps unless I find a normal map shader file that I can look at and the normal maps are faster...
1/5/07 - Fixed a type-o




Re: XNA Game Studio Express "Chaos" 3d FPS Game Engine (WiP)

moo10032

is this just a copy of halo... or are you guys making new stuff if your making a differnt game but in the halo universe i can help you guys make 3d models and textures. email here if interested moo10032@hotmail.com




Re: XNA Game Studio Express "Chaos" 3d FPS Game Engine (WiP)

OasisGames

It will be a completely different game, in fact, we're making it for Halo Custom Edition as well (for those people who don't have and don't plan on getting a graphics card with Pixel Shader support)




Re: XNA Game Studio Express "Chaos" 3d FPS Game Engine (WiP)

moo10032

hmm i may be interested, heres some of my 3d works, if your interested, email me or aim me at moo10032

http://www.maxforums.org/Thread.aspx tid=415197

http://www.maxforums.org/Thread.aspx tid=404989

http://www.maxforums.org/Thread.aspx tid=372261

http://www.maxforums.org/Thread.aspx tid=371945


(this one i only had about 4 weeks to complete so its not my best)
http://www.maxforums.org/Thread.aspx tid=409241




Re: XNA Game Studio Express "Chaos" 3d FPS Game Engine (WiP)

Nick Gravelyn

How would I go about creating two screens / viewports, IE, for multiplayer on a 360
You just need to create two viewports and set the active one during rendering. I did this a bit ago. Here's how I created the two (one on top, one on bottom):

p1View = new Viewport();
p1View.X = 0;
p1View.Y = 0;
p1View.Width = graphics.GraphicsDevice.Viewport.Width;
p1View.Height = graphics.GraphicsDevice.Viewport.Height / 2;
p1View.MinDepth = graphics.GraphicsDevice.Viewport.MinDepth;
p1View.MaxDepth = graphics.GraphicsDevice.Viewport.MaxDepth;

p2View = new Viewport();
p2View.X = 0;
p2View.Y = p1View.Height;
p2View.Width = graphics.GraphicsDevice.Viewport.Width;
p2View.Height = graphics.GraphicsDevice.Viewport.Height / 2;
p2View.MinDepth = graphics.GraphicsDevice.Viewport.MinDepth;
p2View.MaxDepth = graphics.GraphicsDevice.Viewport.MaxDepth;

And then I pull all rendering code into a separate function that the Game::Draw method so my draw method looks like this:

//set the viewport
graphics.GraphicsDevice.Viewport = p1View;

//reverse the view matrix
viewPosition.Z *= -1;
viewTarget.Z *= -1;
viewMatrix = Matrix.CreateLookAt(
viewPosition,
viewTarget,
Vector3.Up
);

//render the scene
RenderScene(gameTime);

//set the viewport for player 2
graphics.GraphicsDevice.Viewport = p2View;

//reverse the view matrix
viewPosition.Z *= -1;
viewTarget.Z *= -1;
viewMatrix = Matrix.CreateLookAt(
viewPosition,
viewTarget,
Vector3.Up
);

//render the scene
RenderScene(gameTime);

base.Draw(gameTime);

Hope that helps with that one. As far as the rendering, you can create shaders using HLSL that will do normal maps and all sorts of other tricks.




Re: XNA Game Studio Express "Chaos" 3d FPS Game Engine (WiP)

OasisGames

Thank you.
I just started with the XNA (and C# for that matter) about a week ago, so how would I create the shaders in 3ds max (9) Would I export them as DirectX FX shaders From looking at Spacewar, that's what it looks like. And from there, how would I apply them to the model




Re: XNA Game Studio Express "Chaos" 3d FPS Game Engine (WiP)

Nick Gravelyn

I'm not real sure about the shaders. I just started XNA about a month ago so I've yet to get that far.




Re: XNA Game Studio Express "Chaos" 3d FPS Game Engine (WiP)

moo10032

so do you want my modeling help




Re: XNA Game Studio Express "Chaos" 3d FPS Game Engine (WiP)

OasisGames

We already have a team of modelers for the game, but the more we have the quicker it will get done I guess.
I'm more looking for people who can help me with the programming aspect of the game, because I don't think even my 6 years of programming will help much with this, especially considering I was 11 when I started (yes, with real programming, specifically VBA and standard BASIC) and that was all in other languages...




Re: XNA Game Studio Express "Chaos" 3d FPS Game Engine (WiP)

Thomas Mauer

I have not found a more advanced renderer in the tool kit. However it seems easily extended, well compared to doing from scratch. I have not done this yet but my plan for getting in these effects goes something like this:

First extend the XNA Standard Processors to do the following:

  • Generate tangents and binormals for the meshes in the Model Processor
  • Override the material processor to build the data for my custom effect file.
  • Get the Model Processor to pick one of my effect files based on data from the mesh.


There is a section in the help docs on how to do most of this.

Second write my own custom effects files to do the effects I want. The only realy triky part is if my effect requires data that cannot bve found in the model file. Then I will need to have an external data file (probably XML) and map it by name to the material in the model durring the compile.

The idea is not to have to do anything special when you load the mesh. If you use the content pipeline to do all the work then the game code will be that much easier to write. Treat it just like any other mesh.

I¡¯m not 100% sure this will work, but it seems like it should.





Re: XNA Game Studio Express "Chaos" 3d FPS Game Engine (WiP)

OasisGames

*Main Post Updated*

I added a summary to the main post.

Also, thanks to another poster, I now have a way to do bump maps, now to find out how to load an effect file from the model file... That would make life so much easier than manually loading them (which wouldn't make sense for an engine anyway)




Re: XNA Game Studio Express "Chaos" 3d FPS Game Engine (WiP)

dczraptor

I think you can get the effect from the model by doing model.Meshes[0].Effects.

As for the XML portion, I believe you need to make a custom content processor. However, as I do not have a 360, this bit of code works with Windows just fine for me:

XmlReader reader = XmlReader.Create(Directory.GetCurrentDirectory() + @"\Assets\XML\" + assetName + ".xml");

while (reader.Read())

{

reader.MoveToContent();

if (reader.NodeType == System.Xml.XmlNodeType.Element)

Console.WriteLine("Element Name: " + reader.Name);

if (reader.NodeType == System.Xml.XmlNodeType.Text)

Console.WriteLine("Value: " + reader.Value);

}






Re: XNA Game Studio Express "Chaos" 3d FPS Game Engine (WiP)

OasisGames

Well, here's a major update:
http://www.youtube.com/watch v=DBJ2f50I97o
Still need to do some other things like portal the collision geometry and precalculate the transform matrices