Mar 25, 2012

View a contents of the GAC in .NET 4.0

Did you knew that the only correct way to view the content of GAC (as of .NET Framework 4.0) is by using gacutil –l command? Discovered that just now. My first reaction was "ORLY?". Microsoft must be joking but, no. Old good assembly folder indeed doesn't show all .NET 4.0 assemblies. ILSpy's (ILSpy 1.0.0.1000) "Open from GAC" also showed wrong results then searching assembly by name.

As I've discovered there are two GACs now, and this is the root of the problem. To complicate things more, there is two gacutil.exe (four if you count x86 and x64 versions) versions, one for CLR 2.0, and one for CLR 4.0.

Can't say for everyone, but searching some hundreds assemblies thru a console output of seems like a not very convenient work. That's an odd, strange behaviour for such developer oriented company as Microsoft. So currently I'm in search for good universal utility which will provide convenient interface to manage this GAC mess. I'll update this post if there will be any progress in this quest.

Update. Here is my discussion about gacutil.exe on StackOverflow.

Mar 21, 2012

Digger.NET in development, part 2

As mentioned in previous post I've started by convertion graphics data to real graphics file format. The easiest part was symbols data, i.e. game font. The result is as follows:













This is a 192x192 image (16x16 symbol grid), there symbol is located based on it's ASCII code value.

The symbol data was a simple single bit per pixel, there each pixel was half of the byte. For examle symbol A was represented as follows:

A
0x00 0xff 0xff 0xff 0x00 0x00
0x0f 0xff 0xff 0xff 0xf0 0x00
0x0f 0xf0 0x00 0x0f 0xf0 0x00
0x0f 0xf0 0x00 0x0f 0xf0 0x00
0x0f 0xf0 0x00 0x0f 0xf0 0x00
0x0f 0xff 0xff 0xff 0xf0 0x00
0xff 0xff 0xff 0xff 0xff 0x00
0xff 0xf0 0x00 0x00 0xff 0x00
0xff 0xf0 0x00 0x00 0xff 0x00
0xff 0xf0 0x00 0x00 0xff 0x00
0xff 0xf0 0x00 0x00 0xff 0x00
0xff 0xf0 0x00 0x00 0xff 0x00


Initial A is a header the rest is the symbol data. Full symbol data file can be viewed here.

Mar 11, 2012

Digger.NET in development, part 1

As you probably may not know, I'm very interested in game development, but, unfortunatelly, after some attemps some years ago, still have not done anything interesting. Some time ago I've learned about XNA, and again was ready for another attempt in learning this part of software development world.

As a big first task I've decided to port a Windows version of Digger Remastered project to .NET. The original source is a DirectX Windows C application. The project I've started have two main goals: 1) maintain and improve original C source; 2) create XNA port of the game.

For a relatively long period of time I slowly cleaning up, commenting, and refactoring original source code. First big improvement was that I moved hardcoded graphics description data to a separate files. After that I was generally really bored with a project, since with such little comments in the original code it was really slow and frustrating task to decipher it. So, with a help of Learning XNA book I've decided to move on.

The first part is to convert original graphics data to real graphics format. For that porpose I've created Digger.Convert project. It's sole purpose would be a set of graphics files, which will be a sprites for a game.

Game uses custom graphical font to display text. I think it's a good idea, as a first step, make an XNA app which will print text with this custom font from a keyboard in realtime (kind of text editor). This will be my first milestone in XNA project.

Mar 7, 2012

Be careful with magical code

Just a link to a wonderful article, a must read for any developer who have that strange uncomfortable feeling working with another "silver bullet" framework.

Feb 23, 2012

How should development of a game ends

This one is a good example (there is also part 2). Terraria is incredibly good game. Actually it's the best game I played in a last year, and I mean all games, not just indies. But. You should be honest to your players and youself, you should not be a pusher. There were, clearly, big possibilities to continue further development of Terraria. But it would be a fake. If developer is making only money on it. I think modern game development suffers pretty much from make money goal. So such an action may seem absolute madness to them. If it was, say, Blizzard, then we would see Terraria 2, 3, World of Terraria etc. But with such pusher behaviour, your game idea, your game world, is on steroids and will always results in unnatural and very predictable games. Starcraft II is an example. It's a very good game, but it doesn't have a soul, it's a pure marketing product. I think large game studios became hostages of themselves, they just can't work another way now, or they will go bankrupt. This is the part there indie studios have major advantage over them. This explains why indie games are so popular lately: they have soul. Like an old games, then there wasn't unstopabble sequels, addons, prequels. There is exception though. Valve managed to fight temptation to make money, and continued to make good games. But that's a personal opinion. 

Anyway, there is some very interesting game in develppment now from some other creators of Terraria. It could be a hit, it could be a failure, but I'm most certanly will try it!

Update. An interview with Andrew "Redigit" Spinks the creator of Terraria. I'm glad to find this particular answer which just says that I meant to say, but in some fewer words:

What is your take on the future of indie games vs. the big-name developers?
It’s not my intention to bad mouth the big-name developers, but from my perspective the recent rise of indie gaming is due to big-name developers losing touch with what gamers want. Gaming shouldn’t be treated like a business. If you genuinely enjoy your product, then there is no risk involved because others will as well.

Jan 18, 2012

Configuring BizTalk 2006 R2 on cluster

Then you try to configure BizTalk 2006 R2 in cluster environment, you can get error similar to:

The SQL Server 'SERVERNAME' cannot be used with the SSO Administrator account 'SSO Administrators'. Local accounts cannot be used with clustered SQL Servers. (SSO)

To fix this (which worked for me) add you domain to user groups like "DOMAIN\SSO Administrators" and "DOMAIN\SSO Affiliate Administrators". Of course you also must use domain user which belongs to both this groups. And here comes nasty trick, you need to deselect and select again "Enable Enterprise Single Sign-On on this computer" checkbox, only then error goes away.

Jan 11, 2012

Holographic code

Wow, this is great article. I've worked with such code, but always wasn't sure how to call it.