RESTful services in Visual Studio 2010 with WCF

Until recently I’ve only really created web services in PHP, which works perfectly fine for my needs. Some recent projects on the other hand require a little more “interprisy” level system. There is already existing code in C#, so I decided to dig into this new WCF stuff that all the cool kids have been talking about.

WCF looks pretty nice if you can find some documentation to get it all working correctly. I’ve built some RESTful interfaces before, so I know what goes into designing and implementing them, but figuring out the head and tail of .NET web services was beastly to start on. Perhaps a RESTful interface in WCF wasn’t the best project to start on with .NET. Oh well.

So I started with Microsoft’s documentation, which was pretty good in general, but spotty on the details:

I guess I needed something a little more hand-holdy to start with, so after extensive searching of the intarwebs I came across:

Thats all I wanted. Give me a working sample to play with! Ok, if I can build from this, you can build from this.

Read More

Import VSS to Subversion

Recently I’ve been dealing with a codebase sitting in a Visual Source Safe 6.0 repository and to keep it brief and polite we’ll say it hasn’t been anything approaching “fun.”  For anyone interested, I found a handy and effective way to convert an entire VSS repository to SVN.

First go grab the newest version of VssMigrate from Codeplex. I don’t know why the author prefered to keep the newest version on Codeplex as opposed to Google Code, but I’ll leave opinions for another time. VssMigrate does a pretty great job of converting repositories once you get it properly configured. The only issues I had are as follows.

If you get an issue about the SourceSafeTypeLib not being found (usually error 80040154), that means you need to register VSS’s ssapi.dll. This should do the trick:

regsvr32 C:\Program Files (x86)\Microsoft Visual SourceSafe\ssapi.dll

If you still get an issue, then you are probably running 64bit Windows. Just change the target platform of the project from “Any CPU” to “x86”.

The only other significant issue I had was in importing the entire repository at once. I didn’t want to bother with importing a single project or just a couple of projects. I wanted to move the whole thing. To do this you just need to remove some of the error checking. As of version you just need to comment out the lines around Program.cs:623-627 and Program.cs:673-681. Specifically these are the lines that verify that you filled in VSSPROJ and SVNPROJ. Then set VSSPROJ to “$/” and you should be set.

Also be sure to change “PerformImport” to “True” and to use a local subversion repo, and set the SVNREVPROPSPATH so  VssMigrate can alter the timestamps and authors.

Read More

Junkster Wing, more than a Space FPS

I’ve been working hard on a game project for several months now and after much insight gained during GDC 2011 I’ve decided its time to get it out there. Junkster Wing is a Space FPS with some interesting RTS elements. Its still in its early stages, but is quite playable already! I will be posting development screen shots, videos, and alpha builds on its official website

Anyone that has been following the development will know that Junkster Wing used to be called Supernova Outlaws, but over the last few months the direction has been changing and pushing in a more unique direction. The old moniker just didn’t really carry the descriptive vibe the game deserved. I think the new name gives a good feeling of what the game will ultimately be about.

Read More

Three Big Lies about Programming

I recently found two fantastic presentations the guys from Insomniac put together about misguided/inefficient approaches to programming and the steps they take to compensate.

The first, titled “Three Big Lies: Typical Design Failures in Game Programming,” puts forth that many of the biggest issues we face as programmers is of our own design. Essentially, we are guilty of over abstracting and over modeling.  They argue that since all programming boils down to data transformations, we should just focus on the data.  “World Modeling” may be a nice way to ease new programmers into the field, but it is not necessarily the most efficient approach.

The second presentation focused on a design paradigm that I have worked very hard to create for many of my own projects.  “A Dynamic Component Architecture for High Performance Gameplay,” essentially lays out a system for modeling game objects through composition of relatively flat hierarchies of components.  Where more traditional approaches create individual objects with complex inheritance systems.  The author not only explains the benefits of the system, but also a sample of his API and many examples of how it helps improve their system.

If these articles don’t challenge the way you program, then either you are a genius and have already made these revelations, or you’re an idiot.  Enjoy.

Read More