Wrote a quick C# tool for polling Google every 5 seconds to see if my internet connection drops. And if it drops, when it comes back. Here’s what the polling code looks like:

HttpWebRequest PingIt = (HttpWebRequest)WebRequest.Create("http://www.google.com");
try
{
  HttpWebResponse Reply = (HttpWebResponse)PingIt.GetResponse();
  if (Reply.StatusCode == HttpStatusCode.OK)
  {
    Reply.Close();
    return true;
  }
  else
  {
    return false;
  }
}
catch (WebException)
{
  return false;
}

Attached is the executable. Give it a few seconds to start. Green if your internet is up. Red if your internet is down.
Kickshaw

Still working on Pixcaso. More details on that later. But, I decided to create tiny utility to peice together my 3ds max rendered images into a single sprite sheet. It hasn’t been tested well at all, so download at your own risk.

Here’s most of the code:

using System;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace MakeSpriteSheet
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            openFileDialog1.ShowDialog();
            listBox1.Items.AddRange(openFileDialog1.FileNames);
            listBox1.Sorted = true;
        }
        private void button2_Click(object sender, EventArgs e)
        {
            label1.Text = "Checking image dimensions";
            progressBar1.Visible = true;
            if (checkDimensions())
            {
                label1.Text = "Creating Sprite Sheet";
                MakeSpriteSheet();
                label1.Text = "Done";
                progressBar1.Value = 100;
            }
        }
        public void MakeSpriteSheet()
        {
            saveFileDialog1.ShowDialog();
            Bitmap image = new Bitmap(listBox1.Items[0].ToString());
            Bitmap spriteSheet = new Bitmap(image.Height*listBox1.Items.Count, image.Height);
            int imageCount=0;
            foreach (object filename in listBox1.Items)
            {
                Bitmap objBitmap = new Bitmap(filename.ToString());
                for (int y = 0; y < objBitmap.Height; y++)
                {
                    for (int x = 0 ; x < objBitmap.Width; x++)
                    {
                        Color col = objBitmap.GetPixel(x, y);
                        // Perform an operation on the Color value here.
                        spriteSheet.SetPixel(x + (imageCount * objBitmap.Width), y, col);
                    }
                }
                imageCount++;
                progressBar1.Value++;
            }
            label1.Text = "Saving";
            spriteSheet.Save(saveFileDialog1.FileName);
            Form ImageForm = new Form();
            PictureBox ImageBox = new PictureBox();
            ImageForm.Controls.Add(ImageBox);
            ImageBox.Image = spriteSheet;
            ImageBox.Size = spriteSheet.Size;
            ImageBox.Show();
            ImageForm.Height = spriteSheet.Height+50;
            if (spriteSheet.Width > (Screen.PrimaryScreen.Bounds.Width-100))
            {
                ImageForm.Width = Screen.PrimaryScreen.Bounds.Width - 100;
            }
            else
            {
                ImageForm.Width = spriteSheet.Width;
            }
            ImageForm.AutoScroll = true;
            ImageForm.Show();
        }
        public bool checkDimensions()
        {
            Bitmap image = new Bitmap(openFileDialog1.FileNames[0]);
            SizeF dimension = image.PhysicalDimension;
            foreach (string filename in openFileDialog1.FileNames)
            {
                Bitmap nextImage = new Bitmap(filename);
                if (dimension != nextImage.PhysicalDimension)
                    return false;
                progressBar1.Value++;
            }
            return true;
        }
        private void Top_Click(object sender, EventArgs e)
        {
        }
    }
}

Executable (Recommended)  (10K)

Installer (500K)

Game Development blogs you could be reading:

Greg Seelhoff
Game Programmer
http://blog.gamecraft.org/

Ben Mathis
Freelance Artist
http://www.poopinmymouth.com/

Rick Stirling
Game Artist
http://www.rsart.co.uk/

Nick Gravelyn
Freelance Game Programmer
http://www.nickontech.com/

Trent Polack
Game Programmer
http://www.polycat.net
http://www.gamedev.net/community/forums/mod/journal/journal.asp?user=mittens

J Force Games
Independent Studio
http://jforcegames.com/blog

Brad Wardell
CEO of Stardock
http://draginol.joeuser.com/

Unity Technologies
Multi-Platform Game Development Tool
http://blogs.unity3d.com/

Instant Action
Web Gaming Platform
http://blog.instantaction.com/

Malcolm Ryan
Game Designer
http://www.cse.unsw.edu.au/~malcolmr/

Juuso Hietalahti
Game Producer
http://www.gameproducer.net/

Gianfranco Berardi
Independent Game Developer
http://gbgames.com/blog/

Adrian Crook
Senior Game Producer
http://www.freetoplay.biz

Danc
Game Designer
http://lostgarden.com/

Raphael Koster
Game Designer
http://www.raphkoster.com/

Erik Hjortsberg
Game Programmer
http://erikhjortsberg.blogspot.com/

Steve Swink
Game Designer
http://www.steveswink.com/

Warren Spector
Game Designer
http://junctionpoint.wordpress.com/

Ian Schreiber
Game Design Educator
http://teachingdesign.blogspot.com/

Brenda Brathwaite
Game Designer
http://bbrathwaite.wordpress.com/

Steve Gargolinski
Game Programmer
http://www.alivejournal.com/

William Willing
Game Designer
http://www.williamwilling.com/blog/

Ian Bogost
Game Researcher
http://www.bogost.com/

Tracy Fullerton
Game Designer
http://interactive.usc.edu/members/tfullerton/

Jane McGonigal
Game Designer
http://blog.avantgame.com/

Clint Hocking
Level Designer
http://clicknothing.typepad.com/click_nothing/

Richard Fine
Team Lead
http://members.gamedev.net/superpig/journal/

As a quick note to myself, here’s how I did the conversion:

//opens files
TextReader ts = new StreamReader(FileName);
//converts text 0-9 into int 0-9
if ((hextext > 47) && (hextext < 58))
{
  hextext -= 48;
}
//converts text A-F into int 10-15
if ((hextext > 64) && (hextext  < 71))
{
  hextext  -= 55;
}
//converts text a-f into int 10-15
if ((hextext > 96) && (hextext < 103))
{
  hextext -= 87;
}

Although I wasn’t born yet, I don’t ever recall Pong having a tutorial. The arcade classics that birthed this industry were often simple enough that many people figured how to play the game in a matter of seconds. Even the more “complex” features of Galaga were demystified by a few minutes of game play and chance shots. Game manuals and tutorials were simply not necessary for the majority of gamers in the classic days of the arcade. Generally, a few words from a friend that had spent about an hour with a game was all tutelage you ever needed.

As games saturated into the homes and started reaching a larger audience. Manuals started becoming a common trait of a video game purchase. And as the features of the games grew, so did the size of the manuals. The manual became such a huge part of PC gaming that many of them were well over 100 pages. These manual included most of what you would see in a modern day strategy guide and installation instructions. Instruction manuals for console games, though not as big, were common as well.

At the beginning of this decade, there was a major shift from larger manuals to interactive training built into the game. This reduced packaging size for games which saved self space for retailers. Bringing us to the current ten page or less manual, tucked behind the front cover, we now know and loathe. This, of course, started the strategy guides that GameStop reminds you how much you love every time you exhale in their store. Another popular result of this shift is the tutorial level.

How should gamers be guided? Are printed manuals or strategy guides the way to go? Or would you prefer some type of downloadable electronic reference? Is the interactive in-game method the best way to learn a new game? What do you see for the future of gamer guidance?

After playing a bit of the games that came out late this year. I was happy to see some new IPs score big. But, I was even more happy to see new ideas brought into main stream game design. Games like Katamari Damacy and Portal have kept the innovative spirit alive in the game industry. But, it’s not often you see innovation make it into mainstream titles. Like the the new Prince of Persia’s “no need to reload” system, or the platform controls of Mirror’s Edge. It’s games like these that made me realize, “You’ve got this great new feature”, but you’re using it to make me to the same thing I did 20 years ago.”

Developers need to evolve game mechanics. Some developers are still designing games using techniques developed for workarounds back in the arcade and NES days. Yes, it’s nostalgic to see those things. And yes, they still “work.” But, we can’t move game design forward by clinging to them. I’m actually MORE surprised there isn’t more outrage from gamers still playing through these arcane tactics. The technology is SO much more powerful now, guys. It’s time to use that to do things other that make pretty pictures and moving controllers. It’s time to let go of the constraints of the past. It’s time to redefine the video game.

Pebble to a Peark I have yet to be disappointed in the content of a Nikka Costa album. Since the first time I heard “Like a Feather” and every song that followed, the soul and funk in her sound has captivated me. This album is clearly no exception. Most of the album, as usual, is a showcase of her singer/songwriting abilities. My personal favorites are “Stuck to You”, “Keep Wanting More”, and her performance of Johnny Guitar Watson’s “Loving You.”

If you’ve never heard Costa and you love soul and funk, you’ll enjoy this album. If you’re already a fan, this album will not disappoint.

Here’s a list of game development blogs you could be reading. I’ll update the list as people contribute and blogs are left 4 dead.

/intro

Greg Seelhoff
Game Programmer
http://blog.gamecraft.org/

Ben Mathis
Freelance Artist
http://www.poopinmymouth.com/

Rick Stirling
Game Artist
http://www.rsart.co.uk/

Nick Gravelyn
Freelance Game Programmer
http://www.nickontech.com/

Trent Polack
Game Programmer
http://www.polycat.net
http://www.gamedev.net/community/forums/mod/journal/journal.asp?user=mittens

J Force Games
Independent Studio
http://jforcegames.com/blog

Brad Wardell
CEO of Stardock
http://draginol.joeuser.com/

Unity Technologies
Multi-Platform Game Development Tool
http://blogs.unity3d.com/

Instant Action
Web Gaming Platform
http://blog.instantaction.com/

Malcolm Ryan
Game Designer
http://www.cse.unsw.edu.au/~malcolmr/

Juuso Hietalahti
Game Producer
http://www.gameproducer.net/

Gianfranco Berardi
Independent Game Developer
http://gbgames.com/blog/

Adrian Crook
Senior Game Producer
http://www.freetoplay.biz

Danc
Game Designer
http://lostgarden.com/

Raphael Koster
Game Designer
http://www.raphkoster.com/

Erik Hjortsberg
Game Programmer
http://erikhjortsberg.blogspot.com/

Steve Swink
Game Designer
http://www.steveswink.com/

Warren Spector
Game Designer
http://junctionpoint.wordpress.com/

Where the Light is

If you fell in love with John Mayer’s 2002 live album “Any Given Thrusday”, get ready to fall in love all over again. Although this album also two CDs, it’s a still a bit different. For starters it’s broken into three main sets: Solo, Trio, and Band. The solo is much like Mayer’s early work circa “Room for Squares” era. The Trio is almost a copy of the “Try!” album. In fact, it may be a bit better selection of songs. The band set mostly a “best of” with his lastest work circa “Continuum” era.

Songs you haven’t heard from John Mayer before:
Free Fallin’
Everyday I Have I the Blues
Come When I Call

Overall:
If your a fan of John Mayer, or you’re waiting for a “Greatest Hits” album. I highly recommend you check this one out. I’d say this one is worth about $15 easily.

Seeing Sounds

If you’re familiar with N.E.R.D.:
You typically expect to hear something musically different, yet get the same acid jazz meets rock vibe you’ve gotten since “In Search of…” The difference really shows in the first part of the album and then starts to taper off towards the end.

Songs to note:
Everyone knows the hit song Everyone Nose and the remix that starts with Kanye West. A few less are familiar with the song Spaz. While still fairly popular, Spaz has a nice mellow beat shaken up with just enough rock styled drums and riffs to kept it up beat. I expect this one to be looped in the clubs all summer long. Another song worth mentioning is Windows it’s a bit more old school rock than most things you’ve heard from N.E.R.D. A good example of them pushing their music talents on this album.

Overall:
The first five songs of this album stretch the music talents of N.E.R.D. even further in a great way. After that, they seem to settle into the same sound mode as “In My Mind.” I’d say this one is worth a $10 bill. Anything more, just wait until it goes on sale.

« Previous Entries