August 2010
1 post
XNA 4.0 Performance Considerations
A few days ago I stumbled upon an excellent talk by Shawn Hargreaves at Mix10.  You can view it online, or download a high-def version of the video and PPT slide deck from here. If you like what you see, you can get the demo Shawn shows from here. So that said, a few points of my own to add: WP7 does not support unsafe.  this takes away a lot of CPU optimizations that you could do on PC and...
Aug 1st
July 2010
17 posts
1 tag
VS2010: IDE performance is laggy (how to improve)
I’ve seen some sluggish performance in the VS2010 ide, and thought i’d share how i improved performance: Go to Tools —> Options drop-down menu Click Environment —> General from the list in the VisualExperience box: Uncheck “Automatically adjust visual experience based on client performance”  Uncheck “Enable rich client visual...
Jul 28th
free ebook: D3D 10
a free ebook on dx10 stuff by some of the big guys in shader books: http://wiki.gamedev.net/index.php/D3DBook:Book_Cover
Jul 25th
game design: agression
interesting link on winning/loosing in games http://www.lostgarden.com/2009/11/testosterone-and-competitive-play.html
Jul 23rd
vs2010 resources
here’s some resources i gathered on visual studio 2010 (new features + tricks) VS 2010 debugger improvements VS 2010 Pro Power Tools (need pro or higher to use) 10 cool things you didn’t know about vs 2010 Debugging with Intellitrace (ultimate only) More details on Intellitrace
Jul 20th
4 tags
moving to xna4
Now that the Xna4 Beta is out, our team decided to take the plunge. A few things to be aware of Xna4 is VS2010 only. but xna4+vs2010 can live side-by-side xna3.1+vs2008  Xna4CTP uninstall is a PoS (broken) use the  XNA Game Studio cleanup tool if you run into problems uninstalling any version of XNA.  (you will) Resharper 4.5 does not work on VS2010 upgrade to 5.0! Resharper 5.0 doesnt...
Jul 16th
1 note
4 tags
critical section perf trick: reducing casts
If you’ve ever had to do something like this: if(someObject is MyType) { var myClass = someObject as MyType; myClass.DoStuff(); } then give this a try in critical (perf) sections instead: var myClass = someObject as MyType; if(myClass!=null) { myClass.DoStuff(); } it reduces your cast operations to 1 instead of two, and offers similar readability. enjoys -JasonS
Jul 13th
4 tags
incremental redesign of Novaleaf Engine
we are about 2/3 through our post e3 “fix up” month, and thought i’d share a tiny bit on what we are doing: What was wrong with our E3 demo: The e3 demo was pretty, but had some technical issues: world objects were atomic only: this means buildings were a single, opaque object.  not because we only support atomic objects, but I didn’t want to spend time finishing the...
Jul 11th
4 tags
.Net SortedSet is almost awesome
I’m working on rendering infrastructure right now, and came up with an idea for how to store and sort renderPackets based on criteria efficiently using a binary heap. What’s the BCL got? That’s great, but I remembered seeing an MSDN article on a new BCL collection called SortedSet<T> Nice features It’s pretty sweet.  As this CodeProject article describes, it has a...
Jul 10th
4 tags
Everything you ever wanted to know about CF.NET...
These are the holy scriptures of CF.NET performance, specifically written for XNA’s XBOX360 CF.NET implementation 3 years ago,  those people doing WP7 development should be able to learn extremely useful perf tuning tricks from these: http://blogs.msdn.com/b/netcfteam/archive/2006/12/22/managed-code-performance-on-xbox-360-for-the-xna-framework-1-0.aspx ...
Jul 9th
3 tags
my thoughts on scenegraphs
Some posts on how to use or not use scenegraphs got me to write up a little on how we use them: we use a spatial query for game objects, but a composite object (such as a building) may be made of sub-objects, so i basically have a scenegraph for those.   this also lets a composite objects manage their own collision resolutions, extending the base functionality where needed. so a hybrid...
Jul 8th
3 tags
.net 4.0 "ElasticObject" (dynamic duck typing)
I came across something nice for .net 4.0, potentially scripting functionality  http://amazedsaint.blogspot.com/2010/02/introducing-elasticobject-for-net-40.html Elastic Object offers a nice way to define/edit xml via duck typing, which may be useful for user-specificed data formats. keeping it in mind, but unfortunately compiler services are not part of the CF framework, so this...
Jul 7th
5 tags
new sandcastle is out
At Novaleaf, we use Sandcastle to generate code documentation. Not only code documentation, but as part of our “Novaleaf Simplified Process”, a major concept is “Close To Code”, meaning if possible, all documentation should be done in the code files. So, code documentation tools are very important to our development methodology. We are about 2 weeks away from moving to...
Jul 6th
3 tags
agile planning poker
if you are a part of an agile team and participate in “planning poker” you might find this site interesting. if not, move along.  there’s nothing to see here. -JasonS
Jul 5th
3 tags
WatchWatch
free c# design pattern ebook:  if you don’t own one, this may be your ticket….
Jul 4th
2 notes
4 tags
Gamefest 2010 presentations
A msdn blog noted that the gamefest 2010 content is up and available to download get the US or UK content enjoy! -JasonS
Jul 3rd
1 note
2 tags
Windows file copy sucks
trying to move a few thousand files in Win2k8 server: wait an hour for windows to “calculate” how long the file copy would take (of course, all that calculation time without actually doing a, you know…  COPY) click “cancel” and then wait 30 minutes in disgust as windows trys to figure out how to cancel a “calculating”. open task manager and hard-kill...
Jul 2nd
3 tags
Direct Compute Lecture Series
If you are interested in taking advantage of GPGPU development using DirectX’s DirectCompute,  here’s the best chance you have to leap into it: http://blogs.msdn.com/b/directx/archive/2010/06/15/introducing-the-directcompute-lecture-series.aspx This lecture series offers a full noob-to-expert curriculum towards GPGPU mastery. -JasonS
Jul 1st
June 2010
23 posts
3 tags
Development Methodology Documentation
part of an email i sent related to some “workflow” work i’m doing on my “spare time” this week…. I think the ISO process that Ann is spearheading is a great way for us to improve our internal workflow, and that gives us a chance to discover a better, sustainable development methodology. previously we have used “waterfall” and “scrum”...
Jun 30th
3 tags
cool .net 4 feature: Unity
http://unity.codeplex.com/ Unity is a dependency injection framework. not a mono based game engine ;) -JasonS
Jun 29th
1 note
2 tags
cool .net 4 feature: a bunch
an article i found showing a bunch of cool .net 4.0 features:  http://amazedsaint.blogspot.com/2010/05/4-net-40-libraries-you-should-know.html perhaps not as applicable to game development as Code Contracts (see yesterday’s blog post) but interesting to think about…. - JasonS
Jun 28th
3 tags
cool .net 4 feature: code contracts
http://msdn.microsoft.com/en-us/devlabs/dd491992.aspx next “free” chance i get (or perhaps when architecting the multicore frameworks) i plan on looking closely at this code contract library. why?  to do debug-time race checking, and checking if objects are alive. check it out and ponder :) - JasonS
Jun 27th
3 tags
Jason's 1 week dev goals
a peek into my architecture planning, this is part of an email I sent to the dev team yesterday, describing what i’ll be doing over the next week.  Maybe I”ll blog about some of the features, especially if you leave a comment asking :) Engine Redsign as mentioned last week, my target is to get back to “e3 demo feature complete” by July 17th. so I’ll be spending...
Jun 26th
getting more from VS Express 2010
the klucher (msft xna team) posted about how to unlock a little more functionality in the free VS Express 2010, for those without pro. http://klucher.com/blog/expert-settings-for-multiplatform-development
Jun 25th
2 tags
Whats up with Tumblr?
I just noticed today that my last blog post was 3 days ago.  whats up with that? I have a queue of 11 posts right now, and configured tumblr to post 1 per day, but for some reason it broke down…. doing a google search shows that actually, tumblr is broken, and many people are complaining about broken queues. so dear readers, please be patient.   I will start manually posting tomorrow...
Jun 24th
2 tags
towards a server-less office
We have all heard of the mythical paperless office,  but what about a serverless office? That’s what I’m about to achieve here at Novaleaf. Since we are a small (16 person) company, I moonlight as the IT department whenever stuff breaks.   When I started out this company, we were running a microsoft shop: windows 2000 domain exchange server  sharepoint server office communicator...
Jun 21st
4 tags
WatchWatch
Building Windows Phone 7 Games with Xna Game Studio 4.0 Microsoft TechEd has released a video presentation and it’s ppt slides describing how to do just that. Great tools and education people, get your game on! -JasonS
Jun 20th
4 tags
1 little, 2 little, 3 little endians
I came across my first “endianness” bug yesterday. Previously, I was vauguely aware of bit-packing order differences on various platforms, but as it never impacted me or my team directly, I’ve never given it a second thought (especially thanks to the .Net and XNA framework’s great abstraction abilities). Yesterday however, our graphics dev was trying to do this: ...
Jun 18th
fix XactBld3.exe hang during building content...
originally found here:   http://forums.xna.com/forums/t/39144.aspx there is a bug in XactBld3.exe   that causes it to hang when handling “complex” projects.  (if your build is hung, and in task manager you see XactBld3 with 0% CPU time, this is the problem) here is a workaround. go to your XNA dir (example:  C:\Program Files (x86)\Microsoft XNA\XNA Game Studio\v3.1\Tools  )  and...
Jun 17th
4 tags
A lock-free resizeable array
Asynchronous programming is one of my strengths, and currently my main data structure of choice is a lock-free queue i wrote. Yesterday I found an interesting addition, a lock-free resizeable array presented by AT&T. When I have the opportunity to revisit asynchronous integration into our engine, I’ll firstly look at implementing this algorithm in C#. -JasonS
Jun 16th
4 tags
Spatial Partitioning for dynamic worlds
I posted this as an answer to an xna forums question on what spatial partitioning to use for dynamic worlds.  No sense wasting perfectly good blog-copy, right? :D I am trying to decide which algorithm I should use for partitioning the game world. My game is 3D and has dynamic objects. I was thinking about maybe an Octree would be good, but come to think of it, it has to calculate EVERY frame...
Jun 14th
7 notes
2 tags
Cutting Edge Game Engine Architecture
I found this great R&D presentation from insomniac studios a few days ago. Suffice to say, it makes me happy about the engine architecture decisions we are currently making in Novaleaf’s own engine, as I’d go as far to say what insomniac is doing is almost exactly what we are.  Great minds think alike, eh? Good to know that our R&D is on par with what you’d be getting...
Jun 12th
3 tags
the Dispose() pattern
Our “Niva” engine is a managed engine.  Not managed in the .NET CLR sense, but managed in a simulation state sense.   The base class of just about everything in our engine is an abstract class called InitializeBase, which is basically a glorified implementation of the Dispose pattern. So what’s this dispose pattern you say?  well if you read the bible you would know. For those...
Jun 10th
1 note
4 tags
Concept vs In game
a better teaser, this one showing our prototype level versus it’s original concept art -JasonS
Jun 9th
2 tags
Top 10 things that annoy programmers
While I don’t agree with the priority, this page gives a great example of some of the biggest things teams of developers should be considerate of.  If you are a manager, please do pay attention! -JasonS
Jun 8th
3 tags
CAS dev journal
since I’m a bit busy on development these days, I thought i’d start a series of “dev journals” so i can keep the blog updated, while doing something directly related to my development responsibilities (instead of rambling about tech) So i’ll start on that the next post :) - JasonS
Jun 7th
a bit on xbox hardware cores/threads
For people doing XNA development on Xbox360, please note the difference between threads and cores. hardware threads have their own registers, but otherwise share resources with other hardware threads on the same core. So the one core you have access to both threads on, it would be adventagious to run a multicore algorithm on them, so they can share the L1 and L2 cache (xb is terrible on cache...
Jun 6th
2 tags
Sink or Swim: Research and you
I’m a crappy programmer.  That’s right, I went out and said it.  Why else would I choose XNA and C# to be Novaleaf’s language of choice? Because I not only want to be lazy, but because I have to be, or my mind will asplode due to overflow. I’m a crappy programmer, but I: do my research and build reliability into my code. Both are long topics, and since I’m about...
Jun 4th
2 tags
Got Negative Capability?
A few days ago I stumbled upon the philosophic concept of Negative Capability.  I thought it was an interesting concept, and as software development is an artisan profession, the concept of Negative Capability is as applicable today as it was 200 years ago when John Keats defined it. Applying negative capability to game architecture So if you have ever managed a game development project,...
Jun 3rd
Don't use P4Merge
okay, okay.  I admit I fell victim to “new tools euphoria”. Since we had great success using TortoiseHg (Mercurial) I was on a spree to find a better merge tool than TortoiseMerge.  (I still say KDiff3 sucks). And alas, I fell victim to a sexy looking “free but commercial” product.  Perforce’s P4Merge. As mentioned in my last post,  P4Merge has some nice features....
Jun 2nd
Jun 1st
May 2010
20 posts
A bit busy
E3 deadlines So we are very busy trying to meet a June 12 E3 deadline for our current project, CAS. As Technical Director (and Chief Architect) I can say I have supreme confidence that our engine we are making is fabulously awesome and, I dare say, revolutionary in this industry. The problem is (and of course there has to be a problem), there’s just so darn much to do. I will attempt to...
May 31st
3 tags
Comparing Visual Diff tools: TortoiseMerge vs...
Since we recently switched to Mercurial, I took this as an opportunity to compare my tried and true TortoiseMerge against something else, that can give 3-way merge functionality. I found that Perforce’s merge tool: P4Merge, is a free download, so I gave it a try.  (Generally “professional pay” products are a little better than free competitors)  and It seems this is the case...
May 27th
3 tags
Tips using TortoiseHg (Mercurial) [Part 2/2]
Note: This is part 2/2 of my “tips using TortoiseHg”. Branches are your friend  if you are working on something that “isnt a bug fix”, make a branch!  This is NOT LIKE SUBVERSION. subversion branches sucked. Mercurial branches are AWESOME. so use them.  here’s how:  when you are ready to checkin your new code (the first checkin of your new feature)  choose...
May 26th
3 tags
Tips using TortoiseHg (Mercurial) [Part 1/2]
Use TortoiseHg + VisualHg  Just like we used TortoiseSvn and AnkhSvn before:  TortoiseHg gives a good explorer GUI  VisualHg helps you from screwing up your repository by dragging files around in Visual Studio.  Use TortoiseHg’s “Repository Browser” for everything Mercurial related  It has buttons for almost all the important functionality, and adds some good features of...
May 25th
5 tags
A book every and all C# developer MUST read.
The Framework Design Guidelines is our holy bible.  While there are many other holy scriptures, they all build off the divine work set forth by the prophets Abrams, Cwalina, and Hejlsberg.  Here at Novaleaf, we attempt to follow all except two laws as set forth in this book.  Those being: public class variables instead of properties.  (realtime performance needs) Events / Delegates...
May 24th
Comparing Mercurial and Subversion
Here are some of the most profound improvements I’ve discovered using Mercurial over Subversion. You have your own local repository.   This lets you commit your changes locally and it doesnt break anyone else until you push to the server. And of course, this means if you are on a laptop somewhere without internet (on a nice beach here in Thailand), you can happily keep working while using...
May 23rd
2 tags
tumblr is almost awesome
it’s free, easy to use, and gives relativly what i want/need for team collaborative blogs (i hope you’ll start seeing some of Novaleaf’s other developers appear soon). The only gripe I have right now is their wysiwyg editor. firstly, it only allows you to do very basic styling of your text.  No headers, no colors. but secondly (and what got me to do this post) is that...
May 22nd
3 tags
Mercurial (Hg) is awesome.
So I decided to go with Mercurial.   I wrote a big post on why we choose mercurial, but when i hit the “spell check” option, tumblr decided to eat my post, and of course the recover option didn’t work.   serves me right for trusting “the cloud”.  (foreshadowing of days to come using a distributed RCS?) Anyway, here’s the important info for those wanting to do...
May 21st
3 tags
n-tier systems in games (or lack thereof)
I was on #XNA today on efnet, and was asked: [20:17] <frogger> Do games use the 3-Tier approach? Like, Business-Data-Presentation layers? and so I thought i’d share my reply with you, dear reader. You could use N-tier systems with game development.  you could, but usually not, and probably for good reason. Not because it doesn’t make sense, but because generally games are...
May 20th