Gavin Pugh - A Videogame Programming Blog

Month: March, 2010

Deadly Premonition – A flawed gem?

24 March, 2010 at 12:33pm | New Games

Deadly Premonition

Back when I last had a little spurt of writing in this blog, I really wanted to talk about ‘Pathologic’.

An awesome, unique PC game certainly unlike any other game I’ve played before. Its survival horror pushed to extremes. The development house is based in Russia; Ice Pick Lodge.

I’ve much respect for the game, I tip my hat to a fantastic achievement. My sole disappointment was just that only few people got to experience this gem. Maybe when I play through a second time as a different character: ‘Haruspicus’, I’ll get the gumption to write about it to convince the small readership of this blog to give it a try. 🙂 Knowing that day will likely never come, please read this review:

It’s what led me to give it a try in the first place. It’s an old game, so go easy on the graphical criticism… Speaking of which!

Read more »

XNA/C# – StringBuilder to String with no garbage

23 March, 2010 at 9:50pm | XNA / C#

String Garbage

In my day job I’m a bit of a stickler with memory. I’m at times approaching borderline OCD I think with budgets and fragmentation. 🙂 Having a good handle on memory usage on a game is very important; once you start pushing a console’s limits you can cause a lot of headaches down the road if you’re not mindful of things like memory budgets. Forgetting about fragmentation until it’s a big problem is also a bad idea. Once you’ve started bad practices like this on a game, they tend to snowball and you’re in for a hard uphill battle once they become a problem that needs fixing.

With working in C# and XNA now, the big enemy on the memory front isn’t really fragmentation or running out of available memory. The Xbox 360 has plenty of memory for any project I’d try and tackle myself; coder art for the win! The problem is one of performance, more specifically the lack of performance of the garbage collection system. Garbage collection on the 360 isn’t as full featured as on the full .NET Framework on Windows. It lacks the ‘generational’ model that the full Framework offers, meaning a full collection is performed whenever the system deems it necessary to do one.

Read more »