News and stories from a dev's life
I’m pleased to announce the release yesterday of my latest project – Postcardsfromskyrim.net! This website is a project that I gave myself to both to sharpen my skills through practice, learn new techniques and technologies, and to serve as a guide to some new and exciting technologies and the possibilities they open up. I plan on doing in-depth dives on the various aspects of the application in subsequent posts, so stay tuned.
When I go on vacation to different places, I snap a lot of photos of scenery – mountains, rock formations, etc. When I got into playing Skyrim, I so enjoyed the landscape that the first few hours of the game saw more screenshots captured than monsters defeated!
Picture the Problem
Ever been in one of those situations when a solution almost seems too easy? That’s how I felt recently when I integrated Roslyn’s scripting engine into at an existing codebase with a speed that very nearly made my eyeballs bleed.
There’s a little concept I’m playing around with, and I’m not sure if it’s going to work. The story behind it will take up a post of its own, but suffice it to say that it all started when I read Daniel Cazzulino’s recent blog post on finding key business value by leveraging domain events and reactive extensions, and I immediately thought to myself “this is crazy sweet” and immediately started wondering how well it would work if you could apply the concepts of using Reactive Extensions with XNA. The possibilities seemed compelling. A rough week later (the grisly details of which will also be covered shortly), I took a step back to do some more research and get the figurative ink off my nose and integrate my new findings into the concept’s architecture. One thing I’d found out is that it can be incredibly useful to create a Marble Diagram to represent and model different sequences of events, and their interactions and effects on one another. The material(PDF) I came across discussed the diagrams only in context of the Rx, but I thought it would be useful in modeling gameplay too: a game is a giant state machine (technically it would be a simulation of a state machine. I think.), and a hallmark of a state machine is that subjects raise events and observers listen for events, so there’s my connection!
What’s the common thread between design, failure, and innovation? Disparate elements they all are, to be sure, but nonetheless, after reading my thoughts on some of the points brought up by some of today’s leaders in tech entrepreneurship, I think the connection will be clear as day.
Many people in .NET-land attended or have been reading about from afar (like me) the //BUILD conference, where I’m told that attendees got hooked up with a shiny new tablet computer as well as seeing some really cool things planned for the future of Windows, the cloud, and .NET. It appears that the spirit of Oprah has already migrated west, but that won’t slow down the windy city because we’ve got something more important than any sweet sweet swag or learning about the latest in developer tooling – Ideas.
Post frequency has been somewhat... long in the last (holycrapitsalreadyaugust!) few months. Many things going on, the most notable of which is that Infestation's release has been delayed to closer towards the end of the year. The loss of the project's graphics resource and music / SFX people along with a heavy client workload didn't leave enough resources or time to release on schedule. The final factor was the imminent release of the next version of the Windows Phone OS, 'Mango' hopefully starting US customers in November. Taking advantage of multi-tasking and fast application switching is a no-brainer of course, and extremely easy to do - Sean Wildemuth has a concise example here. There are some things that I could do with Live Tiles, perhaps displaying the player's highest score, or random stats perhaps. Doing the non-gameplay screens and UI in Silverlight is now an option as well, so I'm contemplating that too. I don't think that there are really any major other new things in Mango that Infestation could take advantage of, but I'll certainly be keeping an eye out for things i've missed.
Creating a UI feedback and interaction paradigm
One of the major design considerations for Infestation was how big to make the game world. Many early (and successful) games in the tower defense genre set the world size equal to the screen size. Locking the world size to the size of the viewport has the advantage of simplifying a great number of tasks, including camera, input, and artwork.