Bill Morefield My thoughts, discoveries, and occasional rambiings.

March 6, 2016

Roguelike Development with C# – Part 1: Introduction

Filed under: c#,gamedev,roguelike — Tags: , , — Bill Morefield @ 11:00 am

Welcome to the first in an indefinite series of article covering my experiments creating Roguelike games using C#. I developed a renewed interest in the genre a couple years ago when I rediscovered Nethack, one of the many descendants of Rogue which gives its name to the genre of Roguelikes.

Defining a Roguelike is a bit difficult, especially as the term has come to be popular in the independent and small studio game space. There are a number of definitions proposed for Roguelikes, but .

To start I’m looking at exploring the traditional roguelike structure. The basic game here will be a single player RPG where the player controls a single character. We’ll stick with the traditional dungeon crawl setting using procedural world generation along with random distribution of creatures, items, etc. The game will be turn based, allowing the player time to consider each decision. We’ll also set the game with permadeath.

This last feature means that the player’s character dies, then the game is over. No checkpoint to start back from, no loading last save and trying again. Spend hours playing and then do something stupid and die? Too bad. It’s a harsh feature compared to many games where you can quickly save before doing almost anything.

The goal here isn’t to recreate Nethack or even necessarily produce a high quality game. I plan to write a playable and hopefully enjoyable game, but my primary goal is to learn. It’s been a while since I’ve done any type of game programming and I think this could be a fun project. I though it would be an intersting experience to document the process here and in the process also create a tutorial on build a Roguelike game in C#.

So a few decisions on what I’ll be creating. The game and tutorial will be written for Windows using C#. Most of the original Roguelike games used console graphics and I’ll do the same in this tutorial to keep things a little simpler. I’m also intentionally being a bit vague on when the program and tutorial are complete. I want to explore and try things by starting small and simple and building the program from there. I may restart any time and begin with the knowledge I’ve learned so far.

I’ll be writing this using a somewhat “warts and all” approach. I plan to document each step, misstep, and mistake. Each article will come with source code of the program implemented to that point and possibly the occasional side experiment. The code along with all displayed in the articles can be used for educational and research purposes. Feel free to use the overall code as a starting point for your own work. Please don’t simply take the code, change some words, and publish it as your own.

I’ll be using Visual Studio 2015 for development to take advantage of the newest features in C#. A few years ago I did some initial work against the console directly, but found C# support for the console too limited for what I’ll need going forward. Instead we’ll use a Console library for C#.

That’s all for this article. Next time we code.

February 5, 2016

Articles on Markdown and Paintcode

Filed under: Uncategorized — Bill Morefield @ 10:42 am

Two recent articles of mine published on the RAYWENDERLICH site. From earlier this week an article on the Top Five OS X Markdown Editors. From back in November a review of Paintcode.

December 14, 2014

This is My Forty

Filed under: Uncategorized — Bill Morefield @ 10:25 pm

I’m writing this entry late in the evening of my fortieth birthday. Tonight I sit here taking a few quiet moments to let myself recharge after a number of very social days. The importance of a single birthday because it’s a round number like forty can be debated, but I’ve been asked a few times my thoughts on this birthday the last few weeks so I thought a moment to reflect wouldn’t be out of line.

Having a birthday less than two weeks before Christmas means that I’m used to it being a busy time. There is the normal activity as the days count down to the holiday season and the end of the year. Having worked in higher education for the last thirteen years it’s also a time that marks the end of a semester, student exams, and graduation ceremonies at work.

Even with those factors, I’ve been busy lately. Earlier this year had challenging times, but as summer turned to autumn I’ve found myself both fairly busy an mostly happy. I don’t think those are unrelated. I’ve opened myself back up more socially after closing off for a while. Meeting people without expectations has left me busy, at time even hectic, but enjoying life as it comes by.

As I reach forty I find myself happy. Not all of my life is perfect, but is life ever? It is pretty good. I’m in the best health I’ve been since I was a teenager and the best shape of my life. When I look forward it’s with optimism and the feeling that my best years are coming more than they have passed me by. And that is truly I think all I could ask for any day.

July 29, 2014

My Article on Preventing XSS in ASP.NET Published

Filed under: article,aspnet,web — Tags: , , , — Bill Morefield @ 9:16 pm

My article on Preventing XSS in ASP.NET is up at NetTuts this week. Follows earlier articles on SQL Injection and Preventing CSRF.

March 31, 2014

Port Forwarding in Windows

Filed under: web — Tags: , , — Bill Morefield @ 8:33 am

I always enjoy finding something new that meets a need. As you might guess from the title, I found myself recently needing to forward a port on a Windows server. The scenario is that I had a server I need to allow access to from an network that hadn’t been originally planned to do so. I could have just opened a firewall port, but I prefer to set up a more secured method.

For web connections this can be done using a reverse proxy pretty easily and Windows 2012 server even includes a wizard to make this easier to set up. In this case I needed to forward an arbitrary port to the same port on another server.

It turns out this functionality is built into Windows and has been since at least 2008 and the command to do so is pretty simple.

netsh interface portproxy add v4tov4 listenport=80 listenaddress connectport=8088 connectaddress=

This binds port 80 on address on the local server and forwards any traffic received on this port to port 8088 at address The response is also returned back through the proxy to the source server. It works quite nicely in early testing and fills a need I’ve always had trouble finding a good, reliable solution for on Windows. There are only a few limitations I’ve found so far. From my reading it seems to require IPv6 to be installed to work even if you’re not doing an IPv6 connection. It also cannot bind the localhost addresses which limits use in development scenarios. Documentation on the command is at

As implied by the v4tov4 portion of the command, you can use this to set up proxies between IPv4 and IPv6 servers. That should come in handy when migration to the new IP version comes over the next few years.

March 25, 2014

Article Published on Tuts+ Code

Filed under: Uncategorized — Bill Morefield @ 10:39 pm

My article on Securely Handling User’s Login Credentials is up on Tuts+ Code.

For most websites, you have different areas within it (home page, user profile, admin page, etc.), some of which will be public and others will need to be restricted to only certain users. You often want to uniquely identify users so you can provide customized content or to capture specific information from a user. Many sites also need to protect part of the site, such as an administrative area to maintain and update the content of the site. In a CMS site, some users may be able to create content, but others must approve that content before it is shown to the public.

Read the Rest.

March 21, 2014

Better Weigh in the App Store

Filed under: iPhone,Programming — Tags: , — Bill Morefield @ 8:56 am

So earlier this year I decided to write an app for the iPhone. In my case I wanted to loose a little weight before working to add on some muscle for a planned summer trip. I’d not been particularly happy with anything I found to track my weight before, so I decided to write my own. Thus was born Better Weigh.


The app focuses on helping you track your weight and spot trends such as subtle weight gain before weeks of dieting is required to lose unwanted weight. It works if you’re looking to lose weight, gain weight, or just maintain your weight

Just normal changes from diet, exercise, and other activities can cause your weight to vary by several pounds per day. These daily swings make the real changes over time of your weight hard to track. Better Weigh smoothes out these variations showing you how your weight is really changing and helping you reach your goal.

You can enter your weight manually or sync with FitBit. More syncing options are planned. You can find it on the App Store or see more info at

January 22, 2014

Cisco ASDM gives “Missing required Permissions manifest attribute in main jar” Error

Filed under: Cisco — Tags: , — Bill Morefield @ 4:45 pm

Java pushed out a new update recently that implemented a change that had been warned about for a while. by default it now no longer allows running apps that are unsigned, self-signed, or without permission attributes.

This includes Cisco ASDM manager. The quick fix (other than Cisco adding the missing permission attributes file) is to add the web address where ASDM is accessed as an exception. You can do do this in Java Settings control panel. This is reached under Window by the Java option under Control Panel.

There select the Security tab and click the Edit Site List… button next to the Exception Site List. Here add the URL to the firewalls that you access with ASDM. After doing this, ASDM will connect and work again normally.

Interestingly enough given Java’s sudden concern about my security, it still asks to install the Ask Toolbar every update….

More info on the change at

January 6, 2014

Goodbye AppStorm

Filed under: article — Tags: — Bill Morefield @ 12:02 pm

Saw today that AppStorm is shutting down. I hate to see that. I admittedly am biased as  I wrote for the Mac and Windows sides of the sites  through late last year. I always felt the site had good reviews and found a number of useful tools and apps through the last few years. More worrying is another quality site goes down as losing money while the “Ten Surprising Ways Your PC Can Hurt Your Cat” sites keep going.

November 29, 2013

Encoding CSR on Exchange 2010

Filed under: web — Tags: , , — Bill Morefield @ 11:46 am

Mostly writing this for my own benefit as I have to do this a couple times a year and always have to look it up. By default if you request a new or renewed certificate signing request on Exchange 2010, it comes out as a binary file that almost no certificate authority accepts. They want a base 64 encoded file instead.

It’s easy to convert the binary file to base 64 though using the certutil utility using the encode option.

certutil -encode C:\renewal.req C:\renewal.csr

This command encodes the binary file renewal.req into a base 64 encoded file renewal.csr that will work with any certificate authority.

« Newer PostsOlder Posts »

Powered by WordPress