Showing posts with label XNA. Show all posts
Showing posts with label XNA. Show all posts

Monday, August 13, 2007

THE 10 RULES TO AVOID UNWANTED PERFORMANCE COSTS

"... measure, measure, ... , and measure". Yeap, that was what Rico Mariani said during the fourth webcast. The sooner you diagnose, the better.

The spirit associated to the above-mentioned "axiom" is driving your application to pay the costs of using managed code at the proper time, where and when you can afford those costs.

All the slides where quite interesting, and many relevant things were stated like:

  • "not all the dots are created equal" (this is related to "inlining").
  • structs are not as weel handled as reference types (although structs are sometimes preferable).
  • exception handling constrains optimization, and
  • many more.

Finally, there was a great comment, the proof for non-believers that managed code is suitable for game design are all the games that were created for the 360 using managed code (through XNA GSE, of course).

Well, now is Shawn's turn, so gotta go again.

PRE-MORTEM: SCHIZOID

What an interesting webcast this is: Jamie Fristrom & Bill Dugan (from Torpex Games) are commenting on their whole experience to bring Schizoid to the XBox Live! Arcade.

I do agree to what they have said about C#:
  • the C# vs. C++ discussion for game development is like "C++ vs. Assembly" many years ago. With C# you forget about pointers, and that alone says a lot. Plus, performance, speed, etc. is becoming less and less an issue as many games, demos and samples demonstrates, and
  • you don't need to use external languages for scripting (of course, you can do it if you want to), since you can use c# itself as a scripting language (as I said on this blog and on others' blogs).

In short, C# will rule (read my first posts).

What I don't agree -at least, partially: and I know Benny is also gonna hate me for this, is that Test-Driven Development is great for creating "proof-of-concepts" and prototypes -so as to bring your ideas close to the "real" thing quickly (and get some nasty bugs on the initial stages), but from a design viewpoint, relying only on tests to write the "final" implementation/output from scratch could be messy for the final stages and as a base for future projects (one could deem it as a "too aggressive" way of programming, again, only the final product, not the proptotypes).

I mean, you may find yourself in the need of changing many places to get the final product as well as to create future products (like "this class should be responsible for rendering this and that" -instead of the original class- and things like that) . And that could worsen, the bigger the game project, IMHO, of course.

With this I'm not saying "this approach is better than those", "don't use a rapid approach" or things like that. Instead, I'm saying "balance" is the key to a well-designed software. One should find its own approach -mostly if you're going solo, ... the one that you are most comfortable with, but it doesn't mean you have to use one and only one approach. In fact, your way of designing and programming games could be a mixture of methodologies derived from the type of project, available resources (including staff), time/stage/deadlines, and budget (estimated and current costs and ditto for funding).

Why "balance"? Because as these guys' just said (non-textual quote) "if you plan and discuss too much you face the risk that your project gets cancelled ..." (it doesn't matter whether you were implementing it or not), to what I must add, "... but if you plan too little you face the risk of having to redesign a lot of code at later stages."; both extremes could complicate things up in the end. So get the balance, optimus, equilibrium ("sounds" like a yoga class).

Now, I want to listen the round of questions, so bye ... for now!

XNA GAME STUDIO 2.0

The second presentation has finished and many interesting things came out. You can find some of the upcomingfeatures on the XNA Team Blog. Again, what happened to the "Express" word? Simpe. Everything lays now on a common ground!

The news ... there's new content available on the creators site:

You can check it out all here.

Also, you can watch a video of the first Xbox Live Arcade created all the way with XNA GSE: Schizoid (presented on the first webcast by the producers/developers of the game -Torpex Games- and is the focus of the third webcast, which is going to start in a couple of minutes).

Well, in fact I see the guys preparing the third webcast -images and sound is being transmitted- so, again, gotta go ... stay tuned!

AND THE WINNERS ARE ...

Have you watched the first webcast? A great intro by Chris Satchell with plenty of info about the future of XNA v2.0 (first surprise: get to the part about the "pro" version), expected numbers on the XBox Live market (growing very fast), XBOX Live Arcade and ... drums please ... the winners of the Dream.Build.Play compo of this year:

  1. First Place: two games will share this place, both getting all the prizes: "Blazing Birds" and the "The Dishwasher: Dead Samurai" ... btw, Chris, how cruel of you! ... :)
  2. Second Place: my connection went bad at this time but I guess this place is also shared ... please correct me if I'm wrong, but the games getting the second place are "Gravitron Ultra" and "Yo Ho Kablammo!" (the sound went bad but the pictures shown a Live Arcade image among the prizes, so I guess they also getting the opportunity for a publishing/distribution deal? If so, more congrats!)
  3. Third Place: the remaining finalists ... I can bet and hope that many-to-all of you will also get some interest deals and offers from distributors/publishers/etc. in the split of a second ... ;)

Congrats to all of you!

Also, there were shown great demos, in particular, I was amazed with the one presented by the guy of XSI (in fact, the procedural-textured terrain looked awesome).

Ah, yes, before the second webcast begins, in sync with Chris' presentation, Michael Klucher was also announcing XNA GS 2.0 at the XNA Team Blog ... what no "Express" term inthere? Mmmm ... just watch what Chris says about the "pro" version ...

Opps! gotta go ... Michael's presentation has started ...

Friday, August 03, 2007

D.B.P. FINALISTS!!!

At last! Dave Mitchell has announced the top 20 finalist of the Dream-Build-Play contest ...

So, go ahead and direct your browser to the contest's site to meet the finalists.

Congrats to all the ones who created/submitted a game, and special congrats to the finalists .. and good luck in the final round!

Friday, May 18, 2007

TESTDRIVEN.NET AND XNA

There has been many questions in the XNA Creators Club's forums regarding unit tests with the express editions and particularly with XNA GSE. Well, not only unit testing can be executed with the latter but also, TestDriven.NET can be also used again since version 2.5 (still in beta stages). However, from time to time we may found some exceptions with tests related to the content pipeline. Henning Degn explains us why and also brings a simple workaround to that issue.

From Degn's article: "... Some tests in XNA cannot be done dynamically. These tests usually require visual inspection and therefore need to be run manually. Using Testdriven.net you can run test scenarios, simply using an ad hoc test of a function containing the test. Simple. Effective. No need to modify the main method to run these functions.

However, when using any XNA content I have stumbled on the following error:

Microsoft.Xna.Framework.Content.ContentLoadException
File not found. ---> System.IO.DirectoryNotFoundException:
Could not find a part of the path 'C:\WINDOWS\assembly\GAC_32\Microsoft.Xna.Framework\1.0.0.0__6d5c3888ef60e27d\Content\myTexture.xnb'

The reason being that (naturally) I didn’t put my content inside the GAC (Global Assembly Cache)! The ContentManager is using the codebase of the assembly who’s main method called it as its root ...".

BTW, in some chapter of Benny's book it's stated that this tool cannot be used with XNA GSE. Please notice that by the time the book was written, v2.5 beta -the build that reimplmented support for express editions- hadn't been released.

Cheers!

"STENCIL SWIPES"

Shawn Hargreaves has published the third part of the series that cover "transitions", this time centering attention on the use of stencil buffers to produce some nice effects.

From the post: "... Stencil is usually an 8 bit integer value, and is attached to each pixel in addition to the usual color and depth values. You can set renderstates to control how values are written into the stencil buffer while drawing graphics, and also to specify that graphics should only be drawn in areas where the existing stencil values meet specified conditions ...".

Consice, accurate and practical. The best part on the series so far, imho of course ... cheers!

Thursday, May 17, 2007

"XMESSAGE" XNA COMPONENT

Created by X has published a new component for XNA , "xMessage", designed for displaying in-game chararacter dialogs.

From the post: "... the component allows an image to be displayed with the text, and the text is also dynamically changes acording to the size of the dialog. When running the demo use the left mouse button to move the dialog and the right mouse button to resize the dialog ...".

See ya!

Wednesday, May 16, 2007

INTERVIEW TO THE TEAM BEHIND "TOWER DEFENSE"

Zygote has interviewd the guys behind the game "Tower Defense".

From the interview: "... There are four of us currently under the Focused Games umbrella. Justin O'Dell (Anxiety), has been taking care of a lot of the core gameplay functionality such as how the map works and how state, player and enemy management works. Matthew Randall (EviLDeD) wrote the entire audio core for the game, and also did quite a bit of work with Towers and Enemies to get them to track, shoot, move et cetera. Mart Slot is the one responsible for all the fancy particle effects in the game, which will be more prominent in the future. I, John Sedlak (Krisc), have been responsible for the user interface and a lot of the front end work like how the user interacts with the map, how they change levels, and build towers ...".

Later.

DEALING WITH MATRICES IN XNA

Rhysyngsun has submitted to Ziggyware the article: "Introduction to Matrices in XNA".

From the article: "... Understanding matrices is a fundamental part of creating effective games in XNA. Matrices particularly flex their muscle when you're working in full 3D space, however, the math behind them can be daunting. Fortunately, XNA provides most of the functionality for matrices that you will ever need without having to worry about the complicated math behind that functionality. However, it is necessary to have an understanding of what this functionality is actually doing in order to apply it correctly in your code ...".

Watch this space!

QUATERNION CAMERA IN XNA

Scot Boyd, author of the upcoming book "Expert One on One: XNA Game Programming for Xbox 360 and Windows", has provided the source code of the "QuaternionCamera" class which will help you avoid that nasty Gimbal Lock problem that you may face when working with yaw, pitch and roll at a time.

From the post: "... XNA unfortunately does not provide a QuaternionCamera class in it's Framework. Nowhere on the Internet could I find a camera class that provides six degrees of freedom without requiring additional coding from the reader ... In the process of attacking this problem in my book, I've made a few camera classes. I'm posting the simplest class here - good for beginners. The final camera class in the book will be more complicated. This class should provide a good jumping-off point for anybody interested, or a simple helper class for those who just want a camera without hassles. In the camera, GetViewMatrix and CreateYawPitchRoll are where the money is ...".

Read on!

"KRYSALIS" SHOOTER PROJECT

There's a new blogger in the XNA community, which will post details, information and screenshots of the shooter projectKrysalis.

Here you will find some description of the game and here the software being used for its development.

Also, there's a couple of screenshots of the custom tools created for building up the game.

Nice!

FIVE THINGS TO REMEMBER

Head to Kar0nEs blog if you want to know the "5 Things we can learn as developers from videogames".

From the article: "... Yesterday, while travelling to work, I thought about what things PC videogames (almost) always do today that should be applied to general development ...".

Stay tuned!

TABBING BETWEEN CONTROLS ...

... is what you'll see in the video available below, which shows off some GUI features of the upcoming Thrust engine.

From the post: "... Below is a short video clip of me testing out GUI Pathing in Thrust ... I can't wait to see what people come up when using this. In the demo, I am simply tabbing between the controls. It will work much the same with the XBOX 360 GamePad, allowing a user to "tab" to the next menu option, et cetera ...".

Bye.

XNB-VIEWER ... WHAT IS IT?

Shane Lynch has released the first version of XNB-Viewer, a handy application that lets you preview an XNB model with a double-click of your mouse.

From the post: "... You can either drag and drop your XNB model files onto the exe or associate your XNB files with this EXE. Later version of this viewer will support for textures, shaders and other content types ...".

Enjoy!

Tuesday, May 15, 2007

"DAVE WELLER FROM MICROSOFT"

Want to listen to what Dave has to say? Then listen to this podcast.

From the podcast: "... um ..."

Cheers!

RESOURCEMANAGER COMPONENT

Wizzie has released a component for handling resources, and thus the name: "ResourceManagement Component".

From the post: "... This is a very useful component since it allows for managing all of your resources in one object that is available anywhere in your engine via XNA Game Services. The code was written with the 360 in mind so there are work arounds in place for the .NET Compact Framework ...".

Nice!

BLADE3D BUILD 1817 IS OUT

Yes, the latest release of Blade3D beta1 (build 1817) is now available for donwload.

Hereunder is the list of changes:

  • New SimpleTerrain Height and Raycast Operators,
  • New audio system, with import, and preview,
  • New TriggerVolume, GraphTrigger, SoundTrigger and AnimationTrigger,
  • Opacity property now working on many MaterialsPlay Sound Operator,
  • Ability to modify bitmap fonts from gallery,
  • New Bounding Box ActionsBuilt-in support for Idle Animations,
  • Random sound containers,
  • New water normal texture,
  • RenderColorTarget Semantic Now Evaluated Per-Pass,
  • New Scene Level Bools For Enable/Disable Display Bounds, and
  • Fixed some floor plane draw issues.

Happy coding!

USERCONTROL FOR RUNNING YOUR XNA GAME WITHIN A WINDOWS FORM

... or as Nuclex has posted: "XNA Windows.Forms UserControl".

The preview: "... as can be seen in one of my recent news posts, I did just that while developing a world editor for my upcoming game Island War. Because of the great demand for such a component, I decided to release my XNA GameControl class to the public ...".

The screenshot:

And the link to it.

Handy, very handy ...

CRIMSON UPDATE ... AGAIN

Diagrams showing the layout of the engine are now available:

Plus a new video:


Also, as usual, a preview of the post: "... Animated sprites have been a fun feature to add, my implementation hangs around the concept of an animation sheet. my orc test sprite has some animations in separate.png files and some bunched together on the same .png. So how do i handle them? every animation gets a animation sheet, which contains its start frame, end frame and a reference to its texture. these are held in a dictionary as a value, the key to that dictionary is a CompassDirection (north, NorthEast ect). I have a load of these in a list, and i keep there indexes in another dictionary with a AnimationState(move, idle, jump etc). To get the correct animation sheet you just need to know what direction and animation you currently in and pull em out ...".

Ultrahead's out.