The earliest memory I have of ‘programming’ is in the early/mid 90s when my father brought home a computer from work. We could play games on it … so of course I took the spreadsheet program he used (LOTUS 123, did I date myself with that?) and tried to modify it to print out a helpful message for him. It … halfway worked? At least I could undo it so he could get back to work…

After that, I picked up programming for real in QBASIC (I still have a few of those programs lying around), got my own (junky) Linux desktop from my cousin, tried to learn VBasic (without a Windows machine), and eventually made it to high school… In college, I studied computer science and mathematics, mostly programming in Java/.NET, although with a bit of everything in the mix. A few of my oldest programming posts on this blog are from that time.

After that, on to grad school! Originally, I was going to study computational linguistics, but that fell through. Then programming languages (the school’s specialty). And finally I ended up studying censorship and computer security… before taking a hard turn into the private sector to follow my PhD advisor.

Since then, I’ve worked in the computer security space at a couple of different companies. Some don’t exist any more, some you’ve probably heard of. I still program for fun too, and not just in security.

But really, I still have a habit of doing a little bit of everything. Whatever seems interesting at the time!

Sandbox - Interactivity

I know I’ve already updated this project twice within the past 24 hours, but third time’s a charm.  This time, it’s interactive!

I’m using the same rules as last time (with the tweaks I mentioned).  The main difference are that you can left-click anywhere on the screen to add a blob of fire or right-click to add a new blob of plant.  It’s still not really a game per-say, but it’s got the makings of one!

read more...


Sandbox - Reactions

So I stayed up entirely too late last night / this morning and decided to go ahead and add reacti0ns to Sandbox.  Turns out, it was far easier than anything that I’ve implemented thus far on this project.  I spent some of the day (when I wasn’t at the family Thanksgiving celebration) tweaking a few things to make it look a little better.

Basically, reactions have four parts: a core, reactants, a chance, and (possibly) a product.  The core is the particle that will be reacting.  The reactants (each given with a concentration) are the neighboring particles.  The chance adds a bit of randomness to reactions and allows particles to fade (see the fire below).  The product (if present) is the result of the reaction.

read more...


Sandbox - And so it begins

For the past few years, I’ve been fascinated by falling sand / particle simulation type games (like this one).  Enough so that I’ve set out to make one a fair number of times.  Each time, I’ve advanced my own techniques by a little bit, finding new and better ways to make digital sand.

This time around, I’m going to try to use C# with SDL.NET for all of my graphical work and a simple grid for all of the particle data.  Rather than looping over the grid, I will be using quadtrees to only update the regions that actually need to be updated.  So far the results are promising!

read more...


FLAIRS 2010

The fall quarter has ended and thus so has the AIGS 2009 project. Version 0.2.04 is the last version that I will (most likely) be updating. I think that an independent study group will be working on the version for next year, and I wish them the best of luck. On a brighter note, Prof. Wollowski and I have written a paper based on the AIGS project and have submitted it to FLAIRS 2010 (an AI conference in Florida).

read more...


AIGS 2009 Update

Bug fixes:

  • Flag respawning is more solid (not completely guaranteed though, because I haven’t actually been able to duplicate the issue).
  • Should cause an error if you try to capture your own player.

Thanks to Chris Covert for testing the problems that I was having.

read more...


AIGS 2009 Update

New version uploaded. Bug fixes: Fixed swapping players bug. Potential fix for not your turn bug (not sure if this one will work). Sending ‘Unsolvable’ as a move can be used to prematurely end a game (and will output the game log). Fixed/removed extra YourTurn packets sent on failed move. Fixed capturing, players can now capture correctly and wil respawn at their bases. Fixed returning flags. Flags were returning at (0, 0), now the return to their spawn points.

read more...


AIGS 2009 Update

Here are the most recent fixes:

  • Added logic to allow the second player to continue after the first player is done (thanks Eric Reed).
  • The flag spawn logic was preventing you from moving off of spawn points, not onto them (oops).

Downloads


AIGS 2009 Update

Updated with almost everything necessary to play the tournament.  I still need to implement the game timer per side.  I will have the up before AI class meets Monday.

All of the changes that are mentioned in the Tournament Rules document have been completed with the following notes:

  • Always 3 players per team
  • Not guaranteed to be solvable (though I haven’t seen an unsolvable one yet).
  • You can only capture flags on the other side of the board
  • Flags respawn at random locations on your side of the map
  • You can only see your flags when they have not been captured
  • Non-wall squares you cannot see will be sent as a ‘*’
  • Captured players will spawn adjacent to their home base
  • If no location is available, they will try further out in concentric circles

read more...


AIGS 2009 Update

New version of the server is available:

Changes

  • Added RemainingFlags message.
  • MoveMade packets will be sent for each move. Periodically checking for the server for sync is suggested.
  • It should now be possible for players to move past each other (swap places, etc).

read more...


AIGS 2009 Update

The new version of the server has been updated.

Changes:

  • Added a rudimentary AI player to play against for the next assignment.
  • Added scenarios for assignment 3.
  • Fixed typos in previous assignments.
  • Added an argument to the protocol for YourTurn messages to tell you who you are (update your CTFProtocol file).

read more...