Tags: computing

JC Denton

[PUBLIC] AIsteroids

This got generated as something of a byproduct of my research into a number of different things, but I thought I'd share it. I built a simple Asteroids network game. The architecture is such that the server calculates the entire game, and sends each client a report on what they can see. The client then sends back a very specific data structure that details what actions the ship takes. The server continues calculating and sending reports, and the ship continues sending orders. Any number of ships can be connected at the same time, and the game tries to spawn then close to each other.

The heart of this game is the C# Project that comes with it. The project contains a simple client with two procedures in the frmMain form (CreateShip and Think) that can be modified to build a new AI for the ship. The idea here is that multiple people develop different Ship AI's, and then connect them to a server to see which can accomplish a goal faster (although at the moment the only reasonable goal seems to be to shoot the other ship.) If there's interest in this kind of thing I'll spend some time to expand on it, if not, I'll probably let it go.

Anybody who is interested can find the starter kit (the C# project for the client and two different server applications) at this location. If you don't already have a C# (or other .NET) development environment, I suggest Visual Studio C# Express 2010.
JC Denton

[PUBLIC] What Network Code Architecture Can Teach Us About Life

I've been writing network code for well over a decade now. Early on, I was writing straight off the RFC's, so I got to see the protocols that make up the Internet as we know it in their original state. In RFC793, Transmission Control Protocol (arguably one of the most influential standards ever to come out of IANA), Jon Postel, the editor of the RFC series, included a section (2.10) called the Robustness Principle:

TCP implementations will follow a general principle of robustness: be conservative in what you do, be liberal in what you accept from others.

It has since become known as Postel's Law in Network Programming circles. Although its merits have been debated, a large amount of the interconnectivity that makes our current information age possible relies on this rule. It is almost essential for any group of independently developed programs to communicate with each other, even with the most specific of communication specifications.

I've been going over this ground again because of a project I'm working on for Festival of the LARPs, and I am struck by how useful a principle this is, not just for communities of computers, but for their users as well. Behave with all possible etiquette and decorum when dealing with others, but accept their behavior however it falls upon you (within the bounds of law and order, of course.) A responsible member of society, like a well-engineered server, should be unflappable, regardless of what emerges from the throng around them. I confess, I have not always lived up to this principle, but it is one I strive to put into use wherever applicable, not just in the tangle of packets and streams of a listener loop.
JC Denton

[PUBLIC] The Turing Machine Advances

After QUARTZ was rendered immobilized by hinge damage, and EMERALD still having worrisome damage to its power brick, I moved using my Christmas gifts to procure a replacement. Today RUBY arrived. The 9th mainline machine I've owned, and the 8th laptop, RUBY is a Duo Core 2.2 Ghz machine with 8GB of main storage, the most I've ever had in a single device. It also represents the first non-server 64-bit machine I've ever owned, and the first Windows 7 box. Its got fully a half-terabyte of disk available, and 512GB RADEON for graphical purposes. This machine marks the end of my Alienware experiments for the time being, being the first on-brand Dell I've purchased since SAPPHIRE in 2006. I'm very excited to bring this lighter, more streamlined workstation into the field to see how well it does once its been loaded for operation.