Monday, August 08, 2005

Medal of Honor - European Assault

I have been playing MOH: European Assault for XBox lately, and I think it is a pretty solid WW2 shooter.  The controller gun action is pretty easy to get used to (I’m so used to a mouse it’s sometimes hard to play on a console).  I don’t know what is is that attracts me to WW2 shooters over others like Viet Nam or futuristic ones.  Maybe it’s the terrain, maybe it’s the time period, I don’t know.   I’m addicted and I play just about every single one that comes out.

One thing is bugging me though.  Why is it that in just about EVERY World War 2 game I’ve ever played snipers pop out of windows on the 2nd or 3rd floor, you shoot them, and they fall forward out of the window.  For a genre of games that are supposed to be incredibly realistic, that just seems stupid.  In 1944 did bullets actually pull people toward the shooter?  Not only is this dumb because it happens, but also because it happens to ANYONE who is standing near a ledge.  I know for a fact if I shoot this guy on the water tower that he’s going to fall over the railing.

Here’s a screenshot of what I’m talking about:

Moh_falloutofwindow

Of all of the WW2 shooters out so far, here are my favorites:

Brothers in Arms – I love the realistic team play.  I rarely play a game like this twice, but this one was an exception.  I can’t wait for BIA 2.

Call of Duty (and expansion) – This game was so cinematic, it really kicked MOH out of my favorite spot for a while.  I keep playing this one, simply because it’s so immersive.

Battlefield 1942 – I played this game for hours on end.  The sniper rifle was more realistic than you usually find in games (some people probably found it annoying, but I found it challenging).  I got pretty good at hitting running enemies from 300 yards away, leading the crosshairs in front of their heads by about 2 inches.  Yummy.

MOH Frontline – I feel that this game really set the stage.  It had a great soundtrack and really felt like Saving Private Ryan.  The other Medal of Honors didn’t quite capture the atmosphere like this one, but they were fun to play nonetheless.

Sunday, July 31, 2005

Game Coding Complete - 2nd Ed

Well my copy of Game Coding Complete, 2nd Edition arrived on Friday.  I knew it was going to be good after a good recommendation by Jason Olson.

It is now Sunday afternoon and I am about 200 pages into it.  I am really enjoying his attention to detail on topics that are often ignored in most online resources and even other game programming books!

This book really DOES belong on your bookshelf if you enjoy game programming at all.

Thursday, July 28, 2005

Accessing Session from an HttpModule

Today I wanted to extend my NHibernate implementation to allow for multi-page transactions for certain operations (that I control) and keep with the cleaner ISession-per-HttpRequest pattern for everything else.

To do that I had to modify my HttpModule to allow for this check, but I had no access to the SessionState here.  Why is that?

Here’s what I was doing in my HttpModule:

public void Init(HttpApplication application)

{
//add event handlers
 application.BeginRequest += new EventHandler(context_BeginRequest);
 application.EndRequest += new EventHandler(context_EndRequest);
}

I was creating and disconnecting my ISession object inside of those methods. The problem is that SessionState is not loaded until after the BeginRequest had fired and before the EndRequest had fired. (specifically it is accessibly after the AcquireRequestState event). So, changing my code to this worked:

public void Init(HttpApplication application) 
{
application.PreRequestHandlerExecute += new EventHandler(application_PreRequestHandlerExecute);
application.PostRequestHandlerExecute += new EventHandler(application_PostRequestHandlerExecute);
}

Also, I saw some people online incorrectly suggesting that one implement the IRequiresSessionState or IReadOnlySessionState interfaces, but if you read the docs, those are marker interfaces for HttpHandlers only.

Tuesday, July 26, 2005

Blog Design

I had my blog redesigned by Bob Yu, our lead designer at LyntonWeb.  He’s really sharp, and a whiz with just about any design program he gets his hands on.  He also helped me get the css to play nice in both browsers, but we’re still ironing out wrinkles.

You can check his work out at http://bpd.plantedtank.net.  Shoot him an email if you’d like to hire him.  He’s a good guy.

So, what do you think of my new look?

Wednesday, July 20, 2005

Congratulations, you've installed DasBlog!

Be sure to visit all the options under "Configuration" in the Admin Menu Bar above. There are 16 themes to choose from, and you can also create your own.

 

Wednesday, July 06, 2005

Chinese translations

Sometimes for fun I will read a google-translated, chinese blog and giggle at the funny things that it translates. 
My favorite is “My Guestbook” becomes “Abundant Guest Garden.”

Even funnier is Star Wars: Episode III with chinese translated subtitles…

winterson.com: episode iii, the backstroke of the west

This is hilarious!

Friday, July 01, 2005

ControlInjector article updated

I updated my article on Code Project, the new Control Injector is much better and more useful than before.  If you haven’t yet read it, please do so and rate the article.

The link is on the right under My Articles.

Thursday, June 30, 2005

Replace notepad completely...

I wonder why Microsoft doesn't choose to update some of their most frequently used programs more often.  I mean come on!  When was the last time you saw an update to Solitaire for crying out loud.  (Speaking of, there will be a new suite of card games, complete with nice gooey graphics updates, in Longhorn….)

Anyway, one of those crappy programs is notepad, which I am glad to replace with something better.

Download Notepad2, then run this guy's batch file to tell Windows to stfu and replace the notepad.exe file.

Now I get a decent editor to View Source in Internet Explorer!

Wednesday, June 29, 2005

Lessons learned -- ViewState, Server Controls, and Control lifecycle.

Note: For visitors of your site, this entry is only displayed for users with the preselected language English/English (en)

Ugh, well... I finally fixed the major issue that has held up my development for 2 days now.It really boiled down to the fact that I had properties that were persisting themselves with ViewState like this:

Which will work perfectly well as long as you don't access this property before the control's Init event... This is what I have come up with, (and someone please correct me if I am wrong) is that ViewState is really an IStateBag instance that is given to your control, which is different for each control... This helps eliminate conflicts if I add multiple controls on the same page... If I try to access the property before this instance is created (which may be when our control is added to the parent controls collection... I'm not yet sure of this) then I get a brand new string, not the one that was previously persisted... .NET doesn't give you any error or warning that this is happening, which makes it very hard to track down.

The above worked for most of my server controls, but one in particular was giving me problems. I moved the persistance code away from the property itself, which I think I like better visually anyway, and this seems to have relieved the problem.This is how you tinker with your controls viewstate:


  
private string _myName;
public string MyName
{
get { return _myName; }
set { _myName = value; }
}

protected override object SaveViewState()
{
Pair p = new Pair();
p.First = this._myName;
p.Second = base.SaveViewState();

return p;
}

protected override void LoadViewState(object savedState)
{
Pair p = savedState as Pair;
this._myName = p.First as ArrayList;
base.LoadViewState (p.Second);
}
Hopefully this might save someone a few hours of head-scratchin.... it certainly cost me a lot more than a couple headaches.
Personal Loan - Loans - Money - Credit Cards