17,528 reputation
43580
bio website andrewrussell.net
location Brisbane, Australia
age
visits member for 3 years, 9 months
seen 2 hours ago

Hi! I am Andrew Russell. I'm an indie game developer from Australia. I'm a Microsoft MVP for XNA/DirectX.

Visit my blog at AndrewRussell.net or follow me on Twitter @_AndrewRussell.

Spending too much time procrastinating on Stack Exchange? Or wish you could block the Internet for a while, but need to whitelist Stack Exchange? Check out my Kickstarter: Connect for a Reason.


My current game dev project is Stick Ninjas A 2D multiplayer platformer-shooter. I'm doing a weekly DevLog video series about it, which you can watch on YouTube.

My previous projects include:

  • ExEn, a cross-platform port of XNA that runs on iOS, Android and Silverlight
  • Light Blocks: cross-platform falling-block game to demonstrate ExEn
  • Dark: A 2D physics-platformer with fancy lighting effects (PC and Xbox 360)

Mar
26
revised C# - Separating Overlapping Rectangles
added 17 characters in body
Mar
26
revised C# - Separating Overlapping Rectangles
added 1 characters in body
Mar
26
answered C# - Separating Overlapping Rectangles
Mar
19
comment How can I use a Texture2D larger than 2048 x 2048?
Here's my answer to a similar situation over on Stack Overflow.
Mar
19
revised How can I use a Texture2D larger than 2048 x 2048?
added 289 characters in body
Mar
19
answered How can I use a Texture2D larger than 2048 x 2048?
Mar
18
comment Looking for XNA patterns
Please keep in mind that this is not a meaningful decoupling unless you have multiple DrawModel types (at the same time). It will be far quicker to keep a simple architecture (ie: member Draw methods) and, when the time comes, to create a branch in version control (you are using that, right?) and do a "Find All References" to the Draw method and modify those methods to modernise the graphics. There is an excellent chance that any complicated architecture you create now will be "wrong" for advanced graphics in any case! So the less code you have to write and maintain now, the better.
Mar
18
comment Looking for XNA patterns
(Also take a look at this presentation (YouTube) for some more relevant thoughts.)
Mar
18
comment Looking for XNA patterns
@nuclearsweet A lot of game development is getting a "feel" for how much architecture you need. It's very easy to go overboard. If you start with something extremely simple, you can get an idea of how little architecture you can get away with. Generally: less architecture == less code == easier to modify == better. (Work down my list in my afforelinked "game architecture" answer, not up.)
Mar
18
answered Looking for XNA patterns
Mar
18
comment Unit Testing a C#/XNA Game Project
And the idea that unit tests need to be run "often enough" (as in: always, in an automated way) is bogus. Code that doesn't change obviously doesn't need to be re-tested. And when the code is being modified, the developer doing the modifications should be doing so while utilising the appropriate available tests (visual, code-based or otherwise). Obviously there exists code with a certain risk profile where an automated test is a worthwhile time investment. But such scenarios are especially rare in game-development.
Mar
18
comment Unit Testing a C#/XNA Game Project
Nearly four years on, and I feel I've developed a better understanding of why the "visual unit test" works so well: Unit tests are a development tool. A typical automated unit test can tell you that something is broken. But a visual unit test can let you explore very complicated algorithms and help you quickly identify why something is broken (particularly when combined with live code editing). Often a visual test can identify issues that you'd otherwise have to anticipate to test with code, or issues where there is no "right" answer (eg: tuning).
Mar
18
comment Looking for XNA patterns
Here's a (my) popular answer on the subject.
Mar
14
comment C# XNA - How to create a menu with bools and textures?
That's a problem with your code. Use the debugger to step through it and see if what it's doing matches what you expect. Inspect the values at they change in Watch window. Use "find all references" to locate all the places that your variable could be being modified.
Mar
13
comment Cubic bezier for easing?
(The thing about a hash table is it, you know, involves a hash function ;)
Mar
13
comment Cubic bezier for easing?
Certainly. I just noticed you actually had actually suggested binary search on the equation itself all along. I took the liberty of bolding that - because it's buried in all the stuff about lookups - and I feel that it is by far the better solution (for any solution that is not O(1)).
Mar
13
revised Cubic bezier for easing?
added 48 characters in body
Mar
13
comment Cubic bezier for easing?
Yep - just understood what you meant just as you commented. That's a bucket sort, not a hash table. Still - probably not the most efficient choice for something like tweening.
Mar
13
comment Cubic bezier for easing?
Actually, if you're willing to do a binary search, and you can figure out if the curve is a function (possibly numerically or by constraining the inputs), then you don't even need the lookup table. You can do a binary search on B(t).X itself, and save yourself the lookup table (it's probably faster).
Mar
13
comment Cubic bezier for easing?
A binary search is probably overkill for tweening. A numerically-precalculated 1D lookup table with fixed spacing on the X axis is probably a better approach. (Not sure how a hash is applicable here.)