Archive for Information

Info – My Various Helpful Links

Hi Everyone,

Im still hard at work on my Xtyped game design specification, and hope to publish this soon. Im just threading some links which other indie developers may find helpful:

2D:
2D Particle Emitter

3D Misc:

3D Optimisation

Vector Addition/Subraction (Very Interesting)

Matrix vs. Quaternion Rotations

Verlet Mathes

 

Effects/Shaders:

NVDIA Shader Library

HLSL Introduction

 

Collision:

Transformation and Collision of Sprites

Metanet Collision Techniques

 

3D Modelling:

Softimage – Linking to XNA Game Studio 4.0

Softimage – XSI Modelling Demo

Softimage – Video Tutorials

Maxs Realms

 

Misc Tutorials:

Nics GameDev

XNA Videos Course 101

XNA Videos Course 201

 

I will add more when i come across them ūüôā Obviously there are links to other Devs pages on the front left handside of the blog (blogroll) so feel free to browse”

Enhanced by Zemanta

X-Typed – Planning/Scope/Design

 

Ive decided to start acting alittle more professional while working on my 1st game, X-Typed. This game will be a side-scrolling space shooter, sort of on par with R-Type (See what ive done there!). So ive decided to:

 

  1. Build a Project Plan – Instead of using MS Project, which i hate, im using a open source piece of kit called ToDoList, from AbstracSpoon. As you can see below – there is alot! This process i use at work everyday, is really helping me to cut it into pieces. At the moment (like work) these are guessimates. Im still learning XNA, so scope creep will definatelly start appearing.
  2. Write a Design document – This is the first thing im doing before anymore coding. Im writing down all my ideas, fleshing out the background, story, and laying the ground work for what actually im going to code. In addition i can use this in trying to attract potential artists/modellers to my cause!

    Im busy with this as we speak, and i intend to spend a good few weeks making this, so i will publish it here when its done.

  3. My plan is to get 1 level demo up and running by Jan/Feb time. If the game/code is in a good enough state, i will think about releasing forDream.Build.Play 2011, which has recently been announced.

 

Enhanced by Zemanta

8WeekGame – Competition 2 – 3D Collisions – Oh My….

 

 

 

 

Right, i have a week off this week to:

 

1) Code lots

2) But a Windows Phone 7 HTC HD7

3) Fable 3 of course…..

 

The “Code Lots” statement¬† couldnt ring more true. Im now doing to move onto 3D Collisions. I have an asteroid and ship model loaded, and i was going to move onto spawning lots of asteroids that moved in random directions, but i thought i would do the hardest part first – 3D Collisions! Now the recently launched App Hub (AKA Creators Club), has a particular sample im interested in here. This sample displays the 3D models name when the players cursor is crossing the models BoundingSpere.

 

Now in 2D games, the basic theory of collisions (Per Pixel or Intersection), is that if two objects (Say a PLayer and Enemy) share the same screen space (Your preference on how much should be specified as a “Collision”) or intersects a bounding oject (usually a rectangle) – then a collision is detected and you perform your own game logic depending on what you want to do (Like a player loosing a life if it hits an Enemy). Screen space is made up of X & Y coordinates of the screen and XNA uses the Right Handed Cartesian Coordinates:

 

 

 

Its little different in 3D, because you are dealing with World Space, which is the area of the game that is used to determine where to render your models. And models are composed of lots of Triangles within a 3D coordinate syste, ie the Z coordinate (X,Y,Z), in terms of the depth. What the sample from the App Hub teaches you is to convert the World Space of the models to screen space (Top left of the screen to bottom right), and check a BoundingSphere intersect between two objects. This is how ive intrepreted it, but please tell me if im wrong!

SO thats what im doing today!  Good luck to me! Hopefully once this is done i can build my HUD for lives and start to actually build some game play, because at the moment ive just been experimenting with ideas.

 

 

 

 

 

3D coordinate system
Image via Wikipedia

 

Enhanced by Zemanta

Info – (Dont Worry Shawson) XNA Evil and Not So Evil Check Lists….Oh My!

I was talking to my 8Weekgame colleague Shawson today, pertaining to XNA considerations when designing an Xbox 360 Arcade game and what to look out for before the submitting to Peer Review. Its a good idea to read the following to get an idea that its just not the game design in terms of logic, textures, physics, models etc that you need to consider, but more fundamental aspects like, what apsect ratios the user has for their TV, HD images for 1080p, localization considerations for other languages other than English. THe list is quite comprehensive, so all you wannabe XNA developers, dont be put off by it. WHat i think is nice, is the Creators Club Community also have a “Not So Evil” wishlist, as not to be too negative:

Xbox360 Programming Considerations

Evil List

Not So Evil List

So dont be scared, as this is a great way of saving time and helping the community, so “Dont Worry Shawson….”

Xbox Live Arcade on Xbox 360.
Image via Wikipedia
Enhanced by Zemanta

Info – ShaderToy – HLSL

Nick Gravelyn has created a cool App that compiles HLSL on the fly! I havent learnt HLSL (High Level Shader Language), but it is something that im coming too in my book XNA Game Studio 3.0.
Check this out if you have any knowledge of HLSL here.

NB: You will need .NET Framework 4.0 found here.

Direct3D 10 Graphics Pipeline
Image via Wikipedia
Enhanced by Zemanta

Info – Game Programming Terminology – Part 2

**This post follows on from Info – Game Programming Terminology – Part 1.

As per my previous post, the following are terms which you may find useful, again these are inspired by my knowledge and Chad Carters excellent book, XNA Game Studio 3.0 – Unleashed.

Effects:

Effects are quite simply used to get any 3D object to be shown on the screen, with effects like:

  • Textures
  • Light
  • Position of Points

One of the XNA classes to use is BasicEffect which will have one or more technique, and a technique will have one or more passes.

NB: More info to come on the explanation on technique and pass.

Index Buffers:

As we mentioned in the previous post, vertices are stored in Vertex Buffers, which is an area in memory containing lists of vertices. So an index buffer is an area in memory that stores indices that correspond to our Vertex Buffer.

For e.g. if you wanted to draw triangle, you use 3 points (x,y and z if needed) in the vertex buffer, i.e 3 x Vectors (x,y,z). If you want to draw a Rectangle (2 triangles), you could use 6 Vertices in the Vertex Buffer. But because the vertex structs in XNA are memory intensive, AND some of the vertices would be duplicated, then you only need to use 4 in the Vertex Buffer.

The Index Buffer will store 6 indices that correspond to the vertices, in the order we want them rendered. This means only the indices are duplicated and not the complex vertex data.

Good example of this is explained here.

Info – Game Programming Terminology – Part 1

I have started doing Chad Carters book, XNA Game Studio 3.0 – Unleashed, and im now on Chapter 4, Creating 3D Objects. Chad writes the book in a very unique way, where he starts with 3D Game logic first before 2D. You may think this is silly, but it is helping me solidify my current knowledge of 2D XNA programming, and making me delve into 3D, way before i would of without this book (maybe never). So hats of to Chad because i think it is actually the way to do things.

On reading i up some new terminology (to me anyways), which i will share with you now, plus some that i already knew, but the newbies of the gaming world may not know:

Vertices/Vectors:

This is an important part of 3D and 2D gaming. All game objects are represented by points in space as a Vector. These are x, y and z coordinates (Cartesian).

Within XNA there are various Vector structs:

Vector2 (X,Y)

Vector3(X,Y,Z)

Vertex Buffers:

The 3D objects we talked about are made up of triangles. This is because the Graphics cards are designed to use triangles as the basic primitive. For e.g. a rectangle is made up of 2 triangles. A triangle in 3D space is 3 vertices.

Vertex buffers are used to store the 3D points in memory. XNA uses the coordinate system by:

x = goes from left to right  Рe.g. left = -1 right = 1 (Horizontal axis)

y = goes up and down – e.g. down=-1 up = 1 (Vertical axis)

z = goes forward and back – forward=-1 back=1 (Depth axis)

A lot of 3D geometry going on here, but as Chad says in his book, even though XNA does a lot for you, it is good to know the math behind it.

Info – My YouTube Channel

My YouTube channel can be found here. At the moment this only includes videos of Manic Mummies, my 1st game i did under the 8WeekGame competition. I hope to add more videos of upcoming games and video Tutorials for XNA, so please subscribe for future content.
I will post on here also to let people know when new content is up though, and hope to tie in Tutorials from here to a Video tutorial on YouTube.

Info – How The XNA Framework Operates – Beginners

Unlike Windows programs (which are event driven), XNA programs runs in a continuous loop until the game exits. While the game is running, the Garbage Collector releases/reclaims managed referenced memory which isnt used. On a normal Windows PC, there are 3 Generations of memory, but because the Xbox 360 uses the .NET Compact Framework assembilies, there is only 1 Generation. This can cause Latency within your programs if you are not careful with memory and the GC needs to run often.

As i said previously, the main application calls your game (inherited by Microsoft.Xna.Framework.Game). The Game class contains various methods which are called during runtime in the following order:

  1. Main games Initialize method.
  2. Each game component Initialize methods (if you have any)
  3. If your game has any Drawable game components, then their LoadContent methods are called.
  4. Main games LoadContent methods are called.
  5. Main games Update methods are called.
  6. Each game components Update Methods.
  7. Main games Draw methods are called.
  8. Each game drawable components Draw methods are called.
  9. The game then loops around 5-8 (ie Update then Draw methods for the main game and components)
  10. If you reset the device, then UnloadContent is called.

This is a basic illustration of what goes on within the nuts and bolts of the loop. The XNA Framework handles the Game Loop within the Framework, either by a fixed or variable step timing. The default is fixed step and it targets 60 FPS (1/60th second).
What this means is that Update method is only called when the Game member TargetElapsedTime elapsed. If it is not time to call Update again, the Draw is called. Microsoft have also built an IsRunningSlowly, which means the game is running under 60 FPS, so XNA tries to compensate and calls Update extra time until caught up (without calling Draw in between).

For more information on the Application Model Overview – See here.