XNA QuickStart Engine |
Previous known as XNA 3D Game Template, this project is being open-sourced as a community project at CodePlex, feel free to check out the site, and contribute if you'd like. The project will be growing depending on participation, however I will continue my work on it, gauranteed. At this point, while being called an engine, it is still closer to a template, there is no gui, or editor, it is currently a framework for which to integrate a game.
Video preview , v0.16 (High Quality 640x480, 3m22s, ~15mb)
This is designed as an engine to allow XNA users to save a lot of time when creating a 3D game. This gives them the ability to start with a world, entity management, and physics. Below is information on the earlier versions of the engine. All information for versions newer than v0.16 is kept at the QuickStart Engine Site.
For a very basic game template that is just enough to get started on a game, try the first version of the engine.
Features (v0.16 and earlier):
Terrain rendering system:
- Terrains automatically setup as a quad-tree. View culling of quad-tree is automatic as well, culls out any part of the terrain not in view.
- Terrain self-shadows and responds with dynamic lighting in real-time.
- Terrain uses diffuse, specular, and ambient lighting.
- Terrain is built up a simple easy-to-create greyscale heightmap image. Terrain texture details are also by image.
- Built-in terrain smoothing
- Built-in terrain normal mapping.
- Terrain supports multi-texture splatting, which includes multi-texture normal mapping.
- Built-in functions for checking exact terrain elevation by coordinate and checking normal vectors built-in.
- Water component (Credit: Riemer) will reflect any component in a scene, and also has refraction (Notice in the picture above, the reflection of the snow in the water, and the spheres that are reflected not only on the water, but refracted underneath: there are some at the bottom of the lake). Water has adjustable speed, wavelength, wave height, and wind direction. (Some of these features are still in alpha)
- Built-in weather generators. Weather is based on 3D particle system. Current supported weather types are rain and snow. Weather system allows you to set intensity. Weather is affected by the scene's gravity, wind, and lighting.
Misc other features:
- Input component, comes setup for Xbox360 gamepad, mouse, and keyboard (repeating and single press).
- Camera component, free and fixed cameras already setup. Fixed camera is able to attach itself to any entity.
- An entity heirarchy, loads models, positions, rotations, scale, physics, and rendering all taken care of.
- Built-in component system, similar to XNA's, but tailored to this template.
-
Built-in "garbage collection" for entities lets you mark entities as garbage and at the end of each frame they're removed from the scene.
- Simple physics functions built-in. All the physics from my physics sample program (v0.12) are included in this template. The physics sample from this site can easily be integrated into the template.
- Water-based physics now included as well, buoyancy and water viscosity.
- Custom timer class, good for setting a timer of specific length, starting timer on command, checking time elapsed, time left until set time is reached, and whether or not the time has reached the set time. Easy for setting actions that occur at specific intervals, or after a set amount of time. Timer class is basically and easy-to-use extension of the XNA timer.
- Simple sprite font output to screen comes set up. (Currently in alpha phase)
- Sound manager and sound class are built-in. Makes it easy to load and play a sound.
Video from upcoming v0.16, water-physics and point gravity
Click images for full size
Features not yet implemented, and ideas I hope to work on:
- Camera collision with heightmap, to keep camera from going through
it.
- Camera attach to heightmap, keeps camera along the terrain
at a specific distance so that you can fly through your
terrain as if you were playing a game.
- Skinned animation.
- Spheres create water splash with particles upon hitting water.
- Allow water transparency setting
- Set water up to reflect actual scene wind and wind direction
- Pass water actual light color
- Setup water specularity
- Setup water perlin noise
- Change Water settings (like actual waves possibly, wave speed, transparency)
- Make SpriteBatch section a component
- Underwater shader? Water 'fog' effects?
- Animated sky planes (use same process that water uses to animate)
- Terrain wrapping to scale over terrain when needed.
- Particles that react to vertices (rain hits the ground).
- Vegetation system (allow multiple types).
- Sound emitters. 3D audio through XACT.
- Postprocess Bloom.
- Setup pointlighting effects.
- Sun billboard
- Different shader effects.
- Particle emitters (like fire)
- Simple A.I. sample (artificial intelligence).
- Shadow mapping terrain
- Shadow mapping models
Changes in version v0.16:
- Fixed specular lighting inaccuracies with terrain.
- Added specularity to water component. Still buggy with weather component.
- Entities are now handled in an entity manager.
- Water component is now designed to handle any amount of associated components. Be mindful of performance when adding components.
- Added water-based physics. Water viscosity, and buoyancy. Also, wind does not affect entities that are underwater.
- Physics now uses associations with terrain and/or water. This way if you want water, but do not want water physics, then you simply do not associate water with the physics. This could be useful if you're creating a game with water, but are never going to need to interact with the water.
- Added point physics.
- Added tidal phases to water component.
Changes in version v0.15:
- Added a rain weather component.
- Added water component.
Changes in version v0.14:
- Added a skydome component. Skydome has the option of rotating as well.
- Added an example of skydome transparency, allows different layers of sky.
- Added a fog component.
- Added camera zoom for FreeCamera cameras.
- Added a fixed camera class. Switch cameras using the TAB key.
- Added example of fixing camera to an entity. Simply shoot a sphere using spacebar or enter while in fixed camera mode.
- Added a weather component. Weather system uses a particle emitter to create particles like snow. Currently only the snow weather component is included, rain may follow.
- Included a particle system setup. Particle system is a slightly modified version of the 3D Particle Sample that is downloadable from the XNA Creator's Club site.
- Create a terrain smoothing algorithm.
- Added normal mapping for terrains.
- Terrains no longer tile, and no longer fade in and out by distance. Terrain textures are simply wrapped over terrain.
Changes in version v0.13:
- Setup template on a component-based system. This will allow the programmer to simply add components they need or want, and leave out others.
- This also allows me to create components individually, which could be downloaded seperately and added to the game template as needed. It will also keep the game template program from getting more complicated for the programmer as I add to it.
- Camera, input, light, terrain, and timer classes are all components and derived from components.
- Light was a struct, and is now a class.
- Light was changed to an abstract class. All lights are now currently either SunLights or PointLights.
- PointLight class is still under construction and there is no code for rendering point lights.
- Sunlight can now have day and nighttime effects in which the sun can rise and set.
- Timer now uses pure C# components. Previously used interop services.
Changes in version v0.12:
- Minor optimization of momentum transfer between different masses in spheres.
- Added some more comments.
- Deleted the StaticEntity class, it wasn't really needed. Sphere class is now derived directly from BaseEntity.
Changes in version v0.11:
- Major optimation of terrain/quad-tree classes. Game should now require 30% less RAM to load terrains. Slightly less garbage is produced by terrains as well.
- Upgrades physics component from v0.1 to v0.12 (physics demo version, not game template version). Major physics changes include collision between spheres and bouncing of spheres according to terrain normals.
- Included code for integrating and using the Xbox360 Controller and the mouse.
- Commented and documented some of the code.



